192 votes

Comment un script Bash Linux/Unix connaît-il son propre PID ?

J'ai un script dans Bash appelé Script.sh et il doit connaître son propre PID (c'est-à-dire que je dois obtenir le PID dans le script.sh).

Comment faire ?

294voto

Paul Tomblin Points 83687

La variable $$ contient le PID.

87voto

tvanfosson Points 268301

Utiliser $BASHPID ou $$

Consultez le [manuel][1] pour plus d'informations, notamment sur les différences entre les deux.

TL;DRTFM

  • $$ S'étend à l'ID du processus du shell.
    • Dans un () subshell, il s'étend à l'ID du processus du shell qui l'invoque, et non du subshell.
  • $BASHPID S'étend à l'ID du processus Bash actuel (nouveau dans bash 4).

42voto

Dennis Williamson Points 105818

En plus de l'exemple donné dans le Guide avancé du script Bash référencé par Jefromi Ces exemples montrent comment les pipes créent des sous-shells :

$ 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

0 votes

Pourriez-vous m'expliquer ce que signifie "<<<" ? Merci.

4 votes

Il redirige une chaîne de caractères dans la boucle (ou tout ce qui se lit stdin ). La chaîne est appelée "chaîne ici".

10voto

neo Points 860

Le PID est stocké dans $$ .

Exemple : kill -9 $$ tuera l'instance du shell à partir duquel il est appelé.

0 votes

kill -9 (avec -9 flag) est considérée comme nuisible et ne doit être utilisée que si elle est absolument nécessaire).

3 votes

C'est considéré comme "dangereux" parce que le processus n'a pas la possibilité de répondre au signal (et éventuellement de nettoyer après lui). En faisant kill -9 $$ fait exactement une chose. Il tue le processus actuel de l'enveloppe . Ceci est utile si vous avez fait quelque chose dans la session shell que vous ne voulez pas que l'on écrive à .bash_history Comme : docker run -e PASSWORD=hunter2 ircbot

8voto

Vous pouvez utiliser le $$ variable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X