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 ?
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 ?
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.
()
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).
()
sous-shell, il s'étend à l'ID du processus du sous-shell [1] : http://www.gnu.org/software/bash/manual/bashref.html#Bash-Variables
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
kill -9
(avec -9
flag) est considérée comme nuisible et ne doit être utilisée que si elle est absolument nécessaire).
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
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.