期待脚本在后台运行远程脚本

时间:2018-05-09 10:57:35

标签: bash shell tcl

我希望脚本连接到远程计算机并运行存在于远程计算机上的脚本,然而,它需要15-20分钟,所以我从我的expect脚本发送退出。这打破了我的远程scirpt,我无法运行。

试图以;

运行
/usr/bin/bash myscript.sh > /dev/null 2>&1 &
然而,这不起作用。

我希望脚本看起来像;

 ........
expect {
        -re ".*#.*"      {  send "/usr/bin/bash myscript.sh > /dev/null 2>&1 &\n";   }
}
expect {
        -re ".*#.*"      { exp_send "exit \r";    }
}

顺便说一句,machnie没有nohub。

1 个答案:

答案 0 :(得分:0)

您需要使用nohup启动远程程序,以便忽略终端消失。这是一个标准的Unix编程技巧,并且被使用是因为正常配置是为了杀死进程(使用HUP - H ang Up - 信号)用户从发起它们的终端注销,以阻止它们表现不佳。

expect -re ".*#.*"
send "nohup /usr/bin/bash myscript.sh > /dev/null 2>&1 &\r"
expect -re ".*#.*"
send "exit\r"