【问题标题】:How to avoid creating nohup.out and in this case where the output will be generated?如何避免创建 nohup.out 以及在这种情况下将生成输出?
【发布时间】:2017-01-10 06:47:24
【问题描述】:

我正在运行一个 matlab 脚本,该脚本采用输入参数,并且在函数中分配了输出文件夹。 当我像这样运行 nohup nohup ./matlabscript.h & 然后它会生成一个非常大的 nohup.out 文件。如何避免创建该文件? 输出文件夹已分配,所以不确定是否需要分配输出文件? 谢谢

【问题讨论】:

  • IIRC nohup 注意到标准输出是否连接到终端,只有在这种情况下才创建nohup.out。如果您使用nohup ./script > /dev/null 明确重定向,您应该没问题。
  • 谢谢@filmor。它会在 /dev/null 中占用内存吗?
  • /dev/null 是一个伪设备,写入它是一个空操作(既不占用内存也不占用时间)。

标签: linux bash nohup


【解决方案1】:

正如filmor 评论的那样,您可以redirect stdout 到某个文件。

nohup ./script > script.out &

甚至将 stdoutstderr 都重定向到同一个文件

nohup ./script > script.out 2>&1 &

或者换一个

nohup ./script > script.out 2> script.err &

要丢弃输出,请将其重定向到 /dev/null。数据基本上被破坏了,所以没有使用内存。见null(4)。如果您想丢弃两个输出,请使用:

nohup ./script > /dev/null 2>&1 &

nohup(1) 注意到两个输出都被重定向,因此不会创建nohup.out 文件(假设两个输出都不是终端,请参阅isatty(3))。

我还建议考虑使用batch(1),例如带有here document

batch << EOJ
  ./script > script.out 2>&1
EOJ

阅读advanced bash scripting guide

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 2013-07-17
    相关资源
    最近更新 更多