Respuestas:
La variable '$$' contiene el PID.
usar $BASHPID
o$$
Consulte el manual para obtener más información, incluidas las diferencias entre los dos.
TL; DRTFM
$$
Se expande a la ID de proceso del shell.
()
subshell, se expande al ID de proceso del shell de invocación, no al subshell.$BASHPID
Se expande al ID de proceso del proceso Bash actual.
()
subshell, se expande al ID de proceso de la subshell$BASHPID
es nuevo en BASH 4. Si está usando BASH 3.x, debe usar$$
Además del ejemplo dado en la Guía avanzada de secuencias de comandos Bash a la que hace referencia Jefromi , estos ejemplos muestran cómo las tuberías crean subcapas:
$ 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
stdin
). La cadena se conoce como una "cadena aquí".
El PID se almacena en $$
.
Ejemplo: kill -9 $$
matará la instancia de shell desde la que se llama.
kill -9
(con -9
bandera) se considera dañino y solo se debe usar si es absolutamente necesario).
kill -9 $$
hace exactamente 1 cosa. Mata el proceso actual de shell . Esto es útil si ha hecho algo en la sesión de shell que no desea escribir en .bash_history
Me gusta:docker run -e PASSWORD=hunter2 ircbot
Puedes usar la $$
variable.
Si el proceso es un proceso secundario y $ BASHPID no está configurado, es posible consultar el ppid de un proceso secundario creado del proceso en ejecución. Puede ser un poco feo, pero funciona. Ejemplo:
sleep 1 &
mypid=$(ps -o ppid= -p "$!")