我想要一个像这样的 shell 脚本:
my-app &
echo $my-app-pid
但我不知道如何获取刚刚执行的命令的pid。
我知道我可以使用jobs -p my-app
命令来 grep pid。但如果我想多次执行shell,这个方法就不行了。因为工作规范是模棱两可的。
答案1
最后执行命令的PID位于$!
外壳变量:
my-app &
echo $!
答案2
得到PID
:
#!/bin/bash
my-app &
echo $!
保存PID
在变量中:
#!/bin/bash
my-app &
export APP_PID=$!
将所有实例保存PID
在文本文件中:
#!/bin/bash
my-app &
echo $! >>/tmp/my-app.pid
将输出、错误保存PID
在单独的文件中:
#!/bin/bash
my-app >/tmp/my-app.log 2>/tmp/my-app.error.log &
echo $! >>/tmp/my-app.pid
echo "my-app PID's: $(cat /tmp/my-app.pid)"
答案3
尝试类似的东西
pidof my_app >> /tmp/my_app.pid
答案4
尝试这样的事情:
ps ef | grep "[m]y-app" | awk '{print $2}'
将流程的第一个字母放在两者之间[
]
可确保您不会将该grep
流程添加到列表中。如果需要,您还可以在您的用户名上添加 grep。