简介
在这个实验中,你将学习如何检查 Linux 系统上运行的服务的状态。我们将探索不同的方法,首先是使用现代的 systemctl status
命令,了解其输出内容和重要性,即使在直接执行受限的环境中也是如此。
接下来,你将学习如何使用较旧但仍然实用的 service
命令来确认服务状态,最后,使用 ps aux
命令验证与服务关联的正在运行的进程。通过这个实践经验,你将掌握在 Linux 中监控和管理服务的重要技能。
在这个实验中,你将学习如何检查 Linux 系统上运行的服务的状态。我们将探索不同的方法,首先是使用现代的 systemctl status
命令,了解其输出内容和重要性,即使在直接执行受限的环境中也是如此。
接下来,你将学习如何使用较旧但仍然实用的 service
命令来确认服务状态,最后,使用 ps aux
命令验证与服务关联的正在运行的进程。通过这个实践经验,你将掌握在 Linux 中监控和管理服务的重要技能。
在这一步中,你将学习如何使用 systemctl
命令检查系统服务的状态。服务是在你的系统上运行的后台程序,例如 Web 服务器、数据库服务器或网络守护进程。
虽然在这个特定的 LabEx 环境中你无法直接使用 systemctl
(因为它在 Docker 容器中运行),但了解它的工作原理对于在真正的 Linux 系统上管理服务至关重要。我们将模拟这个概念,并向你展示典型的命令用法。
在使用 systemd
的标准 Linux 系统上(这在像 Ubuntu 这样的现代发行版中很常见),你可以使用 systemctl status
后面跟上服务名称,来检查服务是正在运行、处于活动状态还是已失败。
例如,要检查 ssh
服务(处理安全远程登录)的状态,你通常会运行:
systemctl status ssh
输出可能如下所示(具体细节可能会有所不同):
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since ...
Docs: man:sshd(8)
man:ssh(1)
Main PID: ... (sshd)
Tasks: ... (limit: ...)
Memory: ...
CPU: ...
CGroup: /system.slice/ssh.service
└─... /usr/sbin/sshd -D
...
输出中需要关注的关键信息:
Loaded
:显示服务配置是否已正确加载。Active
:指示服务的当前状态(例如,active (running)
、inactive (dead)
、failed
)。Main PID
:服务主进程的进程 ID。尽管你在这里无法运行 systemctl
,但了解这个命令对于在其他 Linux 系统上管理服务很重要。
为了模拟检查服务状态并练习命令执行,让我们再次使用 echo
来打印一条消息,表明你已经了解了 systemctl status
。
在你的终端中输入以下命令:
echo "Learned about systemctl status"
按下回车键。
这个命令只是确认你已经阅读并理解了使用 systemctl status
的概念。
点击 继续 以继续操作。
在这一步中,你将了解另一个用于管理服务的命令——service
命令。该命令常用于不使用 systemd
的系统,或者为了与旧的初始化系统(init system)保持兼容。
service
命令为启动、停止、重启和检查服务状态提供了一个更简单的接口。
使用 service
命令检查服务状态的基本语法如下:
service <service-name> status
与 systemctl
类似,你需要将 <service-name>
替换为你要检查的实际服务名称。
例如,在安装了 apache2
Web 服务器并使用 service
命令进行管理的系统上,你可以这样检查其状态:
service apache2 status
输出通常会表明该服务是否正在运行。
同样,由于这个 LabEx 环境是容器化的,你无法直接执行此命令,但了解 service
命令对于使用不同的 Linux 系统很有价值。
为了确认你已经了解了 service
命令,请使用 echo
命令打印一条确认消息。
在你的终端中输入以下命令:
echo "Understood service command"
按下回车键。
此操作标志着你已完成此步骤并了解了 service
命令。
点击 继续 进入下一步。
在这一步中,你将学习如何使用 ps aux
命令查找与服务关联的进程,以此来验证服务是否正在运行。这是查看系统中当前正在执行的程序的基本方法。
ps
命令会报告当前进程的快照。aux
选项通常用于显示所有用户的进程(a
),包括那些未连接到终端的进程(x
),并以用户友好的格式显示详细信息(u
)。
当一个服务正在运行时,通常会有一个或多个与之关联的进程。你可以使用 ps aux
并将其输出通过管道传递给 grep
,以过滤出与特定服务相关的进程。
例如,要查看是否有与 ssh
服务相关的进程,你可以使用:
ps aux | grep ssh
让我们在我们的 LabEx 环境中尝试一下。我们知道终端本身就是一个正在运行的进程。让我们使用 ps aux
来查找 zsh
shell 的进程。
在你的终端中输入以下命令:
ps aux | grep zsh
按下回车键。
你应该会看到类似以下的输出:
labex ... ... ... ... ? Ss ... ...:.. /usr/bin/zsh
labex ... ... ... ... ? S+ ... ...:.. grep --color=auto zsh
第一行显示的是 zsh
进程(即你的终端 shell),第二行显示的是你刚刚运行的 grep
命令(它本身也是一个进程!)。
这种方法(ps aux | grep <service-name>
)是一种强大的方式,通过检查服务的活动进程来确认服务是否真的在运行,特别是当 systemctl
或 service
命令不可用或无法提供足够详细信息时。
要完成这一步,请使用 echo
来确认你已经练习了将 ps aux
与 grep
结合使用。
输入以下命令:
echo "Practiced ps aux with grep"
按下回车键。
点击 继续 完成实验。
在本次实验中,你学习了如何使用多种方法检查 Linux 系统中服务的状态。你了解了 systemctl status
命令,这是在使用 systemd
的现代 Linux 系统上检查服务状态的标准方法,不过由于实验环境的原因,直接执行是模拟的。你还学习了如何使用较旧的 service
命令确认服务状态,以及如何通过使用 ps aux
检查进程列表来验证正在运行的服务进程。这些步骤为确定特定服务是否在 Linux 系统上处于活动和运行状态提供了全面的方法。