【发布时间】:2018-12-13 23:24:44
【问题描述】:
我使用 Net::SSHv2 连接到服务器并在该服务器上启动脚本。到目前为止它正在工作,但我想在脚本运行超过 10 分钟或输出文件变得太大时中断脚本。收到中断后,脚本将关闭并输出一些统计信息。
我当前的代码如下所示:
File.open(filename, "w") do |f|
Net::SSH.start(host, user, password: password) do |ssh|
ssh.exec! "do_work" do |channel, stream, data|
f << "data"
#break if f.size > 1024 * 1024 * 100 #file size > 100 MB
#channel.send_data "^C" if f.size > 1024 * 1024 * 100 #file size > 100 MB
end
end
end
我尝试了其他一些方法,为通道打开一个块并请求一个 shell,但没有成功。
【问题讨论】:
-
如果我没记错的话,您正在中断正在运行的应用程序,这将终止会话。相反,我认为您需要进入 shell 提示符,在该框的后台执行您的程序,然后使用
kill执行“^C”该进程。您必须通过 an Expect-like interface 处理 shell 提示,才能知道您何时到达 shell 并返回它。 stackoverflow.com/questions/492482/… 和相关问题也可能会有所帮助。