
EC2で実行されているサーバーがあり、新しいバージョンのアプリケーションをデプロイする必要があるときはいつでも、次のスクリプトを実行します。
#Kills tmux and kills <my-app> process
pkill -f tmux
pkill ./my-app
#Removes old bot files and extracts new ones
rm -rf myapp/*
unzip publish.zip -d myapp
#Grants permissions to the botfile
chmod 750 myapp/*
chown root:ubuntu myapp/*
#Starts bot and creates a new tmux session
pkill -USR1 tmux
tmux new_session -d -s session-name './myapp/my-app'
tmux
端末から直接呼び出すと、新しいセッションを開始してアプリケーションを実行する最後の行が正しく機能しますが、スクリプト内で実行すると次のエラーが発生します。
error connecting to /tmp/tmux-1001/default (No such file or directory)
pkill -USR1 tmux
他のスタック交換の記事を読んでも問題は解決されませんでしたが、信号tmuxに追加することが提案されました。この問題をどのように解決できますか?
答え1
表示されるエラーメッセージ:
error connecting to /tmp/tmux-1000/default (No such file or directory)
接続するtmuxセッションがないため、スクリプトはtmuxセッションを作成しないようです。私があなたのコマンドを実行するとき
tmux new_session -d -s session-name './myapp/my-app'
次のエラーが発生します。
unknown command: new_session
しかし、以下を実行してください。
tmux new -d -s TestSession -c myapp/my-app
期待どおりに動作します。この場所は次のとおりです。 Linux #142 - Ubuntu SMP 2022年8月26日金曜日 12:12:57 UTC 2022 ランニング: マルチプレクサ3.0a
答え2
セッションを分離せずに削除すると、タイプミスもあり-d
ます。new_session
new-session
最後の行を次に置き換えます。
tmux new-session -s myapp './my-app/MyApp'
新しいセッションを作成し、そのmyapp
セッションを使用してアクセスできます。
tmux a -t myapp