嗨,linux/bash 专家,
我想要一种通用的方法来获取先前运行的进程的进程 ID。
我知道我能做到这一点:
# child_script
myprocess & pid=$! && echo $pid
但是我想将 pid 传递给父 shell 脚本中的另一个变量。
# parent_script
myvar=$(bash child_script.sh)
这一切都很好。但如果 myprocess 运行很长时间,比如服务器进程,那么最后一个进程中的 subprocess 命令就会挂起(例如,Bash 后台进程仍然阻止子 shell 中的脚本流)另外,我不想将长时间运行的进程的 stderr/stdout 指向 /dev/null,因为我想监视它。
因此,一个黑客方法是将 pid 保存在临时文件中
# child_script
myprocess & echo $! > /tmp/pid.txt
然后在外表上,我确实
# parent_script
pid=$(cat /tmp/pid.txt)
但这显然是黑客行为。有办法避免这样做吗?这是我使用 bash/shell 这么多年之后唯一的抱怨。谢谢!