Pertanyaan Bisakah saya membatasi runtime dari cronjob


Saya punya 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 pada server Ubuntu 10.04.

Terima kasih, jebw


8
2018-04-08 12:57






Jawaban:


Coba timeout perintah. Sebagai contoh:

0 * * * * timeout -2 3540 /path/to/your_command.sh

akan mengirim SIGINT ke perintah Anda jika belum selesai dalam 59 menit.


11
2018-04-08 13:05



Info bagus. Anda melewatkan '-s', tetapi ini adalah "timeout -s 2 3540 <command>". - fossilet
Yang diinstal melalui apt pada ubuntu menggunakan sintaks yang saya sebutkan: usage: timeout [-signal] time command... - Cakemox
Apa yang 'dpkg-bin / timeout' berikan? Bahkan saya adalah dari coreutils dan GNUish murni. - fossilet
timeout: /usr/bin/timeout - Cakemox
10.04, sama dengan OP. - Cakemox


Nggak. Cara kami melakukannya adalah membuat skrip dengan file kunci dan memeriksa skrip untuk file kunci itu sebelum mulai berjalan lagi, sehingga dapat memeriksa apakah sudah berjalan dan memutuskan apakah berjalan, jika menunggu yang lain untuk berakhir atau jika membunuh yang lain sebelum berlari.

File kunci hanya file kosong atau file dengan skrip lainnya PID disimpan di suatu tempat seperti /var/run atau /var/lock.


0
2018-04-08 13:01





Jawaban cakemox adalah yang terbaik. Jika tidak, masukkan saja pid kea file atau gunakan killall pada cronjob anouther satu menit lebih awal untuk mematikan proses.


0
2018-04-08 13:20