$!不适用于最后一个分叉进程的PID

时间:2017-06-28 11:19:28

标签: linux bash shell background-process pid

我正在尝试使用--fork在后台启动一个进程,它会启动,但我也想使用PID终止进程。为此,我想使用

将分叉进程的PID存储在.pid文件中

echo $!> pidfile

但这不起作用,只是给一个空字符串。我也附上了代码片段。请帮忙。 提前谢谢!

#!/bin/bash
start() {
    mongod --shardsvr --dbpath /user/JCBLivelink/MongoDB/shardA --port 27020 --logpath /user/JCBLivelink/MongoDB/shardA.log --logappend --fork
    echo $!>/user/JCBLivelink/MongoDB/shardA.pid
}

1 个答案:

答案 0 :(得分:2)

$!仅在shell创建后台进程时才有效。在这种情况下,mongod正在执行此操作,而shell对此一无所知。

也就是说,您可以指定--pidfilepathmongod让它为您执行此操作