- ¿Cómo puedo ver las tareas de crontab que están en progreso?
- ¿Cómo puedo detener las tareas crontab que están en progreso, manualmente?
¿Es [esta] pregunta sobre ver los procesos cron en ejecución actuales?
Sí
Para matar un proceso manualmente, una forma es usar pkill
Había pensado en pkill / killall, ¡pero algunos de mis comandos en el archivo crontab están respectivamente! ¡significa que después de terminar un comando, se iniciará el siguiente! por ejemplo:
sudo crontab -e
00 10 * * * /usr/bin/wget LINK ; shutdown -h now
Entonces, si mato wget
, ¡la computadora se apagará! -> ¡Quiero matar una tarea cron por completo, no una parte de ella!
El siguiente pkill
problema: ¿Qué pasa con los scripts? (He importado algunos scripts de bash a crontab -e
) ->sudo pkill ???
Respuestas:
En primer lugar, use solo un comando por línea en crontab. Cambia esta línea crontab:
entonces se ve así:
y crea
/path/to/my/crontab/script1.sh
con este contenido:Por supuesto, no olvide darle permiso de ejecución:
En segundo lugar, puede ver la ejecución de tareas crontab, en un formato útil y legible, en la salida de:
Aparecerán en las primeras líneas, algo como esto:
La primera columna es PID, la segunda es la ID de sesión y la tercera es el comando iniciado por cron. Puede matar todos los procesos relacionados con una tarea cron específica utilizando la ID de sesión, por lo que en el ejemplo anterior debe matar la ID de sesión 4289:
fuente
sh ps: cmd: keyword not found ps: illegal argument: afx
ps -o pid,sess,cmd -afx | egrep "( |/)cron( -f)?$"
Para matar un proceso manualmente, una forma es usarlo
pkill
. pkill detendrá todos los procesos que tengan el siguiente patrón en su nombre. por ejemplo, para detener todos los procesos de wget, use:fuente
sudo crontab -e
=>00 10 * * * /usr/bin/wget LINK ; shutdown -h now
=> Entonces, si mato wget , ¡la computadora se apagará! -> ¡Quiero matar una tarea cron por completo, no una parte de ella! El siguiente problema pkill: ¿Qué pasa con los scripts? (He importado algunos scripts de bash acrontab -e
) ->sudo pkill ???
cambia tu cronjob así
Esto debería funcionar, porque
&&
significa que el segundo comando solo se ejecuta cuando el primero se terminó correctamente (devolviendo el estado 0 a la consola / sistema), lo que no debería ser el caso (porque el proceso fue eliminado por el usuario y debería devolver otro valor entonces 0).fuente