如何在 ubuntu 服务器中中止卡住的命令?

Cra*_*zeD 15 server command-line

我知道有ctrl+ c,但有时这不起作用。在 Ubuntu 桌面中,我可以在发生这种情况时关闭终端窗口并打开一个新窗口,但是如何在 Ubuntu 服务器中使用 CLI 解决这个问题(无需重新启动盒子)?

Mir*_*ici 24

CTRL+C将发送SIGINT到应用程序。应用程序可以为此信号配置处理程序,也可以忽略该信号。默认情况下没有处理程序,SIGINT将终止应用程序。

您可以使用CTRL+\which 将发送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>是输出中的PIDps

如果进程处于不间断调用中,则无法传递信号。不可中断的调用是不能被停止的内核函数,通常是由于坏的驱动程序(例如一个不可重入的驱动程序)而发生的。在调用完成或服务器重新启动之前,无法停止处于不间断睡眠状态的进程。

如果一个进程变成僵尸进程,它不会使用任何资源,只占用进程表中的空间。僵尸进程无法接收信号。

当前架构的信号列表可以通过以下方式找到 kill -l

请参阅killps和的手册页bash。要查看手册页,请使用以下内容:man ps