솔라리스에서 동작하는 모든 프로그램은 프로세스를 생성한다.
시스템은 데몬(Daemon)이라는 프로세스도 시작한다.(데몬은 주기적인 서비스 요청을 처리하기 위해 시스템에서 계속 동작하고 있는 프로그램)
모든 프로세스는 유일한 PID값을 가진다.
커널은 PID를 이용하여 프로세스를 관리하고 추적한다.
사용자 또한 프로세스를 구별하기 위해 PID를 사용한다.

PPID(Parent Process ID) : 부모 프로세스 ID
자식 프로세스: 부모 프로세스에 의해 생성된 프로세스
좀비 프로세스 : 부모 프로세스가 없는 자식 프로세스


● ps(process status)
시스템에서 현재 동작하고 있는 프로세스 목록 표시

ps {options}
option이 없는 경우 현재 터미널에서 동작하고 있는 프로세스 목록 표시
-e : 현 시스템에서 동작하고 있는 모든 프로세스 목록
-f : PID, TTY, TIME, CMD 외에 UID(owner of process), PPID(parent process ID), STIME(process start time) 등을 표시

특정 명령어가 실행하는 프로세스를 찾을 경우 grep 명령어와 pipe 연결을 하면 된다.
$ ps -ef | more
$ ps -ef | grep httpd
첫번째 명령은 시스템에서 현재 동작하고 있는 프로세스의 목록을 페이지 단위로 표시
두번째 명령은 httpd라는 아파치 데몬이 있는지 없는지 프로세스 목록에서 찾아서 라인 표시



● sdtprocess
GUI 형태로 표시하기 때문에 반드시 그래픽 환경에서 실행해야 함
30초마다 프로세스 정보 갱신

● prstat
sdtprocess의 CUI 형태
5초마다 프로세스 정보 갱신

솔라리스에는 기본적으로 리눅스의 top같은 것이 안깔려있기 때문에 솔라리스용 top을 설치해야 함.



시그널 : 시스템에서 프로세스를 컨트롤하기 위해 프로세스에게 전달되는 signal number를 가지고 있는 메시지
시그널은 발생된 이벤트를 지시하기 위해 프로세스에게 보내지며 프로세스는 반드시 응답해야 한다.
프로세스를 종료하기 위해 ctrl+c를 입력하면 프로세스에게 interrupt signal을 보내고 프로세스는 exit로 응답.
솔라리스에서 사용 가능한 signal number는 40여가지 이다.

○ Signal number and names
 Signal number  Signal  Signal name  Response  Action
 1  SIGHUP  HUP  Exit  종료되었다가 다시 실행(재시작)
 2  SIGINT  INT  Exit  ctrl+c와 동일함.
즉 강제종료
 9  SIGKILL  KILL  Exit 커널이 직접 강제종료 
 15  SIGTERM  TERM  Exit  프로세스 자신이 종료.
즉 정상종료



● kill
하나 또는 그 이상의 실행중인 프로세스에게 signal을 전송
반드시 PID를 mapping해야 함
default signal은 -15 or -TERM

kill [-signal] PID ...


● pkill
하나 또는 그 이상의 실행중인 프로세스에게 signal을 전송
kill과는 달리 반드시 process name으로 mapping
default signal은 -15 or -TERM

pkill [-signal] process_name



JOB : 터미널에 의해 제어되는 프로세스
모든 job은 쉘에 의해 job ID가 할당된다.
쉘은 동시에 여러 개의 job을 실행할 수 있다.
job은 보통 foreground에서 작동한다.
여러 개의 job을 실행하기 위해 background에서 실행할 수도 있다.

○ Job control commands
 Command  Value
 jobs  현재 실행중인 job 표시
 bg %n  job id가 'n'인 작업을 background작업으로 변경
 fg %n  job id가 'n'인 작업을 foreground작업으로 변경
 ^z / ^c  foreground job 중지(일시중지) / 취소
 stop %n  job ID가 'n'인 background job 중지

Posted by 겨울섬
,