Saya ingin dua pekerjaan dijalankan setiap hari, secara berurutan, persis seperti yang saya tentukan. Apakah crontab ini andal melakukan apa yang saya inginkan?
@daily job1
@daily job2
Aku menduga mereka menjalankan satu demi satu, tapi saya tidak dapat menemukan jawabannya dengan mencari web atau dari salah manpages ini: cron(1)
, crontab(1)
, crontab(5)
.
Crontab di atas jelas tidak akan melakukan apa yang saya inginkan jika cron menjalankan hal-hal yang dijadwalkan @daily
secara paralel atau dalam urutan yang tidak terduga.
Saya tahu saya bisa membuat satu skrip shell untuk memadamkannya, saya hanya ingin tahu bagaimana seharusnya cron bekerja (dan saya terlalu malas untuk mengumpulkan data uji atau membaca kode sumber).
Cron disediakan oleh cron
paket. OS adalah Ubuntu 10,04 LTS (server).
cron
paket? Hampir semua daemon cron yang saya tahu akan menangani ini secara berurutan, dan secara serentak, biasanya pertama mengurai setiap file dalam urutan abjad (meskipun beberapa melakukannya dengan jumlah waktu antara berjalan dalam urutan menaik), dan kemudian pekerjaan di dalam dalam urutan baris.Jawaban:
Setelah sekilas melihat sumbernya (dalam pemerasan Debian, yang saya pikir adalah versi yang sama), itu memang terlihat seperti entri dalam file yang diberikan dan dengan waktu yang sama dijalankan secara berurutan. Untuk tujuan ini,
@daily
dan0 0 * * *
identik (sebenarnya@daily
identik dengan0 0 * * *
di cron ini).Saya tidak akan mengandalkan ini di seluruh papan. Ada kemungkinan bahwa suatu hari seseorang akan memutuskan bahwa cron harus menjalankan pekerjaan secara paralel, untuk memanfaatkan CPU 32-core yang memiliki 31 core berjalan idle. Ini mungkin dilakukan ketika menerapkan item todo berusia 20 tahun ini yang ditemui di sumber cron:
Sangat mudah untuk menulis di
@daily job1; job2
sini. Jika pekerjaan itu penting, buatlah itu konsekuensi langsung dari apa yang Anda tulis.Selain itu, membuat pesanan eksplisit menghilangkan risiko bahwa administrator di masa depan akan memesan ulang garis berpikir bahwa itu tidak masalah.
sumber
http://ss64.com/osx/crontab.html (serta referensi lainnya) mengatakan bahwa @daily setara dengan
yang mengatakan berjalan pada tengah malam. Saya berharap dua baris semacam ini akan diluncurkan sedekat mungkin dengan tengah malam, tanpa jaminan yang akan berjalan lebih dulu. Saya setuju dengan saran jw013 dalam komentarnya:
sumber
@Giles mengomentari penggunaan skrip tunggal ketika diimpor untuk menjalankan sesuatu agar sesuai.
cron.daily
file tidak menentukan waktu menjalankan. Sudah pengalaman saya bahwa mereka menjalankan serial. Ini masuk akal karena banyak pekerjaan latar belakang yang dapat berjalan di laptop atau sistem lainKetika waktu ditentukan, semua pekerjaan yang dijadwalkan untuk menit saat ini dijalankan. Sebaiknya gunakan waktu yang berbeda.
Jika Anda memiliki pekerjaan yang saling eksklusif, biasanya menggunakan file kunci untuk menentukan apakah pekerjaan lain sedang berjalan.
sumber
@daily
sedikit berbeda dari/etc/cron.daily
. Yang pertama adalah sintaks alternatif untuk digunakan dalam crontab. Lihat jugarun-parts
. Sistem saya gunakanrun-parts
untuk menjalankan program di/etc/cron.daily
. Menurut halamanrun-parts(8)
manual, "File dijalankan dalam urutan semacam leksikal dari nama mereka ...".