Linux 相当于在命令中按ctrl c来取消程序

Linux 相当于在命令中按ctrl c来取消程序,linux,command-line,copy-paste,Linux,Command Line,Copy Paste,我正在远程机器上运行一个长的linux程序,我想停止它,但我的问题是,如果我使用kill命令,那么程序将退出而不保存结果。正常情况下,我完成程序的方法是使用Ctrl+C,在这种情况下,程序会保存结果,但现在我不在运行会话的机器中,因此我无法按Ctrl+C 我的问题是:是否有任何方法可以远程执行与Ctrl+C等效的操作?试试: kill -SIGINT processPIDHere 基本上,Ctrl C发送SIGINT(中断)信号,而kill在默认情况下发送SIGTERM(终止)信号,除非您指定

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

我的问题是:是否有任何方法可以远程执行与Ctrl+C等效的操作?

试试:

kill -SIGINT processPIDHere

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

Ctrl C只发送一个SIGINT信号,但还有一些其他信号稍微软一些

我想你可以用kill命令发送其他信号。
(有关更多信息,请参阅man kill)

如果您控制长期运行的远程进程,您可以为SIGTERM安装一个信号处理程序(请参阅
man signal
man sigaction
以及有关此主题的许多问题),以便在死亡前进行良好的清理


这是一件非常常见的事情。

在您的信号处理程序中也要记住,它就像一个中断处理程序,在不损坏程序其余部分的情况下,您可以在其中执行的操作非常有限。在这里,您可以做的最好的事情是设置一个原子变量“应该退出”

要从命令行启动守护程序,请执行以下操作:

mongod &
后来

kill -SIGINT `pgrep mongod`

我按下面的方法做

killall -2 <ProgramName>
killall-2

kill-2

我过去常常忘记信号的名字。i、 这里是SIGINT/SIGKILL,所以我使用的是数字,比如killall-2或killall-9

如何找到进程PID?我正在使用一个web shell在我的路由器上测试ping,然后我无法终止进程…@AeroWang你可以像这样运行进程搜索
ping
ps aux | grep“ping”
,列中的第一个数字是pid。遗憾的是ping stdout信息会压倒人工输入@AdriantThis也适用于OSX。只需使用信号代码而不是名称,因为在OSX中它是INT.
kill-2PID
kill -2 <PID of your process>