Answers:
CTRL+C将发送SIGINT
到应用程序。应用程序可以为此信号配置处理程序,也可以忽略该信号。默认情况下,没有处理程序,SIGINT
它将终止该应用程序。
您可以使用CTRL+\哪个发送SIGQUIT
。如果核心限制不为零,这也会生成核心转储。
您可以使用暂停进程并返回shell CTRL+Z,这将停止进程的执行并返回shell提示符。该进程将在内存中,并且可以在当前Shell中作为作业使用。然后,您可以使用kill -SIGNAL %%
或kill -SIGNAL %<job_ID>
向该作业发送信号。例如杀死上一份工作kill -9 %%
如果它们都不起作用,您始终可以发送SIGTERM
,作为最后的选择,SIGKILL
它将终止任何进程。该信号与其他任何信号一样,必须以与您要停止的进程相同的用户身份或以root用户身份发送。要发送SIGKILL
至进程,请先使用ps aux
或来查找进程ps -edf
,然后运行kill -SIGKILL <process_ID>
,其中输出<process_ID>
是其中的PID
列ps
。
如果进程处于不间断的调用中,则无法传递信号。不间断调用是无法停止的内核函数,通常是由于驱动程序错误(例如,驱动程序不是reentrant)而发生的。直到调用完成或服务器重新启动,才能停止处于不间断睡眠状态的进程。
如果某个进程成为僵尸,它将仅占用进程表中的空间而不会使用任何资源。僵尸进程无法接收信号。
当前架构的信号列表可以在下面找到 kill -l
见该男子页kill
,ps
和bash
。要查看手册页,请使用类似以下内容的内容:man ps
Ctrl C将SIGINT发送到您正在运行的进程。如果您不想打开其他控制台,则可以使用Ctrl \发送SIGQUIT。这将解决SIGINT无法解决的大多数日常挂起的应用程序。
我个人想使用一种发送带有快捷方式的SIGKILL的方法,但是我不知道这样做的方法。
我认为pgrep
并且pkill
比kill
使用显式进程ID 更容易使用。
另外,不要从信号9(SIGKILL)开始,而应从默认SIGTERM(15)开始。这将使进程有机会正常终止(如果可以)。
pkill -15 thing
并且pkill thing
应该等效。
这是如何工作的。假设ntpd已挂起。
流程是什么?(如果您认为自己不会出现误报,则可以跳过技巧)。
$ pgrep -fl ntp
1034 /usr/sbin/ntpd
1037 /usr/sbin/ntpd
终止进程:
$ pkill ntpd
pgrep
再次使用以查看是否成功。
如果没有,请最终移至pkill -9
。