介绍
近年来,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 poweroff
或
sudo reboot
没有
systemctl
。但是,不能保证在所有系统上设置。
下一步
现在,你应该知道如何管理,使用的服务器的基础
systemd
。但是,随着你的需求扩大,还有更多的要学习。以下是指南的链接,其中提供了有关本指南中讨论的一些组件的更深入的信息:
通过学习如何利用init系统的优势,您可以控制机器的状态,并更轻松地管理您的服务和进程。