How does a Linux/Unix Bash script know its own PID?

前端 未结 6 1246
[愿得一人]
[愿得一人] 2021-01-29 23:10

I have a script in Bash called Script.sh, and it needs to know its own PID (i.e. I need to get PID inside the Script.sh )

Any idea how to do this ?

相关标签:
6条回答
  • 2021-01-29 23:36

    If the process is a child process and $BASHPID is not set, it is possible to query the ppid of a created child process of the running process. It might be a bit ugly, but it works. Example:

    sleep 1 &
    mypid=$(ps -o ppid= -p "$!")
    
    0 讨论(0)
  • 2021-01-29 23:40

    The PID is stored in $$.

    Example: kill -9 $$ will kill the shell instance it is called from.

    0 讨论(0)
  • 2021-01-29 23:48

    use $BASHPID or $$

    See the [manual][1] for more information, including differences between the two.

    TL;DRTFM

    • $$ Expands to the process ID of the shell.
      • In a () subshell, it expands to the process ID of the invoking shell, not the subshell.
    • $BASHPID Expands to the process ID of the current Bash process (new to bash 4).
      • In a () subshell, it expands to the process ID of the subshell [1]: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Variables
    0 讨论(0)
  • 2021-01-30 00:00

    In addition to the example given in the Advanced Bash Scripting Guide referenced by Jefromi, these examples show how pipes create subshells:

    $ 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 讨论(0)
  • 2021-01-30 00:01

    The variable '$$' contains the PID.

    0 讨论(0)
  • 2021-01-30 00:01

    You can use the $$ variable.

    0 讨论(0)
提交回复
热议问题