Nohup:将 stderr 重定向到文件并关闭 stdout

Nohup:将 stderr 重定向到文件并关闭 stdout

默认情况下,nohup写入stdoutnohup.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 被重定向,它是静默的,因此它会正常运行,并且如上所示,它确实如此。

相关内容