如何不创建 nohup.out 文件,但保留终端输出?

如何不创建 nohup.out 文件,但保留终端输出?

如果将 nohup 应用程序重定向为:

nohup bash -c "printf \"command\n\"" &> /dev/null

nohup.out文件未创建,但是我运行命令的终端也没有得到任何输出。如何保留命令的终端输出但不创建文件nohup.out

答案1

尝试这个,

要在控制台和 nohup.out 文件中获取STDOUT和,请在执行命令之前执行以下命令。STDERRnohup

exec >  >(awk '{ print $0; fflush();}' | tee -a nohup.out)
exec 2>  >(awk '{ print $0; fflush();}' | tee -a nohup.out >&2)
nohup bash -c "printf \"command\n\"" &

编辑:

如果您nohup.out不想创建,请尝试此操作

exec >  >(awk '{ print $0; fflush();}')
exec 2>  >(awk '{ print $0; fflush();}')
nohup bash -c "printf \"command\n\"" &

这不会在控制台上nohup.out显示时创建STDOUT和。STDERR

将以上几行放入脚本中,然后在后台运行它。

答案2

您可以按如下方式运行它

nohup process & tail -f nohup.out

或者使用球座,它可以完全满足您的需要: 从标准输入读取并写入标准输出和文件

nohup process 1>&2 | tee nohup.out &

相关内容