Kill processo inserito cron.daily
Kill processo inserito cron.daily
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
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
- zdf_9
- Scoppiettante Seguace
- Messaggi: 940
- Iscrizione: venerdì 18 giugno 2010, 10:03
- Distribuzione: debian x86_64
Re: Kill processo inserito cron.daily
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:
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...
I comandi sono questi:
Codice: Seleziona tutto
ps auxmmww | grep "$NOMESCRIPT" | grep -v grep | awk '{print $2}'
ps -a --ppid $NUMPROCESSO
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
Re: Kill processo inserito cron.daily
quindi al posro di ps devo mettere il nome del mio "script " ?
- zdf_9
- Scoppiettante Seguace
- Messaggi: 940
- Iscrizione: venerdì 18 giugno 2010, 10:03
- Distribuzione: debian x86_64
Re: Kill processo inserito cron.daily
Ho buttato giù uno script per spiegarmi meglio:
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".
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
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
Re: Kill processo inserito cron.daily
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
nella variabile PIDSCRIPT
il mio file si trova in /etc/cron.daily/Uniportale
e facendo pidof non mi trova nulla
Grazie
- zdf_9
- Scoppiettante Seguace
- Messaggi: 940
- Iscrizione: venerdì 18 giugno 2010, 10:03
- Distribuzione: debian x86_64
Re: Kill processo inserito cron.daily
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".
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
Re: Kill processo inserito cron.daily
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
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
- zdf_9
- Scoppiettante Seguace
- Messaggi: 940
- Iscrizione: venerdì 18 giugno 2010, 10:03
- Distribuzione: debian x86_64
Re: Kill processo inserito cron.daily
Ho cercato il manuale di lftp e vi leggo:
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:
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:
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).
Da quello che ho capito dovresti aver attivo il processo relativo a lftp (ancora dipendente dallo script Unipotale)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.
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
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
il nemico più grande si nasconde nell'ultimo posto dove guardi
Re: Kill processo inserito cron.daily
credo che funziona grazie... lo testo un paio di giorni e ti faccio sapere
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 13 ospiti