接続せずにtmuxセッションに入力を送信できますか?

接続せずにtmuxセッションに入力を送信できますか?

接続せずに特定のtmuxセッション/ウィンドウに入力またはコマンドを送信するために使用できるコマンドはありますか?

無人接続のためのものです。

tmuxセッションで実行されるコンソールアプリケーションがあります。デプロイ(capistranoを使用)が完了したら、再起動したいと思います。

可能ですか?

基本的に送信したい内容は次のとおりです。

exit
cd ..
cd app
rails console

ベストアンサー1

この問題はServerFaultの解決策です。

send-keysマニュアルページに記載されているコマンドを使用してください。

send-keys以下は、このコマンドの使用を示す「Hello World」の例です。

  • ステップ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

おすすめ記事