如果将 nohup 应用程序重定向为:
nohup bash -c "printf \"command\n\"" &> /dev/null
该nohup.out
文件未创建,但是我运行命令的终端也没有得到任何输出。如何保留命令的终端输出但不创建文件nohup.out
?
答案1
尝试这个,
要在控制台和 nohup.out 文件中获取STDOUT
和,请在执行命令之前执行以下命令。STDERR
nohup
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 &