Linux 터미널에서 프로세스를 종료하는 방법
주요 시사점
- 프로세스를 종료한다는 것은 단순히 강제 종료를 의미하며, 프로세스가 응답하지 않거나 오작동하는 경우 필요할 수 있습니다.
- Linux 및 macOS에는 PID 또는 이름으로 프로세스를 종료할 수 있는 kill, pkill 및 killall과 같은 명령이 있습니다.
- 프로세스를 종료할 때는 주의를 기울이고 의도하지 않은 결과를 피하기 위해 올바른 프로세스를 종료하는지 확인하는 것이 중요합니다.
프로세스를 종료하는 것이 프로세스를 제거하는 유일한 방법인 경우도 있습니다. 거친 이름에도 불구하고 프로세스를 “종료”한다는 것은 “강제 종료”를 의미합니다. Linux 또는 macOS 명령줄에서 이를 수행하는 방법은 다음과 같습니다.
프로세스란 무엇입니까?
웹 브라우저, 데스크탑 환경과 관련된 백그라운드 프로세스, Linux 시스템 서비스와 같은 프로그램 실행은 모두 프로세스입니다.
프로세스를 두 그룹으로 묶을 수 있습니다.
- 포그라운드 프로세스는 사용자가 시작하거나 시작한 프로세스입니다. 터미널 창에 있을 수도 있고 그래픽 응용 프로그램일 수도 있습니다.
- 백그라운드 프로세스는 자동으로 시작되고 사용자와 상호 작용하지 않는 모든 프로세스입니다. 그들은 사용자로부터 입력을 기대하지 않으며 사용자에게 결과나 출력을 제시하지도 않습니다. 백그라운드 프로세스는 서비스 및 데몬과 같은 것입니다.
전경 프로세스가 극단 스태프와 배우의 앞부분이라면, 배경 프로세스는 무대 뒤의 ‘무대 뒤’팀이다.
프로세스가 오작동하거나 오작동하는 경우 CPU 시간을 너무 많이 소모하거나 RAM을 소비하거나 긴밀한 계산 루프에 들어가 응답하지 않을 수 있습니다. 그래픽 응용 프로그램은 마우스 클릭에 응답하지 않을 수 있습니다. 터미널 응용 프로그램은 결코 명령 프롬프트로 돌아가지 않을 수 있습니다.
프로세스 종료는 무엇을 합니까?
프로세스를 “종료”한다는 것은 “프로세스를 강제로 종료”하는 것을 의미합니다. 프로세스가 응답을 거부하는 경우 필요할 수 있습니다.
Linux에서는 이를 수행할 수 있는 kill
, pkill
및 명령을 제공합니다. killall
이러한 명령은 모든 유형의 프로세스, 그래픽 또는 명령줄, 전경 또는 배경에서 사용할 수 있습니다.
살해 명령
를 사용하려면 kill
종료하려는 프로세스의 프로세스 ID(PID)를 알아야 합니다. 이 ps
명령을 사용하여 프로세스의 PID를 찾을 수 있습니다.
ps
모든 프로세스를 검색 하려면 -e
(모든 프로세스) 옵션을 사용하세요. 출력을 파이프로 연결하는 less
것이 좋습니다. 출력량이 꽤 많을 것입니다. , ps
공백, -e
, 공백 |
(파이프 문자), 또 다른 공백을 입력한 다음 를 입력합니다 less
. Enter 키를 눌러 명령을 실행합니다.
ps -e | less
그러면 아래 스크린샷과 비슷한 프로세스 목록이 표시됩니다. less
키를 사용하여 앞으로 검색할 수 /
있고 키를 사용하여 뒤로 검색할 수 있습니다 ?
.
관심 있는 프로세스를 찾으려면 출력을 파이프로 연결 ps
하고 grep
프로세스의 이름(또는 이름의 일부)을 지정하세요.
ps -e | grep shutter
종료하려는 프로세스의 PID를 찾았으면 이를 명령에 매개 kill
변수로 전달합니다. shutter
이전 명령으로 식별된 프로세스를 종료하려면 다음 명령을 사용하십시오.
kill 2099
이 kill
명령은 조용한 암살자입니다. 성공하더라도 어떤 피드백도 제공하지 않습니다.
macOS에서 프로세스를 종료하는 경우에도 동일하게 작동합니다 .
pkill 명령
이 pkill
명령을 사용하면 이름으로 프로세스를 종료할 수 있습니다. PID로 프로세스를 식별할 필요는 없습니다. 사용하려면 실행 중인 프로세스 목록을 확인하는 데 사용되는 pkill
검색어를 제공하세요 . pkill
매칭 프로세스가 종료됩니다. 따라서 검색어의 철자가 올바른지 확인해야 합니다.
안전망으로 명령을 pgrep
사용하기 전에 명령을 사용할 수 있습니다 pkill
. 이 pgrep
명령은 검색어도 허용합니다. 검색어와 일치하는 각 프로세스의 PID가 나열됩니다. 이는 pgrep
프로세스에 종료 신호를 보내지 않으므로 안전하며, 검색어를 잘못 입력하더라도 실수로 다른 프로세스를 종료하지 않습니다. 에 전달하기 전에 검색어를 올바르게 고려했는지 확인할 수 있습니다 pkill
. pkill
및 pgrep
검색어를 모두 동일한 방식으로 처리합니다. 이들의 처리 방식은 매우 유사하여 동일한 매뉴얼 페이지를 공유합니다 .
이름에 “subq”가 포함된 프로세스가 있다고 가정해 보겠습니다. 명령을 사용하여 ps -u dave | grep
커튼 뒤를 살펴보겠습니다. “subq”가 해당 프로세스와 해당 프로세스만 일치한다는 것을 알 수 있습니다. 이는 프로세스의 전체 이름을 볼 수 있도록 하기 위한 것입니다.
ps -u dave | grep subq
사용자가 그렇게 하지 않았다고 가정해 보겠습니다. 그들이 알고 있는 것은 프로세스 이름에 하위 문자열 “subq”가 포함되어 있다는 것뿐입니다. 그들은 pgrep
검색어와 일치하는 항목이 하나만 있는지 확인하는 데 사용합니다. 그런 다음 해당 검색어를 와 함께 사용합니다 pkill
.
pgrep subq
pkill subq
한 번에 여러 프로세스를 종료하는 데 사용할 수 있습니다 pkill
. 여기에서 사용자는 pgrep
Chrome이 실행한 프로세스 수를 확인하기 위해 실행합니다. 그들은 pkill
그들 모두를 죽이는 데 사용합니다. pgrep
그런 다음 모두 제거되었는지 확인합니다 .
pgrep chrome
pkill chrome
pgrep chrome
동일한 이름을 가진 여러 프로세스가 실행 중이지만 모두 종료하고 싶지 않은 경우 (명령줄) 옵션을 사용하여 어떤 프로세스인지 식별할 수 pgrep
있습니다 -f
. 간단한 예는 두 개의 프로세스입니다 ping
. 당신은 그들 중 한 명을 죽이고 싶지만 다른 한 명은 죽이고 싶지 않습니다. 명령줄을 사용하여 이를 구별할 수 있습니다. 명령줄 매개변수를 묶을 때 따옴표를 사용하는 것에 유의하세요.
pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"
살인 명령
경고 : Solaris 및 OpenIndiana 운영 체제에서 이 killall
명령은 사용자에게 속한 모든 프로세스를 종료합니다. 루트이거나 발행한 경우 sudo killall
컴퓨터를 재부팅합니다! 이 기사를 조사하는 동안 이 동작은 최신 버전의 OpenIndiana Hipster 2018.10에서 확인되었습니다.
이 killall
명령은 명령 과 비슷한 방식으로 작동pkill
하지만 특정한 차이점이 있습니다. 명령에 검색어를 전달하는 대신 정확한 프로세스 이름을 제공해야 합니다.
프로세스 이름에 부분적으로 일치하는 항목을 제공할 수 없습니다. 다음과 같이 전체 프로세스 이름을 제공해야 합니다.
killall shutt
killall shutter
(보다 젊음) 옵션 -y
을 사용하면 지정된 기간보다 짧은 기간 동안 실행된 프로세스를 종료할 수 있습니다. 기간은 숫자 뒤에 다음 단위 중 하나로 표시됩니다.
- 초(초)
- m(분)
- h(시간)
- 일(일)
- w(주)
- M(월, 메모, 대문자 “M”)
- y(년)
ana
방금 시작된 호출된 프로세스를 종료 하고 실행 중인 이전 인스턴스를 그대로 두려면 2분 이내에 반응했다면 와 ana
함께 다음 매개변수를 사용할 수 있습니다 .killall
killall -y 2m ana
( -o
보다 오래됨) 옵션을 사용하면 지정된 기간보다 오랫동안 실행된 프로세스를 종료할 수 있습니다. ssh
이 명령은 하루 이상 실행된 모든 연결을 종료합니다 .
killall -o 1d sshd
모든 프로세스를 종료할 수 있나요?
이러한 명령을 사용하면 정확하고 안전하게 잘못된 프로세스를 식별하고 종료할 수 있습니다. 그러나 너무 기뻐서 종료해서는 안되는 프로세스를 종료하는 것이 전적으로 가능합니다.
항상 조심하세요. 먼저, 종료하려는 프로세스가 실제로 원하는 프로세스인지 확인하세요. 둘째, 다시 한 번 확인하세요. 대상 프로세스가 종료하려는 프로세스인지 주의 깊게 확인하세요. 만족스러우면 프로세스 종료를 진행하세요.
실수로 프로세스를 종료하면 세상이 끝나는 것이 아닙니다. 가장 가능성이 높은 결과는 무언가 버그가 발생하여 PC를 다시 시작해야 하거나 종료한 프로세스와 관련된 프로그램에서 수행한 작업이 손실될 수 있다는 것입니다.
리눅스 명령 |
|
파일 |
tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · Join · jq · fold · uniq · Journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · 보기 · 문자열 · 유형 · 이름 바꾸기 · zip · unzip · 마운트 · umount · 설치 · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · 패치 · 변환 · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr |
프로세스 |
별칭 · 화면 · 상단 · nice · renice · 진행 · strace · systemd · tmux · chsh · 기록 · at · 배치 · 무료 · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · 시간 초과 · 벽 · 예 · 종료 · 절전 · sudo · su · 시간 · groupadd · usermod · 그룹 · lshw · 종료 · 재부팅 · 중지 · 전원 끄기 · passwd · lscpu · crontab · 날짜 · bg · fg · pidof · nohup · pmap |
네트워킹 |
netstat · ping · 추적 경로 · ip · ss · whois · 실패2ban · bmon · 발굴 · 손가락 · nmap · ftp · 컬 · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · 방화벽d |
답글 남기기