Saya membuat skrip bash untuk saya gunakan. Bagaimana saya bisa menjalankan perintah untuk waktu tertentu, seperti 20 detik dan mengakhiri perintah? Saya mencoba banyak solusi tetapi tidak ada yang berhasil, saya juga mencoba perintah timeout tanpa hasil. Tolong beri saya solusi untuk ini.
misalnya: Saya ingin menjalankan perintah ini dalam skrip dan terminal setelah 10 detik
some command
some command > logfile &
di baris pertama. Setelah itu Anda bisa menganalisislogfile
.Dari bash prompt Anda dapat menggunakan "
your_command & sleep 20; kill $!
aptget install timeout
dantimeout -k 3m 14s your_command
expect
seperti yang dijelaskan di sini: https://unix.stackexchange.com/questions/43340/how-to-introduce-timeout-for-shell-scriptingperl -e "alarm 10; exec @ARGV" "Your_command"
$COMMAND 2>&1 >/dev/null & WPID=$!; sleep $TIMEOUT && kill $! & KPID=$!; wait $WPID
( Sumber dan penjelasan )sumber
Cara lain adalah dengan menggunakan pola pgrep $, atau pola pkill $; mengembalikan semua PID yang cocok dengan pola yang diberikan, mencari seluruh proses yang berjalan pada mesin. Jadi untuk membatasi cakupan PID hanya untuk yang Anda miliki, gunakan: pgrep -P $ mypid $ pattern, atau pkill -P $ mypid $ pattern
Jadi untuk menjalankan proses latar belakang selama waktu yang ditentukan, skrip Anda akan terlihat seperti ini:
Perlu diingat bahwa ini akan mematikan semua proses dengan pola nama yang sama yang berjalan di bawah PID induk saat ini. Jadi Anda bisa menggunakan ini untuk memulai beberapa proses, dan membunuh semuanya secara bersamaan setelah waktu tertentu.
sumber