프로세스
커널의 관리 하에 현재 시스템에 동작중인 프로그램이다. 커널은 프로세스 관리를 위해 각 프로세스에게 PCB를 할당한다. init(initialization, 가장 먼저 실행되는 프로세스)을 제외한 모든 프로세스는 부모-자식 관계를 가지고 있다.
*PCB(Process Control Block)
-고유번호(PID, Process Identification Number)
커널이 할당하는 프로세스마다 부여되는 고유의 번호
-우선순위
운영체제가 스케줄링 하기 위한 정보
-현재상태
할당받은 자원 및 프로세스의 상태를 나타내는 정보
프로세스의 종류
데몬(Daemon) 프로세스
-윈도우즈의 서비스 개념
-특정 서비스를 제공하기 위해 동작하고 있는 프로세스
ex)웹 서버를 동작시키기 위해서 httpd 라는 동작이 동작하고 있어야 클라이언트에게 웹 서비스를 제공할 수 있다.
부모(Parent) 프로세스
-부모 프로세스는 다른 프로세스를 만들며, init을 제외한 모든 프로세스는 부모 프로세스를 가지고 있다.
자식(Child) 프로세스
-부모 프로세스에 의해서 만들어지는 프로세스이다.
-자식 프로세스는 종료시 결과를 부모 프로세스에게 전달하고 종료한다.
고아(Orphan) 프로세스
-자식프로세스보다 먼저 부모 프로세스가 종료되었을 때 해당 자식프로세스는 고아 프로세스가 되어, init 프로세스가 관리한다.
좀비(Zombie) 프로세스
-자식 프로세스의 종료신호를 부모 프로세스가 처리를 하지 못할 경우 자식 프로세스는 좀비 프로세스가 된다.
백 그라운드, 포어 그라운드 작업
포어 그라운드 작업(Foreground Process)
-프롬프트에서 입력하는 대부분의 명려어는 포어 그라운드로 동작
-명령어의 실행 과정이나 결과를 화면에 출력
-포어 그라운드로 실행되는 작업은 프로세스가 종료되길 기다렸다가 종료되면 다시 프롬프트를 출력하여 명령 대기 상태로 전환
백 그라운드 작업(Background Process)
-프로세스의 종료 여부에 관계없이 즉시 명령 대기 상태가 되어 다른 명령어를 실행 할 수 있음
-백그라운드로 실행 시키기 위해서는 &를 붙여 사용
-장시간 동작해야하는 작업에 유용
명령어
ps (process status)
시스템에 동작중인 프로세스 확인 (프로세스의 ls)
# ps [옵션]
옵션 (대표적으로ef, aux)
-e 모든 프로세스에 대한 리스트 출력
-f full format으로 출력
-a 다른 사용자들의 프로세스 정보도 출력한다.
-u 사용자 이름, 시간, 프로세스 상태, 우선순위, 등 다양한 정보 출력
-x 지금 사용되고 있는 모든 프로세스를 출력한다.
UID 프로세스를 실행 시킨 프로세스의 소유자를 의미
PID 실행된 프로세스에 부여된 숫자
PPID Parents PID로 부모 프로세스의 PID를 의미
C 프로세스 스케줄링을 위한 CPU 용량
STIME 프로세스가 시작된 시간
TTY 연결되어 있는 터미널 정보
TIME 프로세스에 의해 사용된 CPU 사용 시간
CMD 프로세스 이름 (혹은 명령어)
커널이 사용하는 프로세스는 [ ]으로 되어있다.
vi /etc/services를 한창에 실행 후 다른창에 vi프로세스를 찾는다.
vi 프로세스의 PPID를 찾아 가보면 -bash 쉘이 실행되었음을 알 수 있다.
kill
프로세스에게 신호를 전달
# kill -[신호or번호] -[PIDor작업번호]
# kill -l 신호의 종류 확인
대표적인 신호
2) SIGINT 프로세스 종료
9) SIGKILL 프로세스 강제종료
15) SIGTERM 프로세스 종료
18) SIGCONT 프로세스 재시작
19) SIGSTOP 프로세스 정지
ps 명령어를 이용해 vi명령어 프로세스의 PID 확인
kill 명령어와 번호를 이용해 프로세스 강제종료
왼쪽 창에 죽었음이라는 메세지와 함께 프롬프트를 확인할 수 있다.
ps 명령어를 이용해 vi명령어 프로세스의 PID 확인
kill 명령어와 신호명을 이용해 프로세스 강제종료
왼쪽 창에 죽었음이라는 메세지와 함께 프롬프트를 확인할 수 있다.
# sleep [숫자값]
해당 [숫자값]초 동안 대기
# jobs
백그라운드에 동작하는 프로세스 확인(작업번호 확인시 사용)
# bg %[작업번호]
포어 그라운드 작업을 백 그라운드로 변경
포어 그라운드 작업으로 sleep 명령어를 통해 9999초 동안 대기
대기중이므로 작업을 중단할 수 있는 단축키 ctrl + z를 이용
jobs 명령어를 통해 프로세스 확인
중단된 프로세스를 bg 명령어를 통해 백 그라운드작업으로 변경하며 재개
kill명령어를 통해 작업번호를 이용하여 프로세스 중단 후 확인
kill명령어를 통해 작업번호를 이용하여 프로세스 재개 후 확인
# fg %[작업번호]
백 그라운드 작업을 포어 그라운드로 변경
sleep명령어 뒤에 &를 붙여 백 그라운드로 작업 후 확인
fg 명령어를 통해 포어 그라운드 작업으로 변경
# pstree [PID]
프로세스의 부모-자식 관계를 볼 수 있는 명령어
pstree명령어를 통해 전체적인 부모-자식 그래프 출력
PID를 지정해 부모-자식 관계 확인
# top
시스템의 모든 프로세스 모니터링 시 사용
crontab
예약 작업 관리. 주기적으로 반복되는 작업을 예약하여 사용하는 명령어
-crontab 파일은 사용자별로 생성된다.
-한 행에 하나의 작업을 설정한다.
-일요일은 0, 월요일은 1, 화요일은 2, ... , 토요일은 6
-해당 항목의 값이 *이면 모든 값을 의미한다.
-두 숫자 사이에 포함도니 범위는 - 지정한다.
ex) 1-5 = 1,2,3,4,5
-숫자를 나열할 때는 ,를 쓴다.
ex) 1,4,7,16
-/로 시간 간격을 지정할 수 있다.
ex) */2 = 2초마다
# crontab [옵션] [계정명]
옵션
-e 지정한 계정명의 crontab 편집 (지정하지 않을 시 현재 계정)
-l crontab내용 확인
-r crontab 삭제
crontab 파일 설정 양식
[분] [시] [일] [월] [요일] [반복할 작업]
0~59 0~23 1~31 1~12 0~6 명령어
ex) 30 1,2 4 * * 작업
매월, 모든요일, 4일 1시 30분과 2시 30분에 작업을 실행한다.
ex) */7 10-15 * * * 작업
매월, 매일, 모든요일 10시부터 15시까지 7분마다 작업을 실행한다.
service crond status로 crond라는 데몬이 동작되어 있는지 확인한다.
실행되어 있어야 crontab 명령어를 사용할 수 있다.
service crond stop, start로 crond데몬을 정지, 실행할 수 있다.
e옵션을 사용해서 새로운 crontab 작성 후 l옵션으로 확인
date명령어로 시간 설정 후 ll로 확인
r옵션으로 crontab 제거 후 확인
*vi /etc/cron.deny crontab명령어 사용을 차단할 계정의 목록 작성
*vi /etc/cron.allow crontab명령어 사용을 허용할 계정의 목록 작성
'Linux' 카테고리의 다른 글
RAID (개념, Linear RAID, RAID0, RAID1) (0) | 2017.06.14 |
---|---|
파일시스템&파티션 (0) | 2017.06.13 |
디렉토리 및 파일의 권한과 허가권&소유권 2 (0) | 2017.06.09 |
디렉토리 및 파일의 권한과 허가권&소유권 1 (0) | 2017.06.07 |
사용자 계정 관리2(명령어) (0) | 2017.06.06 |