我想在后台运行我的脚本,然后编写它的pid文件.我正在使用nohup这样做.
这就是我提出的,
nohup ./myprogram.sh > /dev/null 2>&1 & && echo $! > run.pid
Run Code Online (Sandbox Code Playgroud)
但这会产生语法错误.
以下不会给出语法错误,但问题是echo $!因为nohup在子shell中运行,所以不会写出正确的pid
(nohup ./myprogram.sh > /dev/null 2>&1 &) && echo $! > run.pid
Run Code Online (Sandbox Code Playgroud)
任何解决方案,鉴于我想要一个单行声明来实现这一目标?
Gri*_*fov 94
重定向后,您已经有一个&符号,它将您的脚本放在后台.因此,您只需要在该&符号后键入所需的命令,而不是以其他任何方式作为前缀:
nohup ./myprogram.sh > /dev/null 2>&1 & echo $! > run.pid
Run Code Online (Sandbox Code Playgroud)
anu*_*ava 20
这应该工作:
nohup ./myprogram.sh > /dev/null 2>&1 &
echo $! > run.pid
Run Code Online (Sandbox Code Playgroud)