init 프로세스 |
- init 프로세스는 PID가 1번인 프로세스로 모든 프로세스의 조상 역할 - init 프로세스는 부팅 과정에서 커널의 의해 실행 - 각종 서비스를 제공하는 다른 프로세스를 동작 시키는 역할 - 전통적인 init 프로세스는 스크립트를 순차적으로 실행하여 다른 프로세스들을 동작 - 최근 우분투를 비롯해 유닉스나 리눅스 대부분이 스크립트를 순차적으로 실행하는 기존의 방식에서 이벤트 기반으로 동작하는 방식으로 init 을 대체 - 우분투는 자체적으로 개발한 'upstart' 를 init 대신 사용 - 기존의 유닉스 및 리눅스 환경과의 호환을 위해 실행 파일 이름은 init을 유지 - 'man upstart' 명령을 통해서 확인 가능 - init 동작 방식이 바뀜에 따라 전통적으로 init 프로세스와 관련된 설정 파일이었던 '/etc/inittab' 파일은 우분투에서 사라짐. |
init 프로세스와 스크립트 파일 |
- 기존의 'init'과 새로운 'upstart' 는 모두 프로세스를 실행하거나 종료하기 위해 스크립트 파일을 사용 - 우분투에는 'upstart' 사용하는 스크립트와 함께 기존의 방식으로 동작하는 'init' 스크립트도 공존 - 설치하는 서비스에 따라 'upstart'용 스크립트가 설치되기도 하고 기존의 'init'용 스크립트가 설치되기도 함 - '/etc/init' 디렉터리와 '/etc/init.d' 디렉터리에 같은 서비스에 대한 파일이 있다면 '/etc/init' 디렉터리의 스크립트 파일이 우선적으로 적용 |
1) 'upstart'가 사용하는 작업 파일 - 'upstart' 와 관련된 스크립트 파일은 '/etc/init' 디렉터리에 '작업명.conf' 파일로 구성 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ ls /etc/init =================================================================== 2) 기존 init용 스크립트 파일 - 기존의 'init' 가 사용하는 스크립트 파일은 '/etc/init.d' 디렉터리에 있음 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ ls /etc/init.d =================================================================== - '/etc/init' 디렉터리와 '/etc/init.d' 디렉터리에 같은 서비스와 관련된 스크립트들이 있음 - 이와 같이 'upstart' 스크립트가 있는 경우, '/etc/init.d' 디렉터리에 있는 스크립트 중 일부는 '/lib/init/upstart-job' 에 대한 심벌릭 링크 - 'upstart-job' 은 해당 서비스의 upstart 스크립트를 찾아서 실행시킴. - 우분투에서는 아직 모든 서비스가 upstart로 바뀌지 않았기 때문에 일어나는 현상이라고 보면 됨 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ ls -l /etc/init.d | grep upstart =================================================================== |
init 스크립트 시작하고 정지하기(upstart) |
- upstart 스크립트와 기존의 init 스크립트를 시작하고 정지하는 방법은 다름 |
1) upstart 스크립트 시작하고 정지하기 - 'upstart' 에서는 서비스를 제공하는 프로세스를 작업이라고 함. - 'upstart' 스크립트는 다음과 같은 두 가지 방법으로 작업을 시작하거나 정지. * initctl [start | stop | restart | reload | status] 작업명 * [start | stop | restart | reload | status] 작업명 - 두 가지 모두 init 명령을 사용. - 'start', 'stop', 'restart', 'reload', 'status' 명령이 모두 initctl 명령에 대한 심벌릭 링크이기 때문. =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ ls -l /sbin | grep initctl |
initctl - 'upstart' 스크립트를 실행하기 위한 명령 - 서브 명령에 따라 서비스를 시작하거나 정지하는 동작을 수행 |
- 기능 : upstart init 데몬을 제어 - 형식 : initctl [서브 명령] 작업명 - 서브 명령 : * 'start' : 작업을 시작 * 'stop' : 작업을 정지 * 'reload' : 작업에 SIGHUP 시그널을 보냄 * 'restart' ; 작업을 다시 시작 * 'status' : 작업 상태를 출력 * 'list' : 알려진 작업의 목록을 현재 상태와 함께 출력 - 사용 예 : initctl start cups, initctl stop cups, initctl list |
2) 전체 작업 목록 출력 - 'initctl list' 명령을 실행하면 전체 작업 목록과 현재 상태를 출력 - 현재 동작 중인 작업은 PID도 출력 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ initctl list =================================================================== 3) 작업 상태 보기 - 'initctl status' 명령을 사용하면 작업 상태를 확인 - 'status' 명령을 쓰는 것과 동일 - 'start/running' 작업 중 하나를 선택했을시 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ initctl status indicator-session =================================================================== 4) 작업 종료하기 - 동작 중인 작업을 종료 하려면 'initctl stop' 또는 'stop' 명령을 사용 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo initctl stop indicator-session =================================================================== 5) 작업 시작하기 - 'initctl start' 나 그냥 'start' 명령을 사용하여 작업을 시작 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo initctl start tty6 6) 작업 다시 시작하기 - 'initctl restart' 나 'restart' 명령을 사용하면 작업을 다시 시작할 수 있음. =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo initctl start tty6 =================================================================== |
init 스크립트 시작하고 정지하기(기존 init) |
- 기존의 init 스크립트는 두 가지 방법으로 실행 * service 스크립트명 [start | stop | restart | status] * /etc/init.d/스크립트명 [start | stop | restart | status] |
service |
- 기능 : 시스템 V init 스크립트를 실행 - 형식 : service 스크립트 [서브 명령] - 서브 명령 : * 'start' : 스크립트에게 지정한 start 부분을 실행 * 'stop' : 스크립트에 지정한 stop 부분을 실행 * 'reload' : 스크립트에 지정한 reload 부분을 실행 * 'restart' : 스크립트에 지정한 restart 부분을 실행 * 'status' : 스크립트에 지정한 status 부분을 실행 - 사용 예 : service cups start, service cups stop - 'service' 명령에서 'start', 'stop', 'restart' 등 서브 명령은 해당 스크립트에 지정된 값에 따라 적용 - 예를 들어 '/etc/init.d/single' 스크립트를 보면 'start' 와 'stop'만 실행하고 나머지 서브 명령은 오류 처리 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ cat /etc/init.d/single |
1) 서비스 상태 보기 - 'service 스크립트 status' 명령을 사용하면 서비스의 상태를 확인 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo service cups status =================================================================== 2) 서비스 종료하기 - 동작 중인 서비를 종료 하려면 'service 스크립트 stop' 명령을 사용 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo service cups stop =================================================================== 3) 서비스 시작하기 - 'service 스크립트 start' 명령을 사용하여 서비스를 시작 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo service cups start =================================================================== 4) 서비스 다시 시작하기 - 'service 스크립트 restart' 명령을 사용하여 서비스를 다시 시작 =================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo service cups restart =================================================================== |