无法终止服务器上运行的进程

无法终止服务器上运行的进程

我在服务器上运行了 R 控制台,该过程花费的时间比我预期的要长得多。因此我尝试通过 ctrl+z 关闭它,但没有成功。最后我关闭了终端。但当我检查 top 命令时,该进程仍然存在。我用了kill,但不会杀死进程。顶部命令输出:

 PID   USER     PR   NI  VIRT    RES    SHR  S  %CPU %MEM  TIME+ COMMAND     
27448 zhenyang  20   0 20.133g 0.020t 3.840g R 100.0 21.3  72:00.06 R 

我查了网站,有人说可能是ctrl+z把进程放在后台,但是fg命令不起作用。

有人帮忙吗?

答案1

运行命令kill并向其传递进程 ID,即您的情况

kill 27448

默认情况下,这会杀死进程,但如果程序设置了信号处理程序,它可能会继续运行。如果进程继续运行,请使用

kill -KILL 27448

(或同等意义kill -9 27448)。 KILL 信号无法被捕获,它总是杀死进程。 (也许不会立即如果进程正在执行一些长输入/输出,但它确实会杀死它。)

答案2

CTRL+Z不会终止进程,它会暂停它们的执行(也称为停止它们)。它通过向TSTP进程发送信号来完成此操作,可以通过CONT向进程发送信号来恢复该进程。

kill -CONT <pid>

一旦挂起,进程将不会响应其他好的信号,例如TERMkill默认发送的信号),直到进程使用信号恢复CONT- 此时它将立即处理所有待处理的信号。例外情况是KILL信号立即终止进程,而不给它优雅结束的机会。

kill -KILL <pid>

这是一般不鼓励因为它将跳过进程通常执行的任何拆卸/清理操作。相反,CTRL+Z您应该使用CTRL+C来要求前台进程结束。这会将INT信号发送到进程,该进程通常(并不总是)具有与信号类似的行为TERM- 它要求进程正常结束。

您可以阅读有关 linux/bash 进程作业控制的更多信息这里

相关内容