使用“ssh 地址可执行文件”时如何正确中断进程?

使用“ssh 地址可执行文件”时如何正确中断进程?

为了在远程主机上测试我的程序,我运行命令:ssh address ./my_executable。这my_executable是一个长时间运行的程序,但在开发过程中我经常使用 CTRL+C 中断它。问题是 CTRL+C 会中断 ssh 会话,但不会终止我的进程,因此当我尝试再次运行它时,会出现错误,因为我的进程仍在使用资源。

目前我正在使用一种解决方法: ssh address ./my_executable; echo DONE; ssh address pkill my_executable

但是有没有更好的方法来中断通过 ssh 在命令模式下执行的程序呢?

当我登录ssh address并运行可执行文件时,问题当然不会发生,因为信号被传递到远程终端,但它需要更多的输入并且无法自动化。 

答案1

如果您ssh明确使用终端,即使它不需要终端,您也会得到您想要的行为:

ssh -t address ./my_executable

然后CtrlC会kill my_executable,而不是ssh(无论如何都会立即退出,因为退出时连接已关闭my_executable)。

相关内容