得到进程的pid - linux

时间:2013-12-04 19:11:31

标签: linux shell

我尝试在其路径中启动应用并获取其进程ID:

(cd /opt/server/TrackServer/release && ./TrackServer&) && echo $!

但我总是错误的PID。

即得到:

$ (cd /opt/server/TrackServer/release && ./TrackServer&) && echo $!
5078
$ ps aux | grep TrackServer
user    5250  0.6  0.0 153340  7824 pts/0    S    20:09   0:00 ./TrackServer
user    5253  0.0  0.0  14868   976 pts/0    S+   20:09   0:00 grep --color=auto TrackServer

如何在其路径中调用该进程并获取它的pid?

2 个答案:

答案 0 :(得分:2)

如果只有一个正在运行,那么使用pidof TrackServer

就可以轻松实现

答案 1 :(得分:2)

TrackServer(...)引发的子shell的后台进程,而不是您的脚本,因此脚本中的$!会存储不同的PID。

尝试

pushd /opt/server/TrackServer/release && { ./TrackServer & echo $!; popd; }