nohup 输出重定向到不同的文件

sds*_*sds 6 bash nohup

nohup经常在linux/下用于重要的长时间运行的进程bash,以至于这nohup time my command with arguments && mv nohup.out my.log对我来说几乎是一个习语。

问题是nohupstdout和 都stderr放入nohup.out,我无法控制文件的名称。这意味着如果我不小心nohup在同一个目录中启动了两个s,它们的输出将在nohup.out.

问题是:

  1. 我该如何处理这个问题?总是nohup在不同的目录中运行s 并编写一个首先检查的 shell 函数,这./nohup.out是我看到的两个糟糕的选项。

  2. 为什么我不知道nohup将输出重定向到哪里?GNU 工具往往有这么多的选择,为什么不nohup呢?

slh*_*hck 8

您可以将 stdout 和 stderr重定向到一个文件。使用 Bash 4(或其他如 Zsh),就像:

nohup <some-command> &> output.log
Run Code Online (Sandbox Code Playgroud)

我不能告诉你为什么没有单独的选项nohup来设置输出,但是如果你的 shell 可以处理这个,你真的不需要一个选项。


Irs*_*han 6

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

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

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