컴퓨터 세상/LiNuX

프로세스 관리 명령

Jimin Daddy 2022. 5. 17. 12:29

# 프로세스 목록 확인
  1) ps : 현재 실행중인 프로세스에 대한 정보를 출력
      ps 명령이 출력하는 PID를 통해 프로세스의 부모-자식 관계도 확인할 수 있다.
      * 옵션 :
       <unix 옵션>
      -e : 시스템에서 실행 중인 모든 프로세스의 정보를 출력
      -f : 프로세스에 대한 자세한 정보를 출력
      -u uid : 특정 사용자에 대한 모든 프로세스의 정보를 출력
      -p pid : pid로 지정한 특정 프로세스의 정보를 출력
       <BSD 옵션>
      a : 터미널에서 실행시킨 프로세스의 정보를 출력
      u : 프로세스 소유자 이름, CPU 사용량, 메모리 사용량 등 상세 정보를 출력
      x : 시스템에서 시랳ㅇ 중인 모든 프로세스의 정보를 출력
       <GNU 옵션>
      --pid PID 목록 : 목록으로 지정한 특정 PID 정보를 출력
      * 사용 예
         ps
         ps -ef
         ps aux
         ps --pid
       * ps -f 출력 정보
         UID : 프로세스를 실행한 사용자 ID
         PID : 프로세스 번호
         PPID : 부모 프로세스 번호
         C : CPU 사용량 (%값)
         STIME : 프로세스의 시작 날짜나 시간
         TTY : 프로세스가 실행된 터미널의 종류와 번호
         TIME : 프로세스 실행 시간
         CMD : 실행되고 있는 프로그램 이름(명령)
       * ps a 옵션
         터미널에서 실행시킨 프로세스의 정보를 출력
         출력 내용 중 STAT는 프로세스의 상태를 나타내며, 문자의 의미는 아래와 같다.
         R : 실행 중
         S : 인터럽트가 가능한 대기(sleep) 상태
         T : 작업 제어에 의해 정지된(stopped) 상태
         Z : 좀비 프로세스(defunct)
         STIME : 프로세스의 시작 날짜나 시간
         s : 세션 리더 프로세스
         + : 포그라운드 프로세스 그룹
         l(소문자 L) : 멀티 스레드
       * ps au 출력 정보
          a 옵션이나 -f 옵션에 비해 CPU 메모리 사용량 등 추가적인 정보가 더 출력됨.
          USER : 사용자 계정 이름
          %CPU : 퍼센트로 표시한 CPU 사용량
          %MEM : 퍼센트로 표시한 물리적 메모리 사용량
          VSZ : 사용 중인 가상 메모리의 크기(KB)
          RSS : 사용 중인 물리적 메모리의 크기(KB)
          START : 프로세스 시작 시간
        * ps -e 옵션, -f 옵션
           TTY 값이 ? 인 것은 대부분 데몬으로 시스템이 실행한 프로세스다.
           그리고 출력 내용이 많을 경우 |(파이프)와 more 나 less 명령을 함께 사용하면 좋다.
           ps -e | more
           더 자세한 정보를 확인하려면 ps -ef를 입력함.
           TTY가 ? 인 프로세스는 사용자 ID가 root 이다. 스레드는 CMD에 [] 로 표시하여 구분된다.
         * ps ax 옵션, aux 옵션
           ps ax : 시스템에서 실행중인 모든 프로세를 출력
           ps aux : -ef 옵션 처럼 시스템에서 실행 중인 모든 프로세스에 대한 자세한 정보를 출력
         * ps -u
           특정 사용자가 실행한 프로세스의 목록을 확인할 수 있다.
           ex) ps -u user1
           자세한 정보를 보려면 ps -fu user1
         * ps -p 옵션
           특정 PID를 지정하면 해당 프로세스의 정보를 출력
           ex) ps -p 117
                 ps -fp 117 (더 자세한 정보를 출력)

# 특정 프로세스 정보 검색
   * ps -ef | grep bash  (bash에 대한 자세한 정보 출력)
   * pgrep
      - 지정한 패턴과 일치하는 프로세스의 정보를 출력
      - 형식 : pgrep [옵션] [패턴]
      - 옵션
         -x : 패턴과 정확히 일치하는 프로세스의 정보를 출력
         -n : 패턴을 포함하고 있는 가장 최근 프로세스의 정보를 출력
         -u 사용자 이름 : 특정 사용자에 대한 모든 프로세스를 출력
         -l : PID와 프로세스의 이름을 출력
         -t term : 특정 단말기와 관련된 프로세스의 정보를 출력
       ex) pgrep -x bash
             pgrep -l bash  
             더 자세한 정보를 검색하려면 ps 명령과 연결해서 사용.
             ps -fp $(pgrep -x bash)
             ps -fp $(pgrep -u user1 bash)

# 프로세스의 종료
   응답이 없는 프로세스나 불필요한 프로세스를 강제 종료하려면 해당 프로세스의 PID를 알아야 한다.
   ps -ef나 ps aux 명령으로 PID와 PPID를 알 수 있다.
   프로세스를 종료하는데는 kill 이나 pkill 명령을 사용함. 프로세스에 시그널을 보내 종료한다.
   시그널은 프로세스에 무언가 발생했음을 알리는 간단한 메시지다. 이 메시지에는 무엇이 발생했는지를 나타내는 미리 정의된
   상수를 사용. 시그널은 번호로 구분되며, 이름을 가지고 있다. kill -l 명령으로 시그널의 목록을 확인 가능
   - 주요 시그널   

시그널 번호 기본 처리 의미
SIGHUP 1 종료 터미널과의 연결이 끊어졌을 때 발생
SIGINT 2 종료 인터럽트로 사용자가 Ctrl+C를 입력하면 발생한다.
SIGQUIT 3 종료, 코어 덤프 종료 신호로 사용자가 Ctrl+\을 입력하면 발생한다.
SIGKILL 9 종료 이 시그널을 받은 프로세스는 무시할 수 없으며, 강제로 종료된다.
SIGALRM 14 종료 알람에 의해 발생한다.
SIGTERM 15 종료 kill 명령이 보내는 기본 시그널이다.

  * kill : 프로세스 종료
    kill 명령은 잉ㄴ자로 지정한 프로세스에 시그널을 전달한다.
    프로세스는 각 시그널을 받았을 때 어떻게 처리할 것인지 동작이 지정되어 있다.
    15번 시그널은 일반적으로 프로세스 종료이지만, 시그널을 무시하거나 다른 동작을 하도록 지정되어 있다면 프로세스가
    종료되지 않을 수 있다. kill 명령에서 시그널을 지정하지 않을 경우 15번 시그널로 간주됨.
    9번 시그널은 강제 종료이지만, 좀비 프로세스는 종료되지 않을 수 있다.
    -  형식 : kill [-시그널] PID
    - 시그널
      2: 인터럽트 시그널을 보낸다. (Ctrl+C)
      9 : 프로세스를 강제로 종료한다.
      15 : 프로세스와 관련된 파일들을 정리하고 종료한다. 종료되지 않는 프로세스가 있을 수 있다.
    ex) kill 1001
          kill -15 1001
          kill -9 1001
   * pkill
      - kill 명령과 마찬가지로 시그널을 보내지만 PID 가 아니라 프로세스의 명령이름(CMD)으로 프로세스를 찾아 종료.
        kill 명령과 차이점은 해당하는 명령이름으로 여러 개가 검색될 경우 한 번에 모두 종료한다.
        자신이 소유한 프로세스만 종료 가능하다.
      ex) pkill man
   * killall
     - pkill 명령 처럼 프로세스의 명령 이름(CMD)으로 프로세스를 찾아 종료
       이 이름으로 실행 중인 모든 프로세스를 한 번에 종료. 해당 프로세스를 소유하고 있어야 함.

# 프로세스 관리 도구
   ps 명령으로는 현재 프로세스 목록을 확인만 할 수 있다.
   이 정보를 사용자가 보기 편하게 다양한 기능을 제공하는 도구가 있는데, top 명령과 GUI인 그놈의 '시스템 정보' 이다
   * top 명령
      현재 실행중인 프로세스의 정보를 주기적으로 출력하는데, 프로세스의 자세한 요약 정보를 상단에 출력하고,
      각 프로세스의 정보를 하단에 출력한다.
      top 명령은 종료하지 않고 실시간으로 프로세스의 상태를 보여주며 내부적으로 사용하는 명령도 있다
   * 출력 정보
      PID : 프로세스 ID
      USER : 사용자 계정
      PR : 우선 순위
      NI : Nice 값
      VIRT : 프로세스가 사용하는 가상 메모리의 크기
      RES : 프로세스가 사용하는 메모리의 크기
      SHR : 프로세스가 사용하는 공유 메모리의 크기
      %CPU : 퍼센트로 표시한 CPU 사용량
      %MEM : 퍼센트로 표시한 메모리 사용량
      TIME+ : CPU 누적 이용 시간
      COMMAND : 명령 이름
    * top 내부 명령
       Enter, Space Bar : 화면을 즉시 다시 출력.
       h, ? : 도움말 화면을 출력
       k : 프로세스를 종료한다. 종료한 프로세스의 PID를 물어본다.
       n : 출력하는 프로세스의 개수를 바꾼다.
       u : 사용자에 따라 정렬하여 출력
       M : 사용자의 메모리 크기에 따라 정렬하여 출력한다.
       p : CPU 사용량에 따라 정렬하여 출력
       q : top 명령을 종료 한다.
   * GUI  그놈의 시스템 정보
      [현재 활동] - [프로그램 표시] - [유틸리티] - [시스템 정보]와 같은 순서로 동작
      윈도우와 같은 프로세스 화면 나옴

'컴퓨터 세상 > LiNuX' 카테고리의 다른 글

작업 예약  (0) 2022.05.26
작업 제어 (포그라운드&백그라운드)  (0) 2022.05.19
프로세스의 개념  (0) 2022.05.17
특수 접근 권한 설정  (0) 2022.05.03
기본 접근 권한 설정  (0) 2022.04.08