Bash 如何在shell中删除ssh会话?ssh即使在脚本退出后仍保持会话活动

Bash 如何在shell中删除ssh会话?ssh即使在脚本退出后仍保持会话活动,bash,shell,ssh,Bash,Shell,Ssh,如何在bash中编写的自动化脚本中删除ssh会话? 我有一个运行本地的脚本来触发远程机器上的脚本,远程机器上的脚本将触发另一个在后台运行的脚本。。。 我想在远程机器仍然运行后台脚本的情况下删除会话,所以我使用nohup 我有一个本地脚本localScript,如下所示 #!/bin/bash echo "start remote trigger script..." ./trigger 触发器脚本已在我的远程计算机上准备就绪,具有以下行: #!/bin/bash echo

如何在bash中编写的自动化脚本中删除ssh会话? 我有一个运行本地的脚本来触发远程机器上的脚本,远程机器上的脚本将触发另一个在后台运行的脚本。。。 我想在远程机器仍然运行后台脚本的情况下删除会话,所以我使用nohup

我有一个本地脚本
localScript
,如下所示

#!/bin/bash
echo "start remote trigger script..."
./trigger
触发器
脚本已在我的远程计算机上准备就绪,具有以下行:

#!/bin/bash
echo "start script test..."
nohup ./test > output &
echo "start test script in background, exit..."
exit
test
脚本是一个基本的睡眠循环,只用于测试

#!/bin/bash
c=1
while [ "$c" -le 10 ]
do
        echo "sleep 10 seconds, c=$c"
        sleep 10s
        c=$((c+1))
        if [ "$c" -eq 10 ]
        then
                echo "max count reach, exit"
                exit
        fi
done
但我发现ssh使会话保持活动状态(空闲等待100秒),我如何删除会话? 我使用的命令是
sshpass-pxxxxssh-oStrictHostKeyChecking=否user@IP“bash-s”

如果强制伪终端分配(-t):

sshpass-pxxxxssh-t-ostricthostkeychecking=nouser@IP“bash-s”
2>&1&
2>/dev/null&
替换
&(我相信当您调用
ssh
在没有PTY的情况下运行远程命令时,当远程
sshd
进程在为远程进程的标准输出创建的管道上获得EOF时,它会关闭会话。换句话说,您之所以得到这个消息,是因为“测试”脚本进程或“bash-s”进程,或者其他进程仍在运行,并且“bash-s”进程的stdout带有一个打开的文件描述符。可能您的shell启动文件(.bashrc等)正在后台启动脚本中的其他命令?我无法找到更好的解决方案,所以我使用的是
timeout seconds ssh…
sshpass -p XXXX ssh -t -o StrictHostKeyChecking=no user@IP 'bash -s' < localScript