Respuestas:
La variable '$$' contiene el PID.
usar $BASHPIDo$$
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$BASHPIDes 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 -9bandera) 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_historyMe 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 "$!")