如何在脚本退出时未停止的bash脚本中运行命令?

时间:2012-01-12 10:38:54

标签: bash

我有一个运行其他命令的BASH脚本,我想让它们保持运行以防主脚本停止。我试图用&运行这些命令,但它没有帮助。我做错了吗?

4 个答案:

答案 0 :(得分:6)

这是正常的:shell的作业控制机制在退出时终止其作业。

至少有两种解决方案:

  • 启动工作后使用disown;
  • 稍后使用at安排工作;
  • 或使用nohup命令。

现在,您需要对在后台启动的命令的输出做什么?

  • disown,你失去了它;
  • at,stdout和stderr通过邮件发送给您(但如果您愿意,您可以重定向stdout / stderr);
  • 使用nohup,您自己定义输出文件。

答案 1 :(得分:2)

尝试'nohup'命令运行 COMMAND ,忽略挂断信号

nohup COMMAND &

答案 2 :(得分:2)

在命令之前尝试使用nohup(代表没有挂断):

nohup <your command>

默认情况下,它会将命令的标准输出转发到名为nohup.out的文件中。

答案 3 :(得分:2)

以下是如何执行此操作的示例:

nohup your_command < /dev/null > output.log 2>&1 &