>  기사  >  시스템 튜토리얼  >  Linux에서 프로세스를 어떻게 종료합니까?

Linux에서 프로세스를 어떻게 종료합니까?

WBOY
WBOY앞으로
2024-02-09 19:06:091221검색

실행 중인 Linux프로세스를 종료하려면 여러 가지 방법을 사용할 수 있습니다. 프로세스가 포그라운드에서 실행 중인 경우 단축키 Ctrl+C를 사용하여 프로세스를 종료할 수 있습니다. 그러나 프로세스가 백그라운드에서 실행 중이고 표시되지 않는 경우 특수 명령을 사용하여 프로세스를 종료할 수 있습니다.

你是怎么在 Linux 干掉进程的?

프로세스를 종료하려면 실행 중에 중지하세요. 프로세스의 ID(PID)를 알고 있는 경우 다음과 같이 kill 명령을 사용하여 프로세스를 종료할 수 있습니다.

으아악

위 구문에서 signal指的是要发送终止的终止信号,并且PID는 프로세스의 ID를 나타냅니다.

killall 명령도 있습니다. 이 기사에서는 kill 및 killall 명령에 대해 설명하겠습니다.

Linux의 종료 신호

운영 체제나 사용자에 의해 프로세스가 종료되면, 즉 프로세스가 자체적으로 완료되지 않으면 터미널 신호가 전송됩니다.

사용 가능한 종료 신호는 다음과 같습니다.

시그널 가치 설명
SIGHUP 1 신호 끊기: 프로세스를 제어하는 ​​터미널이 닫힐 때 프로세스로 전송됩니다.
SIGINT 2 신호 인터럽트: 사용자가 프로세스를 종료할 때 프로세스에 전송되는 신호(예: Ctrl + X)
SIGKILL 9 Signal Kill: 프로세스를 즉시 종료하고 현재 상태를 저장하는 것을 허용하지 않는 신호입니다.
SIGTERM 15 신호 종료: 프로세스 종료를 요청하는 신호로 전송됩니다. 이 신호는 프로세스에서 무시될 수 있습니다. 그러나 이는 프로세스가 SIGTERM을 수신할 때 리소스를 해제하므로 프로세스를 종료하는 데 선호되는 방법입니다.
SIGSTOP 19(x86, ARM 및 기타 대부분의 경우) 17(알파의 경우) 23(MIPS의 경우) 24(PARISC의 경우) 중지 신호: 프로세스를 중지했지만 나중에 다시 시작하는 신호입니다.

常用的信号 9 和 15

获取进程的PID

你还需要了解要终止的进程的详细信息。使用 kill 命令,你必须提供进程的 ID(PID)。你可以从进程名称中获取 PID

> pidof exact_process_name

比如获取java进程的进程号

> pidof java
8075 1032

在 Linux 命令行中终止进程

使用 kill 命令

kill命令要求你知道要终止的进程的 ID,以及可选的终止信号。

要简单地终止命令,请使用以下语法:

kill [signal] 

向 PID 发送终止信号是可选的,如果未提供任何信号,则kill默认发送 SIGTERM ( 15),以正常终止所述进程结束。

我启动了sleep 命令的后台进程(它给了我一个 PID)。我们使用kill命令杀死它。

杀死这个特定的实例sleep如下所示:

$  sleep 120 &
[1] 125686

$ kill 125686
[1]  + terminated  sleep 120

如果我想使用终止信号,我可以使用数值或信号本身:

$ sleep 120 &
[1] 125746

$ kill -SIGKILL 125746
[1]  + killed     sleep 120

$ sleep 120 &
[1] 125759

$ kill -9 125759
[1]  + killed     sleep 120

如果 kill 命令没有指定信号,则默认使用 SIGTERM (15)。

使用 killall 命令

如果不知道某个进程的PID是多少,或者该进程有多个子进程,又想一次性杀死子进程和父进程,可以使用killall命令。

killall [signal] 

kill命令类似,指定终止信号是可选的。当没有指定终止信号时,killall将发送 SIGTERM ( 15) 以优雅地关闭所述进程。

为了演示killall的使用,我将杀死两个正在运行的 sleep 命令。

$ sleep 120 &
[1] 112351

$ sleep 2000 &
[2] 112362

$ killall sleep
[1]-  Terminated              sleep 120
[2]+  Terminated              sleep 2000

此外,你可以使用该-e标志来查找进程名称的完全匹配。

使用 pkill 命令

命令的替代命令killpkill命令。它是pgrepkill命令的组合。

killall杀死所有具有匹配名称的进程。另一方面,pkill使用模式匹配来匹配进程并杀死它们。

pkill [options] pattern

命令中可用的一些有用选项pkill如下:

  • -u: 特定所有者拥有的进程
  • -x: 完全匹配模式的进程
  • -signal: 指定终止信号(默认为 SIGTERM)

结束nginx进程

> pkill nginx

위 내용은 Linux에서 프로세스를 어떻게 종료합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 lxlinux.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제