![无法在后台运行进程](https://linux22.com/image/82666/%E6%97%A0%E6%B3%95%E5%9C%A8%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%E8%BF%9B%E7%A8%8B.png)
我使用以下命令在后台运行 cp.sh 脚本。
nohup sh cp.sh < /dev/null & > /dev/null &
output: Invalid null command.
这个“无效的空命令”的解决方案是什么?
答案1
您在之间留了一个空格& >
,这是需要的&>
。这会将 STDOUT 和 STDERR 重定向到接下来的文件。
所以你需要:
nohup sh cp.sh < /dev/null &> /dev/null &
如果您的 shell 不支持&>
,请使用 POSIX 方式重定向 STDOUT 和 STDERR:
nohup sh cp.sh </dev/null >/dev/null 2>&1 &
答案2
该消息来自抱怨语法的 shell:
& > /dev/null &
确实是一个命令行,包含a command between two &
但该命令没有命令名称,而只是stdout
.
顺便说一句:对于那些还不知道的人:自 12 年来,Solaris 允许nohup
通过调用以下命令来运行已经运行的进程:
nohup -p <pid>
或者
nohup -g <pgid>
这将创建一个文件 nohup.out 并stdout
用引用该文件的文件描述符替换内核中的文件描述符nohup.out
。