¿Cómo iniciar un trabajo cron sin reiniciar?

11

Utilizo un trabajo cron para llamar offlineimapcada 2 minutos:

*/2 * * * * /usr/bin/offlineimap > ~/Maildir/offlineimap.log 2>&1

Necesitaba matar el trabajo cron para solucionar un problema. ¿Cómo puedo reiniciar el trabajo cron (sin reiniciar)? Encontré esta 'solución' en línea:

mylogin@myhost:~$ sudo /etc/init.d/cron restart
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service cron restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop cron ; start cron. The restart(8) utility is also available.
cron stop/waiting
cron start/running, process 26958

Sin embargo, usando ps -ef | grep ..., no veo el trabajo ... ¿Qué pasa?

Marius Hofert
fuente
¿Qué trabajo no puedes ver?
Spack
1
Abre tu crontab, comenta ese trabajo, realiza tu mantenimiento y luego descomenta ...
jasonwryan

Respuestas:

12

Enfoque Cron

Si tiene privilegios de sudo, puede detener / iniciar el servicio cron. Creo que eso es lo que explicaba esa solución que encontraste en línea.

Dependiendo de la distribución de Linux que esté utilizando, puede ejecutar estos comandos:

# redhat distros
$ sudo /etc/init.d/crond stop
... do your work ...
$ sudo /etc/init.d/crond start

O haz estos comandos:

# Debian/Ubuntu distros
$ sudo service cron stop
... do your work ...
$ sudo service cron start

Enfoque de tipo de archivo de bloqueo

También puede poner un archivo "dontrunofflineimap" en el directorio / tmp cuando desee que la tarea offlineimap se demore y no se ejecute por un momento.

El proceso funcionaría así. Tocas un archivo en / tmp así:

touch /tmp/dontrunofflineimap

El trabajo cron se modificaría así:

*/2 * * * * [ -f /tmp/dontrunofflineimap ] || /usr/bin/offlineimap > ~/Maildir/offlineimap.log 2>&1

Mientras ese archivo exista, esencialmente bloqueará la offlineimapejecución de la aplicación. Cuando desee que se reanude, simplemente elimine el /tmp/dontrunofflineimaparchivo.

slm
fuente
4

Otra solución es editar el crontab y comentar el trabajo para deshabilitarlo. Eso es un poco mejor, ya que también cronpodría estar programando otros trabajos.

El siguiente comando ayuda:

crontab -e

Si es el crontab de la raíz y no el del usuario:

sudo crontab -e

Para comentar el trabajo, agregue un #al comienzo de la línea. Me gusta esto:

# */2 * * * * /usr/bin/offlineimap > ~/Maildir/offlineimap.log 2>&1
ceniza
fuente