web-dev-qa-db-fra.com

Comment tout désactiver dans crontab -l?

Je veux juste tout mettre en pause. N'exécutez rien répertorié sur crontab -l.

73
Alex

crontab -e puis commentez chaque ligne avec laquelle vous ne souhaitez pas exécuter #.

65
gregf

Tout d'abord, sauvegardez la crontab:

crontab -l > my_cron_backup.txt

Ensuite, vous pouvez le vider:

crontab -r

Restaurer:

crontab my_cron_backup.txt
crontab -l
142
kubanczyk

Avez-vous un accès root? Pause juste cron

Sudo /etc/init.d/crond stop

Ensuite, redémarrez-le lorsque vous êtes prêt

Sudo /etc/init.d/crond start
67
muffinista

Si vous utilisez vi comme éditeur, entrez simplement :%s/^/#/ en mode commande. Dans toutes les lignes (%), il remplace (s ///) le début de la ligne (^) par un hachage (#).

10
andunix

N'était pas satisfait des options ci-dessus car il ne s'agissait pas d'une seule doublure.

Pour désactivercrontab -l | Perl -nle 's/^([^#])/# $1/;print' | crontab

Pour activercrontab -l | Perl -nle 's/^#\s*([0-9*])/$1/;print' | crontab

exemple d'utilisation (modifié pour montrer qu'il ne désactive pas les commentaires)

$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

$ crontab -l|Perl -nle 's/^([^#])/# $1/;print'|crontab
$ crontab -l
# Comment
# 0 0 * * 0 /opt/something.sh

$ crontab -l|Perl -nle 's/^#\s*([0-9*])/$1/;print'|crontab
$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

Testé sur RHEL et AIX, et devrait fonctionner hors de la boîte sans rien avoir besoin d'être installé

3
segaps

Dans mes tests limités, définir le shell sur/bin/false fonctionne. Vous verrez toujours /opt/job.sh en cours d'exécution dans vos journaux, mais ce sera un noop:

Shell=/bin/false

*/1 * * * *    root  /some/job.sh
2
ash

Dans toutes les saveurs d'Unix/Linux que je connais:

mv /var/spool/cron  /var/spool/cron_is_disabled

Cette:

  • désactive les crontabs de tous les utilisateurs
  • mais pas le système/etc/crontab (/etc/cron.daily. etc.)
  • persiste à travers un redémarrage
  • est un one-liner, duh :)
1
kubanczyk

J'ai eu l'idée de la réponse fournie par @segaps

Pour désactiver:

crontab -l | awk '{print "# "$1}' | crontab

Autoriser:

crontab -l | cut -c 3- | crontab

Le seul problème avec la solution apportée par les segaps, c'est qu'elle décommentera les jobs déjà commentés par l'utilisateur.

1
Sarvsav Sharma

Pour ce faire, en utilisant nano comme éditeur:

Sudo env EDITOR=nano crontab -e

puis commentez chaque ligne avec laquelle vous ne souhaitez pas exécuter #