GNU/Linux >> Linux Esercitazione >  >> Linux

Come monitorare o uccidere un processo avviato da Cron?

Ho alcuni robot, che vengono eseguiti dall'utilità di pianificazione del sistema a un determinato intervallo di tempo. Ma a volte a causa di qualche errore logico devo fermare questi robot manualmente. Come posso trovare questi processi eseguiti dallo scheduler e ucciderli?

Risposta accettata:

Puoi uccidere i processi per nome. Ad esempio, su Linux, *BSD e Solaris, pkill myprogram uccide tutti i processi il cui nome contiene myprogram (usa pkill '^myprogram$' per una corrispondenza esatta). Se lo esegui come utente non root, solo i processi di quell'utente verranno uccisi e ci sono ulteriori opzioni per controllare la corrispondenza (consulta il manuale sul tuo sistema per i dettagli).

Se vuoi indirizzare in modo specifico i processi avviati dallo scheduler e stai uccidendo i processi manualmente, puoi eseguire ps f (Solo Linux) o pstree (Solo Linux) o ptree per visualizzare i processi in un albero e vedere quali processi sono stati avviati da cron.

Se vuoi essere in grado di terminare questi processi automaticamente in un metodo fatto in casa, fai in modo che memorizzino il loro ID processo in un file. Questo tipo di file è chiamato pidfile quando viene utilizzato per avere solo una singola istanza del processo in esecuzione (che può essere o meno qualcosa che desideri). Se desideri più istanze, archivia i PID in file separati in una directory comune; ecco uno snippet di shell che fa questo:

pid_dir=/var/run/myprogram # must have been created e.g. at boot time
myprogram &
pid_file=$pid_dir/$!.pid
touch "$pid_file"
wait
rm "$pid_file"

Una soluzione migliore, se si dispone di criteri rigidi per rilevare i processi in fuga, è utilizzare un programma di monitoraggio generale o, in casi semplici, semplicemente porre un limite alla durata del processo. Potresti trovare utili questi link:

  • "Monit può avviare un processo se non viene eseguito, riavviare un processo se non risponde e interrompere un processo se utilizza troppe risorse."
  • Ho bisogno di aiuto con un cronjob per controllare i processi in fuga e ucciderli
  • Come limitare l'utilizzo delle risorse per risparmiare CPU+RAM per un determinato processo?
  • C'è un modo per limitare la quantità di memoria che un particolare processo può utilizzare in Unix?
Correlati:Debian – Dove memorizza Debian la cronologia della connettività di rete?
Linux
  1. Come uccidere un processo zombie su Linux

  2. Cosa sono i processi zombi e come trovare e uccidere i processi zombi?

  3. Come uccidere tutti i processi con un determinato nome parziale?

  4. Come uccidere il processo di zombi

  5. Come utilizzare Ctrl+C per terminare tutti i processi in background avviati in uno script Bash?

Come uccidere i processi Zombie in Linux

Come scoprire da quanto tempo è in esecuzione un processo in Linux

Come uccidere i processi zombie in Ubuntu 20.04 LTS

Come KILL un processo su Linux

Come uccidere i processi zombi in Ubuntu

Come uccidere i processi in Linux usando kill, killall e pkill