리눅스 데몬 및 프로세스 관리

데몬 및 프로세스 관리


1) 프로세스(Process)
리눅스 커널상에서 동작하고 있는 모든 프로그램을 말한다.
프로세스 마다 고유의 PID(Process ID)를 갖는다. 1번 PID는 init이다.



 



2) 프로세스 작동 상황 알아보기
# ps
# ps -ef
# ps axj | more



* UID, PID, PPID, PGID, SID 컬럼
프로세스를 실행한 시스템 사용자를 보여 준다.
ps aux 명령이나 ps -ef 명령을 사용하면 해당 프로세스를 실행시킨 사용자를 확인할 수 있다.
PPID : 부모 프로세스의 PID



* 접속 터미널 TTY 컬럼
프로세스를 제어하는 터미널 모드
로컬로그인시 tty+가상터미널수
원격로그인이나 엑스 터미널 로그인시 pts/번호 ( ? 표시는 tty와는 무관하게 작동하는 것)



*프로세스 상태STAT 컬럼
3개의 필드로 구성되어 프로세스 상태를 보여준다.
>> 첫 번째 필드
D                  io와 같이 중지(interrupt)시킬 수 없는 잠자고 있는 (휴지) 프로세스 상태
R                  현제 동작중이거나 동작할 수 있는 상태
S                  잠자고 있지만, 중지시킬수 있는 상태
T                  작업 제어 시그널로 정지되었거나 추적중에 있는 프로세스 상태
X                  완전히 죽어 있는 프로세tm
Z                  죽어 있는 좀비 프로세스



>> 두 번째 필드
<                  프로세스의 우선 순위가 높은 상태
N                  프로세스의 우선 순위가 낮은 상태
L                  실시간이나 기존 IO를 위해 메모리 안에 잠겨진 페이지를 가진 상태
s                  세션 리터(주도 프로세스)
I                   멀티 쓰레드
+                  포어그라운드 상태로 동작하는 프로세스



좀비 프로세스 : Z로 되어 있는 프로세스는 작동이 잘못 되어 죽어 있는 프로세스이다. 제거 필요.



* STIME, TIME 컬럼
프로세스 실행시간, 프로세스가 총 소비한 시간



* CMD 컬럼
프로세스의 명령(Command)을 의미



 


3) 프로세스 죽이기
>> kill 명령이 가지고 있는 시그널 종류 살펴 보기
# kill -l



>> 프로세스 종료 시키기
# kill [-시그런 번호 또는 시그널] PID



>> STAT가 D로 표시된 프로세스 종료 시키기
# kill -SIGKILL pid 또는 # kill -9 pid



>> 프로세스를 멈추지 않고 재 실행하기
# kill -SIGHUP pid 또는 kill -1 pid



>> 데몬의 PID값 확인하기
# ps ax | grep 프로세스명



 



4) 백그라운드(Background) 작업과 포어그라운드(Forefround) 작업
>> MC프로세스 백그라운드에서 실행 하기
# mc &



>> 백그라운드에서 실행되고 있는지 확이낳기
# jobs



>> 백그라운드에서 포그라운드로 전환
# fg % 작업번호



>> 포그라운드에서 백그라운드로 작업 전환
일시 중단(Ctrl + Z) 후
# bg % 작업번호



주의1: Ctrl +Z명령은 프로그램이 일시 중지 된 상태이므로 바로 Shutdown 명령을 내려서는 안된다.
주의2: 백그라운드에서 실행중인 프로세스는 kill명령을 사용하여 종료 시켜야 한다.(Ctrl + C는 안됨)
# kill %1



 



5) 프로세스 상태 살펴보기
-> pstree                   (프로세스 상태를 트리 구조로 보여 주는 명령)
# pstree | grep



형식 : pstree [-옵션] [pid | usr]
          -a           명령 라인 인수를 보여 줌
          -c           동일한 하위 트리를 축약하지 않음
          -h           현재 작동중인 자식 프로세스와 부모 프로세스를 하이라이트 시킴
          -n           PID 순서로 프로세스를 정렬함
          -p           PID를 함께 트리 구조에 보여 줌



 


-> top      (CPU를 많이 점유하는 프로세스들을 실시간으로 점검, 상당히 유용하다)
형식 : top [-] [d day] [p pid] [q] [c] [C] [S] [s] [i] [b]0
          d           스크린을 생신할 때의 지연 시간
          p           주어진 pid에 대한 프로세스만 모니터링
          q           지연 시간 없이 스크린 갱신
          s           보안 모드로 top 실행
          i            idle및 zombie 프로세스는 무시함
          c           명령 라인 모두 보여 줌



 


>> 프로세스에 대한 각종 정보에 대한 필드 값
          PRI           해당 프로세스의 우선권을 말한다(priority)
          NI             해당 프로세스의 nice값을 말한다.
          SHARE      공유 메모리 양



-> nohup (부모 프로세스가 죽더라도 자식 프로세스가 죽지 않도록 하는 명령)
nohup 명령 &



-> 프로세스 실행 우선 순위 예약
nice -n 명령
# top &
# nice -15 mc &
# ps -l



 


6) 데몬 관리
-> ntsysv        (부트스크립트를 관리해 주는 콘솔상의 크래픽 도구)
ntsysv에서 체크할 수 있는 파일들 /etc/rc.d/init.d 디렉토리에 스크립트 형태로 존재하고 있어야 한다.
다음 두줄의 형식을 갖추어야 ntsysv의 체크 목록에 추가될 수 있다.
# chkconfig: 345 91 35
# description : 스크립트 설명



-> chkconfig
chkconfig –list [name]
chkconfig –add name
chkconfig –del name
chkconfig [–level levels] name <onlofflreset>
chkconfig [–level levels] name



# chkconfig –list | more
# chkconfig –list | grep xfs



>> 스크립트가 해당 레벨에서 실행 되지 않도록 하려면
# chkconfig –level 2 xfs off



-> system-config-services
X-window 상에서 Alt+F2키를 눌러 실행창에 system-config-services 명령을 입력하여 실행시킨다.



 

5. 데몬 활용
1) at 데몬 (작업 스케줄 예약 처리 기능)
# at -h
>> 옵션
          -q queue         단일 문자로 [a-z] 또는 [A-Z]까지 큐를 지정합니다. a큐는 at의 디폴트 큐를 나타냅
                                니다.대문자일때 낮은 우선 순위를 가집니다.
          -m                  작업이 완료되어 사용자에게 메일로 알려 줍니다.
          -f file               표준 입력보다는 오히려 파일로부터 작업을 읽어 들입니다.
          -l                    atq 명령과 같으며, 사용자의 처리될 작업 리스트를 보여 줍니다. 만일 사용자가 수퍼
                                유저일 경우 모든 작업 리스트가 출력됩니다.
          -c job              커맨드 라인상에 있는 작업을 표준 입력으로 저장 합니다.
          TIME              시간 지정은 HHMM 또는 HH:MM형식으로 am, pm으로 구분하여 표시할 수 있습니다.
                                날짜의 경우는 월 일 형식으로 표시할 수있고, MMDDYY, MM/DD/YY, MM.DD.YY 형
                                식으로 표실 할 수 있습니다.



# /etc/init.d/atd restart
at 시간 요일
at> 스케줄 명령
at> Ctrl+D키를 눌러 스케줄 예약



>> 예제
(오후 10시 작업(재부팅) 예약)
# at 10:00pm today
at> shutdown -r now
at> <EOT>
job 4 at 2008-01-28 22:00



>> at 사용자 제한
# cat > /etc/at.allow
redfox
bluefox



>> at 작업 확인
# atq



>> at 큐 작업 제거
# atrm 4 5
# atq



 

2) cron 데몬
>> cron 데몬 띄우기
# /etc/init.d/cron restart



>> cron 데몬 제어 파일 crontab
# crontab –help
# crontab -l             (-소문자 엘)
# crontab -e           (vi 에디터가 실행 됨)



형식 : [분] [시] [일] [월] [요일] [작업내용]



30 10 * * * /home/redfox/back.sh



로 지정후 저장하면 /home/dumca 디렉토리에 있는 back.sh를 실행하라는 작업 내용.
/var/spool/cron 디렉토리에 사용자 파일명으로 저장 됨. crontab -l 명령으로 cron의 작업 리스트를 확
인 가능.



crontab의 작업 명령을 취소하거나 제거 하려면 -r 옵션을 사용
# crontab -r
# frontab -l



서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.