【问题标题】:Keep running bash command after closing terminal关闭终端后继续运行 bash 命令
【发布时间】:2023-03-23 01:22:01
【问题描述】:

即使关闭终端,我也想继续运行以下命令。

while sleep 120; do cmd; done &

但目前还没有。谢谢。 ps 我是终端新手

【问题讨论】:

标签: linux bash shell ubuntu terminal


【解决方案1】:

您可以使用 tmux 实现此目的。

如果您的系统上没有安装 tmux,请安装它。

  1. 进入 tmux 会话 tmux
  2. 运行你的命令: while [ 1 ]; do sleep 120; <your_commands_here>; done &
  3. 分离会话:tmux detach
  4. exit

更多信息可以在这里找到:https://askubuntu.com/questions/8653/how-to-keep-processes-running-after-ending-ssh-session

编辑:Fred 的解决方案更适合此目的

【讨论】:

  • 这里可能需要注意tmux(或GNU screen)是允许创建交互式会话的实用程序,这些会话可以防止网络断开(意外或有意),以及以后重新连接到。这当然非常有用,但您可能不想将其用作运行类似守护进程的方式。
  • 那个while循环怎么错了?它将每 120 秒运行一次cmd
  • 对不起,我看错了你的代码,你的 while 循环很好(编辑答案)。 @fred 我同意,您的解决方案更合适。
【解决方案2】:

这应该可行:

while true ; do sleep 120; done 0<&- >/dev/null 2>&1 & disown ;

它的作用:

  • 在后台使用&amp; 启动命令
  • 将 stdout 和 sterr 都发送到 /dev/null(您可以重定向到其他地方)
  • 0&lt;&amp;-关闭stdin
  • 从 shell 的作业列表中删除作业,以防止它在 shell 终止时收到信号

【讨论】:

    猜你喜欢
    • 2022-08-24
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2021-04-06
    相关资源
    最近更新 更多