(Saya tidak memiliki cukup reputasi untuk berkomentar, jadi saya menambahkan sebagai jawaban: silakan menambahkannya sebagai komentar di samping jawabannya)
One-liner Joe Casadonte sempurna, kecuali jika Anda menjalankannya set -e
, yaitu jika skrip Anda disetel untuk gagal karena kesalahan, dan jika belum ada cronjobs. Jika demikian, one-liner TIDAK akan membuat cronjob, tetapi TIDAK akan menghentikan skrip. Kegagalan diam bisa sangat menyesatkan.
Alasannya adalah bahwa crontab -l
kembali dengan 1
kode kembali, menyebabkan perintah berikutnya (yang echo
) tidak dieksekusi ... dengan demikian cronjob tidak dibuat. Tetapi karena mereka dieksekusi sebagai subproses (karena tanda kurung) mereka tidak menghentikan skrip.
(Menariknya, jika Anda menjalankan perintah yang sama lagi, itu akan bekerja: sekali Anda telah dieksekusi crontab -
sekali, crontab -l
masih tidak menghasilkan apa-apa, tetapi tidak mengembalikan kesalahan lagi (Anda tidak mendapatkan no crontab for <user>
pesan lagi). Jadi selanjutnya echo
dieksekusi dan crontab dibuat)
Dalam kasus apa pun, jika Anda menjalankannya set -e
, garis harus:
(crontab -l 2>/dev/null || true; echo "*/5 * * * * /path/to/job -with args") | crontab -