我在 Arch Linux 机器上安装了 systemd(并且没有安装 sysvinit)。但是,我无法使用 consolekit(dbus 接口)关闭/重新启动。# systemctl {shutdown,reboot}工作得很好,所以我猜是因为 consolekit 不知道如何联系pid 1进程。
我已经在我的 Debian 安装中使用 systemd 一段时间了,只是为了使它成为可能,我必须向/etc/default/grub文件添加一个引导参数才能使其工作,该参数被添加到 Ubuntu 引导参数中。Ubuntu 尚未安装 systemd,因此我必须将其删除,否则启动可能会失败。所以,我正在寻找一种用 systemd 替换 sysvinit 并删除引导参数的方法,我该怎么做?
在“Linux debian 2.6.32-5-amd64 #1 SMP”安装中,需要在启动 sshd 后延迟加载内核模块 (mpt2sas) 并且用户可以远程登录,mpt2sas 模块被禁止加载单用户启动,通过:
$ echo 'blacklist mpt2sas' >> /etc/modprobe.d/mpt2sas.conf; depmod -aeF /boot/System.map-2.6.32-5-amd64; update-initramfs -u -k $(uname -r)
Run Code Online (Sandbox Code Playgroud)
稍后modeprobe -v mpt2sas将在 /etc/rc.local 中运行。
安装较新的 mpt2sas 驱动程序后,使用dpkg -i mpt2sas-15.00.00.00-3_Debian6.0.5.amd64.deb结果是旧驱动程序重命名/lib/modules/2.6.32-5-amd64/kernel/drivers/scsi/mpt2sas/mpt2sas.ko为/lib/modules/2.6.32-5-amd64/kernel/drivers/scsi/mpt2sas/mpt2sas.ko.orig,新驱动程序安装在/lib/modules/2.6.32-5-amd64/weak-updates/mpt2sas/mpt2sas.ko.
副作用是blacklist mpt2sas in行/etc/modprobe.d/mpt2sas.conf 不再有任何影响,当在单用户引导过程中加载模块时,mpt2sas 作为第一个内核模块加载。
回归:
depmod -aeF /boot/System.map-2.6.32-5-amd64; update-initramfs -u -k -t $(uname -r); reboot并没有改善。modprobe.blacklist=mpt2sas并没有改善。如何在单用户引导阶段阻止加载新的 mpt2sas 内核模块?(我仍然想modprobe在 /etc/rc.local 中使用加载 …
我曾经service在centos 6.5上使用命令重新启动,重新加载和检查服务状态,如下所示:
$ sudo service nginx restart OK
$ sudo service nginx status OK
但是,在 CentOS 7 中,我因做同样的事情而收到此通知。
[root@admin ~]# service nginx restart
Redirecting to /bin/systemctl restart nginx.service
[root@admin ~]#
Run Code Online (Sandbox Code Playgroud)
问: Centos7.5如何启动nginx服务?
我正在运行 Debian 8 x64 并且仍在学习它。我在 Debian 和 Ubuntu 系统上反复遇到的令人困惑的事情之一是似乎有两种运行和管理服务的方式:
servicesystemctl我已经通读了systemd (systemctl)上的 Debian 页面以及诸如systemd 如何使用 /etc/init.d 脚本之类的问题?
据我目前所知,如今许多 Linux 发行版,包括 Debian 和 Ubuntu,正在摆脱旧的 SysV(系统五)并采用systemd。
我可以看到 my/sbin/init是到/lib/systemd/systemd.
问题是:
service) 还在?service或我应该坚持使用systemctl?这个问题问:“如何从 systemctl 列出所有启用的服务?” 该页面上的答案包括:
systemctl list-unit-files | grep enabled
systemctl list-unit-files --state=enabled
Run Code Online (Sandbox Code Playgroud)
至少从 systemd 版本 229(在 Ubuntu 16.04 上)开始,systemctl list-unit-files将不包括通过旧版 init 脚本启动的“LSB”服务。
因此,最初的问题似乎仍未得到解答:systemd 能否显示它将在启动时尝试启动的所有服务(和其他单元类型)的列表,包括遗留服务?
考虑:
$ systemctl list-units | grep LSB | grep grub
grub-common.service loaded active exited LSB: Record successful boot for GRUB
$ systemctl list-unit-files | grep enabled | grep grub || echo 'nothing found'
nothing found
$ systemctl is-enabled grub-common
grub-common.service is not a native service, redirecting to systemd-sysv-install
Executing /lib/systemd/systemd-sysv-install is-enabled grub-common
enabled …Run Code Online (Sandbox Code Playgroud) 研究 init 脚本后,我很困惑为什么需要一次又一次地重新获取某些辅助功能。特别是在/lib/lsb/init-functions. 每个需要日志消息的脚本都需要重新获取它的资源,为什么不能只做一次,仅此而已?
就好像每个新的 init 脚本都在它自己的 shell 中运行。如果是这样,为什么要那样做?同样的问题出现在“vars.sh”上,它需要一直重新获取资源。这是必要的吗?假设 'init-functions' 和 'vars.sh' 被添加到脚本列表中以在适当的运行级别中运行?
我一直在研究使用 sysv init 而不是 systemd(个人喜好和熟悉程度)的 Raspberry Pi UPS 代码。我正在研究特权脚本(可能是 /etc/rc.local 的一部分或从其运行)如何告诉 init电源系统中缺少电子。该init(8)手册页告诉我,写一个大写字母(“F'ailing,” O'k或批判“L'OW)成原/etc/powerstatus,但现在/var/run/powerstatus,然后发送init一个SIGPWR信号; 但有警告说:
不鼓励使用
SIGPWR和/etc/powerstatus。想要与 init 交互的人应该使用/run/initctl控制通道 - 有关更多文档,请参阅 sysvinit 包的源代码。
我查看了由 gnu.org 托管的源代码,但我没有看到任何使用这个新的奇特界面来讲述init事情的例子。
有趣的是,Hydrasystemd确实试图复制这个界面,因为我认为有些东西不喜欢它不在身边,但我还没有找到实际使用它的东西。有这样的事情吗?我希望一些与 UPS 相关的软件能够,例如,nut但我认为它不会......
这个问题虽然提到了“Raspberry Pi”,但并不是针对该平台或在其上运行的 Raspbian 等发行版。
这些问题和他们的回答对填写一些相关的细节很有启发:
编辑:上述问答中至少有一个还说明了为什么有些人有 /dev/initctl 而其他人有 /run/initctl - 这是我没有意识到的(这是 Debian 的事情)。
我最近遇到了这个很棒的列表,其中列出了所有命令行工具,这些工具已被新工具弃用(或者说可以复制其功能)ip。
最近尝试习惯了systemd,我了解到几乎所有的功能cron都可以通过systemd. 哪些工具可以复制其功能systemd?