Saya punya beberapa simulasi untuk dilakukan, masing-masing dipanggil python simulate.py <parameter list>
. Masalah dengan simulasi ini adalah beberapa dari mereka menggantung tanpa berhenti, yang mencegah saya menjalankannya dalam batch dengan skrip sederhana.
Yang saya butuhkan, adalah beberapa bentuk perintah "run-time-constraint", yang secara otomatis akan mematikan prosesnya (lebih disukai dengan menekan Ctrl + C , tapi saya pikir kill sederhana akan melakukannya juga) setelah waktu yang ditentukan, jika prosesnya tidak berakhir dengan anggun dengan sendirinya.
Tentu saja saya dapat menulis skrip semacam itu sendiri, tetapi saya curiga bahwa seseorang telah melakukannya sebelum saya, jadi saya tidak perlu menemukan kembali jam yang dihabiskan bersama ps
, time
dan bash manual.
sumber
myProgram
selesai dalam waktu kurang darisleep
(bukan asumsi yang tidak masuk akal karena tujuannya adalah untuk menetapkan runtime maksimum yang diizinkan). Anda kemudian mengirim sinyal baik ke PID yang tidak ada (tidak ada kerusakan nyata yang dilakukan) atau ke proses acak pada sistem (berpotensi fatal).timeout
perintah melakukan apa yang dia cari, menunggu OP untuk menanggapi komentar saya.timeout
harus menjadi solusi yang saya butuhkan. Saya sedang mengujinya saat iniSaya telah menemukan sesuatu yang sedikit lebih baik, daripada
timeout
:timelimit
.Ini memiliki beberapa keunggulan; satu adalah bahwa pengguna dapat secara manual membatalkan eksekusi dengan menekan "Ctrl + C".
The
timelimit
program ini tersedia di Debian repositori.sumber
Anda dapat menyetel waktu cpu dan hal-hal lain dengan
ulimit
, untuk waktu cpu khususnya:sumber
Bash menggunakan variabel yang disebutnya
$BASHPID
dapat digunakan dalam situasi seperti itu, misalnya:Anda dapat mengubah argumen dalam panggilan untuk
sleep
dido_face()
untuk100
bukannya10
dan melihat apa yang terjadi ketika anak memakan waktu terlalu lama untuk melakukan tugas-tugasnya. Ubah saja panggilan untuk tidurdo_face()
ke panggilan ke executable Anda dan jika terlalu lama maka skrip akan membunuhnya,20
detik adalah nilai pembatas dalam contoh ini. Parameter dapat diimplementasikan sehingga ini menjadi skrip sederhana untuk dipanggil dan dapat dipanggil oleh skrip lain dalam batch atau apa pun. Menangani file pid untuk setiap proses bersamaan adalah masalah yang perlu ditangani, mungkin menggunakan subdirektori yang berbeda ...NB: Pada GNU Linux
sleep
dapat mengambil argumen floating point sepertisleep 0.1
tidur selama sepersepuluh detik.sumber