Comment démarrer une tâche cron sans redémarrage?

11

J'utilise un travail cron pour appeler offlineimaptoutes les 2 minutes:

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

J'avais besoin de tuer le travail cron pour résoudre un problème. Comment puis-je redémarrer la tâche cron (sans redémarrer)? J'ai trouvé cette «solution» en ligne:

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

Cependant, en utilisant ps -ef | grep ..., je ne vois pas le travail ... Qu'est-ce qui ne va pas?

Marius Hofert
la source
Quel travail ne voyez-vous pas?
Spack
1
Ouvrez votre crontab, commentez ce travail, effectuez votre maintenance, puis décommentez-le ...
jasonwryan

Réponses:

12

Approche Cron

Si vous disposez des privilèges sudo, vous pouvez arrêter / démarrer le service cron. Je crois que c'est ce que cette solution que vous avez trouvée en ligne expliquait.

Selon la distribution Linux que vous utilisez, vous pouvez exécuter ces commandes:

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

Ou faites ces commandes:

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

Approche de type de fichier verrouillé

Vous pouvez également placer un fichier "dontrunofflineimap" dans le répertoire / tmp, par exemple, lorsque vous souhaitez que la tâche offlineimap soit suspendue et ne s'exécute pas un instant.

Le processus fonctionnerait comme ça. Vous touchez un fichier dans / tmp comme ceci:

touch /tmp/dontrunofflineimap

Le travail cron serait modifié comme suit:

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

Tant que ce fichier existe, il empêche essentiellement l' offlineimapapplication de s'exécuter. Lorsque vous souhaitez qu'il reprenne, supprimez simplement le /tmp/dontrunofflineimapfichier.

slm
la source
4

Une autre solution consiste à modifier la crontab et à commenter le travail pour le désactiver. C'est un peu plus agréable, car cela cronpourrait également être la planification d'autres travaux.

La commande suivante aide:

crontab -e

Si c'est le crontab de root et non celui de l'utilisateur:

sudo crontab -e

Pour mettre en commentaire le travail, ajoutez un #au début de la ligne. Comme ça:

# */2 * * * * /usr/bin/offlineimap > ~/Maildir/offlineimap.log 2>&1
cendre
la source