Pertanyaan ini sudah ada jawabannya di sini:
- Perintah Bash Run untuk waktu tertentu? 3 jawaban
Apakah mungkin menjalankan skrip dari bash (mis. Python) dengan waktu penghentian, artinya jika skrip ini berjalan lebih dari X detik, hentikan?
Pertanyaan ini sudah ada jawabannya di sini:
Apakah mungkin menjalankan skrip dari bash (mis. Python) dengan waktu penghentian, artinya jika skrip ini berjalan lebih dari X detik, hentikan?
Jawaban:
Ya, Dimungkinkan untuk menjalankan skrip bash dengan batas waktu untuk penghentiannya. Anda dapat melakukannya dengan:
Ini menjalankan perintah dengan batas waktu. Sintaks umum meliputi:
timeout signal duration command/script arguments
dimana:
s
selama beberapa detik, m
selama beberapa menit, h
selama berjam-jam , d
berhari-hari. Default adalah detik, Ketika Anda hanya menentukan angka saja. Sebagai contoh katakan Anda ingin menghentikan skrip Anda setelah 2 menit, lalu:
timeout 2m /path/to/script arg1 arg2
NOTE
: Sinyal batas waktu default adalah SIGTERM
di mana beberapa proses tidak berakhir. Dalam hal ini kita perlu menggunakan SIGKILL
sinyal untuk mematikan proses.
timeout -s KILL 2m /path/to/script arg1 arg2
ATAU
timeout -k 30 2m /path/to/slow-command arg1 arg2
Dalam hal ini, batas waktu pertama mengirim SIGTERM
sinyal setelah batas waktu awal 2 menit. Kemudian, tunggu batas waktu 30 detik dan kirim a SIGKILL
ke proses jika masih berjalan.
timeout
perintah: Ada banyak alternatif atau solusi, Jika karena alasan tertentu Anda tidak dapat menggunakan timeout
. Ini adalah:
Kondisi sleep
kemudian kill
:
/path/to/script arg1 arg2 & sleep 2m ; kill $!
Perl Alarms (Ini dapat digunakan dalam skrip berurutan.):
perl -e "alarm 120; exec @ARGV" "/path/to/script arg1 arg2"
Menggunakan mengharapkan perintah:
time_out=120
command="/path/to/script arg1 arg2"
expect -c " set echo \"-noecho\";
set timeout $time_out;
spawn -noecho $command;
expect timeout { exit 1 } eof { exit 0 } "
Jangan ragu untuk menambahkan detail lebih lanjut.