¿Cómo eliminar o eliminar un solo trabajo cron usando el comando linux?

40

He creado trabajos cron para mi sitio que se enumeran a continuación y están funcionando bien. Imprimo todo el trabajo cron usando este script PHP:

$cronfiles=exec('crontab -l',$output);
echo "<pre>";
print_r($output);

Qué salidas:

[0] => 0 0 * * * wget php -q http://www.example.com/report_send.php
[1] => 0 0 * * * wget php -q http://www.example.com/event_reminder.php
[2] => 0 0 * * * wget php -q http://www.example.com/user_reminder.php
[3] => * * * * * wget php -q http://www.example.com/cleardata.php

Ahora quiero eliminar o eliminar un solo trabajo cron de mi servidor a través del comando. Por ejemplo, quiero eliminar el trabajo cron " 0 0 * * * wget php -q http://www.example.com/event_reminder.php" del servidor.

Intenté un crontab -rcomando que elimina todo el trabajo cron de mi servidor, pero quiero eliminar el trabajo cron específico.

¿Me pueden ayudar a encontrar una solución?

anumavu
fuente

Respuestas:

61
  1. Para agregar un trabajo a crontab:

    (crontab -u mobman -l ; echo "*/5 * * * * perl /home/mobman/test.pl") | crontab -u mobman -
    
  2. Para eliminar un trabajo de crontab:

    crontab -u mobman -l | grep -v 'perl /home/mobman/test.pl'  | crontab -u mobman -
    
  3. Eliminar todo de crontab:

    crontab -r
    

Nada es complicado: ¡ -es STDOUT en Linux!

Greg Hanis
fuente
1
Greg: ¡ Bienvenido a Ask Ubuntu! ;-) ¿Podría revisar mis ediciones y también la ayuda de edición para mejorar la legibilidad de sus respuestas en el futuro ... ;-)
Fabby
44
Reemplace 1. Para agregar un trabajo a crontab con (crontab -u mobman -l 2> / dev / null; echo "* / 5 * * * * perl /home/mobman/test.pl") | crontab -u mobman - (ref: stackoverflow.com/questions/4880290/… )
Yasiru G
1
@YasiruG Creo que crontab -l 2 > /dev/nullsolo es necesario si no desea ver el mensaje no crontab for <user>si no hay un trabajo cron existente. Por cierto, no necesitamos la opción -u mobmansi queremos agregar el trabajo cron para el usuario actual.
baptx
23

Desde un indicador de tipo raíz

crontab -e

Ahora puede editar el archivo y eliminar la línea que desea eliminar. También puede usar esto para editar crontab para usuarios si tiene la solicitud para ese usuario.

Por cierto: prefiero agregar cronjobs a /etc/crontab. Me parece un poco más flexible.

Rinzwind
fuente
Esto parece más fácil y tiene más sentido que la magia de los scripts, pero desearía ser más como un mago.
Jason Sebring
Ideal para cambios manuales, pero para automatización verifique el script anterior -
AFP_555
7

Ver usuarios Cronjob

Utilice la siguiente sintaxis para ver waqleh tarea programada del usuario:

crontab -u waqleh -l

Ver Root User Cronjob

Simplemente escriba el siguiente comando:

crontab -l

Esto debería enumerar el contenido del script crontab.

Ver / etc / crontab

También se puede ejecutar un cronjob desde el archivo / etc / crontab. Para verlo, ingrese:

less /etc/crontab

Eliminar todos los trabajos cron

Si y solo si desea detener todos los trabajos cron, puede eliminarlos por completo con:

crontab -r

Esto elimina todo el archivo crontab, así que ten cuidado si tienes otros trabajos cron listados allí.

Eliminar trabajos cron específicos

Abra el archivo cron y elimine los cron que desea eliminar.

crontab -e

cada línea representa un trabajo cron. Puede eliminar cualquier cron utilizando ctrl + k y luego guardar y salir

Waqleh
fuente
1
crontab -l | grep -v 'wget php -q http://www.example.com/event_reminder.php' | crontab -

crontab -l enumera los trabajos actuales de crontab

grep -v filtrar alguna línea

crontab - agrega todo el material impreso al archivo crontab.

Diego D
fuente
0

Puede ejecutar crontabsin argumentos y alimentarlo con el nuevo crontab a través de stdin.

geirha
fuente
@ qeirha .. Quiero eliminar un trabajo cron específico de mi servidor
anumavu
@anumavu, correcto, así que lo lees con crontab -l, como ya lo has hecho, elimina el trabajo de la lista y luego escríbelo de nuevo crontab.
geirha