在systemd中禁用init.d脚本


11

我在raspbian安装中将init系统从sysvinit更改为systemd。安装可以正常启动,但是现在在启动时启动lightdm。我不希望它那样做。

我注意到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

我们不认为RPi / raspian是Server Fault的主题。该设备的发烧友性质更适合Unix&LinuxSuper User或非unix相关问题的Raspberry Pi

谢谢。奇怪的问题,我在哪里可以找到这些不同站点的确切范围,以阅读每个站点的确切范围?
Martijn 2014年

是的,这很困难,每个游览帮助中心都是一个不错的起点。我们还弄清了我们meta上的某些要点,特别是与您有关的meta.serverfault.com/questions/5586/…

嗯 虽然我不同意这一观点,但对于这个观点来说,我实在是太多了。同时,我猜它至少是Unix和Linux上的话题。我会要求迁移。
Martijn 2014年

Answers:


5

尝试(以根用户身份):-

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

可能令人惊讶的是,这仍然使我陷入了lightdm
Martijn

嗯 也感到惊讶。我做了一些进一步的研究-问题是,目前我只能通过SSH到VPS,而我面前没有“图形”系统来检查我的想法!
garethTheRed 2014年

我已经进行了编辑,现在可以访问真实的系统了。
garethTheRed 2014年

奇怪的是,即使/etc/systemd/system/default.target中的default.target与/lib/systemd/system/multi-user.target符号链接,而systemctl list-units == type = target却没有符号链接,它仍在启动lightdm不会将graphic.target列为活动状态。我感觉是因为存在特定的后备init.d脚本;我还没有找到造成这种情况的原因,但是我的个人问题已经不再是一个有用的通用问题,而更多地是“帮助我解决问题”论坛的问题。我将不胜感激,希望能获得更多帮助,但请确认它不再属于堆栈交换。
Martijn 2014年

1
正确的方法是systemctl set-default multi-user
Majenko

7

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

具有讽刺意味的是,到目前为止,在任何答案中都没有提到任何“官方”方式。为了完整起见,它们是:

您“屏蔽”服务:

systemctl mask lightdm.service

或者,您可以创建自己的单位文件,/etc/systemd/system/lightdm.service这样它就可以成为适当的一流系统公民,可以使用enabledisable命令启用和禁用它。单位文件将取代init.d具有相同基本名称的文件。lightdm.service如果愿意的话,您可以昵称由Debian人士撰写的内容。☺

进一步阅读


2

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.