본문 바로가기

리눅스

리눅스 프로세서 관리 명령어 [top , ps , kill, jobs]

평상시에 리눅스를 모니터링 해야하는데 그때 프로세서를 관리하는 명령어

 

리눅스 프로세서 관리명령어

1. top

2. ps 명령어

3. kill 명령어

4. jobs 명령어

 

[1] top 명령어

"지금 현재 작동중인 프로세서들의 cpu 사용율과 메모리 사용율을 확인하는 명령어"

[root@localhost ~]# top

그러면 아래와 같이 프로세서들의 사용율이 나온다.

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 2761 root      20   0  162116   2328   1576 R  0.7  0.1   0:00.15 top
    6 root      20   0       0      0      0 S  0.3  0.0   0:00.13 ksoftirqd/0
  401 root      20   0       0      0      0 R  0.3  0.0   0:00.76 xfsaild/dm-0
 1394 mysql     20   0  672184 103072  10556 S  0.3  5.5   0:01.37 mysqld
 2688 root      20   0       0      0      0 S  0.3  0.0   0:00.12 kworker/0:2
    1 root      20   0  128396   6984   4188 S  0.0  0.4   0:02.63 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
    4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    5 root      20   0       0      0      0 S  0.0  0.0   0:00.06 kworker/u2:0
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 R  0.0  0.0   0:01.16 rcu_sched
   10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain
   11 root      rt   0       0      0      0 S  0.0  0.0   0:00.12 watchdog/0
   13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
   14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
   15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd
   16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback
   17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd
   18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
   19 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
   20 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
   ... 생략

# 악성 유저 죽이기

kill -9 프로세서번호 

여기서 -9 : 강제종료 

[2] ps 명령어

"현재 시스템에서 수행되고 있는 프로세서의 정보를 표시하는 명령어"

 

문법: # ps 옵션 프로세서 번호

    # ps -p 3574

    # ps - fl 4175 ( fl 은 더 상세한 정보)

옵션 :

-p : 해당 프로세서의 간단한 정보(수행한 명령어) (# ps -p)

-e : 현재 서버에서 실행중인 모든 프로세서( # ps -e)

-f : 실제 유저명, 개시 시간 등을 표시(# ps -ef)

-l : 프로세서의 상태, 우선도 등과 같은 상세한 정보를 표시

 

현업에서 많이 쓰는 명령어 #ps -ef | grep 4365

 

예제 : 악성유저 확인하여 죽여보자

MySQL 에 SOTT 유저로 접속해서 아래의 SQL 을 수행하세요

select count(*)
from emp e1, emp e2, emp e3, emp e4, emp e5, emp e6, emp e7, emp e8, emp e9;

 

#mysql 접속해서 실행 

[root@localhost ~]# sh a.sh
1. 마리아 디비에 scott 유져로 접속하기

MariaDB [(none)]> use orcl;
Database changed

MariaDB [orcl]> select count(*)
    -> from emp e1, emp e2, emp e3, emp e4, emp e5, emp e6, emp e7, emp e8, emp e9;

#프로세서 확인 (putty 창 root 계정)

[root@localhost ~]# top

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1394 mysql     20   0  672184  18296   1908 S 98.7  1.0   0:25.37 mysqld
 2761 root      20   0  162116   1108    520 R  0.3  0.1   0:09.73 top

현재 mysql이 (프로세서 번호: 1394) cpu 98.7프로 차지

 

#mysql 프로세서 자세히 보기

[root@localhost ~]# ps -ef | grep 1394
mysql     1394     1  2 09:29 ?        00:01:26 /usr/sbin/mysqld
root      4846  4801  0 10:21 pts/4    00:00:00 grep --color=auto 1394

1394 프로세서를 모두 찾아 자세한 정보 확인

 

# 악성유저 mysql 프로세서 죽이기

[root@localhost ~]# kill -9 1394

죽이니까 프로세서 확인에서 사라짐

 

[3] jobs 명령어

"동작중인 작업의 상태를 확인하는 명령어"

 

[상태정보 4가지]

  1. running: 실행중
  2. stopped: 일시 중단중
  3. Done: 종료
  4. terminated : 강제종료됨

예제 . putty 창에서 vi 편집기를 열고 다음과 같이 작성하다가 esc 키를 누르고 ctrl+z 를 눌러서 취소하세요

 

[root@localhost ~]# vi hhh.txt

[1]+  Stopped                 vi hhh.txt
[2]+  Stopped                 vi hhh.txt

vi 편집기 하다가 중간에 취소를 했더니 stopped 라고 뜬다.

[1]                        +                            Stopped               vi hhh.txt

job번호         현재진행중인job          일시중단중

 

# jobs 명령어로 동작중인 작업의 상태를 확인해보자 

[root@localhost ~]# jobs
[1]-  Stopped                 vi hhh.txt
[2]+  Stopped                 vi hhh.txt

현재 진행중인 job으로 다시 가서 수정할 순 없을까? 

# fg 명령어: 현재 진행중이었던 job으로 접속하는 명령어 

[root@localhost ~]# fg
vi hhh.txt

select
~

작업이 중단되었던 vi 편집기 명령어로 들어간 것을 확인할 수 있다.