Systemd Essentials:使用服务,单元和日志

近年来,Linux发行越来越迁移从其他的init系统客场systemd。工具的systemd套件提供了管理整个虚拟机,从开机起一个快速,灵活的初始化模式。在本指南中,我们会给你一个快速运行...

介绍

近年来,Linux发行版已经越来越多地从其他的init系统过渡到systemd 。 该systemd的工具套件提供了从启动管理整个机器起一个快速,灵活的初始化模式。 在本指南中,我们会给你通过你会想知道管理一个最重要的命令的快速运行systemd启用服务器。 这些应该实现在任何服务器上运行systemd (或以上的Ubuntu 15.04,Debian 8,CentOS 7,Fedora的15任何操作系统版本)。让我们开始吧。

基本单位管理

的基本对象systemd管理和作用在一个“单位”。 单元可以是多种类型的,但最常见的类型是一个“服务”(通过在结尾的单元文件说明.service )。 要在管理上的服务systemd启用服务器,我们的主要工具是systemctl命令。 一切正常的init系统命令与等效的动作systemctl命令。 我们将使用nginx.service单位证明(你必须安装Nginx的与你的软件包管理器获得此服务文件)。 例如,我们可以通过键入以下内容来启动服务:
sudo systemctl start nginx.service
我们可以通过键入:
sudo systemctl stop nginx.service
要重新启动服务,我们可以键入:
sudo systemctl restart nginx.service
要尝试重新加载服务而不中断正常功能,我们可以键入:
sudo systemctl reload nginx.service

启用或禁用单位

默认情况下,大多数systemd单元文件不会自动在开机启动。要配置此功能,您需要“启用”单元。这将其挂钩到某个引导“目标”,使其在该目标启动时被触发。 要使服务在引导时自动启动,请键入:
sudo systemctl enable nginx.service
如果要再次禁用服务,请键入:
sudo systemctl disable nginx.service

获取系统状态概述

还有就是,我们可以从上拉的大量信息systemd服务器,以获得系统状态的概述。 例如,为了让所有的单元文件的systemd已列为“活跃”,类型(实际上你可以离开落list-units ,因为这是默认的systemctl行为):
systemctl list-units
要列出所有的单位systemd已加载或尝试加载到内存中,包括那些目前不活跃,加上--all开关:
systemctl list-units --all
要列出所有已安装的系统,包括那些在单位systemd并没有试图加载到内存中,键入:
systemctl list-unit-files

查看基本日志信息

一个systemd调用的组件journald收集和系统的所有部件管理日记帐分录。这基本上是来自应用程序和内核的日志信息。 要查看所有日志条目,从最旧的条目开始,请键入:
journalctl
默认情况下,系统就会显示当前和以前的靴子条目如果journald配置保存以前的引导记录。 一些发行版在默认情况下启用此功能,而有的则没有(为实现这一点,可以编辑/etc/systemd/journald.conf文件和设置Storage=选项“老大难”,或键入创建持久性目录sudo mkdir -p /var/log/journal )。 如果你只是想看到从当前引导的日记帐分录,加上-b标志:
journalctl -b
只看到内核消息,如那些通常由代表dmesg ,您可以使用-k标志:
journalctl -k
同样,你可以通过附加限制这只是当前引导-b标志:
journalctl -k -b

查询单元状态和日志

虽然上述命令允许您访问常规系统状态,但您还可以获取有关各个单元状态的信息。 要查看设备的当前状态的概述,您可以使用status的选项systemctl命令。这将显示单位是否处于活动状态,有关过程的信息和最新的日记帐分录:
systemctl status nginx.service
要查看所有有问题的单位日记帐分录,给-u与单位名称选项journalctl命令:
journalctl -u nginx.service
与往常一样,你可以通过添加限制条目到当前引导-b标志:
journalctl -b -u nginx.service

检查单元和单元文件

现在,你知道如何通过启动或停止它来修改单元的状态,你知道如何查看状态和日志信息,以了解进程正在发生什么。但是,我们还没有看到如何检查单位和单位文件的其他方面。 单位文件包含的参数systemd使用管理和运行单位。要查看单元文件的完整内容,请键入:
systemctl cat nginx.service
要查看单元的依赖关系树(其中单位systemd将试图激活启动装置时),键入:
systemctl list-dependencies nginx.service
这将显示相关单位,与target单位递归扩展。 递归展开所有相关单位,通过--all标志:
systemctl list-dependencies --all nginx.service
最后,要查看系统上的设备的设置低层次的细节,您可以使用show选项:
systemctl show nginx.service
这会给你通过被管理的每个参数的值systemd

修改单元文件

如果您需要进行修改,以一个单位的文件, systemd使您可以从改变systemctl命令本身,这样你就不必去到实际的磁盘位置。 要添加设备文件片段,它可以用于追加或默认单元文件覆盖的设置,只需调用edit单位上的选项:
sudo systemctl edit nginx.service
如果您希望修改单元文件的全部内容,而不是创建一个片断,通过--full标志:
sudo systemctl edit --full nginx.service
修改单元文件后,你应该重新载入systemd过程本身拿起您的更改:
sudo systemctl daemon-reload

使用目标(运行级别)

init系统的另一个功能是在不同状态之间转换服务器本身。传统的init系统通常将这些称为“运行级别”,允许系统在任何一个时间只处于一个运行级别。 在systemd ,“指标”被代替。目标基本上是服务器可以用来使服务器进入特定状态的同步点。服务和其他单元文件可以绑定到目标,并且多个目标可以同时处于活动状态。 要查看系统上可用的所有目标,请键入:
systemctl list-unit-files --type=target
要查看默认目标systemd尝试在引导到达(这反过来又启动所有单元文件构成该目标的依赖关系树),键入:
systemctl get-default
您可以更改将在启动通过使用默认目标set-default选项:
sudo systemctl set-default multi-user.target
要查看与目标绑定的单位,可以键入:
systemctl list-dependencies multi-user.target
您可以修改系统状态与目标之间进行转换isolate选项。这将停止没有绑定到指定目标的任何单位。确保您隔离的目标不会停止任何必要的服务:
sudo systemctl isolate multi-user.target

正在停止或重新启动服务器

对于系统可以转换到的一些主要状态,可以使用快捷方式。例如,要关闭服务器电源,您可以键入:
sudo systemctl poweroff
如果您想重新启动系统,可以通过键入:
sudo systemctl reboot
您可以通过键入以下命令启动进入救援模式:
sudo systemctl rescue
请注意,大多数操作系统都包含传统的别名,这些操作,这样就可以简单地输入sudo poweroffsudo reboot没有systemctl 。但是,不能保证在所有系统上设置。

下一步

现在,你应该知道如何管理,使用的服务器的基础systemd 。但是,随着你的需求扩大,还有更多的要学习。以下是指南的链接,其中提供了有关本指南中讨论的一些组件的更深入的信息: 通过学习如何利用init系统的优势,您可以控制机器的状态,并更轻松地管理您的服务和进程。