그리고 이제 체계적인 답변입니다.
귀하의 질문에 대한 태그마다 Red Hat Enterprise Linux를 사용하고 있습니다. 버전 7부터 systemd를 사용했습니다. 다른 답변은 체계화 된 세계에 맞지 않습니다. 또한 귀하의 질문에 대한 가정 중 일부도 아닙니다.
- 런레벨을 잊어 버리십시오 . 그것들은 존재하지만 호환성 shim으로 만 존재합니다. 체계화 된 문서에는 개념이 "폐기 됨"이라고 명시되어 있습니다. 시스템 운영 체제에서이 내용을 배우기 시작하면 거기서 시작하지 마십시오.
- marcelm이 인용 한 매뉴얼 페이지는 잊어 버리십시오. 그것은 올바른 툴셋에서 온 것이 아니며 systemd의 경우 잘못된 다른 툴셋 명령에 대한 설명입니다.
halt
van Smoorenburg "System 5" init
유틸리티 의 명령입니다 .
- 에
/sbin/halt
대한 심볼릭 링크 인 명령문은 무시하십시오 /sbin/reboot
. systemd에서는 그렇지 않습니다. 별도의 reboot
프로그램 이 전혀 없습니다 .
- 명령 행 인수 로 프로그램을 호출하는 명령문을 무시
halt
하거나 무시하십시오 . 그들은 또한 체계적으로 사실이 아닙니다. 별도의 프로그램 이 전혀 없습니다 .reboot
shutdown
shutdown
모든 시스템 관리 도구 세트에는 이러한 유틸리티 버전이 있습니다. systemd, upstart, nosh , van Smoorenburg init
및 BSD에는 init
모두 고유 한 halt
, poweroff
등이 있습니다. 각각의 역학은 약간 다릅니다. 매뉴얼 페이지도 마찬가지입니다.
systemd 도구 모음에서 halt
, poweroff
,reboot
, telinit
,하고 shutdown
있는 모든 심볼릭 링크는 /bin/systemctl
. 그것들은 모두 이전 버전과의 호환성 shim이며, systemd의 기본 명령 행 인터페이스를 호출하기위한 축약 형입니다 systemctl
. 그들은 모두 동일한 단일 프로그램 에 매핑됩니다 . (일반적으로 쉘은 호출 한 이름을 알려줍니다.)
런레벨이 아닌 대상
이러한 명령의 대부분은을 사용하여 특정 대상systemctl
을 분리 하기 위해 systemd에 알리기위한 축약 형입니다 . 격리는 매뉴얼 페이지 (qv)에 설명되어 있지만이 답변의 목적 상 대상을 시작하고 다른 것을 중지하는 것으로 생각할 수 있습니다. systemd에 사용 된 표준 대상은 (8) 매뉴얼 페이지 에 나열되어 있습니다.systemctl
systemd.special
시스템 bootup
툴셋 의 (7) 매뉴얼 페이지, 특히 마지막 툴 페이지 의 다이어그램 은 여기에 관련된 "최종"대상이 세 개 있음을 보여줍니다.
halt.target
— 시스템이이 대상을 완전히 격리 한 상태에 도달하면 reboot(RB_HALT_SYSTEM)
시스템 호출을 호출합니다. 커널은 ROM 모니터 프로그램에 들어 가려고 시도했거나 단순히 CPU를 정지 시켰습니다 (이에 적합한 메커니즘을 사용하여).
reboot.target
— 시스템이이 대상을 완전히 격리 한 상태에 도달하면 reboot(RB_AUTOBOOT)
시스템 호출 (또는 매직 명령 줄과 동일)을 호출합니다. 커널이 재부팅을 시도했을 것입니다.
poweroff.target
— 시스템이이 대상을 완전히 격리 한 상태에 도달하면 reboot(RB_POWER_OFF)
시스템 호출을 호출합니다. 커널은 가능하다면 시스템에서 전원을 제거하려고 시도했을 것입니다.
이것들 은 실행 레벨이 아니라 최종 시스템 상태로 생각해야 할 것들입니다. 다이어그램에서 시스템 대상 시스템 자체는 다른 시스템에서 명시 적이기보다는 암시적인 것을 인코딩합니다. 예를 들어 이러한 최종 대상 각각이 대상을 포함한다는 개념과 같이 시스템은 shutdown.target
대상 시스템을 종료하기 전에 중지해야하는 서비스를 설명합니다 그들이 가진 충돌shutdown.target
대상입니다.
systemctl
systemd-logind
발신 사용자가 수퍼 유저가 아닌 경우 요청을 보냅니다 . 또한 지연된 종료를에 전달합니다 systemd-shutdownd
. 그리고 일부 속기는 wall
알림을 트리거 합니다. 이러한 복잡성은 제쳐두고, 현재 수퍼 유저이고 예약 된 작업을 요청하지 않는 것으로 가정하면이 답변이 몇 배 더 길어집니다.
systemctl isolate halt.target
속기는있다 :
shutdown -H now
systemctl halt
- 평범하지 않은
halt
systemctl isolate reboot.target
속기는있다 :
shutdown -r now
telinit 6
systemctl reboot
- 평범하지 않은
reboot
systemctl isolate poweroff.target
속기는있다 :
shutdown -P now
telinit 0
shutdown now
systemctl poweroff
- 평범하지 않은
poweroff
systemctl isolate rescue.target
속기는있다 :
telinit 1
systemctl rescue
systemctl isolate multi-user.target
속기는있다 :
telinit 2
telinit 3
telinit 4
systemctl isolate graphical.target
속기가있다 :
여러 가지 다른 명령 줄 구문을 구문 분석 한 후에는 결국 systemctl
프로그램 내부의 동일한 코드 경로에있게 됩니다.
노트:
- 옵션-이하의 전통적인 행동
shutdown now
으로 전환하는 것이 었습니다 단일 사용자 모드 . systemd의 경우에는 그렇지 않습니다. rescue.target
— 단일 사용자 모드가 systemd에서 복구 모드로 이름이 바 — —이 shutdown
명령으로 도달 할 수 없습니다 .
telinit
실제로 매뉴얼 페이지에서 설명하는 파일 시스템의 모든 링크 와 기호 링크를 완전히 무시합니다 . 앞서 언급 한 매핑은 테이블에 프로그램으로 연결되어 있습니다.runlevelN.target
default.target
systemctl
- systemd는 현재 실행 레벨 에 대한 개념이 없습니다 . 이러한 명령의 작동은 "실행 레벨 N에 있는 경우"에 대한 조건이 아닙니다 .
--force
받는 옵션 halt
, reboot
및 poweroff
명령은 말과 동일 --force --force
받는 사람 systemctl halt
, systemctl reboot
및 systemctl poweroff
명령. 이것은 직접 systemctl
전화 를 시도합니다 reboot()
. 일반적으로 대상을 격리하려고 시도합니다.
telinit
와 동일하지 않습니다 init
. 그것들은 시스템 세계에서 다른 프로그램이며, 후자는 systemd
프로그램의 이름이 아니라 프로그램의 다른 이름입니다 systemctl
. 이 systemd
프로그램은 van Smoorenburg와의 호환성으로 전혀 컴파일되지 않아도되며, 일부 시스템 운영 체제에서는 시도 할 경우 잘못 호출되는 것에 대해 불평합니다 .init N
추가 자료