Mam skrypt o nazwie Bash Script.sh
i musi on znać swój własny PID (tj. Muszę uzyskać PID w Script.sh)
Masz jakiś pomysł, jak to zrobić?
Zmienna „$$” zawiera PID.
użyj $BASHPID
lub$$
Więcej informacji, w tym różnice między nimi, znajdziesz w instrukcji .
TL; DRTFM
$$
Rozwija się do identyfikatora procesu powłoki.
()
podpowłoce rozwija się do identyfikatora procesu powłoki wywołującej, a nie podpowłoki.$BASHPID
Rozwija się do identyfikatora procesu bieżącego procesu Bash.
()
podpowłoce rozwija się do identyfikatora procesu podpowłoki
$BASHPID
jest to nowość w BASH 4. Jeśli używasz BASH 3.x, musisz użyć$$
Oprócz przykładu podanego w Advanced Bash Scripting Guide, do którego odwołuje się Jefromi , poniższe przykłady pokazują, jak potoki tworzą podpowłoki:
źródło
stdin
). Ciąg jest nazywany „ciągiem tutaj”.PID jest przechowywany w
$$
.Przykład:
kill -9 $$
zabije instancję powłoki, z której jest wywoływana.źródło
kill -9
(z-9
flagą) jest uważane za szkodliwe i powinno być używane tylko wtedy, gdy jest to absolutnie konieczne).kill -9 $$
dokładnie 1 rzecz. Zabija bieżący proces powłoki . Jest to przydatne, jeśli zrobiłeś coś w sesji powłoki, o której nie chcesz pisać.bash_history
:docker run -e PASSWORD=hunter2 ircbot
Możesz użyć
$$
zmiennej.źródło
Jeśli proces jest procesem potomnym, a $ BASHPID nie jest ustawione, można zapytać o ppid utworzonego procesu potomnego działającego procesu. To może być trochę brzydkie, ale działa. Przykład:
źródło