欢迎光临
我们一直在努力

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

介绍

近年来,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系统的优势,您可以控制机器的状态,并更轻松地管理您的服务和进程。

赞(0) 打赏
未经允许不得转载:老赵部落 » Systemd Essentials:使用服务,单元和日志

评论 抢沙发