Bagaimana saya bisa meluncurkan proses di latar belakang dan memeriksa kapan itu berakhir dalam skrip bash? Ide saya adalah skrip seperti ini:
launch backgroundprocess &
while [ Process is running ];do
echo "PROCESS IS RUNNING\r"
done;
echo "PROCESS TERMINATED"
cmd1 & p=$!; cmd2 & q=$!; while sleep 1; do echo still running ; done& wait $p $q; kill $!;
Dengan
wait
Anda dapat memiliki rincian yang Anda butuhkan:sumber
Inilah salah satu cara untuk melakukannya:
sumber
wait
lebih cocok untuk itu?Anda dapat menjalankan proses Anda dengan nohup dan menulis skrip shell untuk membaca file nohup.out yang digunakan nohup untuk login.
sumber
nohup
tidak menulis apa pun untuknohup.out
; itu hanya membuat file, dan mengarahkan output dari perintah itu. (2) Jika perintah tidak menghasilkan keluaran apa pun, tidak ada yang akan ditulisnohup.out
, dan gagasan ini tidak berjalan dengan cepat. (3) Sekalipuncommand
menulis output, bagaimana Anda bisa tahu kapan output berakhir dengan memonitor output itu?lsof
untuk melihat apakahnohup
masih menggunakannohup.out
, tapi saya setuju ini adalah metode yang sangat berbulu.command
mulai berjalan,nohup
hilang. (1) Ya, saya mengulangi angka, karena saya mengulangi apa yang saya katakan dua tahun lalu:nohup
tidak menulis apa punnohup.out
. (5) Ya, Anda bisa menulis skrip shell untuk diulang dan dijalankanlsof
untuk melihat apakahnohup.out
masih terbuka. Tetapi itu akan menjadi jawaban yang berbeda. (6) Bahkan jika Anda melakukan itu, itu tidak dapat diandalkan. Bagaimana jika beberapa proses lain membukanohup.out
file? Anda benar-benar ingin memeriksa apakah proses khusus ininohup.out
terbuka. (7) Tetapi, jika Anda akan melakukannya, mengapa tidak memeriksa saja apakah prosesnya berjalan?