bash 脚本在 tmux 会话中启动另一个脚本

bash 脚本在 tmux 会话中启动另一个脚本

我有一个 bash 脚本,它在运行时不断输出一些信息。我需要

  1. 当我的系统启动时自动运行它。
  2. 使用 ssh 监视此输出并每隔一段时间远程控制它。

为此,我想使用 tmux。那么我该如何处理这个问题呢?为了简单起见,假设我的 shell 脚本是这样的:

文件名:start.bash

#!/bin/bash
# just an example for simplicity    
watch date

我需要另一个脚本来在 tmux 中运行它,并能够在以后需要时附加到它。我在需要创建一个具有名称的新 tmux 会话并使其运行另一个 shell 脚本的部分遇到了困难。一旦我完成了这个工作,我就可以将其放入另一个 shell 脚本中并处理其余的事情。我想这很容易。有人可以给我这个具体步骤的例子吗?

答案1

您可以通过多种方式做到这一点。

您可以在使用发送密钥创建会话后执行此操作:

tmux new -s "remote" -d
tmux send-keys -t "remote" "start.bash" C-m
tmux attach -t "remote" -d

或者通过外壳:

tmux new -s "remote" -d "/bin/bash"
tmux run-shell -t "remote:0" "start.bash"
tmux attach -t "remote" -d

答案2

在服务器上启动 tmux 会话并且不要关闭它。它将继续在服务器上运行。从您的客户端计算机,您将能够 ssh 登录并运行

tmux attach

重新连接到 tmux 会话中运行的任何内容。如果您重新启动服务器,要在引导时启动它,请从 /etc/rc.local 运行的 shell 脚本启动 tmux

相关内容