相当于ctrl c的命令来取消程序


75

我正在远程计算机上运行一个长Linux程序,但我想停止它,但是我的问题是,如果我使用kill命令,则该程序将退出而不保存结果。通常,完成该程序的工作是使用Ctrl+ C,在这种情况下,该程序会保存结果,但是现在我不在运行会话的计算机中,因此无法按Ctrl+ C

我的问题是:有什么办法可以远程实现Ctrl+的功能C吗?

Answers:


110

尝试:

kill -SIGINT processPIDHere

基本上,默认情况下Ctrl C发送SIGINT(中断)信号,而killSIGTERM默认情况下发送(终止)信号,除非您指定要发送的信号。


如何找到processPID?我正在使用网络外壳来测试路由器上的ping,然后无法终止该过程……
Aero Wang

1
@AeroWang您可以运行过程搜索,ping如下所示:ps aux | grep "ping",列中的第一个数字是pid。
adrianTNT

令人遗憾的是,ping标准输出信息会淹没人工输入。@adrianTNT
航空王

这也适用于OSX。只需使用信号代码而不是名称,因为在OSX中它是INT。kill -2 PID
Nazar Grynko '20


4

如果控制长时间运行的远程进程,则可以为SIGTERM安装信号处理程序(请参阅man signal以及man sigaction有关该主题的许多SO问题),以在死亡之前很好地进行清理。

这是很常见的事情。


4

这是蒙古人的例子

要从命令行启动守护程序:

mongod &

然后再

kill -SIGINT `pgrep mongod`

0

在信号处理程序中还要牢记,它就像一个中断处理程序,在允许您执行不破坏程序其余部分的方面,您非常有限。您在这里可以做的最好的事情是设置一个atomic_t“ should_quit”变量。


0

我正在做下面的方式

killall -2 <ProgramName>

要么

kill -2 <PID of your process>

我曾经忘记信号的名称。即SIGINT / SIGKILL在这里,所以我正在使用数字,如killall -2或killall -9

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.