如何在没有sysvinit的情况下使用consolekit关闭(但使用systemd)


8

我已经在Arch Linux机器上安装了systemd(没有sysvinit)。但是,我无法使用consolekit(dbus接口)关闭/重启。# systemctl {shutdown,reboot}工作正常,所以我想这是因为consolekit不知道如何联系pid 1流程。

Answers:


3

看完源代码之后,似乎consolekit(ck)使用了一个简短的脚本来执行关机和重新引导。这两个脚本安装为

/usr/lib/ConsoleKit/scripts/ck-system-{stop,restart}

在Arch Linux中,他们只是找到并执行{,/usr}/sbin/shutdown即可。

因此,似乎没有任何方法可以配置ck来立即执行此操作(通常,我只是指在中简单地编辑一些文件/etc),并且解决方法很简单。

  1. 只需将这两个脚本编辑为exec即可systemctl {shutdown,reboot}。(但至少在Arch Linux上,每次升级后它可能会被覆盖。)

  2. 只需创建一个包装脚本即可/sbin/shutdown执行正确的操作。(如果您以后要安装sysvinit,这将导致冲突,但希望不会出现问题。)

我还将寻找(并创建(如果没有的话))关于该问题的错误报告,我希望以后可以通过更好的方式来完成(确实不喜欢在外部进行配置/etc)。

注意:Arch Linux现在具有systemd-sysvcompat软件包,该软件包将这些(init/ halt/ shutdown等)作为systemctl/的符号链接systemd

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.