如何在后台运行linux进程并记录nohup输出

时间:2011-08-31 03:58:07

标签: linux ubuntu

我正在尝试运行nohup进程以在后台运行。该过程成功触发,但由于某种原因,它在我触发进程的位置创建了一个nohup.out文件。

nohup bash -c "./manage.py celeryd -B -E -l DEBUG &> ../../logs/celeryd_beat.nohup &> ../../logs/celeryd_beat.err" &

有没有办法可以将nohup输出变成../../ logs / celeryd_beat.nohup?

的问候,

3 个答案:

答案 0 :(得分:2)

尝试

nohup bash -c "./manage.py celeryd -B -E -l DEBUG > ../../logs/celeryd_beat.nohup 2> ../../logs/celeryd_beat.err" &

答案 1 :(得分:0)

当然,如果你查看nohup的手册页,它会说

  

要将输出保存到FILE,请使用`nohup COMMAND> FILE”。

(至少那是在我的系统上,但你应该检查一下你的系统是否相同)。像

这样的东西
nohup bash -c "..." >../../logs/celeryd_beat.nohup

应该适合你。 (我在引号之间省略了你的命令,但你当然应该在执行此操作时将其包括在内)

编辑:实际上,现在我注意到您正在重定向Python脚本本身的标准输出和标准错误(您应该使用>2>你希望他们去单独的文件 - 参见Jim的答案),你可能只想丢弃nohup本身的输出,这实际上不应该包含任何内容。那么在这种情况下你可以做到

nohup bash -c "..." >/dev/null

答案 2 :(得分:0)

nohup的一项功能是,如果您不重定向,则将输出保存到nohup.out。由于您似乎已经保存了所需的所有输出,因此您最后可以在最后>/dev/null 2>&1之前添加&。 (虽然外部bash -c有什么用?看起来对我来说完全没必要。)