我有一个包含以下代码的 bash 脚本文件脚本
./xxx_program arguments &
PID=$!
echo $PID
kill -INT $PID
我想要做的是启动一个程序“ xxx_program
”,然后将其存储PID
在$PID
变量中。但是,我得到的却是“ bash
”本身的 PID,而不是我打开的程序的 PID,这导致kill -INT $PID
退出,script.sh
而 xxx_program 仍在运行。请注意打开xxx_program
,但我得到的是错误的 PID。
我想知道是否有办法获取 xxx_program 的 PID?提前谢谢
答案1
有多种方法:
- 让脚本自己写入其 pid。
echo $$ > /tmp/my.pid
在脚本中包含行。 - 使用
pidof script_name
- 使用
ps -ef | grep script_name | tr -s ' ' | cut -d ' ' -f2
答案2
你可以使用
pidof xxx_program
如果这是进程的名称。(必须是完整的进程名称以及如何调用它,包括任何选项或命令行路径)