¿Cómo detener un trabajo cron actualmente en ejecución?

45

¿Cómo puedo detener un trabajo cron que se está ejecutando actualmente?

nhinkle
fuente
2
Las tres respuestas a continuación interpretan esta pregunta de tres maneras. @GURU, ¿podría aclarar qué le gustaría hacer? ¿Le gustaría eliminar un proceso iniciado por cron que ahora se está ejecutando, o le gustaría evitar que el trabajo se ejecute en el futuro?
jcrawfordor

Respuestas:

29

Puede hacer esto de la misma manera que detendría cualquier proceso.

Para detener un crontrabajo actualmente en ejecución , puede realizar una de las siguientes acciones:

pkill process-name

o si conoce el PID (puede determinarlo ejecutando ps):

kill 1234

(sustituyendo el PID real)

Pausado hasta nuevo aviso.
fuente
1
¿Cómo enumerar qué trabajos cron actualmente en ejecución?
UWU_SANDUN
55
@UWU_SANDUN: puede usar pgrepo grepla salida de ps. No hay nada especial en un proceso desde el que se ejecuta cron. Simplemente buscaría el proceso con su propio nombre. También puede hacer ps fauxww | grep -A 1 '[C]RON'y las líneas debajo de la (s) línea (s) mostrarán los trabajos en ejecución cron. Puede ajustar el número 1 más alto para ver los subprocesos, si los hay.
Pausado hasta nuevo aviso.
Tenga en cuenta que debe ejecutar cygwin como administrador para eliminar procesos. Vea aquí para más información sobre eso.
takanuva15
El uso de Ubuntu que he escrito lo que @ takanuva15 sugerido, ps fauxww | grep -A 1 '[C]RON'. Esto enumera los trabajos cron actuales en ejecución, por lo que luego puede anotar el PID y ejecutarlo # kill -9 PID. ¡Gracias!
russellhoff
@russellhoff: -9solo debe usarse como último recurso porque evita que el proceso realice una limpieza a medida que sale.
Pausado hasta nuevo aviso.
17

Para dejar de ejecutar el trabajo cron. Primero obtenga el id de proceso de su comando con

top -p $(pgrep -d',' your_command)

p.ej:-

top -p $(pgrep -d',' httpd)

y correr

kill PIDreemplazar PIDcon id de proceso

Miqdad Ali
fuente
15

Extraño, nadie ha mencionado este método:

$ crontab -e

En el editor abierto, elimine la línea de la tarea que desea detener o inserte un #signo, guarde y salga

p.ej

antes de

* * * * * some_script1
* * * * * some_script2

después

* * * * * some_script1
#* * * * * some_script2

o

* * * * * some_script1

reiniciar el servicio después de hacer cambios por

sudo service cron reload
laike9m
fuente
17
Esto no detiene un trabajo cron que se está ejecutando actualmente, detiene futuros trabajos cron que iniciará cron.
Ivan
10

Si está utilizando Redhat (RHEL) / Fedora Core / Cent OS Linux, use el siguiente comando:

/etc/init.d/crond stop

Si está utilizando Debian o Ubuntu Linux, el siguiente comando:

/etc/init.d/cron stop

PD: deberías ser root para hacer estas cosas

Sen
fuente
2
creo que se detenga todas crons .para dejar de cron particular, se puede saber el comando
¿Puedes sugerirme algún comando sen?
No creo que sea posible de manera directa ... Tal vez deberíamos ir a hackear.
Sen
3

Puede editar la tabla cron y comentar la tarea en cuestión. Cambie al usuario que controla la tarea, exporte su editor de elección al entorno y luego use crontab -l:

$ su - root
...
# EDITOR=vi; export EDITOR
# crontab -l
mfe
fuente
1
Eso enumera el crontab. Use crontab -epara editarlo. Para los sistemas que lo tienen, es preferible usarlo en sudolugar de su. Además, crontab -efuncionaría para el crontab del usuario (o root), pero no para el crontab del sistema (por ejemplo /etc/cron*).
Pausado hasta nuevo aviso.
1

crontab -r

eliminaría todos los crontabs que se están ejecutando, o simplemente puede comentar los comandos en el crontab que deben detenerse.

Creciente
fuente
0

En primer lugar, compruebe el proceso de trabajo con este comando.

ps -o pid,sess,cmd afx | egrep "( |/)cron( -f)?$"

La salida de este comando es

599  599 cron
4288  599 \_ CRON

y ahora mata el proceso con este comando

pkill -s 4288
aemre
fuente
0

Trabajando para mi para linux

pkill -9 crontab

Elimina todos los procesos que tienen el nombre de proceso crontab

Sayka
fuente