Katakanlah saya memiliki beberapa skrip cron yang perlu dijalankan setiap 15 menit. Saya dapat mengatur mereka untuk menjalankan:, */15 * * * *
tetapi kemudian mereka semua berjalan pada saat yang sama. Tampaknya konyol bagi server untuk duduk diam selama beberapa menit dan kemudian tiba-tiba mencoba untuk mengeksekusi selusin skrip sekaligus.
Apakah ada cara saya dapat menjalankan satu skrip pada menit 1, 16, 31, 46 dan lainnya pada 2, 17, 32, 47?
Dengan kata lain, saya ingin setiap skrip dijalankan setiap 15 menit, tetapi saya tidak peduli bahwa skrip dijalankan secara khusus pada tanda seperempat jam.
run-parts
hadir dalam sistem Fedora / Red Hat juga.Cara paling mudah untuk melakukan ini adalah hanya dengan mengatur perintah secara manual untuk dijalankan saat Anda menginginkannya:
Atau Anda dapat menulis skrip untuk secara otomatis menghasilkan entri crontab yang sesuai (yang menghindari kesalahan ketik).
Beberapa versi cron (mungkin termasuk yang Anda gunakan) menerima sintaks yang diperluas:
sumber
Cron tidak pandai apa yang Anda coba lakukan. Pernahkah Anda mempertimbangkan untuk menulis skrip yang bertindak sebagai daemon yang pada dasarnya tidur 15 menit, menjalankan perintah, lalu mengulang?
sumber
sleep 300
antara setiap eksekusi perintah, eksekusi perintah itu sendiri akan menyebabkan waktu melayang; mungkin berjalan setiap 15:10 daripada setiap 15:00. Dan jika proses latar belakang mati atau sistem reboot, tidak seperticrond
itu, itu tidak akan secara otomatis restart. Ada beberapa cara untuk "daemonisasi" proses latar belakang, tetapi kemudian Anda cukup banyak menerapkan kembalicrond
.run-parts
yang dikirimkan dengan sebagian besar instalasi cron untuk melakukan itu. Lihat jawaban @ AndrewSchulman.Banyak distribusi memiliki /etc/cron.d/cronhourly, untuk itu semua skrip dapat dijalankan setiap jam. Anda bahkan dapat menentukan urutannya dengan memulainya dengan nomor urut, seperti 01scriptA 02scriptB - harus sepele dengan pengetahuan cron yang sudah Anda miliki untuk membuat "cronhourlybyfour" seperti yang kita sebut di distro base linux Smoothwall :)
Kata peringatan: ini menggunakan run-parts seperti yang disarankan sebelumnya, dan run-parts TIDAK suka skrip dengan a. dalam nama, jadi jangan menyebutnya "deletehomefolders.sh" sebut saja "01deletehomefolders" dan pastikan Anda mulai dengan # yang tepat! baris untuk apa pun yang Anda ingin tafsirkan skrip Anda.
sumber