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 매월 1일 20시 30분에 ‘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 매월 1일 0시부터 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
'자격증 & 공부 > 리눅스마스터 1급' 카테고리의 다른 글
[리눅스마스터1급 - 1차] 2과목 - 5-1. 장치의 설치 및 관리 (1) | 2024.06.13 |
---|---|
[리눅스마스터1급 - 1차] 2과목 - 4-4. 소프트웨어 설치 및 관리 (0) | 2024.06.13 |
[리눅스마스터1급 - 1차] 2과목 - 4-2. 파일시스템 관리 (1) | 2024.06.13 |
[리눅스마스터1급 - 1차] 2과목 - 4-1. 사용자 관리 (0) | 2024.06.13 |
[리눅스마스터1급 - 1차] 1과목 - 3-2. 네트워크의 이해 (0) | 2024.06.13 |