获取输出为管道的命令的pid

时间:2014-11-05 10:11:14

标签: linux bash pid

为了远程启动程序,记录其输出并立即查看该日志,我正在使用此脚本:

nohup mycommand 2>&1 | tee -a server.log &

现在,我想在一个文件中存储新启动的mycommand的pid(其名称非常通用,我不能只使用pgrep,因为存在冲突风险)。

如果我只是添加echo $! > mycommand.pid,我会获得tee的pid。

如何可靠地将mycommand的pid写入文件?

顺便说一句,为什么这不能给出正确的pid?

( nohup mycommand 2>&1 ; echo $! > mycommand.pid ) | tee -a server.log &

1 个答案:

答案 0 :(得分:1)

好的,这个简单的变体有效:

( nohup mycommand 2>&1 & echo $! > mycommand.pid ) | tee -a server.log &

我不确定为什么;无法正常工作以及为什么我必须使用&