您的位置首页>企业动态>

Linux 系统开机启动情况!

导读 大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Linux 系统开机启动情况!问题。一般情况下,通用Linux发行版在开机时会拉起各种相

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Linux 系统开机启动情况!问题。

一般情况下,通用Linux发行版在开机时会拉起各种相关的服务流程,包括很多你可能不需要用到的服务,比如蓝牙、Avahi、modem manager、ppp-dns(LCTT翻译:笔者错别字ppp-dns应该是pppd-dns)等服务流程。这些是什么东西?它用在哪里,有什么作用?Systemd提供了很多很好的工具来检查系统的启动,也可以控制系统启动时运行什么。在本文中,我将解释如何关闭Systemd类分发中一些烦人的进程。

检查启动项目在过去,您可以通过检查/etc/init.d来轻松找出哪些服务进程将在启动时启动。Systemd以不同的方式显示。您可以使用以下命令列出允许启动的服务进程。

$ system CTL list-unit-files-type=service | Grepnenabled accounts-daemon。service enabled Anacron-继续。ServiceEnabled Anacron。支持服务的蓝牙。ServiceEnabled BRLTTY。ServiceEnabled [.]在这个列表的顶部,蓝牙服务对我来说是多余的,因为我不需要在这台电脑上使用蓝牙功能,所以我不需要运行这个服务。以下命令将停止服务进程并使其启动。

$ sudo system CTL stop bluetooth . service $ sudo system CTL disable bluetooth . service您可以通过以下命令来确定操作是否成功。

$ system CTL status Bluetooth . service Bluetooth . service-Bluetooth service loaded :已加载(/lib/system d/system/Bluetooth . service;残疾人;供应商预置:启用)活动:非活动(死亡)文档:人工:蓝牙D (8)停用的服务流程仍可由另一个服务流程启动。如果你真的想在任何情况下系统启动的时候都不启动进程,那就不需要卸载,只是把它掩盖起来,防止进程在任何情况下启动。

$ sudo systemctl屏蔽蓝牙。服务从/etc/systemd/system/bluetooth . service to/dev/null创建了symlink。一旦您对禁用此过程的启动而没有任何负面影响感到满意,您也可以选择卸载此程序。

通过执行命令可以获得以下服务列表:

$ systemctl list-unit-files-type=service unit FILE state accounts-daemon . service enabledapid . service disable alsa-restore . service static alsa-utils . ser Vice masked您不能启用或禁用静态服务,因为静态服务依赖于其他进程,这并不意味着它们自己运行。

哪些服务可以被禁止?您如何知道您需要哪些服务,哪些服务可以安全禁用?它总是取决于你个人的需求。

以下是几个服务流程的功能示例。许多服务过程都是特定于分发的,所以您应该查看您的分发文档(例如通过google或StackOverflow)。

Accounts-daemon.service存在潜在的安全风险。它是帐户服务的一部分,允许程序获取或操作用户帐户信息。我觉得我没有很好的理由允许这样的后台操作,所以选择隐藏服务流程。Avahi-daemon.service用于零配置网络发现,这使得计算机很容易发现网络中的打印机或其他主机。我总是禁用它,所以不要错过它。Brltty.service为盲文设备(如盲文显示器)提供支持。Debug-shell.service打开了一个巨大的安全漏洞(该服务提供了一个无密码的根shell来帮助调试systemd问题),除非您正在使用它,否则您永远不应该启动该服务。ModemManager.service该服务是由dbus激活的守护进程,用于提供移动宽带(2G/3G/4G)接口。如果没有这个接口,无论是内置接口,还是与蓝牙配对的手机,或者是USB适配器,那么就不需要这个服务。Pppd-dns.service是计算机发展的遗迹。如果你用拨号上网,那就留着吧,否则就不需要了。Rtkit-daemon.service听起来很糟糕。听起来像rootkit。但是您需要这个服务,因为它是一个实时内核调度程序。Whoopsie.service是Ubuntu错误报告服务。它用于收集Ubuntu系统崩溃报告并将其发送到https://daisy.ubuntu.com。您可以安全地禁用它的启动或永久卸载它。仅当您使用无线网络连接时,才需要服务。系统启动时会发生什么?系统d

提供了一些命令帮助调试系统开机启动问题。该命令会重演你的系统启动的所有消息。

$ journalctl -b-- Logs begin at Mon 2016-05-09 06:18:11 PDT,end at Mon 2016-05-09 10:17:01 PDT. --May 16 06:18:11 studio systemd-journal[289]:Runtime journal (/run/log/journal/) is currently using 8.0M.Maximum allowed usage is set to 157.2M.Leaving at least 235.9M free (of currently available 1.5G of space).Enforced usage limit is thus 157.2M.[...]

通过命令 journalctl -b -1 可以复审前一次启动,journalctl -b -2 可以复审倒数第 2 次启动,以此类推。

该命令会打印出大量的信息,你可能并不关注所有信息,只是关注其中问题相关部分。为此,系统提供了几个过滤器,用于帮助你锁定目标。让我们以进程号为 1 的进程为例,该进程是所有其它进程的父进程。

$ journalctl _PID=1May 08 06:18:17 studio systemd[1]: Starting LSB: Raise network interfaces....May 08 06:18:17 studio systemd[1]: Started LSB: Raise network interfaces..May 08 06:18:17 studio systemd[1]: Reached target System Initialization.May 08 06:18:17 studio systemd[1]: Started CUPS Scheduler.May 08 06:18:17 studio systemd[1]: Listening on D-Bus System Message Bus SocketMay 08 06:18:17 studio systemd[1]: Listening on CUPS Scheduler.[...]

这些打印消息显示了什么被启动,或者是正在尝试启动。

一个最有用的命令工具之一 systemd-analyze blame,用于帮助查看哪个服务进程启动耗时最长。

$ systemd-analyze blame8.708s gpu-manager.service8.002s NetworkManager-wait-online.service5.791s mysql.service2.975s dev-sda3.device1.810s alsa-restore.service1.806s systemd-logind.service1.803s irqbalance.service1.800s lm-sensors.service1.800s grub-common.service

这个特定的例子没有出现任何异常,但是如果存在系统启动瓶颈,则该命令将能发现它。

你也能通过如下资源了解 Systemd 如何工作:

理解和使用 Systemd介绍 Systemd 运行级别和服务管理命令再次前行,另一个 Linux 初始化系统:Systemd 介绍

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。