반응형
목차
프로세스 검색 및 종료 방법 예제로 익히기
리눅스에서 프로세스를 검색하고 특정 프로세스를 종료하는 것은 시스템 관리의 일반적인 작업 중 하나입니다. 여기서는 ps, grep, 그리고 kill 명령어를 사용하여 특정 프로세스를 찾고 종료하는 방법을 설명하겠습니다. 이 과정을 단일 명령어 라인으로 수행할 수 있으며, 이는 자동화 스크립트를 작성할 때 매우 유용합니다.
프로세스 검색하기
ps 명령어는 현재 실행 중인 프로세스 목록을 보여줍니다. grep 명령어는 텍스트 검색을 수행하므로, 이 두 명령어를 결합하여 특정 프로세스를 찾을 수 있습니다.
ubuntu@ip-172-31-4-29:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 1.1 169408 11264 ? Ss Feb26 0:09 /sbin/init
root 2 0.0 0.0 0 0 ? S Feb26 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< Feb26 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< Feb26 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< Feb26 0:00 [slub_flushwq
root 6 0.0 0.0 0 0 ? I< Feb26 0:00 [netns]
root 7 0.0 0.0 0 0 ? I Feb26 0:00 [kworker/0:0-
root 8 0.0 0.0 0 0 ? I< Feb26 0:00 [kworker/0:0H
root 10 0.0 0.0 0 0 ? I< Feb26 0:00 [mm_percpu_wq
root 11 0.0 0.0 0 0 ? S Feb26 0:00 [rcu_tasks_ru
root 12 0.0 0.0 0 0 ? S Feb26 0:00 [rcu_tasks_tr
root 13 0.0 0.0 0 0 ? S Feb26 0:00 [ksoftirqd/0]
root 14 0.0 0.0 0 0 ? I Feb26 0:00 [rcu_sched]
root 15 0.0 0.0 0 0 ? S Feb26 0:01 [migration/0]
root 16 0.0 0.0 0 0 ? S Feb26 0:00 [idle_inject/
root 18 0.0 0.0 0 0 ? S Feb26 0:00 [cpuhp/0]
root 19 0.0 0.0 0 0 ? S Feb26 0:00 [kdevtmpfs]
root 20 0.0 0.0 0 0 ? I< Feb26 0:00 [inet_frag_wq
root 21 0.0 0.0 0 0 ? S Feb26 0:00 [kauditd]
root 22 0.0 0.0 0 0 ? S Feb26 0:00 [khungtaskd]
root 23 0.0 0.0 0 0 ? S Feb26 0:00 [oom_reaper]
root 24 0.0 0.0 0 0 ? I< Feb26 0:00 [writeback]
root 25 0.0 0.0 0 0 ? S Feb26 0:05 [kcompactd0]
root 26 0.0 0.0 0 0 ? SN Feb26 0:00 [ksmd]
root 27 0.0 0.0 0 0 ? SN Feb26 0:00 [khugepaged]
root 73 0.0 0.0 0 0 ? I< Feb26 0:00 [kintegrityd]
root 74 0.0 0.0 0 0 ? I< Feb26 0:00 [kblockd]
root 75 0.0 0.0 0 0 ? I< Feb26 0:00 [blkcg_punt_b
root 76 0.0 0.0 0 0 ? S Feb26 0:00 [xen-balloon]
root 77 0.0 0.0 0 0 ? I< Feb26 0:00 [tpm_dev_wq]
root 78 0.0 0.0 0 0 ? I< Feb26 0:00 [ata_sff]
root 79 0.0 0.0 0 0 ? I< Feb26 0:00 [md]
root 80 0.0 0.0 0 0 ? I< Feb26 0:00 [edac-poller]
root 81 0.0 0.0 0 0 ? I< Feb26 0:00 [devfreq_wq]
root 82 0.0 0.0 0 0 ? S Feb26 0:00 [watchdogd]
root 86 0.0 0.0 0 0 ? I< Feb26 0:00 [kworker/0:1H
root 88 0.0 0.0 0 0 ? S Feb26 0:00 [kswapd0]
root 89 0.0 0.0 0 0 ? S Feb26 0:00 [ecryptfs-kth
root 91 0.0 0.0 0 0 ? I< Feb26 0:00 [kthrotld]
root 92 0.0 0.0 0 0 ? I< Feb26 0:00 [acpi_thermal
root 93 0.0 0.0 0 0 ? S Feb26 0:00 [xenbus]
root 94 0.0 0.0 0 0 ? S Feb26 0:00 [xenwatch]
root 95 0.0 0.0 0 0 ? I< Feb26 0:00 [nvme-wq]
root 96 0.0 0.0 0 0 ? I< Feb26 0:00 [nvme-reset-w
root 97 0.0 0.0 0 0 ? I< Feb26 0:00 [nvme-delete-
root 98 0.0 0.0 0 0 ? S Feb26 0:00 [scsi_eh_0]
root 99 0.0 0.0 0 0 ? I< Feb26 0:00 [scsi_tmf_0]
root 100 0.0 0.0 0 0 ? S Feb26 0:00 [scsi_eh_1]
root 101 0.0 0.0 0 0 ? I< Feb26 0:00 [scsi_tmf_1]
root 103 0.0 0.0 0 0 ? I< Feb26 0:00 [vfio-irqfd-c
root 104 0.0 0.0 0 0 ? I< Feb26 0:00 [mld]
root 105 0.0 0.0 0 0 ? I< Feb26 0:00 [ipv6_addrcon
root 114 0.0 0.0 0 0 ? I< Feb26 0:00 [kstrp]
root 117 0.0 0.0 0 0 ? I< Feb26 0:00 [zswap-shrink
root 118 0.0 0.0 0 0 ? I< Feb26 0:00 [kworker/u31:
root 123 0.0 0.0 0 0 ? I< Feb26 0:00 [charger_mana
root 124 0.0 0.0 0 0 ? S Feb26 0:00 [jbd2/xvda1-8
root 125 0.0 0.0 0 0 ? I< Feb26 0:00 [ext4-rsv-con
root 163 0.0 1.5 54000 14824 ? S<s Feb26 0:01 /lib/systemd/
root 199 0.0 0.4 9684 4724 ? Ss Feb26 0:00 /lib/systemd/
root 210 0.0 0.0 0 0 ? I< Feb26 0:00 [cryptd]
root 282 0.0 0.0 0 0 ? I< Feb26 0:00 [kaluad]
root 283 0.0 0.0 0 0 ? I< Feb26 0:00 [kmpath_rdacd
root 284 0.0 0.0 0 0 ? I< Feb26 0:00 [kmpathd]
root 285 0.0 0.0 0 0 ? I< Feb26 0:00 [kmpath_handl
root 286 0.0 1.8 280208 18004 ? SLsl Feb26 0:12 /sbin/multipa
systemd+ 317 0.0 0.4 90668 4712 ? Ssl Feb26 0:00 /lib/systemd/
systemd+ 389 0.0 0.5 27280 5380 ? Ss Feb26 0:00 /lib/systemd/
systemd+ 393 0.0 1.0 24692 10556 ? Ss Feb26 0:00 /lib/systemd/
root 492 0.0 0.7 241060 7672 ? Ssl Feb26 0:03 /usr/lib/acco
root 493 0.0 0.0 2548 780 ? Ss Feb26 0:00 /usr/sbin/acp
root 500 0.0 0.2 8548 2596 ? Ss Feb26 0:00 /usr/sbin/cro
message+ 501 0.0 0.4 7684 4548 ? Ss Feb26 0:00 /usr/bin/dbus
root 511 0.0 1.3 29628 13460 ? Ss Feb26 0:00 /usr/bin/pyth
root 514 0.0 0.7 236448 7624 ? Ssl Feb26 0:00 /usr/lib/poli
syslog 528 0.0 0.4 224500 4408 ? Ssl Feb26 0:00 /usr/sbin/rsy
root 540 0.0 0.6 17452 6528 ? Ss Feb26 0:00 /lib/systemd/
root 541 0.0 0.9 395460 9676 ? Ssl Feb26 0:00 /usr/lib/udis
daemon 548 0.0 0.2 3804 2096 ? Ss Feb26 0:00 /usr/sbin/atd
root 569 0.0 0.0 0 0 ? I Feb26 0:10 [kworker/0:3-
root 679 0.0 0.9 318788 8812 ? Ssl Feb26 0:00 /usr/sbin/Mod
root 681 0.0 1.6 108132 15796 ? Ssl Feb26 0:00 /usr/bin/pyth
root 1145 0.0 1.2 1241300 12040 ? Ssl Feb26 0:04 /snap/amazon-
root 1192 0.0 0.1 7360 1724 ttyS0 Ss+ Feb26 0:00 /sbin/agetty
root 1194 0.0 0.1 5836 1572 tty1 Ss+ Feb26 0:00 /sbin/agetty
root 1639 0.0 2.1 1319540 21460 ? Ssl Feb26 0:08 /usr/lib/snap
root 21316 0.0 0.5 12192 5236 ? Ss Feb27 0:00 sshd: /usr/sb
root 28895 0.0 0.0 0 0 ? I< Feb27 0:00 [xfsalloc]
root 28896 0.0 0.0 0 0 ? I< Feb27 0:00 [xfs_mru_cach
root 37517 0.0 0.0 0 0 ? I 08:39 0:00 [kworker/u30:
root 37534 0.0 0.9 13816 8912 ? Ss 09:41 0:00 sshd: ubuntu
ubuntu 37537 0.0 0.9 18936 9488 ? Ss 09:41 0:00 /lib/systemd/
root 37538 0.0 0.0 0 0 ? I 09:41 0:00 [kworker/u30:
ubuntu 37539 0.0 0.4 170624 4564 ? S 09:41 0:00 (sd-pam)
ubuntu 37639 0.0 0.5 13952 5424 ? S 09:41 0:00 sshd: ubuntu@
ubuntu 37640 0.0 0.5 10040 5068 pts/0 Ss 09:41 0:00 -bash
ubuntu 37668 0.0 0.3 10620 3304 pts/0 R+ 10:10 0:00 ps aux
ubuntu@ip-172-31-4-29:~$
예를 들어, myapp라는 이름의 프로세스를 찾으려면 다음과 같이 입력합니다
ubuntu@ip-172-31-4-29:~$ ps aux | grep myapp
ubuntu 37665 0.0 0.0 8168 724 pts/0 S+ 10:07 0:00 grep --color=auto myapp
- ps aux는 모든 사용자의 모든 프로세스에 대한 상세 정보를 출력합니다.
- grep myapp는 출력된 목록에서 myapp을 포함하는 라인만 필터링합니다.
특정 프로세스 종료하기
프로세스를 찾은 후에는 kill 명령어를 사용하여 종료할 수 있습니다. kill 명령어는 프로세스 ID(PID)를 사용하여 특정 프로세스를 종료합니다.
예를 들어, myapp 프로세스의 PID가 1234라면, 다음과 같이 입력하여 종료합니다
kill -9 1234
이때 -9를 옵션으로 넣어서 강제로 종료를 하게 합니다.
한 줄로 찾아서 종료하기
ps, grep, 그리고 kill 명령어를 결합하여 단일 명령어 라인으로 특정 프로세스를 찾아서 종료할 수 있습니다. 다음은 그 예시입니다
kill $(ps aux | grep '[m]yapp' | awk '{print $2}')
- ps aux | grep '[m]yapp'는 myapp 프로세스를 찾습니다. grep에서 [m]yapp을 사용하는 것은 grep 프로세스 자체가 결과에 나타나지 않도록 하는 트릭입니다.
- awk '{print $2}'는 찾은 라인에서 두 번째 필드(PID)만 추출합니다.
- $(...)는 명령어 치환을 사용하여 kill 명령어에 PID를 넘깁니다.
이 방법으로 여러 프로세스를 종료할 수도 있습니다. 단, 해당 프로세스가 시스템에 중요하지 않거나, 다른 응용 프로그램의 동작에 영향을 주지 않는지 주의해야 합니다.
반응형
'웹관련프로그래밍(web programming) > linux(리눅스)' 카테고리의 다른 글
[Ubuntu] usermod, groupadd 그룹 만들기 및 권한 허용 변경 예제 실습 (0) | 2024.03.12 |
---|---|
[Linux] 프로그램 패키지 업데이트와 업그레이드 차이점 및 프로그램 설치 삭제 방법(ubuntu, apt get update, upgrade, install, remove, purge) (0) | 2024.03.06 |
[Linux] 리다이렉션과 파이프(검색, 쓰기, grep, <<, >>, 방향키, Redirection, Pipe) (0) | 2024.03.04 |
[Linux] Chmod 권한 변경 숫자로 쉽게 정리, 주요 옵션 설명 (0) | 2024.02.28 |
[Linux] ls 명령, 옵션과 파일 권한 예제로 익히기(읽고(r), 쓰고(w), 실행(x)) (1) | 2024.02.27 |