Linux에서 일반적으로 사용되는 종료/다시 시작 명령에는 shutdown, 중지, 재부팅 및 init가 포함됩니다. 모두 시스템을 다시 시작하는 목적을 달성할 수 있지만 이 문서의 소개를 통해 각 명령의 내부 작업 프로세스가 다릅니다. , 다양한 종료 명령을 보다 유연하게 사용할 수 있기를 바랍니다.
1. shutdown 명령은 시스템을 안전하게 종료합니다.
일부 사용자는 전원을 직접 차단하여 Linux를 종료하는데 이는 매우 위험합니다. Linux는 Windows와 다르기 때문에 백그라운드에서 실행되는 프로세스가 많기 때문에 강제 종료하면 프로세스의 데이터가 손실되어 시스템이 불안정해질 수 있으며 일부 시스템에서는 하드웨어 장비가 손상될 수도 있습니다.
시스템을 종료하기 전에 shutdown 명령을 사용하면 시스템 관리자가 로그인한 모든 사용자에게 시스템이 종료된다는 사실을 알리고 로그인 명령이 정지됩니다. 더 이상 로그인할 수 없습니다. 직접 종료하거나 일정 시간 동안 종료를 지연할 수도 있고, 다시 시작하는 것도 가능합니다. 이는 모든 프로세스가 시스템에서 보낸 신호를 수신한다는 사실에 의해 결정됩니다. 이는 vi와 같은 프로그램이 현재 편집 중인 문서를 저장할 수 있는 시간을 제공하고 메일 및 뉴스와 같은 프로그램은 정상적으로 종료될 수 있습니다. Shutdown은 init 프로그램에 신호를 보내 런레벨을 변경하도록 요청함으로써 작업을 수행합니다.
런레벨 0은 종료[정지]에 사용됩니다.
런레벨 6은 시스템을 다시 활성화하는 데 사용됩니다[재부팅]
런레벨 1은 시스템을 관리 상태로 전환하는 데 사용됩니다. 상태
이것이 기본값입니다. -h 또는 -r 매개변수가 모두 종료에 제공되지 않는 것으로 가정됩니다. 종료(중지) 또는 재부팅(reboot) 프로세스 중에 어떤 작업이 수행되었는지 알고 싶다면 이 파일 /etc/inittab에서 런레벨 관련 정보를 볼 수 있습니다. 종료 매개변수 설명:
[ - t] 다른 런레벨로 변경하기 전에 종료하는 데 걸리는 시간을 init에게 알려줍니다. > 사무실은 계산기를 사용하여 만들어집니다. 경고? )] [-n] 사용하지 않음 그러나 이 옵션을 사용하면 자신을 종료할 수 있으며 이 옵션의 결과는 예상과 다른 경우가 많습니다.
[-c] cancel current process는 현재 실행 중인 종료 프로세스를 취소하므로 물론 이 옵션은 시간 매개변수는 없지만 사용자 매개변수를 입력하여 메시지를 설명할 수 있으며, 이 메시지는 각 사용자에게 전송됩니다. [-f] 계산기를 다시 시작할 때 fsck를 무시합니다[재부팅].
[-time] 종료 전 시간을 설정합니다. [shutdown]
실제로 Halt는 shutdown -h를 호출하는 것입니다.
매개변수 설명: > [-n] 커널이 패치된 파티션을 덮어쓰는 것을 방지하기 위해 fsck로 루트 파티션을 패치한 후 사용되는 동기화 시스템 호출을 방지합니다.
[-w] 실제 재부팅이나 종료가 아닌, 그냥 wtmp [/var/log/wtmp] 레코드를 작성하세요
[-d] wtmp 레코드를 쓰지 않음 [옵션 [-n]에 포함됨]
<.> [-f] 종료를 호출하지 않고 강제 종료하거나 다시 시작합니다.
[-i] 종료하기 전에 모든 네트워크 인터페이스를 끕니다. (또는 다시 시작)
[-p] 종료 시 poweroff를 호출하는 옵션입니다. 3. 재부팅 작업 과정은 중지와 거의 동일합니다. 🎜>
4.init는 모든 프로세스의 조상이고 프로세스 번호는 항상 1이므로 TERM 신호를 init로 보내면 모든 사용자 프로세스, 데몬이 종료됩니다. 프로세스 등 종료는 이 메커니즘을 사용합니다. init는 8개의 런레벨을 정의합니다
init 0은 shutdown
init 1은 restart
init에 대한 이야기가 길어서 여기서는 설명하지 않겠습니다. init의 실행 수준을 변경할 수 있는 telinit 명령도 있습니다. 예를 들어 telinit -iS는 시스템을 단일 사용자 모드로 전환할 수 있으며 shutdown을 사용할 때의 정보와 대기 시간은 가져오지 않습니다.
init 상세 설명
1. INIT: init는 리눅스 시스템 운영에 있어서 없어서는 안 될 프로그램 중 하나입니다.
소위 init 프로세스는 커널에 의해 시작되는 사용자 수준 프로세스입니다. 커널이 자체적으로 시작된 후(메모리에 로드되고, 실행되기 시작하고, 모든 장치 드라이버와 데이터 구조가 초기화된 후) 사용자 수준 프로그램 init을 시작하여 부팅 프로세스를 완료합니다. 따라서 init는 항상 첫 번째 프로세스입니다(해당 프로세스 번호는 항상 1입니다). 커널은 과거에 init가 사용되었던 여러 위치에서 init를 찾습니다. 올바른 위치(Linux 시스템의 경우)는 /sbin/init입니다. 커널이 init를 찾을 수 없으면 /bin/sh 실행을 시도하고, 실패하면 시스템이 부팅되지 않습니다.
2. 실행 레벨
간단히 말하면, 실행 레벨은 현재 운영 체제가 실행되고 있는 기능 수준입니다. 레벨은 1부터 6까지이며 다양한 기능을 가지고 있습니다. 다양한 실행 수준에 대한 정의는 다음과 같습니다. (Red Hat Linux에서는 /etc/inittab을 참조할 수 있습니다)
# 0 - 종료(initdefault를 0으로 설정하지 않음) 사용자 모드
# 2 - 다중 사용자, NFS 없음
# 3 - 전체 다중 사용자 모드(표준 실행 수준)
# 4 - 사용되지 않음
# 5 - X11 ( xwindow)
# 6 - 다시 시작(initdefault를 6으로 설정하지 않음)
이러한 수준은 /etc/inittab 파일에 지정됩니다. 이 파일은 init 프로그램이 찾는 기본 파일입니다. 실행할 첫 번째 서비스는 /etc/rc.d 디렉토리에 있는 파일입니다. 대부분의 Linux 배포판에서 시작 스크립트는 /etc/rc.d/init.d에 있습니다. 이 스크립트는 ln 명령을 사용하여 /etc/rc.d/rcn.d 디렉토리에 연결됩니다. (n 여기서는 실행 수준 0-6입니다.)
3. 실행 수준 구성
실행 수준 구성은 아래와 같이 /etc/inittab 줄에서 수행됩니다.
12: 2: wait: /etc/init.d/rc 2
첫 번째 필드는 임의로 지정된 레이블입니다.
두 번째 필드는 이 줄이 Run that level에 적용됨을 나타냅니다. 2);
세 번째 필드는 실행 수준에 들어갈 때 init가 네 번째 필드의 명령을 한 번 실행하고 명령이 끝날 때까지 기다려야 함을 나타냅니다. /etc/init.d/rc 명령은 런레벨 2로 들어가기 위해 입력을 시작하고 종료하는 데 필요한 모든 명령을 실행합니다.
네 번째 필드의 명령은 실행 수준을 설정할 때 모든 "작업"을 수행합니다. 더 이상 실행되지 않는 서비스를 시작하고 새 런레벨 내에서 더 이상 실행되지 않아야 하는 서비스를 종료합니다. Linux 버전에 따라 사용되는 구체적인 명령도 다르며, 실행 수준 구성도 다릅니다.
init가 시작되면 /etc/inittab에서 코드 줄을 찾습니다. 이 줄은 기본 실행 수준을 지정합니다: id: 2: initdefault:
init에게 시작을 요청할 수 있습니다. 기본이 아닌 런레벨을 입력할 때 커널에 "단일" 또는 "긴급" 명령줄 인수를 지정하면 됩니다. 예를 들어, 커널 명령줄 매개변수 지정은 LILO를 통해 수행될 수 있습니다. 이렇게 하면 단일 사용자 모드(예: 런레벨 1)를 선택할 수 있습니다. 시스템이 실행되는 동안 telinit 명령은 실행 레벨을 변경할 수 있습니다. 실행 수준이 변경되면 init는 /etc/inittab에서 해당 명령을 실행합니다.
4. /etc/inittab의 특수 구성
/etc/inittab에는 init가 특수 이벤트를 다시 활성화할 수 있도록 하는 몇 가지 특수 기능이 있습니다. 이러한 특수 기능은 세 번째 필드에 특수 키워드로 표시됩니다. 예:
1. powerwait 전원이 차단되면 init가 시스템을 종료하도록 허용합니다. 전제 조건은 UPS와 UPS를 모니터링하고 전원이 차단되었음을 초기화에 알리는 소프트웨어가 있어야 한다는 것입니다.
2. ctrlaltdel 사용자가 콘솔 키보드에서 C t r l + Alt + Del 키 조합을 누를 때 init가 시스템을 다시 시작하도록 허용합니다. 시스템이 공공 장소에 배치된 경우 시스템 관리자는 C t r l + Alt + Del 키 조합을 구성하여 무시하는 등의 다른 동작을 수행할 수 있습니다.
3. sysinit 시스템 시작 시 실행되는 명령입니다. 예를 들어, 이 명령은 /tmp를 지웁니다.
위의 특수 키워드 목록은 아직 완성되지 않았습니다. 다른 키워드와 사용법에 대한 자세한 내용은 inittab 매뉴얼 페이지를 참조하십시오.
Linux 종료 명령 및 init 세부 사항에 대한 자세한 설명은 PHP 중국어 웹 사이트에서 관련 기사를 주목하세요!