웹관련프로그래밍(web programming)/linux(리눅스)

[Linux] 프로세스 검색 및 종료 방법 예제로 익히기(ps, grep, kill, 우분투, ubuntu)

끄적끄적아무거나 2024. 3. 5. 09:19
반응형

 

목차

     

     

     

     

     

     

    프로세스 검색 및 종료 방법 예제로 익히기

    리눅스에서 프로세스를 검색하고 특정 프로세스를 종료하는 것은 시스템 관리의 일반적인 작업 중 하나입니다. 여기서는 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를 넘깁니다.

     

     

    이 방법으로 여러 프로세스를 종료할 수도 있습니다. 단, 해당 프로세스가 시스템에 중요하지 않거나, 다른 응용 프로그램의 동작에 영향을 주지 않는지 주의해야 합니다.

     

     

    반응형