给定一个进程 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