禁用 systemd 中的 init.d 脚本

禁用 systemd 中的 init.d 脚本

我在 raspbian 安装上将 init 系统从 sysvinit 更改为 systemd。安装启动正常,但现在启动时启动 lig​​htdm。我不希望它这样做。

我注意到lightdm.service是在启动时启动的。停止服务

systemctl stop lightdm.service

工作正常。

systemctl disable lightdm.service应该禁用它,但给了我

Failed to issue method call: No such file or directory

systemctl status lightdm.service给我

lightdm.service - LSB: Light Display Manager
      Loaded: loaded (/etc/init.d/lightdm)
      Active: inactive (dead) since Thu, 03 Jul 2014 09:33:00 +0000; 22min ago
     Process: 762 ExecStop=/etc/init.d/lightdm stop (code=exited, status=0/SUCCESS)
     Process: 411 ExecStart=/etc/init.d/lightdm start (code=exited, status=0/SUCCESS)
      CGroup: name=systemd:/system/lightdm.service

我假设 lightdm 是从 init.d 脚本而不是 systemd 脚本启动的,并且systemctl disable如果源是 init.d 脚本则不起作用。我应该怎么做才能禁用 lightdm 在启动时启动?

编辑:更多信息

输出$ ls -l /etc/systemd/system

total 20
lrwxrwxrwx 1 root root   42 Jul  3 09:04 dbus-fi.epitest.hostap.WPASupplicant.service -> /lib/systemd/system/wpa_supplicant.service
lrwxrwxrwx 1 root root   37 Jul  3 13:03 default.target -> /lib/systemd/system/multi-user.target
drwxr-xr-x 2 root root 4096 Jul  3 09:00 getty.target.wants
drwxr-xr-x 2 root root 4096 Jul  3 09:04 graphical.target.wants
drwxr-xr-x 2 root root 4096 Oct 11  2013 local-fs.target.wants
drwxr-xr-x 2 root root 4096 Jul  3 09:04 multi-user.target.wants
drwxr-xr-x 2 root root 4096 Oct 11  2013 sysinit.target.wants
lrwxrwxrwx 1 root root   35 Mar 20  2013 syslog.service -> /lib/systemd/system/rsyslog.service

输出systemctl --all -t target

UNIT                LOAD   ACTIVE   SUB    JOB DESCRIPTION
all.target          error  inactive dead       all.target
basic.target        loaded active   active     Basic System
cryptsetup.target   loaded active   active     Encrypted Volumes
emergency.target    loaded inactive dead       Emergency Mode
final.target        loaded inactive dead       Final Step
getty.target        loaded active   active     Login Prompts
local-fs-pre.target loaded active   active     Local File Systems (Pre)
local-fs.target     loaded active   active     Local File Systems
multi-user.target   loaded active   active     Multi-User
network.target      loaded inactive dead       Network
nss-lookup.target   loaded inactive dead       Name Lookups
remote-fs.target    loaded active   active     Remote File Systems
rescue.target       loaded inactive dead       Rescue Mode
shutdown.target     loaded inactive dead       Shutdown
sockets.target      loaded active   active     Sockets
sound.target        loaded active   active     Sound Card
swap.target         loaded active   active     Swap
sysinit.target      loaded active   active     System Initialization
syslog.target       loaded active   active     Syslog
time-sync.target    loaded inactive dead       System Time Synchronized
umount.target       loaded inactive dead       Unmount All Filesystems

输出ls -l /etc/systemd/system/multi-user.target.wants/

total 8
drwxr-xr-x 2 root root 4096 Jul  3 09:04 .
drwxr-xr-x 7 root root 4096 Jul  3 13:03 ..
lrwxrwxrwx 1 root root   36 Oct 11  2013 remote-fs.target -> /lib/systemd/system/remote-fs.target
lrwxrwxrwx 1 root root   33 Jul  3 09:04 rsync.service -> /lib/systemd/system/rsync.service
lrwxrwxrwx 1 root root   35 Mar 20  2013 rsyslog.service -> /lib/systemd/system/rsyslog.service
lrwxrwxrwx 1 root root   32 Jul  3 09:04 sudo.service -> /lib/systemd/system/sudo.service
lrwxrwxrwx 1 root root   42 Jul  3 09:04 wpa_supplicant.service -> /lib/systemd/system/wpa_supplicant.service

答案1

systemctl disable如果源是脚本则不起作用init.d。我应该怎么做才能禁用lightdm开机自启动?

具有讽刺意味的是,到目前为止,任何答案都没有提到执行此操作的“官方”方法。为了完整起见,它们是:

您“屏蔽”服务:

systemctl mask lightdm.service

或者您创建自己的单元文件,然后它就成为可以使用和命令/etc/systemd/system/lightdm.service启用和禁用的适当的一流 systemd 公民。单元文件取代相同基名的文件。你可以刻下enabledisableinit.dlightdm.service如果您愿意的话,这是由 Debian 人员编写的。 ☺

进一步阅读

答案2

尝试(以 root 身份):-

systemctl disable graphical.target

重新启动后,您应该处于multi-user模式而不是graphical

如果失败,请检查您的默认目标:-

ls -l /lib/systemd/system/default.target
# or, depending on your distro
ls -l /etc/systemd/system/default.target

请注意,路径中的唯一区别是顶级目录 -/lib/etc

上面应该是到 的软链接multi-user.target。如果它指向graphical.target然后使用(作为根)更改它:-

ln -sf /lib/systemd/system/multi-user.target /lib/systemd/system/default.target
# or
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

取决于在上一个ls -l命令中找到软链接的位置。

重新启动,希望您的显示管理器不会启动。

要查看您有哪些目标,请运行:-

systemctl --all -t target

答案3

您可以在 Debian 上启用和禁用 init 脚本update-rc.d。使用update-rc.d lightdm disable

禁用graphical.target不起作用的原因是lightdm不了解graphical.target。它是一个初始化脚本,在所有多用户运行级别 (2-5) 上启动。

相关内容