如何在bash脚本中运行一个命令,该命令在脚本退出时不会停止?

发布于 2024-12-26 06:10:07 字数 91 浏览 0 评论 0原文

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

I have a BASH script which runs other commands and I would like to keep them running in case the main script stops. I tried to run those commands with & but it didn't help. Am I doing something wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

浮云落日 2025-01-02 06:10:07

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

至少有两种解决方案:

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

现在,问题是您想如何处理在后台启动的命令的输出:

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

This is normal: the shell's job control mechanism terminates its jobs when it exits.

There are at least two solutions:

  • use disown after you have launched a job;
  • use at to schedule your job at a later time;
  • or use the nohup command.

Now, there is the question of what you want to do with the output of the command you launch in the background:

  • with disown, you lose it;
  • with at, stdout and stderr are sent to you by mail (but then you can redirect stdout/stderr if you want);
  • with nohup, you define the output file yourself.
短叹 2025-01-02 06:10:07

尝试在命令之前使用 nohup(代表不挂起):

nohup <your command>

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

Try using nohup (stands for no hangup) before your command:

nohup <your command>

It will forward the stdout of the command into a file called nohup.out by default.

徒留西风 2025-01-02 06:10:07

尝试使用“nohup”命令来运行COMMAND,忽略挂断信号

nohup COMMAND &

Try 'nohup' command to run COMMAND, ignoring hangup signals

nohup COMMAND &
蓝颜夕 2025-01-02 06:10:07

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

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

Here is an example how to do this:

nohup your_command < /dev/null > output.log 2>&1 &
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文