IT/Network

[ Linux 마스터 2급 ] 리눅스 프로세스 관리

pandada 2019. 7. 20. 10:05
반응형

 

 

리눅스 프로세스 관리

 

 

프로세스

  - 시스템상에서 어떠한 명령을 실행함으로써 사용자와 운영체제, 운영체제와 시스템 감의 대화가 가능하도록 해주는 실행 객체.

null

  - init 프로세스 : pid 1번인 프로세스(, 최초의 프로세스 생성)

  - fork : 자신의 프로세스와 똑같은 프로세스를 복사하는 형식으로 실행하게 되며, 이때 생성된 프로세스는 자신만의 PID를 가지고 독자적인 프로세스가 된다. (fork를 통해 만들어진 프로세스는 자식프로세스가 됨)

null

 

프로세스 작업 - 프로그램 실행

 

null

 

  - 파일이 실행되면 하드디스크의 해당 inode값에 의해 addressing된다.

  - 해당 프로그램이 실행되면 process id가 생성(pid).

  - 포그라운드 프로세스(foreground process)와 백그라운드 프로세스(background process)로 분류됨.

  - 포그라운드 프로세스 : 사용자가 어떠한 프로그램명령어를 내렸을 때 명령어를 입력한 다음에 그 프로그램 명령어가 모두 종료가 될 때까지 아무것도 할 수 없는 것. (프롬프트가 뜰때까지 아무것도 못함)

  - 백그라운드 프로세스 : 사용자 입력에 관계없이 실행되는 프로세스로 기존의 포그라운드 명령뒤에 ‘&’를 붙인다.

null

 

 

 

프로세스 전환방법

  - background -> foreground 전환 : fg명령 이용.(원하는 작업을 불러올 경우 fg %번호)

  - foreground -> background 전환 : ctrl + z 눌러서 작업 일시중단 시킨 뒤 bg명령 실행.

  - 현재 작업중인 프로세스 확인 명령 - jobs 명령.

  - jobs 명령* "+" 기호 표시된 작업 - 먼저 실행되는 작업.

    * “-” 기호 표시된 작업 - 그 다음에 실행되는 작업.

 

 

PS

  - 현재 실해되고 있는 프로세스의 상태를 확인하는 명령.

  - 형식 : ps [옵션]

    * a : 터미널과 연결된 프로세스 출력.

    * e : 해당 프로세스와 연관된 환경변수 정보를 함께 출력.

    * u : 각 프로세스의 사용자 이름과 시작 시간을 보여줌.

    * f : 프로세스간의 관계를 트리형태로 보여줌.

    * x : 데몬처럼 터미널에 종속되지 않는 프로세스 출력.(ax : 모든 프로세스 출력)

null

    * -l : 자세한 형태의 정보를 출력.

    * -C 프로세스명 : 지정한 프로세스만 보여줌.

    * -a : 터미널에 종속되지 않은 모든 프로세스를 보여줌.

    * -A : 모든 프로세스를 보여줌.

    * -e : -A옵션과 동일.

    * -f : 유닉스 운영체제와 같은 형태로 결과 출력.

null

    * -j : 작업 중심 형태로 출력.

    * -v : 가상 메모리 중심 형태로 출력.

    * -m : 메모리 정보를 출력.

 

 

시그널(signal)

  - 특정 프로세스가 다른 프로세스에게 메시지 보낼 때 시그널 이용.

  - 리눅스 운영체제는 미리 약속되어 있는 수십가지의 signal을 제공.

null

  - 자주 사용하는 시그널과 의미

    = 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 [옵션]

null

    * -d 시간 : 화면 갱신 시간을 지정.

    * -q : 화면 계속 갱신.

    * -c : 명령행 전체를 보여줌.

 - top의 세부 실행 명령.

null

 

 

 

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.

null

 

 

renice

  - 프로세스id, 사용자, 프로세스 그룹id를 이용하여 프로세스 우선순위 변경.

  - 형식 : renice [옵션] NI PID.

    * -p : 프로세스id(PID)를 지정.

    * -u : 사용자 이름 지정.

null

    * -g : 프로세스 그룹 id.

 

 

nohup

  - 로그아웃이나 작업중인 터미널 창이 닫혀도 실행중인 프로세스를 백그라운드 프로세스에서 작업할 수 있도록 하는 명령.

 

 

pstree(centos 실행 안됨)

  - 프로세스의 상태를 트리형태로 출력.

  - 형식 : pstree [옵션]

    * -a : 각 프로세스의 명령행 인자까지 보여줌.

    * -h : 현재 프로세스와 부모 프로세스를 강조하여 진하게 표시.

    * -n : pid 값으로 정렬하여 보여줌.

    * -p : pid 값을 목록에서 같이 보여줌.

 

at

  - 알람처럼 특정 시간에 명령을 실행할 수 있게 한다. (1회만 사용 가능)

 

 

crontab

  - at과 달리 특정 시간대에 주기적으로 명령을 실행할 수 있음.

null

  - 형식 : crontab [옵션] 파일명

  - crontab 설정 예)

    = **09**rm/home/oneuser/data -> 매달 9일에 oneuser계정의 data 항목의 파일을 제거실행.

    = 2013**1-3 /etc/profile.d/less.sh -> 월요일부터 수요일까지 오후 120분에 less.sh파일 실행.

    * -l : crontab의 설정 목록을 출력.

    * -e : vi편집기를 이용하며 crontab의 내용을 작성하거나 수정.

    * -r : crontab의 내용을 삭제.

    * -u : root 사용자가 특정 사용자의crontab 파일을 다룰 때 사용.

 

 

 

반응형