Kill processo inserito cron.daily

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns e altro.
mikelin
Prode Principiante
Messaggi: 108
Iscrizione: giovedì 6 settembre 2007, 19:15

Kill processo inserito cron.daily

Messaggio da mikelin »

ho creato un pisccolo script che utilizza lftp per dare una sincronizzare una cartella remota ...
quello che vorrei fare è che questo script venga terminato ad una certa ora in modo tale da non occupare banda durante il giorno
cioe che venga ucciso ad esempio alle 8 del mattino ...

come devo procedere.. ? devo fare ovviamente un altro sripp che uccide lftp ?
come faccio a sapere quale processo devo uccidere e i suoi derivati ?
Ho visto in rete che si puo assegnare proicessi negativi e uccidere tutti questi , ma come faccio ad assegnare un pid negativo ?

Grazie mille per l'aiuto
Avatar utente
zdf_9
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 940
Iscrizione: venerdì 18 giugno 2010, 10:03
Distribuzione: debian x86_64

Re: Kill processo inserito cron.daily

Messaggio da zdf_9 »

Puoi prendere spunto dai comandi che ti posto per creare uno script per killare i processi, ma non penso sia una buona cosa interrompere una sincronizzazione... ti troveresti con un backup difficilmente utilizzabile.

I comandi sono questi:

Codice: Seleziona tutto

ps auxmmww | grep "$NOMESCRIPT" | grep -v grep | awk '{print $2}'
ps -a --ppid $NUMPROCESSO
Il primo comando restituisce il pid del tuo script mentre il secondo la lista di tutti i pid figli di quest'ultimo.
Con il secondo comando viene restituito anche il pid del comando "ps" che utilizzi... :(
il nemico più grande si nasconde nell'ultimo posto dove guardi
mikelin
Prode Principiante
Messaggi: 108
Iscrizione: giovedì 6 settembre 2007, 19:15

Re: Kill processo inserito cron.daily

Messaggio da mikelin »

quindi al posro di ps devo mettere il nome del mio "script " ?
Avatar utente
zdf_9
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 940
Iscrizione: venerdì 18 giugno 2010, 10:03
Distribuzione: debian x86_64

Re: Kill processo inserito cron.daily

Messaggio da zdf_9 »

Ho buttato giù uno script per spiegarmi meglio:

Codice: Seleziona tutto

#!/bin/sh
NOMESCRIPT="/home/tuoUtente/tuoScriptLanciatoDaCRON"

PIDSCRIPT=`pidof "${NOMESCRIPT}"`
if [ "${PIDSCRIPT}" != "" ];then
  PIDS_PROCESSI=`ps -a --sort=ppid --ppid $PIDSCRIPT`
  echo "$PIDS_PROCESSI" | while read myPID myTTY myTIME myCMD
  do
    if [ "${myCMD}" != "ps" ] && [ "${myCMD}" != "CMD" ]; then
      echo "Posso killare il processo $myPID associato al comando: $myCMD"
    fi
  done
fi
Al posto di "/home/tuoUtente/tuoScriptLanciatoDaCRON" metti il precorso ed il nome dello script che viene lanciato dal cron.
La variabile PIDSCRIPT otterrà il PID dello script lanciato dal cron (uso "pidof" al posto di "ps auxmmww | grep "$NOMESCRIPT" | grep -v grep | awk '{print $2}'")
In PIDS_PROCESSI otterrò la lista dei processi figlio del tuo script, per cui bisogna killarli tutti.
Il ciclo al momento stampa solo le informazioni, per killare effettivamente i processi inserisci "kill $myPID".
il nemico più grande si nasconde nell'ultimo posto dove guardi
mikelin
Prode Principiante
Messaggi: 108
Iscrizione: giovedì 6 settembre 2007, 19:15

Re: Kill processo inserito cron.daily

Messaggio da mikelin »

ho provato lo script e funziona solo se imposto il pid esatto numericamente
nella variabile PIDSCRIPT
il mio file si trova in /etc/cron.daily/Uniportale
e facendo pidof non mi trova nulla
Grazie
Avatar utente
zdf_9
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 940
Iscrizione: venerdì 18 giugno 2010, 10:03
Distribuzione: debian x86_64

Re: Kill processo inserito cron.daily

Messaggio da zdf_9 »

Lo script che viene lanciato è "/etc/cron.daily/Uniportale", ma che processi lancia? come si chiamano? apre una nuova bash?
Ho cercato velocemente in internet e non l'ho trovato, quindi non posso dirti come procedere.

Per sapere che stringa assegnare alla variabile NOMESCRIPT puoi leggere "/etc/cron.daily/Uniportale" e capire cosa e come viene lanciato, oppure mentre il programma è in esecuzione (tramite il cron) da terminale dai il comando "top" (q per uscire).
Da li guardi il nome dei processi che occupano più risorse (CPU della macchina), e con il comando "pstree" cerchi nell'albero dei processi dove e come è posizionato il programma e soprattutto il nome di tutti i processi "padre".
il nemico più grande si nasconde nell'ultimo posto dove guardi
mikelin
Prode Principiante
Messaggi: 108
Iscrizione: giovedì 6 settembre 2007, 19:15

Re: Kill processo inserito cron.daily

Messaggio da mikelin »

lo script... è il seguente
usa lftp per collegarsi e sincronizzare la cartella remota con quella locale

lftp -p 65000 -u user,password 147.159.123.135 << EOF
set ssl:verify-certificate no
mirror -c '/Download/_APPZ' '/mnt/hdext/Uniportal'
quit 0
EOF
Avatar utente
zdf_9
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 940
Iscrizione: venerdì 18 giugno 2010, 10:03
Distribuzione: debian x86_64

Re: Kill processo inserito cron.daily

Messaggio da zdf_9 »

Ho cercato il manuale di lftp e vi leggo:
If you exit lftp when some jobs are not finished yet, lftp will move itself to nohup mode in background. The same happens when you have a real modem hangup or when you close an xterm.
Da quello che ho capito dovresti aver attivo il processo relativo a lftp (ancora dipendente dallo script Unipotale)
Lo script /etc/cron.daily/Uniportale dovrebbe essere ancora attivo (in attesa il trasferimento finisca)

Per avere una prova di questo, quando il programma è in esecuzione da cron, dai i comandi:

Codice: Seleziona tutto

ps auxmmww | grep -i lftp
ps auxmmww | grep -i Uniportale
In linea di massima uccidendo il processo lftp dovresti risolvere il tuo problema.
Controlla che non rimangano appesi dei processi (usa "treeps" per farti un'idea della gerarchia con cui vengono lanciati i prorammi nello script)
Se non vi sono processi appesi, in sostituzione dello script che postai, puoi usare 2 comandi:

Codice: Seleziona tutto

MYPID=`pidof lftp`
kill $MYPID
Usando lo script che postai, infatti, rischi nel caso venga killato lo script Unipotale prima di lftp, che questo venga trasformato in nohup (non penso questa operazione cambi il pid, ma non ne sono certo).
il nemico più grande si nasconde nell'ultimo posto dove guardi
mikelin
Prode Principiante
Messaggi: 108
Iscrizione: giovedì 6 settembre 2007, 19:15

Re: Kill processo inserito cron.daily

Messaggio da mikelin »

credo che funziona grazie... lo testo un paio di giorni e ti faccio sapere
Scrivi risposta

Ritorna a “Ubuntu su server”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 13 ospiti