linux - $!不适用于最后一个 fork 进程的 PID

标签 linux bash shell background-process pid

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

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

echo $!> pid 文件

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

#!/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
}

最佳答案

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

也就是说,您可以将 --pidfilepath 指定给 mongod 让它为您做这件事

关于linux - $!不适用于最后一个 fork 进程的 PID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44800971/

相关文章:

linux - 将二进制数据从 shell 脚本回显到终端

linux - 需要将简单的帧缓冲区代码从 Linux 移植到 OS X

c - 多管道实现在 C 中不起作用

bash - 在 awk 中获取多个压缩文件的 FILENAME

linux - 监控目录内容变化

bash - 无法使用 wget 下载目录及其中的文件

bash - 是否可以将 bash 变量搜索和替换子字符串结合起来?

linux - 在 shell 脚本中找不到命令

linux - `newline' 运行 shell 脚本时出现意外

bash - 如何强制 OpenSSL 使用旧密码