![bash 脚本在 tmux 会话中启动另一个脚本](https://linux22.com/image/123796/bash%20%E8%84%9A%E6%9C%AC%E5%9C%A8%20tmux%20%E4%BC%9A%E8%AF%9D%E4%B8%AD%E5%90%AF%E5%8A%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E8%84%9A%E6%9C%AC.png)
我有一个 bash 脚本,它在运行时不断输出一些信息。我需要
- 当我的系统启动时自动运行它。
- 使用 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