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:
crontabdapat menginstal baru crontabuntuk pengguna yang meminta (atau pengguna yang disebutkan sebagai root) membaca dari STDIN. Inilah yang terjadi dalam kasus Anda.
greptanpa opsi apa pun akan menghasilkan pesan kesalahan pada STDERR seperti biasa dan Anda mengirim STDOUT grepke STDIN crontabyang kosong, maka Anda crontabakan pergi.
Bagaimana dia menghentikan pekerjaan itu? Apakah dia mengetikkan Cc atau Cd? Jika dia mengetik Cd, maka itu setara dengan berjalan crontab < /dev/nulldan Anda telah mengganti file crontab pengguna dengan yang kosong. Di sisi lain, jika Anda membunuh crontabdengan 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.
crontabmengharuskan 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.