Kann grep | crontab alle jobs zerstören?

21

Mein Kollege lief grep | crontab. Danach verschwanden alle Jobs. Sieht so aus, als hätte er versucht zu rennen crontab -l.

Was ist also passiert, nachdem der Befehl ausgeführt wurde grep | crontab? Kann mir jemand erklären?

user129224
quelle

Antworten:

33

crontabkann neu crontabfür den aufrufenden Benutzer (oder den erwähnten Benutzer als root) installieren, der von STDIN liest. Das ist in Ihrem Fall passiert.

grepWenn Sie keine Option grepauswählen crontab, wird auf STDERR wie gewohnt eine Fehlermeldung generiert, und Sie leiten den STDOUT von an STDIN weiter, dessen Wert leer crontabist.

heemayl
quelle
4
Bei einigen Versionen von crontabmüssen Sie -als Dateinamen angeben, um von der Standardeingabe lesen zu können. Ich nehme an, das liegt daran, dass zu viele Leute ihre Crontabs mit solchen Fehlern weggeblasen haben.
Barmar
4

Wie hat er den Job gekündigt? Hat er Cc oder Cd eingegeben? Wenn er Cd eingibt, entspricht dies der Ausführung, crontab < /dev/nullund Sie haben die crontab-Datei des Benutzers durch eine leere ersetzt. Wenn Sie dagegen crontabmit Cc töten , ist die Crontab möglicherweise erhalten geblieben. Sie können dies jedoch einfach überprüfen, indem Sie sie ausführen crontab -l.

Dieses Programm bearbeitet lediglich die Crontab-Dateien in /var/spool/cron/. Wenn Sie also eine Sicherungskopie des Dateisystems haben, können Sie einfach die Crontab-Datei des Benutzers von dort wiederherstellen.

aktualisieren

Ich habe nicht gesehen, dass es kein Argument für das grep gibt, so dass grep einen Fehler macht und die crontab-Datei in der Tat immer weggeblasen wird.

user3188445
quelle
1
Sie müssen nicht Cc oder Cd die Crontab wird bereits verschwunden sein
DarkHeart