리눅스 프로세스 관리
프로세스
- 시스템상에서 어떠한 명령을 실행함으로써 사용자와 운영체제, 운영체제와 시스템 감의 대화가 가능하도록 해주는 실행 객체.
- init 프로세스 : pid가 1번인 프로세스(즉, 최초의 프로세스 생성)
- fork : 자신의 프로세스와 똑같은 프로세스를 복사하는 형식으로 실행하게 되며, 이때 생성된 프로세스는 자신만의 PID를 가지고 독자적인 프로세스가 된다. (fork를 통해 만들어진 프로세스는 ‘자식프로세스’가 됨)
프로세스 작업 - 프로그램 실행
- 파일이 실행되면 하드디스크의 해당 inode값에 의해 addressing된다.
- 해당 프로그램이 실행되면 process id가 생성(pid).
- 포그라운드 프로세스(foreground process)와 백그라운드 프로세스(background process)로 분류됨.
- 포그라운드 프로세스 : 사용자가 어떠한 프로그램명령어를 내렸을 때 명령어를 입력한 다음에 그 프로그램 명령어가 모두 종료가 될 때까지 아무것도 할 수 없는 것. (프롬프트가 뜰때까지 아무것도 못함)
- 백그라운드 프로세스 : 사용자 입력에 관계없이 실행되는 프로세스로 기존의 포그라운드 명령뒤에 ‘&’를 붙인다.
프로세스 전환방법
- background -> foreground 전환 : fg명령 이용.(원하는 작업을 불러올 경우 fg %번호)
- foreground -> background 전환 : ctrl + z 눌러서 작업 일시중단 시킨 뒤 bg명령 실행.
- 현재 작업중인 프로세스 확인 명령 - jobs 명령.
- jobs 명령* "+" 기호 표시된 작업 - 먼저 실행되는 작업.
* “-” 기호 표시된 작업 - 그 다음에 실행되는 작업.
PS
- 현재 실해되고 있는 프로세스의 상태를 확인하는 명령.
- 형식 : ps [옵션]
* a : 터미널과 연결된 프로세스 출력.
* e : 해당 프로세스와 연관된 환경변수 정보를 함께 출력.
* u : 각 프로세스의 사용자 이름과 시작 시간을 보여줌.
* f : 프로세스간의 관계를 트리형태로 보여줌.
* x : 데몬처럼 터미널에 종속되지 않는 프로세스 출력.(ax : 모든 프로세스 출력)
* -l : 자세한 형태의 정보를 출력.
* -C 프로세스명 : 지정한 프로세스만 보여줌.
* -a : 터미널에 종속되지 않은 모든 프로세스를 보여줌.
* -A : 모든 프로세스를 보여줌.
* -e : -A옵션과 동일.
* -f : 유닉스 운영체제와 같은 형태로 결과 출력.
* -j : 작업 중심 형태로 출력.
* -v : 가상 메모리 중심 형태로 출력.
* -m : 메모리 정보를 출력.
시그널(signal)
- 특정 프로세스가 다른 프로세스에게 메시지 보낼 때 시그널 이용.
- 리눅스 운영체제는 미리 약속되어 있는 수십가지의 signal을 제공.
- 자주 사용하는 시그널과 의미
= 9 : SIGKILL : 프로세스를 강제로 종료시키라는 의미.
= 19 : SIGTOP : 터미널에서 프로세스를 정지하라고 입력된 시그널.
= 20 : SIGSTP : 실행 정지 후 다시 실행을 계속하기 위해 대시시키는 시그널. (CTRL + Z 입력시 보내지는 시그널)
= 18 : SIGCOUNT : STOP시그널에 의해 정지된 프로세스를 다시 실행하도록 함.
= 2 : SIGINT : 프로세스를 인터럽트 시키라는 의미. (CTRL+C입력시 보내지는 시그널)
= 3 : SIGQUIT : 키보드로부터 입력되는 실행중지 시그널. (CTRL + \ 입력시 보내지는 시그널)
= 1 : SIGHUP : 로그아웃처럼 터미널에서 접속 끊겼을 때 보내지는 시그널.
= 11 : SIGSEGV : 프로세스가 다른 메모리 영역을 침범할 때 보내지는 시그널.
데몬(demon)
- 리눅스 서버에서 네트워크 서비스를 처리하는 프로그램.
- 시스템의 기능을 제공하거나 백그라운드에서 실행하는 프로그램.
- 데몬의 동작 방식
= 스탠드얼론(stand alone)방식 : 네트워크 서비스를 하면 클라이언트의 요청이 언제 들어올지 모르는 상태에서 항상 서비스가 가능. (메모리에 항상 상주, 주로 웹 서버에서 사용)
= 슈퍼데몬(xinetd) 방식 : 자기 자신이 직접 서비스를 하지 않고 클라이언트의 요청을 구별하여 네트워크 서비스 데몬을 실행해 주는 역할을 담당. (프로세스 실행 후 접속 종료후에는 자동으로 프로세스 종료)
top
- 프로세스의 CPU, MEMORY 사용량등 시스템의 전반적인 상황을 실시간으로 모니터링.
- 형식 : top [옵션]
* -d 시간 : 화면 갱신 시간을 지정.
* -q : 화면 계속 갱신.
* -c : 명령행 전체를 보여줌.
- top의 세부 실행 명령.
kill
- 프로세스에 특정 신호를 보내는 명령.
- 지정한 프로세스를 종료, 특정 프로세스를 비정상적으로 종료시킬 필요가 있을 때 사용.
- 형식 : kill [옵션] PID 또는 %작업번호.
* -s : 특별히 보낼 시그널의 이름이나 번호를 지정.
* -l : 시그널의 목록 출력.
* 시그널번호 : 1(hup, 프로세스 활성화) / 9(프로세스 강제 종료).
killall
- 같은 데몬의 여러 프로세스를 동시에 종료시킬 때 사용하는 명령.
- 형식 : killall [옵션] 프로세스명.
* -w : 시그널 받은 프로세스 종료때까지 기다림.
* -v : 시그널이 전송된 결과를 출력.
ex) killall httpd : 아파치 웹 서버 데몬 httpd 모두 종료.
killall -HUP httpd : 아파치 웹 서버 데몬 httpd 재실행.
nice
- 프로세스 NI값을 변경하여 프로세스 우선순위를 변경하는 명령.
- 일반사용자뿐만 아니라 슈퍼 사용자까지 NI값을 감소시켜 우선순위를 높일 수 있다.
- NI값이 작을수록 우선순위가 높다.
- NI기본값 =0, -20~19까지 범위.
- 형식 : nice [옵션] 프로세스명.
* -p : 프로세스 id(PID)를 지정.
* -u : 사용자 이름 지정.
* -g : 프로세스의 그룹 id.
renice
- 프로세스id, 사용자, 프로세스 그룹id를 이용하여 프로세스 우선순위 변경.
- 형식 : renice [옵션] NI값 PID.
* -p : 프로세스id(PID)를 지정.
* -u : 사용자 이름 지정.
* -g : 프로세스 그룹 id.
nohup
- 로그아웃이나 작업중인 터미널 창이 닫혀도 실행중인 프로세스를 백그라운드 프로세스에서 작업할 수 있도록 하는 명령.
pstree(centos 실행 안됨)
- 프로세스의 상태를 트리형태로 출력.
- 형식 : pstree [옵션]
* -a : 각 프로세스의 명령행 인자까지 보여줌.
* -h : 현재 프로세스와 부모 프로세스를 강조하여 진하게 표시.
* -n : pid 값으로 정렬하여 보여줌.
* -p : pid 값을 목록에서 같이 보여줌.
at
- 알람처럼 특정 시간에 명령을 실행할 수 있게 한다. (1회만 사용 가능)
crontab
- at과 달리 특정 시간대에 주기적으로 명령을 실행할 수 있음.
- 형식 : crontab [옵션] 파일명
- crontab 설정 예)
= **09**rm/home/oneuser/data -> 매달 9일에 oneuser계정의 data 항목의 파일을 제거실행.
= 2013**1-3 /etc/profile.d/less.sh -> 월요일부터 수요일까지 오후 1시20분에 less.sh파일 실행.
* -l : crontab의 설정 목록을 출력.
* -e : vi편집기를 이용하며 crontab의 내용을 작성하거나 수정.
* -r : crontab의 내용을 삭제.
* -u : root 사용자가 특정 사용자의crontab 파일을 다룰 때 사용.
'IT > Network' 카테고리의 다른 글
[ Linux 마스터 2급 ] 리눅스 rpm 패키지와 패키지 관리 툴 (0) | 2019.07.22 |
---|---|
[ Linux 마스터 2급 ] 리눅스 편집기 (0) | 2019.07.21 |
[ Linux 마스터 2급 ] Shell( 쉘 ) (0) | 2019.07.19 |
[ Linux 마스터 2급 ] 리눅스 권한부여, 설정 명령어 (0) | 2019.07.18 |
[ Linux 마스터 2급 ] 리눅스 운영과 파일 시스템 (0) | 2019.07.17 |