Systemd是一个系统管理守护进程、工具和库的集合用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。
Systemd 的核心是一个叫单元unit的概念它是一些存有关于服务service在运行在后台的程序、设备、挂载点、和操作系统其他方面信息的配置文件。Systemd 的其中一个目标就是简化这些事物之间的相互作用因此如果你有程序需要在某个挂载点被创建或某个设备被接入后开始运行Systemd 可以让这一切正常运作起来变得相当容易。在没有 Systemd 的日子里要使用脚本来把这些事情调配好那可是相当丑陋的。要列出您 Linux 系统上的所有单元输入以下命令
现在systemctl是与 Systemd 交互的主要工具它有不少选项。在单元列表中您会注意到这儿有一些格式化被启用enabled的单元显示为绿色被禁用disabled的显示为红色。标记为“static”的单元不能直接启用它们是其他单元所依赖的对象。若要限制输出列表只包含服务使用以下命令
这条命令提供了许多有用的信息一段给人看的服务描述、单元配置文件的位置、启动的时间、进程号以及它所从属的 CGroups用以限制各组进程的资源开销。
如果您在/usr/lib/systemd/system目录中输入ls命令您将看到各种以.target结尾的文件。启动目标target是一种将多个单元聚合在一起以致于将它们同时启动的方式。例如对大多数类 Unix 操作系统而言有一种“多用户multi-user”状态意思是系统已被成功启动后台服务正在运行并且已准备好让一个或多个用户登录并工作——至少在文本模式下。其他状态包括用于进行管理工作的单用户single-user状态以及用于机器关机的重启reboot状态。
与传统的脚本相比单元配置文件也许看起来很陌生但并不难以理解。
现在您也许陷入了沉思我们已经看了这么多但仍没看到如何停止和开启服务这其实是有原因的。从外部看Systemd 也许很复杂像野兽一般难以驾驭。因此在您开始摆弄它之前有必要从宏观的角度看看它是如何工作的。实际用来管理服务的命令非常简单
除了系统初始化和服务管理Systemd 还染指了其他方面。在很大程度上它能够完成cron的工作而且可以说是以更灵活的方式并带有更易读的语法。cron是一个以规定时间间隔执行任务的程序——例如清除临时文件刷新缓存等。
OnBootSec选项告诉Systemd 在系统启动一小时后启动这个单元。第二个选项的意思是自那以后每周启动这个单元一次。关于定时器有大量选项您可以设置输入man systemd.time查看完整列表。
Systemd 的时间精度默认为一分钟。也就是说它会在设定时刻的一分钟内运行单元但不一定精确到那一秒。这么做是基于电源管理方面的原因但如果您需要一个没有任何延时且精确到毫秒的定时器您可以添加以下一行
Systemd 的第二个主要部分是 journal 。这是个日志系统类似于 syslog 但也有些显著区别。如果您是个 Unix 日志管理模式的粉丝准备好出离愤怒吧这是个二进制日志因此您不能使用常规的命令行文本处理工具来解析它。这个设计决定不出意料地在网上引起了激烈的争论但它的确有些优点。例如日志可以被更系统地组织带有更多的元数据因此可以更容易地根据可执行文件名和进程号等过滤出信息。
像许多其他的 Systemd 命令一样该命令将输出通过管道的方式引向less程序因此您可以使用空格键向下滚动键入/斜杠查找以及其他熟悉的快捷键。您也能在此看到少许颜色像红色的警告及错误信息。
以上命令会输出很多信息。为了限制其只输出本次启动的消息使用如下命令
即便您对二进制日志感到遗憾那依然是个有用的特性并且对许多系统管理员来说构建类似的过滤器比起写正则表达式而言容易多了。
我们已经可以根据特定的时间来准确查找日志了那可以根据特定程序吗对单元而言试试这个
值得指出的是您也可以将多个选项结合在一起若想查看在当前启动中由 GDM 服务输出的优先级数小于等于 3 的消息请使用下述命令
二进制日志并不流行但 journal 的确有它的优点如非常方便的信息查找及过滤。
我要用代码向我喜欢的女孩表白: 这个gdm我搜了一下,好像是图形界面登录器,你应该没安装图形界面吧

