是否有任何命令可以用来将输入或命令发送到给定的 tmux 会话/窗格而无需连接到它?
这是为了无人值守访问,
我有一个在 tmux 会话上运行的控制台应用程序。我想在部署(使用 capistrano)完成后重新启动它。
是否可以?
基本上我想发送:
exit
cd ..
cd app
rails console
答案1
这个问题在ServerFault上有解决方案:
它使用send-keys
手册页中记录的命令:
下面是一个“Hello World”示例,说明了该send-keys
命令的使用。
步骤 1. 创建分离会话:
user@host:~$ tmux new -d -s mySession
步骤 2:在分离会话中执行命令:
user@host:$ tmux send-keys -t mySession.0 "echo 'Hello World'" ENTER
第 3 步:附加到会话:
user@host:$ tmux a -t mySession
您应该会在 Tmux 终端窗口中看到以下文本:
user@host:$ echo 'Hello World'
Hello World
user@host:$
这表明该echo
命令已成功发送并在 tmux 会话内执行。
将此技术适应您的命令可能如下所示:
user@host:~$ tmux send-keys -t mySession.0 exit ENTER
user@host:~$ tmux send-keys -t mySession.0 "cd .." ENTER
user@host:~$ tmux send-keys -t mySession.0 "cd app" ENTER
user@host:~$ tmux send-keys -t mySession.0 "rails console" ENTER