【问题标题】:How do I cancel a long running Ruby Net::SSH command如何取消长时间运行的 Ruby Net::SSH 命令
【发布时间】:2016-04-25 03:26:42
【问题描述】:

如果我使用exec 启动一个长时间运行的命令(例如数据库转储),例如,如果用户开始混合 Control-C 以终止脚本,我将如何在远程主机上取消该命令。

在我的测试中,似乎即使您使用 Control-C 并终止应用程序,远程命令也会继续运行。

【问题讨论】:

    标签: ruby ssh net-ssh


    【解决方案1】:

    捕获 SIGINT 和 SystemExit 并清理:

    rescue SystemExit, Interrupt
      # clean up
      # net-ssh execute a kill on the pid
      # raise error
    end
    

    【讨论】:

    • 这不会杀死 Ruby 进程而不是它在远程主机上启动的进程吗?我想你可以用任何可以杀死进程的远程命令替换 Process.kill 。你也想在救援后引发错误,对吧?
    • 谢谢@keithrbennett,根据您的建议编辑了代码示例。
    猜你喜欢
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多