Jin's Dev Story

[리눅스마스터1급 - 1차] 2과목 - 4-3. 프로세스 관리 본문

자격증 & 공부/리눅스마스터 1급

[리눅스마스터1급 - 1차] 2과목 - 4-3. 프로세스 관리

woojin._. 2024. 6. 13. 13:45

3. 프로세스 관리

3-1. 프로세스의 제어

  1) 런레벨 (Run Level) 분류

  2) 포그라운드 / 백그라운드

    - 포그라운드 (foreground) : 포그라운드로 실행시킨 프로세스는 종료되기 전까지는 다른 작업을 할 수 없음

    - 백그라운드 (background) : 프로세스를 백그라운드로 실행시키면 다른 작업 수행이 가능

      : 명령어 마지막에 ‘&’를 붙여 실행하면 백그라운드로 실행시킬 수 있음

    - 포그라운드 동작 중인 프로세스를 백그라운드로 전환하는 방법

      : [Ctrl] + [Z]를 눌러 작업을 일시 정지 시킨 후 bg 명령을 실행함

    - 백그라운드 -> 포어그라운드 전환 : fg 작업번호 or fg %작업번호

 

3-2. 관련 명령어

  1) top 명령어

    - CPU 프로세서의 현황을 실시간으로 출력해주는 명령어

    - 주요 내부 명령어

      : l : 상단의 load average 항목 켜기 끄기

      : t : 상단의 프로세스와 CPU 항목 켜기 끄기

      : m : 상단의 메모리 항목 켜기 끄기

      : M : 메모리 사용량이 큰 순서로 정렬

      : P : CPU 사용량이 큰 순서로 정렬

      : k : 입력한 PID의 프로세스 종료

      : q : 종료

    - 각 필드 설명

      : PID : 프로세스 ID

      : USER : 프로세스를 실행시킨 사용자

      : PR : 프로세스 우선순위

      : NI : NICE

      : VIRT : 프로세스가 사용하는 가상메모리 크기

      : RES : 프로세스가 사용하는 메모리 크기

      : SHR : 프로세스가 사용하는 공유 메모리 크기

      : S : 프로세스의 상태 (S : Sleeping, 휴먼 상태 / R : Running, 실행 상태 / Z : Zombie, 좀비 프로세스 / )

      : %CPU : 프로세스가 사용하는 CPU의 사용률

      : %MEM : 프로세스가 사용하는 메모리의 사용률

      : TIME+ : 프로세스가 CPU를 사용한 시간

      : COMMAND : 실행된 명령어

 

  2) ps 명령어

    - 현재 실행 중인 작업의 사용자와 PID를 출력하는 명령어

    - 주요 옵션

      : [-a] : 모든 프로세스 출력

      : [-e] : 해당 프로세스에 관련된 환경변수 정보를 함께 출력, 커널 프로세스를 제외한 모든 프로세스를 출력

      : [-f] : 여러 항목들에 관한 내용을 출력, 출력을 풀 포맷으로 표기 (유닉스 스타일), UID, PID, PPID 등이 함께 표시

      : [-u USERNAME|UID] : 지정한 사용자가 실행한 프로세스를 출력

      : [-p PID] : 지정한 프로세스의 정보를 출력

    - 각 필드 설명

      : PID : 프로세스 ID

      : PPID : 부모 프로세스 ID

      : TTY : 프로세스와 연결된 터미널 포트

      : C : 프로세스가 사용하는 CPU의 사용률

      : STIME : 프로세스가 시작된 시간

      : STAT : 프로세스의 상태 (top 명령어의 S 필드와 같음)

 

  3) pstree 명령어

    - 실행 중인 프로세스를 트리 형태로 출력하는 명령어

    - 주요 옵션

      : [-c] : 중복된 프로세스도 출력

      : [-n] : PID를 기준으로 정렬하여 출력

      : [-p] : PID도 같이 출력

      : [-u] : UID도 같이 출력

 

  4) pgrep 명령어

    - 지정한 패턴과 일치하는 프로세스에 대한 정보를 출력

    - 주요 옵션

      : [-x] : 패턴과 정확히 일치하는 프로세스 정보를 출력

      : [-u] : 지정한 사용자에 대한 모든 프로세스 출력

    - 출력되는 정보가 많지 않기 때문에 ps 명령어와 같이 사용됨

 

  5) 프로세스 종료 명령어

    - kill 명령어

      : 프로세스에 시그널을 전송하는 명령어

      : 형식 : # kill [시그널] [PID]

      : 옵션을 지정하지 않으면 15번 시그널로 간주되어 실행됨

      : 주요 시그널

      : pgrep 명령어를 이용하면 pkill/killall 명령어와 같은 효과를 볼 수 있음

          EX) # kill `pgrep sleep`

                # kill $(pgrep sleep)

                # killall sleep 전부 같은 결과를 나타냄

      : kill l : 시그널 이름과 번호를 확인할 수 있는 명령

    - pkill 명령어

      : kill 명령어와 역할이 같지만, PID 대신 해당 명령어의 프로세스를 종료하는 명령어

      : kill 명령어는 지정한 PID의 프로세스 하나만 종료되지만 pkill 명령어는 지정한 명령어에 관련된 여러 프로세스들이 한꺼번에 종료됨

    - killall 명령어

      : pkill 명령어와 기능이 같음

 

  6) 우선순위 관련 명령어

    - nice 명령어 (실행될 때)

      : 지정한 프로세스의 우선순위 (top 명령어의 NI)를 조정하는 명령어

      : [-n] 옵션으로 우선순위를 조정할 수 있음

          EX) nice -n 15 top top 명령어의 우선순위를 15 증가

      : 옵션 없이 실행 시 지정한 프로세스의 우선순위를 10 증가시킴

      : nice 명령어로 우선순위를 조정하면 새로운 프로세스가 추가됨

      : 우선순위 범위는 -20 ~ 19 사이의 값으로 우선순위 값이 작을수록 우선순위가 높음

      : 우선순위 값을 낮추는 것 (우선순위가 높아지는 것)root만 가능하고 일반 계정은 우선순위 값을 높이는 것만 가능

    - renice 명령어 (실행 중인)

      : 지정한 PID UID/GID의 우선순위를 지정하는 명령어

      : [-u UID|USERNAME] : 지정한 UID 또는 사용자의 모든 프로세스의 우선순위를 지정

      : [-g GID] : 지정한 GID의 모든 프로세스의 우선순위를 지정

      : [-p PID] : 지정한 PID의 우선순위를 지정

      : nice 명령어와 다르게 지정한 우선순위의 값이 바로 설정되고, 새로운 프로세스가 추가되지 않음

          EX) # renice 10 -u fedora -> fedora 사용자의 모든 프로세스의 우선순위를 10으로 지정

 

  7) 백그라운드 작업 관련 명령어

    - jobs 명령어

      : 백그라운드 작업을 출력하는 명령어

      : [-l] : 작업의 PID도 같이 출력

      : [-p PID] : 해당 PID의 작업을 출력

      : [-r] : Running 상태의 작업만 출력

      : [-s] : Stopped 상태의 작업만 출력

      : %[작업번호]로 해당 작업의 정보만 출력할 수 있음

      : 작업번호 뒤에 기호는 가장 최근에 접근한 작업을 의미하고 ‘-’‘+’ 작업 바로 이전에 접근한 작업을 의미

    - nohup 명령어

      : 로그아웃한 후에도 백그라운드에서 작업을 계속 실행하도록 하는 명령어

      : 형식 : # nohup [명령어] &

          EX) # nohup find / -name shell & ‘find / -name shell’ 명령어를 백그라운드로 작업을 계속 실행하도록 함

    - fg / bg 명령어

      : 지정한 작업번호에 대한 작업을 포그라운드 / 백그라운드 실행으로 옮기는 명령어

          EX) # bg %3 jobs 명령어로 확인한 작업번호 3의 작업을 백그라운드로 실행하도록 함

      : 작업번호 지정 없이 실행 시 가장 최근 작업에 대해 명령을 실행

 

  8) 작업 예약 관련 명령어

    - at 명령어

      : 지정한 시간에 지정한 명령을 한 번만 실행하는 명령어

      : [-l] : 예약 중인 명령어 목록을 출력 a= tq 명령어와 같은 기능

      : [-r] : 지정한 예약된 작업을 삭제 = atrm 명령어와 같은 기능

      : 접근제어 파일 : /etc/at.allow , /etc/at.deny (at.allow 파일 우선)

    - crontab 명령어

      : 지정한 시간에 지정한 명령어를 주기적으로 실행하는 명령어

      : [-e] : 사용자의 crontab 파일을 편집

      : [-l] : crontab 파일의 목록을 출력

      : [-r] : crontab 파일을 삭제

      : crontab 파일 형식 : [] [] [] [] [요일] [작업내용]

          EX) 30 20 1 * * /usr/bin/ls -l ~fedora > ~fedora/cron.out 매월 12030분에 ‘ls -l ~fedora’ 명령의 실행 결과를 cron.out 파일에 저장함

                0 12 22/2 * * 1 /usr/bin/ps -ef 매주 월요일 12시부터 22시 정각 2시간마다 ps -ef 명령어를 실행

                */30 0 2 1 * * /usr/bin/ls -l ~guest > ~root/geust.out 매월 10시부터 2시까지 30분마다 ls -l ~geust’ 명령의 실행 결과를 ~root/guest.out 파일에 저장함

      : 접근제어 파일 : /etc/cron.allow , /etc/cron.deny (cron.allow 파일 우선)

      : /var/spool/cron : 각 사용자들의 cron 설정파일들이 저장된 디렉토리

 

 


해당 블로그를 참고하여 정리했습니다.

https://bangu4.tistory.com/139

 

[Linux Master] 리눅스 마스터 공부법, 기출문제, 요약집

www.ihd.or.kr/main.do KAIT 자격검정 시험접수 정보통신 자격검정 시험 원서등록을 하실 수 있습니다 www.ihd.or.kr 시험에 대한 모든 내용이 홈페이지에 있지만 다시한번 정리하겠습니다. 1급 기준으로 1

bangu4.tistory.com