介绍
在本实验中,你将学习如何使用 systemctl
命令,这是 Linux 中管理系统服务的主要工具。你将了解 systemctl
的用途和功能,学习如何使用各种 systemctl
命令来管理系统服务,并配置服务的自动启动。实验涵盖了服务管理的基本方面,包括启动、停止、启用和禁用服务,以及查看它们的状态和日志。本实验旨在通过强大的 systemctl
命令,为你提供系统配置和设置的实践经验。
在本实验中,你将学习如何使用 systemctl
命令,这是 Linux 中管理系统服务的主要工具。你将了解 systemctl
的用途和功能,学习如何使用各种 systemctl
命令来管理系统服务,并配置服务的自动启动。实验涵盖了服务管理的基本方面,包括启动、停止、启用和禁用服务,以及查看它们的状态和日志。本实验旨在通过强大的 systemctl
命令,为你提供系统配置和设置的实践经验。
在这一步中,你将学习 systemctl
命令的用途和功能,这是 Linux 中管理系统服务的主要工具。
systemctl
命令是 systemd 初始化系统的一部分,systemd 是许多现代 Linux 发行版(包括 Ubuntu 22.04)默认使用的初始化系统。Systemd 提供了一种统一的方式来管理系统服务,允许你启动、停止、启用和禁用服务,以及查看它们的状态和日志。
让我们从探索 systemctl
的基本用法开始:
## 列出所有正在运行的服务
sudo systemctl list-units --type=service
## 示例输出:
## UNIT LOAD ACTIVE SUB DESCRIPTION
## accounts-daemon.service loaded active running Accounts Service
## acpid.service loaded active running ACPI event daemon
## apparmor.service loaded active exited AppArmor initialization
## ...
此命令列出了系统上所有正在运行的服务。你可以看到服务名称、它们的加载状态、活动状态和子状态,以及每个服务的简要描述。
要查看特定服务的状态,可以使用 status
子命令:
## 检查 sshd 服务的状态
sudo systemctl status sshd.service
## 示例输出:
## ● sshd.service - OpenSSH server daemon
## Loaded: loaded (/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
## Active: active (running) since Fri 2023-04-28 12:34:56 UTC; 1 day 2h ago
## Docs: man:sshd(8)
## man:sshd_config(5)
## Main PID: 12345 (sshd)
## Tasks: 1 (limit: 4915)
## Memory: 12.8M
## CGroup: /system.slice/sshd.service
## └─12345 /usr/sbin/sshd -D
此输出提供了关于 sshd
服务的详细信息,包括其当前状态、启动时间以及运行服务的进程 ID。
你还可以使用 systemctl
来启动、停止或重启服务:
## 启动 sshd 服务
sudo systemctl start sshd.service
## 停止 sshd 服务
sudo systemctl stop sshd.service
## 重启 sshd 服务
sudo systemctl restart sshd.service
这些命令允许你控制系统服务的生命周期。
在下一步中,你将学习如何使用更多的 systemctl
命令来管理系统服务。
在这一步中,你将学习如何使用各种 systemctl
命令来管理系统服务。
让我们从启用服务以在系统启动时自动启动开始:
## 启用 sshd 服务以在启动时自动启动
sudo systemctl enable sshd.service
## 示例输出:
## Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /lib/systemd/system/sshd.service.
此命令创建了一个指向服务单元文件的符号链接,确保 sshd
服务在系统启动时自动启动。
要禁用服务自动启动,可以使用 disable
子命令:
## 禁用 sshd 服务在启动时自动启动
sudo systemctl disable sshd.service
## 示例输出:
## Removed /etc/systemd/system/multi-user.target.wants/sshd.service.
现在,让我们手动启动和停止服务:
## 启动 sshd 服务
sudo systemctl start sshd.service
## 停止 sshd 服务
sudo systemctl stop sshd.service
这些命令允许你控制 sshd
服务的运行状态。
如果你需要重启服务,可以使用 restart
子命令:
## 重启 sshd 服务
sudo systemctl restart sshd.service
此命令将首先停止服务,然后再次启动它。
最后,你可以使用 status
子命令检查服务的状态:
## 检查 sshd 服务的状态
sudo systemctl status sshd.service
此命令将显示 sshd
服务的当前状态,包括它是否正在运行、启动时间以及任何错误消息。
在下一步中,你将学习如何使用 systemctl
配置服务的自动启动。
在这最后一步中,你将学习如何使用 systemctl
配置服务的自动启动。
Systemd 提供了一种强大的方式来管理服务的启动和依赖关系。你可以配置服务在系统启动时自动启动,或者根据其他服务的状态来启动和停止。
让我们从创建一个简单的服务单元文件开始。在 ~/project
目录下创建一个名为 myservice.service
的新文件:
sudo nano ~/project/myservice.service
将以下内容添加到文件中:
[Unit]
Description=My Custom Service
After=network.target
[Service]
ExecStart=/bin/bash -c "while true; do echo 'Running my service'; sleep 10; done"
Restart=always
[Install]
WantedBy=multi-user.target
这个服务单元文件定义了一个简单的服务,它会运行一个无限循环,每 10 秒打印一条消息。After=network.target
行确保服务在网络可用后启动,而 Restart=always
行确保如果服务停止,它会自动重启。
现在,让我们启用并启动服务:
## 启用 myservice.service 以在启动时自动启动
sudo systemctl enable ~/project/myservice.service
## 启动 myservice.service
sudo systemctl start myservice.service
你可以使用 systemctl status
命令检查服务的状态:
sudo systemctl status myservice.service
## 示例输出:
## ● myservice.service - My Custom Service
## Loaded: loaded (/home/labex/project/myservice.service; enabled; vendor preset: enabled)
## Active: active (running) since Fri 2023-04-28 12:34:56 UTC; 1 minutes ago
## Main PID: 12345 (bash)
## Tasks: 2 (limit: 4915)
## Memory: 2.0M
## CGroup: /system.slice/myservice.service
## ├─12345 /bin/bash -c while true; do echo 'Running my service'; sleep 10; done
## └─12346 sleep 10
这表明 myservice.service
正在运行,并且已配置为在系统启动时自动启动。
你现在已经学会了如何使用 systemctl
配置服务的自动启动。恭喜你完成了本实验!
在本实验中,你首先学习了 systemctl
命令的用途和功能,这是 Linux 中管理系统服务的主要工具。你探索了如何列出所有正在运行的服务、检查特定服务的状态,并理解每个服务提供的详细信息。接下来,你学习了如何使用各种 systemctl
命令来管理系统服务,例如启动、停止、重启和启用服务。最后,你了解了如何使用 systemctl
配置服务的自动启动,确保关键服务在系统启动时启动。