我希望脚本连接到远程计算机并运行存在于远程计算机上的脚本,然而,它需要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。
答案 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"