■ 프로세스의 개념
프로세스란? 시스템에서 실행 중인 프로그램.
리눅스는 기본적으로 다중 프로세스 시스템
- 프로세스의 부모-자식 관계
리눅스의 모든 프로세스는 부모-자식 관계 (ex. 셸에서 vi 실행 → 부모 : 셸, 자식 : vi)
자식 프로세스는 할 일이 끝나면 부모에게 결과를 돌려주고 종료한다.
- 프로세스의 번호
PID란? 각 프로세스의 고유 번호. 1번부터 시작해서 프로세스 실행마다 증가된다.
- 프로세스의 종류
1. 데몬 프로세스 : 특정 서비스 제공용. 평소에 대기하다가 요청 시 동작. 커널에 의해 실행된다.
2. 고아 프로세스 : 부모 프로세스가 먼저 종료된 경우. 1번 프로세스가 부모가 되어 종료를 돕는다.
3. 좀비 프로세스 : 종료되었는데도 프로세스 테이블 목록에 있는 경우. 부모가 종료 정보를 제대로 처리하지 않아 발생
3. 좀비 프로세스 : 부모를 종료시켜 고아 프로세스로 만들어 처리한다.
■ 프로세스 관리 명령
- 프로세스 목록 확인
ps [옵션] : 현재 실행 중인 프로세스 정보 출력
-e : 시스템에서 실행 중인 모든 정보 출력
-f : 자세한 정보 출력
-u [userid] : 특정 사용자에 대한 프로세스 정보 출력
-p [PID] : pid로 지정한 특정 프로세스의 정보를 출력
a : 터미널에서 실행시킨 프로세스의 정보를 출력
u : 프로세스 소유자 이름, CPU 사용량, 메모리 사용량 등 상세 정보를 출력
x : 시스템에서 실행 중인 모든 프로세스의 정보를 출력
--pid PID [목록] : 목록으로 지정한 특정 PID 정보를 출력
- 특정 프로세스 정보 검색
pgrep [옵션] [패턴] : 지정한 패턴과 일치하는 프로세스 정보 출력
-x : 정확히 일치하는 정보 출력
-n : 패턴을 포함하는 가장 최근 정보 출력
-u [사용자 이름] : 특정 사용자에 대한 모든 정보 출력
-l : PID와 프로세스 이름 출력
-t term : 특정 단말기와 관련 프로세스 정보 출력
- 프로세스 종료
강제로 프로세스를 종료하면 PID를 알아야 한다. (ps -ef 나 ps aux 명령 사용)
시그널이란? 프로세스에서 무언가 발생했음을 알리는 메시지. 미리 정의된 상수로 나타낸다.
(kill -l 명령으로 알 수 있다!)
kill [-시그널] [PID] : 지정한 시그널을 프로세스에게 보낸다.
2 : 인터럽트 시그널 (ctrl + c)
9 : 강제 종료
15 : 프로세스와 관련된 파일을 정리하고 종료. 종료되지 않는 프로세스가 있을 수 있음.
pkill [옵션] [패턴] : PID가 아닌 프로세스의 명령 이름 (CMD)로 종료
killall [명령 이름] : 해당 이름의 프로세스를 모두 종료
- 프로세스 관리 도구
top : 현재 실행 중인 프로세스의 정보를 주기적으로 출력
시스템 정보에서도 프로세스 확인 가능!
■ 포그라운드·백그라운드 프로세스와 작업 제어
- 포그라운드 작업과 백그라운드 작업
포그라운드 작업 : 일반적으로 사용자가 명령을 실행하는 방식 (인터프리터형)
백그라운드 작업 : 명령을 처리하는 동안에도 프롬프트 사용이 가능한 방식. & 기호로 사용
작업 결과가 뒤섞일 수 있어 출력과 오류를 리다이렉션 해서 쓴다
- 작업 제어
제어는 작업 전환, 작업 일시 중지, 작업 종료를 말하고,
이 중에 작업 전환은 '포그라운드 ↔ 백그라운드'의 전환을 의미한다.
jobs [%작업 번호] : 백그라운드 작업을 모두 보인다. (특정 작업 번호 지정 가능)
출력 시 작업 순서가 나오는데 '+', '-', ' ' 순서로 최근 작업이다.
ctrl+z / stop [$작업 번호] : 포그라운 작업 중지
bg [$작업 번호] : 해당 작업을 백그라운드로 전환
fg [$작업 번호] : 해당 작업을 포그라운드로 전환
nohup [명령]& : 로그아웃 이후에도 백그라운드 작업 계속 실행
■ 작업 예약
- 정해진 시간에 한 번 실행
at [옵션] [시간] : 예약한 명령을 정해진 시간에 실행 (프롬프트가 at> 으로 바뀐다)
-l : 현재 실행 대기 중인 명령의 전체 목록 출력 (= atq 명령)
-r [작업 번호] : 대기 중인 명령 중 해당 작업 번호를 삭제 (= atrm 명령)
-m : 출력이 없어도 작업 완료 시 사용자에게 매일로 알려준다.
-f [파일] : 표준 입력 대신 실행할 명령을 파일로 지정
atq : 사용자의 등록된 작업 목록 출력
atrm [작업 번호] : 지정된 작업 삭제
관리자들은 at 명령 사용을 컨트롤할 수 있는데, /etc/at.deny, /etc/at.allow 파일로 관리
at.deny는 최초에는 빈 파일로, 사용 제한된 유저 목록을 저장하고,
at.allow는 만들어야 하며 사용 가능한 유저 목록을 저장한다.
allow 파일에 이름이 있다면 deny 파일에 이름이 있어도 사용 가능하다.
두 파일 모두 없다면 root만 명령 사용 가능.
- 정해진 시간에 반복 실행
crontab [-u 사용자ID] [옵션] [파일명] : 사용자의 crontab 파일을 관리
-e : 사용자의 crontab 파일을 편집
-l : crontab 파일 목록 출력
-r : crontab 파일 삭제
작업 명령 형식 - 분(0~59) 시(0~23) 일(1~31) 월(1~12) 요일(0~6) 작업내용
ex. 30 23 1 * * /usr/bin/ls -l ~hejow > ~hejow/cron.out
at 명령과 마찬가지로 /etc/cron.allow, /etc/cron.deny 파일로 관리하고, 이하 모두 동일하다.
'개인 공부 > Linux (CentOS 리눅스)' 카테고리의 다른 글
CentOS 리눅스 : 파일 시스템과 디스크 관리 (7장) (2) | 2022.06.16 |
---|---|
CentOS 리눅스 : 연습문제 해답 (6장) (0) | 2022.05.04 |
CentOS 리눅스 : 연습문제 해답 (5장) (2) | 2022.05.04 |
CentOS 리눅스 : 파일 접근 권한 관리 (5장) (0) | 2022.05.04 |
CentOS 리눅스 : 연습문제 해답 (4장) (2) | 2022.05.03 |
댓글