Kasus:
Saya perlu menjalankan beberapa perintah / skrip pada interval waktu tertentu dan untuk ini saya memiliki dua opsi:
- mengatur-
cron
pekerjaan - mengimplementasikan loop dengan
sleep
skrip itu sendiri.
Pertanyaan:
Mana pilihan yang lebih baik dari sudut pandang konsumsi sumber daya, mengapa? Apakah cron
cara yang lebih baik? Apakah cron menggunakan semacam pemicu atau sesuatu yang membuatnya lebih efisien dari yang lain? Prosedur apa yang digunakan cron untuk memeriksa dan memulai pekerjaan?
Perbedaan utama yang Anda cari
cron
adalah tidak berjalan secara konstan. Sebagaimana dijelaskan dalamman cron
:Dengan kata lain,
cron
hanya akan dimulai satu menit sekali dan ini akan menguji apakah harus dijalankan. Pendekatan tidur Anda, di sisi lain akan membutuhkansleep
perintah Anda yang sebenarnya , shell Anda, terminal Anda, danwhile
(atau apa pun) loop untuk berjalan pada saat yang sama.Bahkan jika mereka meluncurkan jumlah proses yang sama,
cron
akan lebih baik. Ini ditulis tepat untuk ini oleh orang-orang yang cenderung sangat pandai dalam pekerjaan mereka. Ini terikat untuk melakukan pekerjaan yang lebih baik daripada loop shell sederhana.sumber
Perbedaannya adalah bahwa saat Anda menambahkan lebih banyak skrip yang perlu tidur, Anda akan berakhir dengan lebih banyak proses tidur menunggu, alih-alih satu proses (cron) yang bangun dan menjalankan skrip terjadwal yang kemudian ditutup hingga dijalankan berikutnya. Cron memungkinkan satu proses yang khusus untuk menjalankan skrip lain tepat waktu, ditambah cron memungkinkan Anda menjadwalkan relatif bebas ketika sesuatu harus dijalankan, hari dalam seminggu atau sebulan, waktu tertentu, atau hanya setiap 5 menit dll.
* Hanya melihat ini lagi membuat saya memikirkan keuntungan lain dari cron. Semua skrip yang berjalan secara berkala berada di satu tempat, dan mudah untuk memeriksa dari sana kapan dan seberapa sering mereka akan berjalan. Kalau tidak, Anda harus memeriksa skrip individual.
sumber
Sudah ada jawaban yang lebih baik dan lebih banyak informasi, tetapi saya hanya ingin menunjukkan bahwa dengan
sleep
, Anda memiliki kemampuan untuk membekukan proses untuk jumlah waktu variabel, katakan sebagai fungsi dari beberapa variabel lain.Jika saya menulis skrip untuk memeriksa persentase baterai yang tersisa dan
notify-send
jika berada di bawah tingkat kritis yang ditentukan sebelumnya, saya dapat membuat skripsleep
untuk jumlah waktu yang merupakan fungsi dari tingkat baterai saat ini dalam persentase daripada memeriksa baterai setiap satu atau dua menit dengan bantuan cron bahkan ketika saya tahu itu 80% saat terakhir diperiksa.Battery_notify.sh
sumber
Menggunakan
sleep
alih-alihcron
untuk satu pekerjaan mungkin lebih efisien. Tetapi karena Anda biasanya telahcron
menjalankan dalam hal apapun, memanfaatkannya datang secara gratis, atau cukup dekat karena tidak ada bedanya. Jadi, kecuali Anda berada dicron
sistem embedded -gratis, saya akan pergi untukcron
.sumber