Saya menggunakan bash pada sistem RH Linux.
Biasanya, Anda bisa mendapatkan PID Anda sendiri dengan variabel $$. Namun, jika skrip menjalankan salah satu fungsinya sendiri sebagai proses latar belakang – itu tidak akan berhasil; semua fungsi yang berjalan di latar belakang akan mendapatkan PID dari skrip induk saat $$ digunakan.
Misalnya, berikut adalah skrip pengujian:
/tmp/test:
#!/bin/bash
echo "I am $$"
function proce {
sleep 3
echo "$1 :: $$"
}
for x in aa bb cc; do
eval "proce $x &"
echo "Started: $!"
done
Saat dijalankan:
/tmp$ ./test
I am 5253
Started: 5254
Started: 5256
Started: 5258
/tmp$ aa :: 5253
bb :: 5253
cc :: 5253
Jadi – skrip induk (/tmp/test) dijalankan sebagai PID 5253 dan menjalankan tiga proses latar belakang dengan PID 5254, 5256, dan 5258. Namun setiap proses latar belakang tersebut mendapatkan nilai 5253 dengan $$.
Bagaimana proses ini dapat menemukan PID sebenarnya?
Jawaban yang Diterima:
$BASHPID
mungkin yang Anda cari.
BASHPID
Perluas ke ID proses dari proses Bash saat ini. Ini berbeda dari $$ dalam keadaan tertentu, seperti subkulit yang
tidak memerlukan Bash untuk diinisialisasi ulang.
Berbeda dengan $$
($$) Perluas ke ID proses shell. Dalam subkulit (), itu
diperluas ke ID proses dari shell yang memanggil, bukan subkulit.
http://www.gnu.org/software/bash/manual/bashref.html#Bash-Variables