오늘 복습할 내용은
프로세스 관련 명령어 (ps, pstree, jobs, bg/gf, kill, killall, nice, renice, top, nohub, tail)
스케줄링과 cron (crontab)
프로세스 관련 명령어
# ps
현재 실행중인 프로세스의 상태를 보여주는 명령어. (CPU 사용도가 낮은 순서로 출력됨.)
(1) 옵션없이 : 자신의 터미널에서 실행되고 있는 프로세스들의 관련 정보(PID | TTY | TIME | CMD 출력)만 나타냄.
PID : 프로세스 식별번호 ex) 3056
TTY : 프로세스와 연결된 터미널 번호 ex)pts/19
TIME : 총 CPU 사용 시간 ex) 00:00:00
CMD : 실행 명령어 ex) ps
(2)옵션 a : 현재 실행중인 모든 프로세스 출력 (all) - 외부 터미널에서도 실행중인 모든 프로세스!
//현재 터미널 외에도 출력
- ps x(접속된 터미널뿐만 아니라 사용되고 있는 모든 프로세스들을 출력)는 실행된 모든 프로세스를 출력하고
ps a는 (외부터미널에서도)현재 실행중인 모든 프로세스!
(3) 옵션 e : 모든 프로세스 정보
(4) 옵션 u : 사용자 이름과 프로세스 시작 시간 출력
(5) 옵션 l : 자세한 정보 출력 (ps aux와는 또다른 출력 결과)
<F> 프로세스 플래그로 8진수 값의 합을 나타냄.
01 | 주기억장치 내에 있음 |
02 | 시스템 프로세스 |
04 | 주기억장치 내에서 잠김(Locked) |
10 | 스왑(Swap)되고 있음 |
20 | 다른 프로세스에 의해 추적되고 있음 |
<S> 프로세스 상태 표시
-R : Running -T : Terminated -S : Sleeping - Z : Stopped -W : Waiting -I : Intermediated
<C> 짧은 시간동안의 CPU 사용률
<PRI> 실행 우선순위 값. 값이 작을수록 우선순위가 높음.
<NI> NICE 우선순위를 계산할 때 사용하는 nice값 (기본이 0)
<ADDR> 프로세스의 주기억장치 내의 주소
<SZ> 프로세스 크기 (단위는 블록)
<WCHAN> 프로세스가 대기/수면상태에서 기다리는 사건 (실행중인 프로세스는 공백)
Q.책으로 공부하다 궁금한 점.<'ps l' 과 'ps -l'의 차이점은?>
l옵션은 BSD 계열이고, -l은 System V 계열이다. BSD계열이라고해서 Sys V에서 지원이 안되는건 아니지만 운영체제마다 조금씩 표기법이 상이하다는 것! 둘 다 long format을 보여주는 옵션이다!
자주 사용하는 ps 옵션은 ps ax, ps aux
특히 특정 프로세스의 상태 정보를 확인하려면, ps ax | grep httpd (httpd는 프로세스들의 상태를 나타냄)
ps aux 를 하게되면 더 구체적인 정보(ps 소유자명, CPU사용 비율 추정치 등)가 출력됨.
<%CPU> CPU 사용 비율 추정치
<%MEM> 메모리 사용 비율 추정치
<VSZ> 페이지 단위의 가상메모리 사용량
<RSS> 실제 사용된 메모리량 (Resident Set Size)
<STAT> 현재 프로세스 상태 (P:수행가능/수행 중 , R : 현재 실행 상태, S: 잠든 상태, 20초 이상 된 상태, D: I/O작업이 끝나기를 기다리면서 정지된 상태, T: 일시정지된 상태, Z: 좀비 프로세스)
<START> 프로세스 시작 시간
<TIME> 총 CPU 사용 시간
# pstree
◦ 실행 중인 프로세스를 트리구조로 나타내는 명령어
◦ 옵션
pstree -p | PID 표시하면서 트리구조 출력 |
pstree -n | PID를 정렬해서 표시 (오름차순 정렬) |
pstree -a | 명령행 인자를 포함한 정보를 트리구조에 표시 |
pstree -h | 현재 프로세스와 부모프로세스를 음영으로 강조해서 표시 (highlight) |
pstree -pn : PID를 표시하고 PID정렬을 한 ps 트리구조
pstree -npa : PID 표시 & PID 정렬 & 명령행 인자를 포함하여 출력한 ps 트리구조
# jobs
◦ 작업이 중지된 or 백그라운드로 진행중인 or 변경되었지만 보고되지않은 상태 등을 표시.
◦ 옵션 (옵션없이 jobs : 백그라운드로 실행 중인 프로세스 확인)
jobs -l | GID를 state 필드 앞에 표시 |
jobs -n | 프로세스 그룹 중 대표 프로세스 ID 표시 |
jobs -p | 프로세스 ID를 한 행씩 표시 |
# bg와 fg
(1) bg : 현재 실행 중인 포그라운드 -> 백그라운드프로세스로의 전환.
◦ 포그라운드에서 백그라운드로 전환시 :
1. 먼저 실행중인 작업을 일시정지. (Ctrl + Z)
2. bg [%]작업번호 명령 수행.
(2) fg : 현재 백그라운드로 실행중인 명령어를 포그라운드로 전환.
◦ 백그라운드에서 포그라운드로 전환 시 : fg [%]작업번호 ('fg'만 입력 시 현재 bg로 실행중인 명령어를 fg로 전환.)
* 포그라운드 작업 종료하려면 Ctrl + C
# kill
◦ kill [옵션] [시그널번호 or 시그널 이름] [PID or %작업번호] ->프로세스 종료
kill -l | 시그널 리스트 출력 |
kill -s 시그널번호 or 시그널 이름 | 전달할 시그널의 종류 지정 |
kill -1 | -HUP, 프로세스를 재시작 (시그널번호: 1) |
kill -9 | 프로세스 강제 종료 |
예시)
다른 터미널에서 top을 실행하고 ps -a 명령어를 해보면 실행중인 프로세스로 top이 뜬다. 프로세스를 강제 종료 시키는 시그널넘버 9로 PID 3398를 kill하니 죽었음. 이라고 뜬다!!
# kilall
◦ 같은 데몬의 여러 프로세스를 한번에 종료시킬 때 사용.
블로그로 복습하는 방식을 한번 쭉 리눅스 공부하고 다시 앞에서부터 정독할때 해야할것같아서 잠시 리눅스 글은 안녕!
'유용한 모든 것' 카테고리의 다른 글
리눅스마스터 2급 2차 [프로세스] (0) | 2020.08.25 |
---|---|
리눅스마스터 2급 2차 [셸] (0) | 2020.08.25 |
리눅스마스터 2급 2차 [파일 시스템] (0) | 2020.08.24 |
리눅스마스터 2급 2차 [다시 봐야 할 개념] (0) | 2020.08.24 |
리눅스마스터 2급 1차 공부 (0) | 2020.08.10 |