我有一台在 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