[linux기초] 9. 프로세스 관리
프로세스의 제어
- 런레벨 분류
- Run Level 0 : 시스템의 종료
- Run Level 1 : 단일 사용자 모드
- Run Level 2 : 다중 사용자 모드 (NFS 지원 X)
- Run Level 3 : 다중 사용자 모드 (텍스쳐 유저 모드)
- Run Level 4 : 사용자 정의 모드
- Run Level 5 : 그래픽 유저 모드
- Run Level 6 : 시스템 재부팅
- 포그라운드/백그라운드
- 포그라운드(foreground) : 포그라운드로 실행시킨 프로세스는 종료되기 전까지는 다른 작업을 할 수 없다
- 백그라운드(background) : 프로세스를 백그라운드로 실행시키면 다른 작업 수행이 가능하다
- 명령어 마지막에
&
를 붙여 실행하면 백그라운드로 실행시킬 수 있다
- 명령어 마지막에
관련 명령어
- top 명령어
- CPU 프로세서의 현황을 실시간으로 출력해주는 명령어
- 주요 내부 명령어
- l : 상단의 load average 항목 켜기/끄기
- t : 상단의 프로세스와 CPU 항목 켜기/끄기
- m : 상단의 메모리 항목 켜기/끄기
- M : 메모리 사용량이 큰 순서로 정렬
- P : CPU 사용량이 큰 순서로 정렬
- k : 입력한 PID의 프로세스 종료
- q : 종료
- 각 필드 설명
- PID : 프로세스 ID
- USER : 프로세스를 실행시킨 사용자
- PR : 프로세스 우선 순위
- NI : NICE 값
- VIRT : 프로세스가 사용하는 가상 메모리
- RES : 프로세스가 사용하는 공유 메모리 크기
- S : 프로세스의 상태 (S : sleeping, 휴면상태 / R : Running, 실행상태 / Z : Zombie, 좀비 프로세스 / … )
- %CPU : 프로세스가 사용하는 CPU의 사용률
- %MEM : 프로세스가 사용하는 메모리의 사용률
- TIME+ : 프로세스가 CPU를 사용한 시간
- COMMAND : 실행된 명령어
- ps 명령어
- 현재 실행중인 작업의 사용자와 PID를 출력하는 명령어
- 주요 옵션
- [-a] : 모든 프로세스 출력
- [-e] : 해당 프로세스에 관련된 환경변수 정보를 함께 출력
- [-f] : 여러 항목들에 관한 내용을 출력
-
[-u USERNAME UID] : 지정한 사용자가 실행한 프로세스를 출력 - [-p PID] : 지정한 프로세스의 정보를 출력
- 각 필드 설명
- PID : 프로세스 ID
- PPID : 부모 프로세스 ID
- TTY : 프로세스와 연결된 터미널 포트
- C : 프로세스가 사용하는 CPU의 사용률
- STIME : 프로세스가 시작된 시간
- STAT : 프로세스의 상태 (top 명령어의 S 필드와 같다)
- pstree 명령어
- 실행 중인 프로세스를 트리 형태로 출력하는 명령어
- 주요 옵션
- [-c] : 중보4ㄱ된 프로세스도 출력
- [-n] : PID를 기준으로 정렬하여 출력
- [-p] : PID도 같이 출력
- [-u] : UID도 같이 출력
- pgrep 명령어
- 지정한 패턴과 일치하는 프로세스에 대한 정보를 출력
- 주요 옵션
- [-x] : 패턴과 정확히 일치하는 프로세스 정보를 출력
- [-u] : 지정한 사용자에 대한 모든 프로세스 출력
- 출력되는 정보가 많지 않기 때문에 ps 명령어와 함께 사용된다
- 프로세스 종료 명령어
- kill 명령어
- 프로세스에 시그널을 전송하는 명령어
- 형식 :
# kill [시그널][PID]
- 옵션을 지정하지 않으면 15번 시그널로 간주되어 실행된다
- pgrep 명령어를 사용하면 pkill/killall 명령어와 같은 효과를 볼 수 있다
# kill `pgrep sleep`
# kill $(pgrep sleep)
# killall sleep
전부 다 같은 결과를 나타낸다
- pkill 명령어
- kill 명령어와 역할이 같지만 PID 대신 해당 명령어의 프로세스를 종료하는 명령어
- kill 명령어는 지정한 PID의 프로세스 하나만 종료되지만, pill 명령어는 지정한 명령어에 관련된 여러 프로세스들이 한꺼번에 종료된다
- killall 명령어
- pkill 명령어와 기능이 같다
- kill 명령어
- 우선순위 관련 명령어
- nice 명령어
- 지정한 프로세스의 우선순위(top 명령어의 NI 값)를 조정하는 명령어
- [-n] 옵션으로 우선순위를 조정할 수 있다
# 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 명령어와 다르게 지정한 우선순위의 값이 바로 설정되고 새로운 프로세스가 추가되지 않는다
# renice 10 -u fedora
: fedora 사용자의 모든 프로세스의 우선순위를 10으로 고정
- nice 명령어
- 백그라운드 작업 관련 명령어
- jobs 명령어
- 백그라운드 작업을 출력하는 멸영어
- [-l] : 작업의 PID도 같이 출력
- [-p PID] : 해당 PID의 작업을 출력
- [-r] : Running 상태의 작업만 출력
- [-s] : Stoppped 상태의 작업만 출력
- %[작업번호]로 해당 작업의 정보만 출력할 수 있다
- 작업번호 뒤에 기호 ‘+’는 가장 최근에 접근한 작업을 의미하고 ‘-‘는 ‘+’ 작업 바로 이전에 접근한 적업을 의미
- nohup 명령어
- 로그아웃 한 뒤에도 백그라운드에서 작업을 계속 실행하도록 하는 명령어
- 형식 :
# nohub [명령어] &
# nohup find / -name shell &
: ‘find / -name shell’명령어를 백그라운드로 작업을 계속 실행하도록 함
- fg / bg 명령어
- 지정한 작업번호에 대한 작업을 포그라운드/백그라운드 실행으로 옮기는 명령어
# bg %3
: jobs 명령어로 확인한 작업번호 3의 작업을 백그라운드로 실행하도록 함 - 작업번호 지정 없이 실행 시 가장 최근 작업에 대한 명령을 수행
- 지정한 작업번호에 대한 작업을 포그라운드/백그라운드 실행으로 옮기는 명령어
- jobs 명령어
- 작업 예약 관련 명령어
- at 명령어
- 지정한 시간에 지정한 명령을 한번만 실행하는 명령어
- [-l] : 예약 중인 명령어 목록을 출력 = atq 명령어와 같은 기능
- [-r] : 지정한 예약된 작업을 삭제 = atrm 명령어와 같은 기능
- 접근제어 파일 : /etc/at.allow, /etc/at.deny (at.allow 파일 우선)
- crontab 명령어
- 지정한 시간에 지정한 명령어를 주기적으로 실행하는 명령어
- [-e] : 사용자의 crontab 파일을 편집
- [-l] : crontab 파일의 목록을 출력
- [-r] : crontab 파일을 삭제
- crontab 파일 형식 : [분][시][일][월][요일][작업내용]
30 20 1 * * /usr/bin/ls -l ~fderoa > ~fdeora/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/guest.out
: 매월 1일 0시부터 2시까지 30분마다 ‘ls -l ~guest명령의 실행 결과를 ~root/guest.out 파일에 저장한다 - 접근제어 파일 : /etc/cron.allow, /etc/cron.deny (cron.allow 파일 우선)
- at 명령어