Comment tout désactiver dans crontab -l?

71

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

Alex
la source

Réponses:

64

crontab -epuis commentez chaque ligne que vous ne voulez pas utiliser #.

gregf
la source
135

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
Kubanczyk
la source
2
Cela est particulièrement utile quand /tmpest corrompu (et si votre crontab utilise mktempdans /tmp.
Kevin Lee
1
+1 Enfin, voici ce qui a fonctionné pour moi. Merci
Pavan
@alex Cela devrait être la réponse acceptée
Luis Ferrao le
crontab -rest ce que je cherchais. Merci !
forzagreen
65

Avez-vous un accès root? Juste une pause cron

sudo /etc/init.d/crond stop

Puis redémarrez quand vous êtes prêt

sudo /etc/init.d/crond start
muffinista
la source
5
En supposant que vous souhaitiez arrêter crontab pour tous les utilisateurs, y compris root. La réponse sélectionnée et la réponse de kubanskamac le feraient uniquement pour l'utilisateur actuel (souhaité?).
Kevin K
notre service avait été arrêté. Cela nous a orienté dans la bonne direction pour vérifier si Crond était en cours d'exécution et redémarrer.
Paul
4
Si vous êtes sur Ubuntu, vous pouvez utilisersudo service cron stop
Joel
1
Sur Debian, c'est /etc/init.d/cron stop.
Faheem Mitha le
2
@Faheem sur Debian aujourd'hui, c'est aussi service cron stop.
Stephen Kitt
10

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

Andunix
la source
Si vous n'utilisez pas vi comme éditeur par défaut, vous pouvez "forcer" l'utilisation de vi comme EDITOR=vi; crontab -e, et vous pouvez utiliser l'astuce ci-dessus.
Betlista
2
Pour décommenter, la commande est:%s/^#//
NP01
3

N'était pas heureux avec les options ci-dessus car ils n'étaient pas un paquebots.

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

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

exemple d'utilisation (édité 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

Ceci a été testé sur RHEL et AIX et devrait fonctionner sans qu'il soit nécessaire d'installer quoi que ce soit

segaps
la source
1
Vous pouvez également rechercher des détails spécifiques dans le fichier cronjob crontab -l | perl -nle '/ ^ # \ s * ([0-1 *]) / $ 1 /; print if /.+mytexttofind.+/'
Jason
Pourriez-vous s'il vous plaît expliquer pourquoi les commentaires ne sont pas affectés? Quel est le motif que vous utilisez pour les détecter?
Sopalajo de Arrierez
Hm, sous Debian Jessie je reçois l'erreur suivante: crontab: usage error: file name must be specified for replace. Il semble que vous deviez spécifier un fichier (?) Lorsque vous utilisez crontabsans aucun paramètre (ce qui est replacepar défaut).
Fritzmg
2

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

SHELL=/bin/false

*/1 * * * *    root  /some/job.sh
cendre
la source
1

Dans n'importe quelle version d'Unix / Linux que je connaisse:

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 après un redémarrage
  • est un one-liner, duh :)
Kubanczyk
la source
1

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 fournie par segaps, est que cela décommentera les travaux déjà commentés par l'utilisateur.

Sarvsav Sharma
la source
0

Pour ce faire, en utilisant nano comme éditeur:

sudo env EDITOR=nano crontab -e

puis commentez chaque ligne que vous ne voulez pas utiliser avec #

Sam Smith
la source