Shell脚本创build后台SSH连接,如果不存在的话

有一个非常类似的问题,但我有一个额外的细节在我的情况。

基本上我使用ControlMaster来加速SSH连接。 所以我正在使用:

CurrentUser=$(whoami) session=$(ps -el | grep $(id -u) |sed -e 's/sshd//g'| grep ssh) if [ "$session" = "" ] then ssh -TMNf [email protected] & fi 

在这个代码之后,我有另一个命令。 ssh命令的目的仅仅是在后台运行,以便为更快的连接保持开放的套接字(如果短时间内没有发生呼叫,则由于不活动而超时和closures)。

问题是这个脚本不closures并返回给调用者。 它成为一个<defunct>进程,并且不会返回,直到我手动杀死创build的ssh会话。 我怎样才能让脚本返回到调用者并创build的SSH在后台运行?

编辑: 我希望脚本结束后保持创build的ssh会话保持打开一个套接字与rsync命令后更快的连接。 随着一个开放的sockets,我从3-4秒转移到毫秒

你想使用nohup命令?

给autossh尝试一下:

http://www.harding.motd.ca/autossh/

它为您pipe理SSH连接,并在启动后返回给调用者。