是否可以在不连接到 tmux 会话的情况下将输入发送到它?

是否可以在不连接到 tmux 会话的情况下将输入发送到它?

是否有任何命令可以用来将输入或命令发送到给定的 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

相关内容