Arch-Linux為什麼
為什麼 init 0
在 Arch 安裝時會導致“Excess Arguments”?
我習慣了呼叫
init 0
關機的舊方法。不好,我知道;但是當我在我的新 Arch 安裝上嘗試它時,我得到了這個:# init 0 Excess Arguments
這讓我很困惑,因為我認為
systemd
應該支持執行級別?查看手冊頁,它提到了這一點:為了與 SysV 兼容,如果 systemd 被呼叫為 init 並且 PID 不是 1,它將執行 telinit 並傳遞所有未修改的命令行參數。這意味著從正常登錄會話呼叫時,init 和 telinit 基本上是等效的。有關詳細資訊,請參閱 telinit(8)。
我只是使用了錯誤的語法還是完全誤解了
systemd
?更多初始化/系統資訊
# command -v init /usr/bin/init # file /bin/init /usr/bin/init: symbolic link to ../lib/systemd/systemd # /lib/systemd/systemd --version systemd 234 +PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN default-hierarchy=hybrid
# command -v telinit /usr/bin/telinit # file /bin/telinit /bin/telinit: symbolic link to systemctl # systemctl --version systemd 234 +PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN default-hierarchy=hybrid
一般系統資訊
# uname -a Linux arch 4.12.5-1-ARCH #1 SMP PREEMPT Fri Aug 11 12:40:21 CEST 2017 x86_64 GNU/Linux # bash --version GNU bash, version 4.4.12(1)-release (x86_64-unknown-linux-gnu)
為了與 SysV 兼容,$$ … $$
系統化 234 […]-SYSVINIT […]
您建構的 systemd 沒有兼容性選項,因此手冊中描述的兼容性行為不會出現。
好吧,據我從您的符號連結中可以看出,這就是問題所在。
如果你
init
是一個符號連結,systemd
那麼你需要看看 systemd 可以得到什麼作為參數。systemd [OPTIONS...] Starts up and maintains the system or user services. -h --help Show this help --test Determine startup sequence, dump it and exit --no-pager Do not pipe output into a pager --dump-configuration-items Dump understood unit configuration items --unit=UNIT Set default unit --system Run a system instance, even if PID != 1 --user Run a user instance --dump-core[=BOOL] Dump core on crash --crash-vt=NR Change to specified VT on crash --crash-reboot[=BOOL] Reboot on crash --crash-shell[=BOOL] Run shell on crash --confirm-spawn[=BOOL] Ask for confirmation when spawning processes --show-status[=BOOL] Show status updates on the console during bootup --log-target=TARGET Set log target (console, journal, kmsg, journal-or-kmsg, null) --log-level=LEVEL Set log level (debug, info, notice, warning, err, crit, alert, emerg) --log-color[=BOOL] Highlight important log messages --log-location[=BOOL] Include code location in log messages --default-standard-output= Set default standard output for services --default-standard-error= Set default standard error output for services
所以問題是你實際上沒有真正的
init
,而只是一個連結的systemd