우분투에서 프로세스를 어떻게 죽이나 요?


149

루트가 아닌 자신의 계정으로 실행되는 모든 프로세스를 어떻게 종료합니까?

Windows 컴퓨터에서 발생한 회전 smbd 프로세스가 있으므로 Linux 서버에 telnetted하여 해당 회전 프로세스를 종료하고 싶습니다. 서비스를 다시 시작하거나 컴퓨터를 재부팅 할 권한이 없습니다.

답변:


172

강제 종료 권한이있는 모든 프로세스를 강제 종료하려면 명령을 실행하십시오.

kill -15 -1또는 kill -9 -1원하는 동작에 따라 ( man kill자세한 내용으로 사용 )

파이어 폭스와 같은 특정 프로세스를 죽이려면 간단히 실행하십시오.

pkill firefox또는 killall firefox원하는 행동에 따라 : 'killall'과 'pkill'의 차이점은 무엇입니까?

실행중인 프로세스를 보려면 다음 명령을 사용하십시오.

ps -ef

사용자 bob이 모든 프로세스를 찾으려면 도움이 될 수 있습니다.

pgrep -l -u bob

또는

ps -ef | grep bob

4
나는로 시작하고 완고한 프로세스가 있고 앞으로 내가하고있는 일을 알고있는 경우 kill -15 -1에만 진행합니다 . 데이터베이스 트랜잭션의 중간에있을 수있는 프로세스를 임의로 종료하는 것은 제안한대로 우연히해야 할 일이 아닙니다. kill -9 -1
Simon Richter

또한 Firefox의 프로세스 이름은 firefox-bin입니다.
Simon Richter

아니, 당신은 실행을 시도 할 수 killall firefoxkillall firefox-bin및 작동 기능을 참조하십시오. 첫 의견에 동의합니다.
ste_kwr

감사합니다 @ste_kwr, 이틀 동안 어려움을 겪은 후 귀하의 지시에 따라 작업했습니다
Java.beginner

PID가 필요하지 않은 장점은 크론 작업입니다. 이름을 사용하면 깔끔하게 작동합니다.
SDsolar

56

사용 sudo kill <pid>또는sudo killall <process-name>


3
나는 이것이이 질문과 관련이 있다고 생각하지 않으며, 당신은 sudo를 사용하고 있습니다-OP는 질문에 언급 된 것처럼 그러한 권한이 없습니다.
pl1nk 2016 년

OP에 권한이 없습니다. 답을 수정하십시오. 그렇지 않으면 "답변 아님"으로 삭제되거나 설명으로 변환 될 수 있습니다.
ish

그는 권한이 없다면 <pid> 또는 killall <process-name>을 죽일 필요가 있습니다. 루트 계정이 아닌 계정에서 방금 사용했습니다.이 답변이 아닌 경우에는 사용할 수 없습니다 .
Shailyn Ortiz

20

더 시도해 봅시다 :

sudo apt-get install htop 

top명령은 시스템의 리소스 사용량을보고 가장 많은 시스템 리소스를 차지하는 프로세스를 보는 전통적인 방법입니다. Top은 가장 많은 CPU를 사용하는 프로세스 목록을 표시합니다.

htop이해하기 쉬운 레이아웃으로 동일한 정보를 표시합니다. 또한 화살표 키를 사용하여 프로세스를 선택하고 키를 사용하여 프로세스를 종료하거나 우선 순위를 변경하는 등의 작업을 수행 할 수 있습니다 F.


16

당신이 사용할 수있는

ps -ax | grep application name 

와 같은 터미널에서 firefox 유형을 검색하면 ps -ax | grep firefox해당 응용 프로그램의 프로세스 ID가 표시됩니다. kill프로세스 id = 1317 인 경우 명령으로 해당 애플리케이션을 중지 할 수 있습니다 .

kill -9 1317

13

사용 xkill합니다. 입력 xkill단자와 창에 클릭하거나 입력 xkill및 프로세스 ID와이 종료됩니다.

x.org 에서 자세한 내용 xkill확인하십시오.


1
pkill nd가 그것을 좋아 한 후에 주파수에서 두 번째로 사용하십시오. +1
Sergiy Kolodyazhnyy

이 경우
xkill

어떤 경우에 @PythoNic입니까?
Alvar

1
그는 나에게 보이는 것처럼 X 서버와 관련이없는 비 창 프로세스를 죽이고 싶어합니다 ... (어쨌든 좋은 도구입니다.)
PythoNic

9

user 소유의 모든 프로세스를 강제 종료하려면 username다음을 실행하십시오.

pkill -U username

7

문제를 두 부분으로 나눕니다.

1) 내가 시작한 프로세스를 어떻게 찾을 수 있습니까? 이것을 실행하십시오 :

ps -u `whoami`

whoami당신이 그렇지 않으면 바로 다시 따옴표없이 계정의 이름을 입력, 사용중인 계정의 이름을 모르는 경우를 대비합니다.

계정에서 삭제할 수있는 모든 프로세스가 나열됩니다.

2) ps명령은 프로세스 번호, TTY, 시간 및 CMD를 나열합니다. 프로세스 ID는 첫 번째 열입니다. 이 번호를 사용하여 프로세스를 종료하십시오. 프로세스를 종료하는 동안주의하십시오. 잘못된 프로세스를 종료하면 문제가 발생할 수 있습니다. 프로세스를 종료하려면 kill명령 을 사용 하여 프로세스에 SIGNAL을 보냅니다. 신호는 프로세스 수행 해야 할 작업을 나타냅니다 . 예를 들어, -1프로세스에를 보내면 구성 파일을 다시로드하라는 메시지가 표시됩니다. a를 보내는 -2것은 해당 프로세스에서 Control + C를 누르는 것과 같습니다. -9커널이 프로세스와 통신하지 않고 프로세스를 포기하게합니다.

ps -u가 whoami다음과 같은 것을 반환한다고 가정합니다.

  PID TTY          TIME CMD
 4333 pts/1    00:00:00 fish
 4335 ?        00:00:00 fishd
 4816 ?        00:00:00 intellij
 4868 ?        00:50:42 java
 4939 ?        00:00:19 fsnotifier64
 7667 ?        02:49:08 firefox
 7698 ?        00:00:00 unity-webapps-s

그리고 firefox프로세스 ID로 프로세스를 종료하고 싶을 때 다음을 수행하십시오.

kill -1 7667

그런 다음 동일한 ps명령을 다시 실행 하고 프로세스가 여전히 실행 중인지 확인하십시오. 여전히 실행 중이면

kill -2 7667

까지 길을 일하고 있습니다 -9.

계정으로 시작한 모든 프로세스를 종료하려면을 입력하십시오 kill <level> -1. 전과 동일 :까지 작업하십시오 -9.

프로세스의 이름을 알고 있다면 간단하게 가서 killall <processname>죽일 수 있습니다. 예를 들면 다음 killall fish과 같습니다.

http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html에 대한 설명서가 killall있습니다 .


3

이 응용 프로그램을 사용하면 프로그램 목록을 볼 수 있습니다

설치 중지

sudo apt-get install htop

프로세스 및 종료 프로세스 참조 설치 및 삭제 만 가능

여기에 이미지 설명을 입력하십시오


2

... Linux의 모든 프로세스는 신호에 응답합니다. 신호는 프로그램에게 동작을 종료하거나 수정하도록 지시하는 운영 체제 수준의 방법입니다.

PID로 프로세스 신호를 보내는 방법

신호를 프로그램에 전달하는 가장 일반적인 방법은 kill 명령입니다.

예상 한대로이 유틸리티의 기본 기능은 프로세스 종료를 시도하는 것입니다.

kill PID_of_target_process

TERM 신호를 프로세스로 보냅니다. TERM 신호는 프로세스가 종료되도록 알려줍니다. 이를 통해 프로그램은 정리 작업을 수행하고 원활하게 종료 할 수 있습니다.

프로그램이 잘못 작동하고 TERM 신호가 제공 될 때 종료되지 않으면 KILL 신호를 전달하여 신호를 에스컬레이션 할 수 있습니다.

kill -KILL PID_of_target_process

이것은 프로그램으로 전송되지 않는 특수 신호입니다.

대신 운영 체제 커널에 제공되어 프로세스를 종료합니다. 전송 된 신호를 무시하는 프로그램을 우회하는 데 사용됩니다 ...


2

나는 Skype를 죽이기 위해 쓴 작은 스크립트를 썼다.

kill -s 9 `ps aux | grep skype | head -n 1 | cut -f4 -d" "`

그러나 나는 그 당시 일한만큼 pid가 길이가 다르고 공간이 다르기 때문에 다음날 작동하지 않는다는 것을 알았습니다.

그런 다음이 사이트를 방문하여 시도했습니다.

pgrep -l -u justin

형식으로 프로세스를 편리하게 출력

[pid] [name]

그래서 스크립트의 코드를 다음과 같이 조정했습니다.

kill -s 9 `pgrep -l -u justin | grep skype | cut -f1 -d" "`

이것이하는 것은 모든 프로세스 justin가 실행중인 파이프 (모든 사용자 이름으로 변경 가능)를 grep찾고 skype(프로세스로 변경할 수 있음) 파이프를 파이프 cut한 다음 PID 만 읽고 마지막으로 사용합니다. kill명령 에서 PID를 종료하십시오 .


을 삭제 하고을 (를) -l실행 pgrep -u justin skype하고 죽일 수 있습니다 pkill -u justin skype(또는 pkill -KILL -u justin skypeSIGKILL 전송).
muru

이것은 분명히 유닉스 웨이입니다. 둘 다 잘 했어요 나는 이것을 사용할 것이다.
SDsolar 2018 년

1

여기에 내가 작성한 간단한 python 스크립트 인 killProcess.py가 입력으로 무엇이든 받아들이고 죽일 것입니다.

개별적이고 프로그래밍 방식으로 죽이고 싶은 많은 파이썬이나 노드 프로세스가 있기 때문에이 스크립트를 작성했습니다. "killall python"을 사용할 수 없습니다. 계속 실행해야하는 프로세스가 중지되기 때문입니다.

파일 이름을 "killProcess.py"로 지정한 다음 중지하려는 스크립트 이름을 추가하십시오. 예 : python killProcess.py runnablePoller.py는 runnablePoller.py 파일을 죽입니다.

import os;
import sys;
for arg in sys.argv:
    if(arg!="killProcess.py"):
        process=arg;
        print(process);
processes =os.popen("ps -ef | grep "+process).read();
processes=processes.split("\n");
processes=processes[0].split(" ");
#print(processes);
for p in processes:
    try:
        pid=int(p);
        print(pid); 
        break;
    except:
        continue;

os.system("kill "+str(pid));

0

우분투에서 프로세스를 종료하기 위해 다음 절차를 사용했습니다.

1 단계 : grep을 사용하여 프로세스의 pid를 얻거나 -C를 사용할 수도 있습니다 ::

ps aux | -C 'filename'

또는

ps -ef | -C 'filename'

또는

ps aux | grep 'filename'

또는

ps -ef | grep 'filename' 

2 단계 : pid 번호를 적어 둡니다.

3 단계 : pid 번호와 함께 'kill'명령을 다음과 같이 사용하십시오.

kill pidnumber

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.