Konteks:
Pengguna memberi saya skrip khusus untuk dijalankan. Skrip ini dapat berupa skrip apa saja untuk memulai beberapa program GUI, layanan backend. Saya tidak memiliki kendali atas bagaimana skrip ditulis. Script ini bisa dari jenis pemblokiran yaitu eksekusi menunggu sampai semua proses anak (program yang dijalankan secara berurutan) keluar
#exaple of blocking script
echo "START"
first_program
second_program
echo "DONE"
atau tipe non blocking yaitu yang memproses anak di latar belakang dan keluar seperti
#example of non-blocking script
echo "START"
first_program &
second_program &
echo "DONE"
Apa yang saya coba capai?
Skrip yang disediakan pengguna dapat berupa salah satu dari dua jenis di atas atau campuran keduanya. Pekerjaan saya adalah menjalankan skrip dan menunggu sampai semua proses dimulai dengan itu keluar dan kemudian mematikan node. Jika jenis pemblokirannya, case sederhana saja yaitu mendapatkan PID dari proses eksekusi skrip dan menunggu hingga ps -ef | grep -ef PID tidak memiliki entri lagi. Script yang tidak menghalangi adalah yang membuat saya kesulitan
Apakah ada cara saya bisa mendapatkan daftar PID dari semua proses anak yang dihasilkan oleh eksekusi skrip? Setiap petunjuk atau petunjuk akan sangat dihargai
grep
, hanya ps –udummy_user
. Juga, lihat kelompok proses.
ps
tanpa argumen (harus hanya bash
dan ps
di awal). Mulai skrip Anda di sana. Setelah selesai, tunggu hingga ps | wc -l
mencapai nilai yang Anda harapkan.
pid$(foo.sh; echo $!)
yang akan memberi Anda PIDfoo.sh
sehingga Anda dapat menggunakannyaps --ppid
. Apakah itu akan berhasil?