我阅读了如何在 Ubuntu 中启用和禁用服务,似乎有不同的可能性来管理它们。
我发现的第一种方法是update-rc.d向启动添加新服务,该服务针对/etc/init.d文件夹及其内容。
我发现的另一个是编辑.conf文件/etc/init夹中的文件。
启用/禁用/添加服务的推荐方法是什么?为什么?
您能否提供一个简短的分步示例,说明如何在 Ubuntu 中添加服务并启用和禁用它?
有没有办法获得指定“正在运行”/“未运行”状态的服务的精确列表。
service --status-all
Run Code Online (Sandbox Code Playgroud)
输出30多个?服务。
为什么该输出的信息量如此之大?确定服务是否正在运行有那么难吗?以及如何获取所有服务的确切状态?
zerkms@ubuntu-server-11:~$ sudo service --status-all 2>&1|grep cron
[ ? ] cron
zerkms@ubuntu-server-11:~$ sudo service cron status
cron start/running, process 804
Run Code Online (Sandbox Code Playgroud) 我正在创建一个配置包,并希望停止并重新启动其配置受到影响的服务。现在我正在使用service [stop|restart]in{pre,post}{inst,rm}方式。我读了一个问题的地方,invoke-rc.d是正确的方法,因为它供奉有关服务的用户的喜好。但是,我找不到任何关于此的指南。有谁知道这样的指导方针?或者对我应该选择哪种方式有什么建议?该软件包供内部使用,并且在未来两年内可能仅适用于 14.04。但是,我想为我的继任者留下一个尽可能干净的状态systemd,我也是这么想的。
Debian 软件包的维护者脚本对 init 脚本的所有访问都应通过invoke-rc.d 完成。
来自 Debian 政策手册,第 9 章,第 3.3 节:
维护者应该使用 update-rc.d 和 invoke-rc.d 程序提供的抽象层来处理包脚本中的 initscripts,例如 postinst、prerm 和 postrm。
...
包维护者脚本必须使用 invoke-rc.d 来调用 /etc/init.d/* initscripts,而不是直接调用它们。
Debian 一直在使用sysv-init,将直接转向systemd,我想政策手册会适时更新以供参考systemctl。但是,我不确定的是:我应该使用invoke-rc.d而不是service吗?我可以说dpkg我对某些文件感兴趣(通过触发器),那么有没有办法告诉dpkg我我也对某些服务感兴趣并开始dpkg重新启动/重新加载?
澄清一下:我不是在写初始化脚本。我提供了一个包含其他应用程序配置的包,如 Puppet、NTP 等,所以我停止并重新启动脚本中的相应服务。
例如,这里是一个关于invoke-rc.dvs的 Docker 问题 …
我刚刚从 Debian Testing 迁移到 Ubuntu 16.10 并修改了 sudoers 文件,但似乎没有我可以重新启动以使其识别更改的“sudo”服务。
这是否涉及一些 SystemD 魔法?