我可以更改`nohup.out`的名字吗?

Dav*_*uer 238 bash logging nohup

当我跑nohup some_command &,输出去nohup.out; man nohup说要看看info nohup哪个反过来说:

如果标准输出是终端,则命令的标准输出将附加到文件'nohup.out'; 如果无法写入,则将其附加到文件'$ HOME/nohup.out'; 如果无法写入,则不运行该命令.

但是,如果我已经有一个命令使用nohup输出/nohup.out,我想运行另一个nohup命令,我可以将输出重定向到nohup2.out

ism*_*ail 391

nohup some_command &> nohup2.out&
Run Code Online (Sandbox Code Playgroud)

瞧.


Bash版本<4的旧语法:

nohup some_command > nohup2.out 2>&1&
Run Code Online (Sandbox Code Playgroud)

  • 在Bash 4中,两个重定向可以缩写为一个`&> nohup2.out`. (17认同)
  • `2>&1`将`stderr`重定向到与`stdout`相同的输出文件,在本例中为`nohup2.out` (12认同)
  • @monkut bash --version (8认同)
  • @ismail,如果我理解,这会将输出从stdout和nohup.out引导到nohup2.out.然后`2>&1&`做什么? (4认同)

God*_*ith 58

出于某种原因,上述答案对我不起作用; 运行后我没有返回到命令提示符,正如我预期的那样尾随&.相反,我只是尝试了

nohup some_command > nohup2.out&
Run Code Online (Sandbox Code Playgroud)

它就像我想要的那样工作.离开这里以防万一其他人处于相同的情况.运行Bash 4.3.8以供参考.


Tru*_*ueY 12

由于文件处理程序指向Linux/Unix系统上的i节点(独立于文件名存储)您可以nohup.out在启动后随时将默认值重命名为任何其他文件名nohup something&.所以也可以做以下事情:

$ nohup something&
$ mv nohup.out nohup2.out
$ nohup something2&
Run Code Online (Sandbox Code Playgroud)

现在something增加了线路nohup2.outsomething2nohup.out.


Irs*_*han 9

无论何时运行nohup命令,上述方法都将删除输出文件数据.

在用户定义的文件中附加输出,可以>>在nohup命令中使用.

nohup your_command >> filename.out &
Run Code Online (Sandbox Code Playgroud)

此命令将附加文件中的所有输出,而不删除旧数据.

  • 这也会重定向 stderr 吗?我想引导一切,无论是错误还是输出到单一来源。 (2认同)