Published Book on Amazon
All of IOT
Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1 |
|
All of IOT
Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2 |
출판된 한글판 도서
최신 라즈베리파이(Raspberry Pi)로 시작하는 사
물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상) |
|
최신 라즈베리파이(Raspberry Pi)로 시작하는 사
물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하) |
Original Book Contents
20.3 init script를 통한 자동 실행
20.3.1 run level
20.3.1.1 run level 정의
Linux에서는 시스템이 처음 시작하거나 종료할 때 사전에 지정된 모든 작업을 처리하거나, 때때로 시스템 복구작업을 할 때 다른 사용자들이 사용하지 못하게 할 필요가 있다. 이렇게 특정 단계에서 시스템을 사용할 수 있는 사용자를 제한하거나, 특정 환경에서 실행할 수 있는 명령이나 프로그램의 종류를 구분하기 위해서 "run level"이라는 도구를 사용한다.
run level이란 시스템의 사용 용도나 상태에 따라 일정한 번호를 부여해 놓은 것이다. Linux에는 다음과 같은 run level이 정의되어 있다.
Level | 의미 | 설명 |
0 | Halt | 시스템 종료 |
1 | Single User Mode | 단일 사용자만 허용되고 기본적인 시스템 기능만 제공한다. 통상 복구용으로 사용된다. |
2 | Multi User Mode | 다중 사용자 모드 NFS(Network File System)를 지원하지 않는다 |
3 | Multi User Mode | 다중 사용자 모드이다. 완전한 networking 기능을 제공한다. X윈도우는 지원하지 않는다. |
4 | User Defined | 시스템에서 사용되지 않는다. 사용자가 직접 정의하여 사용할 수 있다. |
5 | X window | X윈도우로 부팅할 때 사용한다. |
6 | Reboot | 재시동 |
run level은 통상 시스템 관리자가 사용한다. 예를 들어 시스템 복구작업을 위해서 시스템 관리자만 시스템을 사용할 수 있도록 하고 다른 사용자는 접근하지 못하게 하려면 run level "1"을 사용할 수 있고, X window를 사용하고자 하면 run level "5"를 사용할 수 있다. 그러면 그에 맞게 시스템이 상태를 조정해 준다.
시스템에서는 각 run level에 대해서 처리해야 하는 서비스 작업이 정의되어 있다. 특정 run level이 지정되면, 그 run level에 사전 정의된 작업들이 자동 실행되어 시스템이 원하는 상태로 전환되는 것이다.
20.3.1.2 "runlevel" 명령 - run level 확인
Linux시스템에서는 "/etc/inittab" 파일에서 다음과 같은 형식으로 default run level이 지정되어 있다. 시스템의 default run level를 변경하고자 하면 이 값을 변경해 주면 된다.
# The default runlevel. id:2:initdefault: |
현재의 run level을 확인하기 위해서는 다음과 같이 runlevel 명령을 사용한다.
[명령 형식]
runlevel [option] |
[명령 개요]
■ 현재의 run level을 보여준다.
■ user 권한 -- super user.
[상세 설명]
■ None
[주요 Option]
--help | Print a short help text and exit. |
[사용 Example]
다음의 실행결과는 현재 run level이 "2" 상태라는 것이다.
pi@raspberrypi ~ $ runlevel |
N 2 |
20.3.1.3 "telinit" 명령 - run level 전환
특정 목적을 위해서 필요한 경우, 시스템 관리자가 다른 run level로 전환할 수가 있다. 그러면 시스템은 즉시 그 run level에서 사전에 정의된 내용에 따라 다른 환경으로 전환하게 된다. 예를 들면 현재 정상적으로 실행되고 있는 run level "2" 상태에서 run level "6"으로 변경을 하게 되면, 시스템은 즉시 rebooting 작업을 하게 된다.
현재의 run level을 다른 것으로 전환하기 위해서는 다음과 같이 "telinit" 명령을 사용한다.
[명령 형식]
telinit <run-level> |
[명령 개요]
■ 현재의 run level을 다른 것으로 전환한다.
■ user 권한 -- super user.
[상세 설명]
■ None
[주요 Option]
--help | Print a short help text and exit. |
[사용 Example]
다음은 run level을 전환하기 전에 현재 상태를 확인하고, run level을 전환하는 작업을 한 것이다.
pi@raspberrypi ~ $ runlevel |
N 5 |
pi@raspberrypi3:~ $ sudo telinit 3 |
pi@raspberrypi3:~ $ runlevel |
5 3 |