Mój kolega uciekł grep | crontab
. Następnie wszystkie prace zniknęły. Wygląda na to, że próbował uciec crontab -l
.
Co się stało po uruchomieniu polecenia grep | crontab
? Czy ktoś może wyjaśnić?
crontab
może zainstalować nowy crontab
dla wywołującego użytkownika (lub wspomnianego użytkownika jako root
) czytającego ze STDIN. Tak się stało w twoim przypadku.
grep
bez żadnej opcji wygeneruje komunikat o błędzie na STDERR, jak zwykle, i przesyłasz STDOUT grep
do STDIN, crontab
którego jest puste, a zatem crontab
nie będzie.
crontab
wymagają użycia-
jako nazwy pliku do odczytu ze standardowego wejścia. Zakładam, że dzieje się tak, ponieważ zbyt wiele osób wysadziło swoje tabele z takimi błędami.Jak zakończył pracę? Czy napisał Cc czy Cd? Jeśli wpisze Cd, jest to równoważne z uruchomieniem,
crontab < /dev/null
a plik crontab użytkownika został zastąpiony pustym. Z drugiej strony, jeśli zabijesz zacrontab
pomocą Cc, to crontab mógł zostać zachowany, ale możesz to łatwo sprawdzić, uruchamiająccrontab -l
.Jedyne, co robi ten program, to edycja plików crontab
/var/spool/cron/
, więc jeśli zdarzy się, że masz kopię zapasową systemu plików, możesz po prostu przywrócić stamtąd plik crontab użytkownika.aktualizacja
Nie widziałem, żeby nie było argumentu dla grep, więc grep się nie powiedzie i plik crontab będzie zawsze usuwany.
źródło