我正在尝试使用ssh在另一台计算机上的tmux环境中运行脚本,但ssh连接在脚本完成之前不会终止。让我详细解释一下:
这是test_ssh.sh:
#!/bin/bash
name="computername"
ssh $name /bin/bash <<\EOF
cd /scratch
mkdir test
cd test
cp /home/user/test_tmux3.sh .
tmux -c ./test_tmux3.sh &
echo 1 # at this point it waits until test_tmux3.sh is finished, instead of exiting :(
EOF
这是test_tmux3.sh(作为检查是否有任何事情的测试):
#!/bin/bash
mkdir 0min
sleep 60
mkdir 1min
sleep 60
mkdir 2min
最后,我想遍历多台计算机($ name),在每台计算机上启动一个脚本。我现在遇到的问题是test_ssh.sh在echo 1之后等待并且仅在tmux -c test_tmux3.sh&amp;之后退出。完成(2分钟后)。如果我手动输入control-C test_ssh.sh则停止并且tmux -c test_tmux3.sh&amp;继续在计算机上运行$ name(这就是我想要的)。如何自动执行最后一步并让ssh自行退出?
答案 0 :(得分:1)
在分离的tmux
会话中启动命令。
#!/bin/bash
name="computername"
ssh $name /bin/bash <<\EOF
mkdir /scratch/test
cd /scratch/test
cp /home/user/test_tmux3.sh .
tmux new-session -d ./test_tmux3.sh
echo 1
EOF
现在,tmux
命令将在创建新会话并在该会话中启动脚本后立即退出。
答案 1 :(得分:0)
您是否曾尝试使用nohup命令告诉进程在退出后继续运行?:
#!/bin/bash
name="computername"
ssh $name /bin/bash <<\EOF
cd /scratch
mkdir test
cd test
cp /home/user/test_tmux3.sh .
nohup tmux -c ./test_tmux3.sh &
echo 1 # at this point it waits until test_tmux3.sh is finished, instead of exiting :(
EOF