Pourquoi `crontab -` supprime-t-il crontab et peut-il être annulé?

8

Je me suis précipité et oublié le e en crontab -eavant de toucher Enter.

Une invite est apparue, j'ai donc fermé avec Ctrl+ D, comme je quitte habituellement les invites de saisie.

Maintenant, sans avertissement, mon crontab entier est vide.

Pourquoi? Quelle logique a provoqué cela? Comment fermer les invites autres que Ctrl+ Dpour que rien ne soit enregistré?

Redsandro
la source
2
Qu'a dit l'invite?
Michael Hampton

Réponses:

7

Control+Cdans ce cas, abandonnera crontabet n'effacera pas les entrées crontab actuelles. Sinon, le bare -est une indication courante sur Unix que l'entrée doit être lue à partir de l'entrée standard et Control+Dferme l'entrée standard, ce qui entraîne le fichier crontab vide, car rien n'a été injecté sur l'entrée standard.

Une entrée utilisateur crontab le long des lignes de

@daily crontab -l > $HOME/.cron.`hostname`

peut aider contre de telles futures oopsies en fournissant une copie de sauvegarde des données crontab (ou vous pouvez vous déchaîner avec le contrôle de version, ou quelle que soit la complexité de la sauvegarde).

branler
la source
15

Vous avez remplacé votre crontab par le contenu de stdin, qui était vide. C'est essentiellement la même chose que crontab < /dev/null.

Appuyer sur Ctrl + C pourrait être une meilleure habitude.

Votre crontab est probablement parti. La sauvegarde pourrait être quelque part /var/spool/cron, mais je ne connais aucun démon cron qui gère les sauvegardes. Vous devez configurer des sauvegardes /var/spool/cronsi cela est important pour vous.

rvs
la source