如何检查进程是否正在运行 shell 脚本?

如何检查进程是否正在运行 shell 脚本?

给定一个进程 pid,我怎样才能

  • 检查进程是否正在运行 shell 脚本?

  • 如果是,如何获取脚本正在运行的子进程?经过pgrep -P <pid>

谢谢。

答案1

当您执行 shell 脚本时,它将启动一个称为子 shell 的进程。作为主 shell 的子进程,子 shell 执行 shell 脚本中的命令列表(batch所谓的“批处理”)。

在某些情况下,您可能想知道运行 shell 脚本的子 shell 的进程 ID (PID)。

在 bash 中,shell 脚本的子 shell 进程的 PID 存储在一个名为“$$”的特殊变量中。该变量是只读的,不能在 shell 脚本中修改它。例如:

$ cat xyz.sh
#!/bin/bash
echo "PID of this script: $$"

给出以下输出

PID of this script: XXXX

bash shell 导出几个其他只读变量。例如,PPID存储子shell的父进程(即主shell)的进程ID。 UID 存储当前正在执行脚本的用户的用户ID。像这样(仅示例)

#!/bin/bash
echo "PID of this script: $$"
echo "PPID of this script: $PPID"
echo "UID of this script: $

这给出了输出

PID of this script: XXXX 
PPID of this script: XXXX 
UID of this script: XXXX

相关内容