Kolega saya lari grep | crontab
. Setelah itu semua pekerjaan menghilang. Sepertinya dia sedang berusaha lari crontab -l
.
Jadi apa yang terjadi setelah menjalankan perintah grep | crontab
? Adakah yang bisa menjelaskan?
Kolega saya lari grep | crontab
. Setelah itu semua pekerjaan menghilang. Sepertinya dia sedang berusaha lari crontab -l
.
Jadi apa yang terjadi setelah menjalankan perintah grep | crontab
? Adakah yang bisa menjelaskan?
Jawaban:
crontab
dapat menginstal baru crontab
untuk pengguna yang meminta (atau pengguna yang disebutkan sebagai root
) membaca dari STDIN. Inilah yang terjadi dalam kasus Anda.
grep
tanpa opsi apa pun akan menghasilkan pesan kesalahan pada STDERR seperti biasa dan Anda mengirim STDOUT grep
ke STDIN crontab
yang kosong, maka Anda crontab
akan pergi.
Bagaimana dia menghentikan pekerjaan itu? Apakah dia mengetikkan Cc atau Cd? Jika dia mengetik Cd, maka itu setara dengan berjalan crontab < /dev/null
dan Anda telah mengganti file crontab pengguna dengan yang kosong. Di sisi lain, jika Anda membunuh crontab
dengan Cc, maka crontab mungkin telah diawetkan, tetapi Anda dapat dengan mudah memeriksanya dengan menjalankan crontab -l
.
Semua program ini lakukan adalah mengedit file crontab /var/spool/cron/
, jadi jika Anda memiliki cadangan sistem file, Anda bisa mengembalikan file crontab pengguna dari sana.
Saya tidak melihat bahwa tidak ada argumen untuk grep, jadi grep akan kesalahan dan memang file crontab akan terhempas selalu.
crontab
mengharuskan Anda untuk menggunakan-
nama file untuk membaca dari input standar. Saya berasumsi ini karena terlalu banyak orang yang menghidangkan crontab mereka dengan kesalahan seperti ini.