Ich habe ein Skript in Bash mit dem Namen Script.sh
und es muss seine eigene PID kennen (dh ich muss die PID in Script.sh erhalten).
Irgendeine Idee, wie das geht?
Die Variable '$$' enthält die PID.
benutze $BASHPID
oder$$
Weitere Informationen, einschließlich der Unterschiede zwischen den beiden, finden Sie im Handbuch .
TL; DRTFM
$$
Erweitert sich auf die Prozess-ID der Shell.
()
Subshell wird die Prozess-ID der aufrufenden Shell und nicht die Subshell erweitert.$BASHPID
Wird auf die Prozess-ID des aktuellen Bash-Prozesses erweitert.
()
Subshell wird die Prozess-ID der Subshell erweitert
$BASHPID
BASH 4 neu ist. Wenn Sie BASH 3.x verwenden, müssen Sie$$
Zusätzlich zu dem Beispiel im Advanced Bash Scripting Guide, auf das Jefromi verweist , zeigen diese Beispiele, wie Pipes Subshells erstellen:
quelle
stdin
). Die Zeichenfolge wird als "Hier-Zeichenfolge" bezeichnet.Die PID wird in gespeichert
$$
.Beispiel:
kill -9 $$
Beendet die Shell-Instanz, von der aus sie aufgerufen wird.quelle
kill -9
(mit-9
Flagge) gilt als schädlich und darf nur verwendet werden, wenn dies unbedingt erforderlich ist.kill -9 $$
macht genau eine Sache. Es beendet den aktuellen Shell-Prozess . Dies ist nützlich, wenn Sie in der Shell-Sitzung etwas getan haben, an das Sie nicht schreiben möchten.bash_history
:docker run -e PASSWORD=hunter2 ircbot
Sie können die
$$
Variable verwenden.quelle
Wenn der Prozess ein untergeordneter Prozess ist und $ BASHPID nicht festgelegt ist, kann die ppid eines erstellten untergeordneten Prozesses des laufenden Prozesses abgefragt werden. Es mag ein bisschen hässlich sein, aber es funktioniert. Beispiel:
quelle