Bisakah saya membatasi runtime dari cronjob

8

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

jebw
sumber

Jawaban:

11

Coba timeoutperintahnya. Sebagai contoh:

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

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

Cakemox
sumber
Info bagus Anda melewatkan '-s', tetapi "timeout -s 2 3540 <perintah" ".
Fish Monitor
Yang diinstal melalui apt di ubuntu menggunakan sintaks yang saya sebutkan:usage: timeout [-signal] time command...
Cakemox
Apa yang diberikan 'dpkg -S bin / timeout'? Sebenarnya milikku berasal dari coreutils dan murni GNUish.
Fish Monitor
timeout: /usr/bin/timeout
Cakemox
10,04, sama dengan OP.
Cakemox
0

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 PIDdisimpan di suatu tempat seperti /var/runatau /var/lock.

coredump
sumber
0

Jawaban cakemox adalah yang terbaik. Jika tidak, cukup masukkan pid ke dalam file atau gunakan killall di cronjob baru semenit sebelumnya untuk mematikan proses.

Sirex
sumber