Saya memiliki cronjob yang berjalan setiap jam yang kadang-kadang terlalu lama untuk dijalankan, apakah ada cara saya dapat mengatur runtime maksimum dan pekerjaan terbunuh jika melebihi itu?
Ini ada di server Ubuntu 10.04.
Terima kasih, jebw
Coba timeout
perintahnya. Sebagai contoh:
0 * * * * timeout -2 3540 /path/to/your_command.sh
akan mengirim SIGINT ke perintah Anda jika belum selesai dalam 59 menit.
usage: timeout [-signal] time command...
timeout: /usr/bin/timeout
Nggak. Cara kita melakukannya adalah membuat skrip dengan file kunci dan meminta skrip memeriksa file kunci itu sebelum mulai berjalan lagi, sehingga dapat memeriksa apakah sudah berjalan dan memutuskan apakah sudah berjalan, jika menunggu yang lain untuk mengakhiri atau jika itu membunuh yang lain sebelum berjalan.
File kunci hanyalah file kosong atau file dengan skrip lain
PID
disimpan di suatu tempat seperti/var/run
atau/var/lock
.sumber
Jawaban cakemox adalah yang terbaik. Jika tidak, cukup masukkan pid ke dalam file atau gunakan killall di cronjob baru semenit sebelumnya untuk mematikan proses.
sumber