使用Systemd在Linux系统上管理服务,运行级别和日志

Systemd不仅是服务管理器,还是Linux的系统管理器。 它被设计为与SysV init脚本向后兼容,并被Debian 8 +,Ubuntu 15.04 +,Fedora,Redhat 7 + / CentOS 7 +,Arch Linux,OpenSUSE等许多流行的Linux发行版使用。 因此,了解如何使用systemd将非常有帮助。

本教程向您展示一些基本命令,这些命令对于管理服务,运行级别和日志非常有用。 首先,您可能想知道Linux发行版上的systemd版本,然后运行

systemd --version

要么

systemctl --version

管理服务

Systemd可以帮助您启动,停止,重新启动服务,还可以在启动时自动启动服务。

要列出活动的系统服务,请运行

systemctl list-units --type service

检查特定服务的状态,例如SSH守护程序。

systemctl status ssh

要启动服务,请使用 start 子命令:

sudo systemctl start ssh

检查它是否处于活动状态(正在运行)

systemctl is-active ssh

启用服务以在启动时自动启动

sudo systemctl enable ssh

检查是否启用

systemctl is-enabled ssh

阻止服务在引导时启动

sudo systemctl disable ssh

停止服务

sudo systemctl stop ssh

为防止服务无法正常启动,请使用 mask 子命令

sudo systemctl mask ssh

被屏蔽的服务不能以 systemctl start 命令,直到它被屏蔽为止。

sudo systemctl unmask ssh

管理运行级别

运行级别的概念已由systemd中的目标代替。 的 multi-user.target 相当于运行级别3, graphical.target 等效于运行级别5。您仍然可以使用runlevel命令显示当前运行级别。

runlevel

使用以下命令检查默认目标的状态,该默认目标通常是图形目标(运行级别5)。

systemctl status default.target

systemd默认引导目标

你用 systemctl isolate 命令更改目标。 例如,更改为multi-user.target(运行级别3):

sudo systemctl isolate multi-user.target

并更改回图形目标(运行级别5):

sudo systemctl isolate graphical.target

要将multi-user.target设置为默认目标,请使用以下命令:

sudo systemctl set-default multi-user.target

此命令创建符号链接。

系统默认目标

如果现在重新启动,您将被带到多用户目标。

多用户目标

要列出活动目标,请运行

systemctl list-units --type target

管理日志

系统软件套件包括 journalctl 实用程序,可用于在Linux上管理日志。 传统上,Linux将日志保存在 /var/log/ 目录。 在具有systemd的Linux发行版上,您可能无法在该目录中找到诸如后缀邮件日志(/var/log/mail.log)之类的日志。

您可以使用以下命令查看最近的日志。 你可以按 F 键跳到下一页,然后按 B 返回上一页的关键。 按 Q 退出。

sudo journalctl

使用 grep 搜索与您的搜索词相关的日志

sudo journalctl | grep <search term>

自当前启动以来查看日志

sudo journalctl -b

查看自上次启动以来的日志

sudo journalctl -b -1

这是显示实时生成日志的一个小技巧。

sudo journalctl -f

journalctl示例

显示一个单元的日志,例如ssh服务单元。

sudo journalctl -u ssh

要查看Postfix日志,请运行

sudo journalctl -u postfix

而已! 订阅我们的免费时事通讯以获取最新的Linux教程。 您也可以在Google +,Twitter或喜欢我们的Facebook页面上关注我们。

Sidebar