J'ai un script dans Bash appelé Script.sh
, et il a besoin de connaître son propre PID (c'est-à-dire que j'ai besoin d'obtenir le PID dans le Script.sh)
Une idée comment faire cela?
La variable '$$' contient le PID.
utiliser $BASHPID
ou$$
Consultez le manuel pour plus d'informations, y compris les différences entre les deux.
TL; DRTFM
$$
S'étend à l'ID de processus du shell.
()
sous - shell, il s'étend à l'ID de processus du shell appelant, et non au sous-shell.$BASHPID
S'étend à l'ID de processus du processus Bash actuel.
()
sous - shell, il se développe en l'ID de processus du sous-shell
$BASHPID
c'est nouveau dans BASH 4. Si vous utilisez BASH 3.x, vous devez utiliser$$
En plus de l'exemple donné dans le Advanced Bash Scripting Guide référencé par Jefromi , ces exemples montrent comment les tubes créent des sous-shell:
la source
stdin
). La chaîne est appelée "chaîne ici".Le PID est stocké dans
$$
.Exemple:
kill -9 $$
tuera l'instance du shell à partir de laquelle elle est appelée.la source
kill -9
(avec-9
indicateur) est considéré comme nocif et ne doit être utilisé que si cela est absolument nécessaire).kill -9 $$
exactement 1 chose. Il tue le processus shell actuel . Ceci est utile si vous avez fait quelque chose dans la session shell que vous ne voulez pas écrire.bash_history
comme:docker run -e PASSWORD=hunter2 ircbot
Vous pouvez utiliser la
$$
variable.la source
Si le processus est un processus enfant et que $ BASHPID n'est pas défini, il est possible d'interroger le ppid d'un processus enfant créé du processus en cours d'exécution. C'est peut-être un peu moche, mais ça marche. Exemple:
la source