일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- linux
- centOS
- centOS7
- 도커 명령어
- devops
- 도커
- 부스트코스
- 리눅스
- 네트워크
- C++
- os
- kubernetes
- AWS
- docker
- 클라우드
- NGINX
- 도커 컨테이너
- Python
- ios
- 컨테이너
- 쿠버네티스
- swift 클로저
- 인프라
- Swift
- k8s
- 데브옵스
- 프로세스
- boj
- 운영체제
- 도커 이미지
- Today
- Total
귀염둥이의 메모
[Linux / CentOS 7] 프로세스(process), 작업 (job) 환경 (ps, jobs, fg, bg, kill, nice, renice ...) 본문
[Linux / CentOS 7] 프로세스(process), 작업 (job) 환경 (ps, jobs, fg, bg, kill, nice, renice ...)
겸둥이xz 2021. 8. 21. 22:29프로세스
프로세스는 현재 시스템에서 실행 중인 프로그램을 뜻합니다
사용자가 사용한 명령도 프로세스가 되어 실행되는데, 시스템에는 사용자가 실행한 프로세스 외에도 사용자 관리, 메모리 관리, 네트웤 ㅡ접속 관리 등 다양한 기능을 수행하는 많은 프로세스가 실행되고 있습니다
프로세스의 번호
각 프로세스는 고유한 번호를 갖고 있고 이를 PID 라 부릅니다
PID 는 1번부터 시작하고 프로세스가 실행되면서 하나씩 증가하여 부여됩니다
최신 리눅스에서 PID 1번은 systemd 프로세스가 실행되고, 2번은 kthreadd 프로세스가 실행됩니다
systemd 프로세스는 나머지 모든 시스템 프로세스의 부모 프로세스가 되고, kthreadad 프로세스는 모든 스레드의 부모 프로세스가 됩니다
프로세스 관련 명령어
ps : ps 명령의 옵션에 따라 자세한 프로세스 정보를 확인할 수 있습니다
- -e : 시스템상의 모든 프로세스에 대한 정보 출력
- -u : 사용자의 프로세스 출력
- -l, -f : 전체 목록 출력 (PPID / NICE / PRIORITY)
top : ps 와 달리 지속적인 모니터링 기능 (작업관리자와 유사)
uptime : 부하평균만 확인
w : 부하 평균 + 현재 시스템에 접속중인 사용자의 작업내역
작업환경
shell 에서는 프로세스를 작업 (job) 단위로 관리를 합니다
작업은 포그라운드 (foreground) 와 백그라운드 (background) 두 가지 방식으로 동작합니다
- 포그라운드 : 작업이 종료되는 시점까지 다른 쉘 명령어를 수행할 수 없고 대기합니다
- 백그라운드 : 작업을 하는 동시에 다른 명령어들을 실행시킬 수 있습니다
동시에 여러 명령어들을 실행시키는 것을 멀티 태스킹 (multi-tasking) 이라고 합니다
포그라운드 실행
이렇게 포그라운드에서 작업을 실행하면 다른 명령어를 입력해도 바로 수행되지 않고, 포그라운드 작업이 끝난 후에 수행됩니다
포그라운드에서 실행중인 작업은 ctrl + c 로 종료할 수 있습니다
백그라운드 실행
백그라운드에서 명령어를 실행하기 위해서 뒤에 & 를 붙여줍니다
백그라운드 상태에서는 바로 다른 명령어들을 실행할 수 있습니다
jobs 명령어를 통해서 백그라운드에서 실행중인 작업을 확인할 수 있습니다
[1] 은 작업의 고유 번호입니다
작업 환경 변경
- 백그라운드 -> 포그라운드 전환 : fg %[작업번호]
- 포그라운드 -> 백그라운드 전환 : ctrl + z 를 눌러서 작업 일시중단 후, bg %[작업번호]
사용예시
sleep 1000& 명령어로 백그라운드에서 실행합니다
jobs 를 통해 확인 하면 작업번호 1번으로 Running 상태입니다
sleep 10000 명령어를 포그라운드에서 실행하고 ctrl + z 를 통해 일시중단합니다
jobs 를 통해 확인하면 작업번호 2번에 Stopped 상태입니다
bg %2 명령으로 2번 작업을 Stopped 상태에서 백그라운드에서 Running 상태로 변경했습니다
ps 를 통해서 확인하면 sleep 명령어 2개가 실행중이고 PID 확인이 가능합니다
프로세스 신호 종류
신호 번호 | 신호 이름 | 설명 |
1 | HUP | 프로세스 종료 없이 구성파일 리로드 |
2 | INT | 키보드 인터럽트 |
3 | QUIT | 키보드 종료 및 덤프 생성 |
9 | KILL | 즉각적인 강제적 종료 |
15 | TERM | 정상적인 종료 |
18 | CONT | 중지된 프로세스 다시 시작 |
19 | STOP | 프로세스 동작 중지 |
20 | TSTP | 프로세스 동작 중지 |
신호 전달 명령어
- kill : 단일 프로세스에 PID를 이용해서 신호를 전달
kill [SIG] [PID 또는 %JID]
- killall : 프로그램파일의 이름(명령어)를 이용해서 여러 프로세스를 동시에 제어
killall [SIG] [PATTERN]
- pkill : 이름+특성을 이용해서 여러 프로세스를 제어
- pgrep : pkill과 동일한 사용법으로 해당하는 PID 만 확인
kill -18 명령으로 중지된 프로세스를 다시 시작시켰습니다
kill -9 로 프로세스를 강제종료
프로세스의 우선순위
- priority : 실질적인 우선순위
- nice : 사용자가 조정 가능한 범위
nice 값은 top, ps 명령어를 통해 확인 가능합니다
nice - n [값] [COMMAND] : 명령어 실행 시 우선순위 지정
renice -n [값] [PID] : 실행 중인 프로세스의 우선순위 변경
nice 값은 -20 ~ 19 까지 지정 가능하고, nice 값이 낮을수록 우선순위가 높습니다
일반 user 는 0 ~ 19 까지만 지정할 수 있고, nice 값을 높일 수는 있지만 낮출 수 없습니다
'Infra & Devops > Linux' 카테고리의 다른 글
[Linux / CentOS 7] 사용자 및 그룹관리 (/etc/passwd, /etc/shadow, /etc/group, /etc/gshadow) (0) | 2021.08.22 |
---|---|
[Linux / CentOS 7] 튜닝 프로파일 (0) | 2021.08.22 |
[Linux / CentOS 7] 아카이브 파일, tar 명령어 (0) | 2021.08.21 |
[Linux / CentOS 7] 아이노드 (i-node) / 하드 링크, 심볼릭 링크 (0) | 2021.08.21 |
[Linux / CentOS 7] 리다이렉션 (Redirection) & 파이프 (Pipe) (0) | 2021.08.21 |