systemd에는 여전히 런레벨 개념이 있습니까? 예를 들어, 을 사용하는 것이 의미가 있지 않습니까 telinit <number>
?
답변1
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
답변2
아니요. 시스템을 갖춘 사람들이 두 번, 즉 매뉴얼에 한 번 telinit
, 매뉴얼에 한 번 썼듯이 runlevel
런레벨은 "구식"입니다. 런레벨은 잊어도 됩니다.
일부 호환성 심을 제외하면 이러한 것들은 실제로 systemd에 전혀 존재하지 않습니다.
- 일부 대상 이름에 대한 심볼릭 링크가 있지만 이러한 대상은 실제로 systemd에서 사용되지 않습니다.
- 대신 부팅 프로세스에서는 a(및
default.target
a와 a 중 하나 또는 둘 다), a 또는 an을 사용합니다. 종료 프로세스에는 , a , a 또는 a가 포함됩니다.graphical.target
multi-user.target
rescue.target
emergency.target
shutdown.target
reboot.target
halt.target
poweroff.target
관련된 실행 수준 대상이 없습니다.부팅 또는 종료 중. - 명령이 호환성 심볼릭 링크를 사용하여 명령줄 인수를 매핑 한다고 생각할 수도 있지만
telinit
그렇게 하지 않습니다. 프로그램의 소스 코드에는 고정 배선된 테이블이 있으며 명령에 대한 인수인telinit
숫자2
,3
및4
는 및 에 매핑되도록 고정 배선되어 있습니다 .5
multi-user.target
graphical.target
systemd-update-utmp
내부에 고정 배선된 테이블도 있습니다.
- 대신 부팅 프로세스에서는 a(및
- 실행 수준 콘텐츠에는 "초기화 테이블"이 없습니다. systemd는 van Smoorenburg 와만 호환되고
rc
van Smoorenburg 와는 호환되지 않습니다init
. - systemd 자체는 "현재 실행 수준" 값을 유지하지 않습니다. 대신, 거의 완전히 문서화되지 않은
systemd-update-utmp
명령은 , 및 의 활성화 상태에 따라rescue.target
내부적으로multi-user.target
실행됩니다graphical.target
. systemd-sysv-generator
, 디렉토리를 생성된 서비스 단위와/etc/rc[234].d
고유한 관계로 병합하는 systemd용 이전 버전과 호환되는 서비스 단위 생성기입니다Wanted-By
.multi-user.target
생성된 서비스 단위에는 런레벨에 대한 실제 참조가 없습니다. (몇 년 전에도 이런 일이 있었지만, 다른 곳에서 참조되지 않았기 때문에 시스템 사람들은 이것이 잘못된 것임을 발견했습니다.)
질문자가 "Arch Linux"에서 했던 것처럼 systemd가 빌드된 시스템의 사용자라면Arch 설치 중에 `init 0`으로 인해 "초과 매개변수"가 나타나는 이유는 무엇입니까?", 사람들은 호환성 심도 얻지 못하고 이와 같은 명령은 init 0
명령이 잘못 호출되었다고 불평하는 "기본" 시스템 동작으로 이어집니다.
추가 읽기
- Lennart Potlinget al.
runlevel
. 시스템 매뉴얼 페이지. freedesktop.org. - Lennart Potlinget al.
telinit
. 시스템 매뉴얼 페이지. freedesktop.org. - Lennart Potlinget al.
bootup
. 시스템 매뉴얼 페이지. freedesktop.org. - 레나트 페틀링(2015-02-08).Everywhere: sysv 런레벨-대상 매핑 구성 제거. 시스템 d. github.
- https://unix.stackexchange.com/a/196014/5132
- https://unix.stackexchange.com/a/196197/5132
- https://unix.stackexchange.com/a/233581/5132
- https://unix.stackexchange.com/a/211927/5132
- https://unix.stackexchange.com/a/392612/5132
- 조나단 데보인 폴라드(2015).
/etc/inittab
그것은 과거의 일입니다.. 일반적인 답변.
답변3
매우 감사합니다. 따라서 내가 올바르게 이해했다면 다음과 같습니다.
예를 들어:
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는 이를 "대상"이라고 부르기를 좋아합니다.
따라서 다음과 같은 작업을 수행하려는 경우 telinit 5
다음과 같습니다. (제 생각에는 권장됨) systemctl isolate runlevel5.target
.systemctl isolate graphical.target
가능한 모든 목표에 대해 알아보고 싶다면:
ls /usr/lib/systemd/system/*.target
답변4
도입된 시스템표적상대방으로서런레벨sysV 초기화 시스템에서. sytemd 개발자는 대부분의 sysV 스크립트와 거의 호환되도록 만들었습니다. 에서도 마찬가지입니다
telinit <runlevel>
. 이것은 systemd로 변환됩니다.
예를 들어, telinit 0
기기의 전원을 끄십시오. 시스템은정전 대상같은 일을실행 레벨 0. 그래서 telinit 0
시스템 번역에 의해 활성화됩니다정전 대상.
그러나 sytemd와 sysV init 시스템 사이에는 몇 가지 호환성 문제가 있습니다. ->https://www.freedesktop.org/wiki/Software/systemd/Incompatibility.