为了在远程主机上测试我的程序,我运行命令: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
)。