과거에는 대부분의 Linux를 부팅할 때 부트로딩 중에 런레벨을 변경하기 위해 뭔가를 하지 않는 한 런레벨 6으로 부팅했습니다.
그런 다음 프로세스는 /etc/init/rcX.d(IIRC)(여기서 X는 실행 수준)를 찾고 S로 시작하는 모든 스크립트를 사전순으로 실행합니다(따라서 S01xxx는 S20yyy보다 먼저 실행됩니다).
종료 프로세스가 완료되면 K로 시작하는 스크립트가 사전식 역순 IIRC로 실행됩니다.
이제 상황이 변경되었습니다. rcX.d 디렉토리는 /etc로 이동되었으며 /etc/rcS.d는 기본 실행 수준 2로 추가되었습니다.
불행하게도 나는 지금까지 이러한 변화에 주의를 기울이지 않았습니다. 현재 시스템에서 런레벨 2의 시작 및 종료 프로세스를 설명할 수 있는 사람이 있습니까?
답변1
시스템이 한 런레벨에서 다른 런레벨로 전환되면 기존 런레벨의 모든 "K" 스크립트를 순서대로 실행한 다음 새 런레벨의 모든 "S" 스크립트를 순서대로 실행합니다. 데비안은 병렬 시작을 구현하므로 대부분의 스크립트는 동시에 실행되지만(순차적으로 작동함) 각 스크립트에 대한 종속성 정보와 스크립트 삽입/제거 도구를 포함하는 표준이 있습니다. CONCURRENCY=NONE
에 추가하여 동시성을 끌 수 있습니다 /etc/default/rcS
.
데비안의 현재 버전에서 inittab
각 런레벨 전환 시 실행되는 명령 세트는 다음과 같습니다./etc/init.d/rc
부팅할 때 시스템은 실행 수준에 있는 것으로 간주됩니다 S
. 의 "S" 스크립트는 /etc/rcS.d
에 의해 순차적으로 실행됩니다 /etc/init.d/rc
.
완료되면 시스템은 커널 명령줄에 지정한 런레벨 또는 기본 런레벨(X가 설치되어 있지 않은 경우 2)로 들어갑니다.
"K" 스크립트가 없으므로 /etc/rcS.d
아무 일도 일어나지 않습니다. 런레벨 "S"는 일반 시스템 초기화를 위한 것입니다. 그러나 모든 "S" 스크립트는 /etc/rc2.d
순차적으로 실행됩니다.
이 작업이 완료되면 공식적으로 실행 레벨 2가 됩니다. 명령은 수행하도록 구성된 작업을 /etc/init.d/rc
반환하고 init
빌드하며 실행 수준을 변경하라는 신호를 기다립니다.getty
닫으면 신호가 로 전송됩니다 init
. 그런 다음 시스템은 실행 수준 2에서 6(다시 시작) 또는 0(종료)으로 이동합니다. 따라서 모든 "K" 스크립트는 /etc/rc2.d
순차적으로 실행됩니다. 그런 다음 또는 (있는 경우) /etc/rc6.d
의 모든 "S" 스크립트가 순서대로 실행됩니다./etc/rc0.d
그런 다음 이는 런레벨 0 또는 6(참고 /etc/init.d/rc
- 스크립트는 명시적으로 0 또는 6을 테스트함)이므로 즉시 런레벨에서 전환되어 모든 "K" 스크립트가 실행됩니다.
0 또는 6의 마지막 "K" 스크립트는 시스템을 일시 중지/전원 끄거나 재부팅하는 명령입니다.
답변2
/etc/inittab
내 /etc/inittab
(Fedora 시스템)에서 :
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
이 라인은 /etc/inittab
내 기본 런레벨을 제어합니다.
id:5:initdefault:
다음과 같이 변경하세요.
$ sudo vim /etc/inittab
id:3:initdefault:
런레벨
현재 런레벨은 다음과 같습니다:
$ runlevel
N 5
따라서 이전 런레벨은 알 수 없음( N
)이었고 현재 런레벨은 5입니다. 일시적으로 런레벨을 변경합니다.
telinit 3
다음 제목의 이 기사를 살펴보시기 바랍니다.시작 관리자(문서), Debian에서 이 디렉토리가 어떻게 구성되어 있는지 설명합니다.
Debian에서는 다음과 같은 런레벨을 표시합니다:
N System bootup (NONE).
S Single user mode (not to be switched to directly)
0 halt
1 single user mode
2 - 5 multi user mode
6 reboot