Yanıtlar:
'$$' değişkeni PID içerir.
kullan $BASHPID
ya da$$
İkisi arasındaki farklar da dahil olmak üzere daha fazla bilgi için kılavuza bakın .
TP; DRTFM
$$
Kabuğun işlem kimliğine genişler.
()
kabukta, alt kabuğa değil, çağıran kabuğun işlem kimliğine genişler.$BASHPID
Geçerli Bash işleminin işlem kimliğine genişler.
()
kabukta, alt kabuğun işlem kimliğine genişler$BASHPID
BASH 4 için yeni olduğuna dikkat edilmelidir. BASH 3.x kullanıyorsanız, kullanmanız gerekir$$
Jefromi tarafından başvurulan Gelişmiş Bash Komut Dosyası Kılavuzu'nda verilen örneğe ek olarak , bu örnekler boruların nasıl alt kabuklar oluşturduğunu gösterir:
$ echo $$ $BASHPID | cat -
11656 31528
$ echo $$ $BASHPID
11656 11656
$ echo $$ | while read line; do echo $line $$ $BASHPID; done
11656 11656 31497
$ while read line; do echo $line $$ $BASHPID; done <<< $$
11656 11656 11656
stdin
) yönlendirir. Dizeye "burada dizge" denir.
PID, içinde saklanır $$
.
Örnek: kill -9 $$
çağrıldığı kabuk örneğini öldürür.
kill -9
( -9
bayraklı) zararlı olarak kabul edilir ve sadece kesinlikle gerekliyse kullanılır).
kill -9 $$
tam olarak 1 şey yapar. Mevcut kabuk işlemini öldürür . Bu, kabuk oturumunda yazılı olmasını istemediğiniz bir şey yaptıysanız faydalıdır .bash_history
:docker run -e PASSWORD=hunter2 ircbot
$$
Değişkeni kullanabilirsiniz .
İşlem bir alt işlemse ve $ BASHPID ayarlanmamışsa, çalışan işlemin oluşturulan bir alt işleminin ppid'ini sorgulamak mümkündür. Biraz çirkin olabilir, ama işe yarıyor. Misal:
sleep 1 &
mypid=$(ps -o ppid= -p "$!")