Mon collègue a couru grep | crontab
. Après cela, tous les emplois ont disparu. On dirait qu'il essayait de courir crontab -l
.
Que s'est-il donc passé après avoir exécuté la commande grep | crontab
? Quelqu'un peut-il expliquer?
Mon collègue a couru grep | crontab
. Après cela, tous les emplois ont disparu. On dirait qu'il essayait de courir crontab -l
.
Que s'est-il donc passé après avoir exécuté la commande grep | crontab
? Quelqu'un peut-il expliquer?
Réponses:
crontab
peut installer une nouvelle lecture crontab
pour l'utilisateur invoquant (ou l'utilisateur mentionné en tant que root
) à partir de STDIN. C'est ce qui s'est passé dans votre cas.
grep
sans aucune option générera un message d'erreur sur STDERR comme d'habitude et vous grep
dirigez le STDOUT de vers STDIN crontab
dont le champ est vide, ce qui vous crontab
fera disparaître.
Comment a-t-il mis fin à l'emploi? At-il tapé Cc ou Cd? S'il a tapé Cd, cela revient à courir crontab < /dev/null
et vous avez remplacé le fichier crontab de l'utilisateur par un fichier vide. D'un autre côté, si vous tuez crontab
avec Cc, alors le crontab peut avoir été conservé, mais vous pouvez facilement le vérifier en exécutant crontab -l
.
Tout ce que ce programme fait est d'éditer les fichiers crontab dans /var/spool/cron/
, donc si vous avez une sauvegarde du système de fichiers, vous pouvez simplement restaurer le fichier crontab de l'utilisateur à partir de là.
Je n'ai pas vu qu'il n'y avait pas d'argument à la grep, donc grep sera une erreur et en effet le fichier crontab sera toujours emporté.
crontab
vous obligent à utiliser-
comme nom de fichier pour lire à partir de l'entrée standard. Je suppose que c'est parce que trop de gens ont fait sauter leurs crontabs avec des erreurs comme ça.