Termasuk file ke dalam konfigurasi crontab?

8

Saya mencoba untuk memasukkan config crontab spesifik proyek ke dalam repositori kode untuk memudahkan memperbarui pekerjaan cron di semua backend ketika menggunakan.

Apakah mungkin untuk memasukkan file ke dalam konfigurasi crontab? Sesuatu seperti

* * * * * execsomething /blablabla/blah/
* * * * * onemore /blablabla
@include '/home/user/project/crontab.conf'
Kirzilla
sumber

Jawaban:

8

Bergantung pada daemon cron Anda dan distribusi Anda, harus ada beberapa direktori di / etc di mana Anda dapat meletakkan file dengan pekerjaan untuk cron.

Skrip (bukan pekerjaan yang diformat cron) yang ditempatkan di direktori berikut akan dieksekusi pada interval yang ditentukan. Perhatikan bahwa frekuensi dijamin tetapi waktu pastinya berjalan mungkin tidak. Untuk sebagian besar pengguna direktori ini cukup:

/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

pekerjaan berformat cron (seperti contoh Anda di atas) yang ditempatkan di direktori berikut akan dieksekusi oleh cron pada waktu yang ditentukan. Perhatikan bahwa selain entri normal, pengguna pekerjaan perlu ditentukan juga, sebelum perintah. Untuk distribusi paket dan perangkat lunak, metode ini adalah cara terbaik untuk mendistribusikan cronjobs:

/etc/cron.d

Contoh perintah cron.d yang diformat:

1 1 * * * root echo "serverfault is awesome" > /dev/null
Boscoe
sumber
Bisakah nama pengguna menjadi variabel? Saya memiliki banyak perintah yang perlu dijalankan sebagai pengguna yang sama, tetapi mungkin pengguna yang berbeda di lingkungan yang berbeda. Dapatkah saya melakukan sesuatu seperti $ USER = joeblow 1 1 * * * $ USER echo "serverfault is awesome"> / dev / null
Jay K
Tergantung pada cron daemon. cronie tidak mengizinkan variabel lingkungan misalnya.
Boscoe
4

Tidak sejauh yang saya tahu; itu untuk apa /etc/cron.d.

Seperti yang telah ditunjukkan Boscoe, ada juga /etc/cron.{hourly,daily,weekly,monthly}direktori, tetapi pekerjaan di sana hanya dapat berjalan sebagai root (kecuali jika Anda secara eksplisit menggunakan /bin/suuntuk mengubah EUID). Pekerjaan di /etc/cron.dmemiliki bidang tambahan yang menentukan pengguna tempat mereka menjalankannya, dan cara pertanyaan Anda berisi /home/userjalur membuat saya berpikir Anda ingin pekerjaan ini dapat berjalan sebagai pengguna yang sewenang-wenang.

MadHatter
sumber