无法在后台运行进程

无法在后台运行进程

我使用以下命令在后台运行 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

相关内容