'Open Source/Unix'에 해당되는 글 19건

  1. 2009.06.20 SMF Servic 등록 XML
  2. 2009.02.17 inittab 설정
  3. 2009.02.12 현재 system에 올라와 있는 Task확인

SMF Servic 등록 XML

|


Service Name
/var/svc/manifast/
이후에 있는 경로의 이름(file명)정도로 주면 되겠다.

dependency
의존을 의미하며 어떠한 Service가 실행 되었을 경우 실행한다는 정도의 의미
즉 어떤 Service에 의존 하고 있는가를 의미한다.
보통 Database나 통신관련 Service를 여기에 걸어 두면 되겠다.
(dependency 설정시 single_instance가 아닌 mualti_instance 설정)
dependency name 'multi-user-server' -> RunLevel 3를 의미한다.
single-user 등 RulLevel2나 1도 설정 가능하다

exec_method
실행되는 script를 여기서 설정해 준다.
SMF의 시작, 종료, 재시작등을 여기서 설정해 준다.
name 속성으로 start나 stop등이 있다.
start : shell script에서 정상적으로 시작했다는 속성값이 넘어왔을때 onlie상태가 된다.
stop : 종료시 해당되는 process가 실행중일 경우 service에서 강제적으로 process를 kill한다.
(정상 종료를 위해서 script에서 process를 찾아 kill해주면 된다.)
refresh : process가 정상적으로 실행은 됬으나 오류가 생겼을경우 다시 refresh 한다.
(이때도 process를 kill 한 이후 다시 실행해 주는 script를 사용한다.)

property_group의 propval value 'core,signal'
실행중인 process가 core dump를 한후 죽거나 signal발생으로 죽은경우
다시 재 실행한다.


And

inittab 설정

|
state:runlevel:action:process

이런 형태가 되겠다

state는 4자리
runlevel : 0,1,2,3,4,5,6,a,b,c
              a,b,c는 사용자 정의 목록
action :


 wait  프로세스 실행 후 대기
 once  한번만 실행
(실행 되고 있으면 넘어감)


 respawn
 프로세스 실행 후 죽으면
 다시 실행
 boot  부팅시 실행


 initdefault
 기본 runlevel 지정
(Process 의미 없음)
 bootwait
 부팅시 실행
 프로세스 종료까지 대기


 off  아무것도 하지 않음
 sysinit  시스템 부트시 실행


 powerwait
 전원에 문제가 있을시 실행
 powerfail
 powerwait와 같음 프로세스가 종료되기까지 기다리지 않음


ctrlaltdel
ctrl+alt+del 눌렀을시 실행
powerokwait
/etc/powerstatus 파일에 OK
라는 단어가 있을 때만 실행

inittab Set이후 init 다시 실행

실행 방법

init runlevel 또는 telinit runlevel
이런식으로 다시 돌려 주면 되겠다
만약에 window였다면? ㅎㅎ Reboot~!!!
And

현재 system에 올라와 있는 Task확인

|
process id list는 /proc 안에 전부 들어 있따
system이 알아서 관리!
그럼 이것을 뽀개보쟝!
proc 안에보면 각 디렉토리가 번호로 되어 있다
이 번호가 process id가 되겠다
HP UNIX기준 /proc/pid/psinfo <== 요녀석이 process 정보를 가지고 있는 넘 되겠다

이 녀석에 내용을 어떻게 읽어오는지에 대해서 하루 종일 찾아 해맸다 -_-;
정확히 말하자면 psinfo내용을 담을 구조체를 찾고 있었다고 해야 정확하겠지..
검색 결과 pstat.h안에 내용이 정의 되있으니 뒤져보면 된다는 것!
허나 아무리 찾아봐도 pstat.h는 존재 하지 않음 !
find / -name pstat.h
-_-? 내용 없음!
쳇..

결국 header를 뒤지기로 결심! 비슷한 이름의 header를 뒤지기 시작했다!
우선 proc부터 차근 차근.. 그랬더나 한녀석이 폭! 튀어나 오더군..
바로 procfs.h라는 녀석! 그래서 이녀석을 이용해 codeing을 시작해서 결과를 볼려고 하니
에러가 폭! 떨어져버리는군.. 내가 import했던녀석은 <sys/procfs.h>
그런데 안에는 내용이 정의가 되어 있는데 없다고 나오는 어처구니 없는 현상!

결국 procfs를 시작으로한 검색이 시작됬다!
업무 종료 30분전에 발견한 web문서! sun solaris에 있는..
그래서 다시 안에 있는 내용을 기반으로 작성을 했는데 문제는 <sys/procfs.h>가 아니라
<procfs.h> -_-;; 장난도 아니고 ;; 이걸로 한 2시간 보낸거 생각하면 짜증이 ㅜㅜ

결국은 해냈지만 -_-v 힘들었다..

대략 code를 보자면



대략 이런 형태?
아직 완성된게 아니라서 올리가 민망하군 -_-;;

대략 logic부분을 설명하자면 이렇다
/proc 안에 있는 내용을 읽는다
안에 내용이 이상한게 아니라면 file 이름을 setting 물론 경로 포함!
디렉토리가 수치일 경우 /proc/pid/psinfo내용을 읽어 psinfo구조체에 집어 넣는다
그리고 이름을 뿌려본다!
된다면 반절이상은 성공(난 반성공 -_-v ㅋㅋㅋ)
이제 남은건 특정 txt file을 만들어 거기에 Task이름을 등록 시킨뒤
현재 process 내용에 Task내용이 없다면 해당 경로에 있는 Task 실행!
이렇게 하면 Unix용 whatch dog 제작 완료!
물론 log는 필수! 현재 whatch dog이 실행한 시간!
그리고 Task가 죽었을경우 죽은시간과 Task살린 시간을 기록!
완.벽.해! ㅋㅋㅋ
And
prev | 1 | 2 | 3 | 4 | 5 | 6 | 7 | next