默认情况下,nohup
写入stdout
并nohup.out
解除stderr
。我想反过来说:
写入stderr
文件并解雇stdout
。
答案1
你可以这样做:
nohup command 2>&1 >/dev/null &
因为第一个重定向是从 STDERR 到STDOUT
它写入的当前处理程序nohup.out
。然后STDOUT
被重定向到NULL
答案2
只需将标准错误重定向到您想要的文件:
$ ls
test.sh
$ cat test.sh
#!/bin/bash
echo "out"
echo "error" 1>&2
$ ./test.sh
out
error
$ nohup ./test.sh < /dev/null > /dev/null 2> err.out
$ ls
err.out test.sh
$ cat err.out
error
从手册中:
如果标准输入是终端,则从不可读的文件重定向它。如果标准输出是终端,
nohup.out
则尽可能将输出附加到终端,$HOME/nohup.out
否则。如果标准错误是终端,则将其重定向到标准输出。要将输出保存到 FILE,请使用nohup COMMAND > FILE
.
鉴于如果 stderr 被重定向,它是静默的,因此它会正常运行,并且如上所示,它确实如此。