使用nohup的一系列命令

时间:2015-06-12 18:54:46

标签: shell unix nohup

我有一系列命令,我想使用nohup。

每个命令可能需要一两天,有时我会从终端断开连接。

实现这一目标的正确方法是什么?

方法一:

nohup command1 && command2 && command3 ...

或 方法2:

nohup command1 && nohup command2 && nohup command3 ...

或 方法3:

echo -e "command1\ncommand2\n..." > commands_to_run
nohup sh commands_to_run

我可以看到方法3可能有效,但它迫使我创建一个临时文件。如果我只能从方法1或方法2中选择,那么正确的方法是什么?

1 个答案:

答案 0 :(得分:2)

nohup command1 && command2 && command3 ...

nohup仅适用于command1。完成后(假设它没有失败),command2将在没有nohup的情况下执行,并且容易受到挂断信号的影响。

nohup command1 && nohup command2 && nohup command3 ...

我不认为这会奏效。这三个命令中的每一个都将受nohup保护,但处理&&运算符的shell不会。如果您在command2开始之前注销,我认为它不会启动;同样适用于command3

echo -e "command1\ncommand2\n..." > commands_to_run
nohup sh commands_to_run

我认为这应该有效 - 但是另一种方法不需要创建脚本:

nohup sh -c 'command1 && command2 && command3'

然后保护shell免受挂断信号的影响,我相信这三个子命令也是如此。如果我在最后一点上弄错了,你可以这样做:

nohup sh -c 'nohup command1 && nohup command2 && nohup command3'