Adakah yang bisa memberitahu saya bagaimana cara mendapatkan PID dari perintah dieksekusi di bash.
Misalnya saya memiliki skrip bash yang menjalankan imapsync.
Ketika skrip terbunuh, proses imapsync tidak selalu terbunuh, jadi saya ingin dapat mengidentifikasi PID imapsync secara terprogram dari skrip saya, sehingga saya dapat mematikan proses imapsync sendiri di pengatur sinyal.
Jadi bagaimana cara saya mendapatkan PID dari proses anak dari script bash induk?
Jawaban:
imapsync memiliki opsi untuk mengatur di mana pidnya ditulis:
--pidfile: file di mana pid imapsync ditulis.
sumber
TKI, seperti halnya
$$
memegang PID Anda,$!
memiliki PID dari perintah latar belakang yang baru saja dieksekusi .sumber
/var/run/whatever.pid
. Mungkin ada opsi baris perintah untuk memintanya menyimpan PID di suatu tempat; jika tidak, itu terdengar seperti fitur untuk meminta penulis, atau menerapkan sendiri.&
), maka$!
variabel tidak terdefinisi./bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &
- sysfault 24 Nov '10 jam 14:28Tidak seperti itu
pidof
,pgrep
dapat diberikan berbagai opsi untuk membatasi proses yang menghasilkan PID untuknya. Salah satu yang mungkin sangat berguna adalah memilih berdasarkan pada PPID menggunakan PID dari proses saat ini.yang hanya akan menampilkan PID dari imapsync jika mereka adalah anak-anak dari skrip Anda.
sumber
Bagaimana dengan meletakkan imapsync di latar belakang sesaat, mendapatkan PID dan kemudian mengesampingkannya ... Sesuatu seperti ini:
sumber