如何运行nohup并将其pid文件写入单个bash语句中
我想在后台运行我的脚本,然后写它的PID文件。 我正在使用nohup来做到这一点。
这是我想出来的,
nohup ./myprogram.sh > /dev/null 2>&1 & && echo $! > run.pid
但是这给了一个语法错误。
以下不会给出语法错误,但问题是echo $! 由于nohup在子shell中运行,因此不会写入正确的pid
(nohup ./myprogram.sh > /dev/null 2>&1 &) && echo $! > run.pid
任何解决scheme,因为我想要一个单行语句来实现这个?
在将脚本放在后台的redirect之后,您已经有了一个&符号。 因此,只需在该&号之后键入所需的命令,而不是其他任何前缀:
nohup ./myprogram.sh > /dev/null 2>&1 & echo $! > run.pid
这应该工作:
nohup ./myprogram.sh > /dev/null 2>&1 & echo $! > run.pid