这是通用版本:向 ssh 内部运行的进程发送 SIGTERM 信号
如果进程获得 pty (-tt),则可以向远程进程发送 Ctrl-C:
# Runs for 5 seconds
(sleep 5; echo '^C'; sleep 5) | time ssh -tt localhost burnP6
我曾希望 Ctrl-Z 也能有同样的效果,但是,可惜不行:
# Continues to run - does not suspend
(sleep 5; echo '^Z'; sleep 5) | time ssh -tt localhost burnP6
如果我进入交互式会话,Ctrl-C 和 Ctrl-Z 可以正常工作。
有没有办法我可以发送其他信号(我对 Ctrl-Z 特别感兴趣)?
我无法使用建议的“ssh hostname 'kill -TERM $pid'”,因为我不知道远程系统上的 pid。
答案1
你真的需要一个 tty 吗?
您可以使用的ssh server killall burnP6
是只有一个具有该名称的进程。
或者您可以以某种方式将进程的 IP 写入文件中,然后使用类似“ssh server kill $(cat /tmp/burnP6.pid)”之类的命令。
或者更简单、更强大的实现是使用包守护进程,用于守护非守护进程的程序。它允许您自动将守护进程的 PID 写入文件并轻松终止它。它甚至可以在您的进程终止时重新启动它。
启动方法:
ssh server daemon -n burnP6 -- /usr/bin/burnP6
要停止它:
ssh server daemon --stop -n burnP6