问题描述
有没有列出启动时运行的服务的命令?我想它会涉及解析/etc/init.d/
和各种/etc/rc.*
目录。
最佳解决方法
您只需使用initctl list
shell命令列出/etc/init
的内容,而不是建议的dbus-send
命令。
次佳解决方法
快速回答是:这取决于您的init
系统。
漫长的回答是:对于当前版本的Ubuntu,您可能会混合使用Upstart和SystemV。在15.04 “Vivid Vervet”(以及其他Linux发行版,如RHEL /CentOS 7)之后的更新版本的Ubuntu正在转向使用SystemD。
Upstart
列出所有服务:
initctl list
要列出所有Upstart服务并在其上运行initctl show-config
,此one-liner可能会有所帮助:
initctl list | awk '{ print $1 }' | xargs -n1 initctl show-config
系统V
列出所有服务:
service --status-all
要么:
# for init scripts:
ls /etc/init.d/
# for runlevel symlinks:
ls /etc/rc*.d/
SystemD
列出所有服务:
systemctl list-unit-files --type=service
要么:
ls /lib/systemd/system/*.service /etc/systemd/system/*.service
第三种解决方法
/etc/init.d
和/etc/rc.*
目录已被’upstart
‘初始化工具取代。尽管这些目录中的脚本将按预期执行,但在init上运行事物的新方法由/etc/init/
中的文件
您可以通过dbus查询新贵列出所有新贵工作:
dbus-send --print-reply --system --dest=com.ubuntu.Upstart \
/com/ubuntu/Upstart com.ubuntu.Upstart0_6.GetAllJobs
您可能需要更改0_6
以反映您拥有的新贵版本。这个命令适用于我的清理安装。
第四种方法
如果你想要一个很好的服务图形表示和启动尝试的时间:
apt-get install bootchart
第五种方法
Id使用initctl show-config <servicename>
真正了解何时/如果您的服务将在启动过程中启动。
像这样:
$ initctl show-config myservice
myservice
start on runlevel [2345]
stop on runlevel [!2345]
或者对于NFS4 idmap-daemon:
$ initctl show-config idmapd
idmapd
start on (local-filesystems or mounting TYPE=nfs4)
stop on runlevel [06]
chkconfig只适用于基于RedHat的系统。
第六种方法
在12.04我们可以使用:
sudo apt-get install chkconfig
chkconfig --list
示例输出:
acpi-support 0:off 1:off 2:on 3:on 4:on 5:on 6:off
acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off
apparmor 0:off 1:off 2:off 3:off 4:off 5:off 6:off S:on
参考资料