답변:
SystemD (aemon) 내에서 런레벨은 "타겟"으로 노출됩니다. 개념은 여전히 존재하지만 요구 사항에 대한 원하는 결과를 생성하는 워크 플로는 다릅니다.
첨부 된이 문제를 명확히해야합니다.
현재 런레벨을 어떻게 변경합니까?
$ systemctl isolate runlevelX.target
다음 부팅을위한 기본 런레벨을 어떻게 변경합니까?
# Create a symlink
$ ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
ln -sf TARGET DESTINATION
-s
심볼릭 링크를 만듭니다-f
기존 대상 파일을 제거합니다또는 @centimane이 제안한대로 간단히 "blessed" systemd
명령을 사용하십시오 .
systemctl set-default [target name].target
현재 런레벨을 어떻게 식별합니까?
$ systemctl list-units --type=target
systemctl set-default [target name].target
링크를 수동으로 생성하는 대신 사용해야합니다 .
아닙니다. 체계화 된 사람들이 스스로 telinit
매뉴얼에 한 번, 매뉴얼에 한 번, 두 번이나 쓴 것처럼 runlevel
런레벨은 "폐기"되었습니다. 런레벨을 잊을 수 있습니다.
이러한 것들은 몇 가지 호환성 심을 제외하고는 실제로 시스템에 존재하지 않습니다.
default.target
(및 a graphical.target
및 a 중 하나 또는 둘 다 multi-user.target
), a rescue.target
또는 a 를 사용합니다 emergency.target
. 종료 프로세스에는 shutdown.target
, a reboot.target
, a halt.target
또는 a가 포함 poweroff.target
됩니다. 실행 레벨 대상이 없습니다.부트 스트랩 또는 종료에 .telinit
하나가 사용 호환성 심볼릭 링크가 명령 줄 인수를 매핑 할 생각 명령은, 그 중 하나를하지 않습니다. 거기의 소스 코드에 하드 와이어드 테이블의 telinit
프로그램, 그리고 숫자가 2
, 3
, 4
, 및 5
명령에 대한 인수가 내장 돼있다로 매핑 multi-user.target
하고graphical.target
.systemd-update-utmp
내부 하드 와이어 테이블도 있습니다.rc
되지 반 Smoorenburg이 만듦으로, init
.systemd-update-utmp
명령의 활성화 상태의 측면에서 내부적으로 작동 rescue.target
, multi-user.target
및graphical.target
.systemd-sysv-generator
systemd의 이전 버전과의 호환성 서비스 단위 생성기는 /etc/rc[234].d
디렉토리를 생성 된 서비스 단위와 하나의 Wanted-By
관계 로 병합합니다 multi-user.target
. 생성 된 서비스 단위의 실행 레벨에 대한 실제 참조는 없습니다. (몇 년 전부터 있었지만, 체계화 된 사람들은 다른 곳에서 참조되지 않았기 때문에 이것이 잘못되었다는 것을 발견했습니다.)"init 0``이 아치 설치에서"초과 인수 "를 유발하는 이유는 무엇입니까? "에서 질문자에 대해 아치 리눅스처럼 systemd를 빌드하는 시스템의 사용자라면 , 호환성 심 (shim)과 같은 명령도 얻지 못합니다. 같은 init 0
명령이 잘못 호출 된 것을 불평하는 것입니다 "기본"systemd 행동의 결과.
runlevel
. 체계적인 매뉴얼 페이지. Freedesktop.org.telinit
. 체계적인 매뉴얼 페이지. Freedesktop.org.bootup
. 체계적인 매뉴얼 페이지. Freedesktop.org./etc/inittab
과거의 일입니다. . 자주 답변.매우 감사합니다. 따라서 내가 올바르게 이해하면 :
예를 들면 다음과 같습니다.
ls -ll /usr/lib/systemd/system/runlevel*.target
산출:
/usr/lib/systemd/system/runlevel0.target -> poweroff.target
/usr/lib/systemd/system/runlevel1.target -> rescue.target
/usr/lib/systemd/system/runlevel2.target -> multi-user.target
/usr/lib/systemd/system/runlevel3.target -> multi-user.target
/usr/lib/systemd/system/runlevel4.target -> multi-user.target
/usr/lib/systemd/system/runlevel5.target -> graphical.target
/usr/lib/systemd/system/runlevel6.target -> reboot.target
보시다시피, 런레벨의 개념은 존재하지만 runlevel.target 파일은 실제로“실제”파일이 아니라 새롭고 현대적이고 더 나은 이름의 파일 체계에 대한 소프트 링크라는 사실 때문에 상당히 쓸모가 없습니다. systemd는이를 "대상"이라고 부릅니다.
그래서, 당신이 sth를하고 싶다면 다음과 같을 telinit 5
것입니다 systemctl isolate runlevel5.target
: systemctl isolate graphical.target
(내 의견으로는 권장).
가능한 모든 대상을 알고 싶은 경우 :
ls /usr/lib/systemd/system/*.target
ls -ll
는에 해당합니다 ls -l
. 를 사용하는 습관을 갖고 싶을 수도 있습니다 ls -ld
.
telinit 0
/ telinit 6
여전히 작동합니다. 이는 마이그레이션에 도움이되므로 대부분의 배포판에서는 여전히 지원을 중단 할 이유가 없다고 생각합니다. isolate
달리기 수준의 작동 방식을 모방하기 위해 분명히 열망했지만 다양한 악의적 인 사례가 있습니다. 모든 지침을 무시 isolate runlevel5.target
하거나 무시하는 것이 좋습니다 isolate graphical.target
. 에지 사례의 예 : github.com/systemd/systemd/issues/6505
systemd는 sysV init 시스템의 런레벨 에 대응하는 대상 을 도입했습니다 . sytemd 개발자는 대부분의 sysV 스크립트와 거의 호환됩니다. 에 대해서도 마찬가지입니다
. 이것은 시스템에 상응하는 것으로 번역됩니다.telinit <runlevel>
예를 들어 telinit 0
기계의 전원을 끕니다. systemd에는 runoff 0 과 동일한 poweroff.target 이 있습니다. 그래서 telinit 0
활성화에 systemd에 의해 번역됩니다 poweroff.target .
그러나 일부 호환성 문제는 sytemd 및 sysV init 시스템-> https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities 와 관련이 있습니다 .