我在我的 cron 中,如果检测到 tmux 没有运行,它会自动启动 tmux 内的服务。我的 bash 脚本的其余部分可以工作,但如果 tmux 会话不存在,则会抛出错误。这就是为什么我在下面添加了“tmux new ENTER”。但它仍然没有启动 tmux 会话。如果我手动启动 tmux 会话,代码就会工作并且它将执行 send-keys 命令。
我试图了解为什么 tmux 新会话没有在 cron 上启动。有任何想法吗?
/usr/bin/pkill -9 java
/usr/bin/tmux new ENTER
sleep 3
/usr/bin/tmux send-keys -t 0 "cd /home/xxx/bbb;./run.sh" ENTER
echo "$(date) ${1} RESTARTED NODE"
答案1
使用/usr/bin/tmux new-session -d -s ENTER
和 来更好地跟踪它/usr/bin/tmux detach -s ENTER
。
所以你的脚本看起来像:
/usr/bin/pkill -9 java
/usr/bin/tmux new-session -d -s ENTER
/usr/bin/tmux detach -s ENTER
sleep 3
/usr/bin/tmux send-keys -t 0 "cd /home/xxx/bbb;./run.sh" ENTER
echo "$(date) ${1} RESTARTED NODE"