用Systemctl列出Linux的服务
在Linux中,服务是一个在后台中运行的程序。服务可以按需或在开机时启动。
如果你使用Linux作为你的主要操作系统或开发,平台,你将处理不同的服务,如webserver、ssh或,cron。在调试系统问题时,知道如何列出正在运行的服务或检查服务状态是很重要的。
最近的大多数Linux发行版都使用systemd作为默认的init系统和服务管理器。
Systemd是一套用于管理Linux系统的工具。它用于启动机器、管理服务、自动装载文件系统、记录事件、设置主机名和其他系统任务。
这篇文章解释了如何在Linux中列出服务项目。
列表中的Linux服务
Systemd使用单元的概念,它可以是服务、sockets、挂载点、设备等。单元是用ini
格式的文本文件定义的。这些文件包括单元的信息、单元的设置以及要执行的命令。文件名的扩展名定义了单元文件的类型。例如,系统服务单元文件的扩展名是.service
。
systemctl
是一个命令行工具,用于控制systemd和管理服务。它是systemd生态系统的一部分,在所有系统中默认可用。
要获得所有已加载的服务单元的列表,请键入。
sudo systemctl list-units --type service
输出
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
...
每行输出包含以下几列,从左到右。
UNIT
- 服务单位的名称。LOAD
- 关于单元文件是否已经加载到内存中的信息。ACTIVE
- 高级单元文件的激活状态,可以是活动、重新加载、不激活、失败、激活、停用。它是SUB
列的概括。SUB
- 低级单元文件的激活状态。这个字段的值取决于单元类型。例如,一个服务类型的单元可以处于以下状态之一,死亡、退出、失败、不活动或运行。DESCRIPTION
- 单元文件的简短描述。
默认情况下,该命令只列出已加载的活动单位。要想看到已加载但不活动的单位,请通过--all
选项。
sudo systemctl list-units --type service --all
如果你想查看所有已安装的单元文件,而不仅仅是已加载的文件,请使用。
sudo systemctl list-unit-files
显示服务的状态
要检查一个服务的状态,请使用systemctl status
命令。
sudo systemctl status <service_name>.service
其中<service_name>
是你想检查的服务单元的名称。例如,要确定nginx服务的当前状态,你需要运行。
sudo systemctl status nginx.service
你可以省略后缀".service"。
systemctl status nginx
与systemctl status nginx.service
相同。
输出
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-12-23 19:13:50 UTC; 5s ago
Docs: man:nginx(8)
Process: 3061052 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 3061063 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 3061064 (nginx)
Tasks: 2 (limit: 470)
Memory: 6.0M
CGroup: /system.slice/nginx.service
├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─3061065 nginx: worker process
Dec 23 19:13:50 linuxize.dev systemd[1]: Starting A high performance web server and a reverse proxy server...
该命令将打印出以下信息。
Loaded
- 服务单元是否已经被加载,以及单元文件的完整路径。它还显示该单元是否被启用以在开机时启动。Active
- 该服务是否处于活动和运行状态。如果你的终端支持颜色,并且服务处于活动和运行状态,点(●
)和 "active (running)"部分将被打印成绿色。该行还显示了该服务运行的时间。Docs
--服务文件。Process
- 关于服务进程的信息。Main PID
- 服务的PID。Tasks
- 该单位所占的任务数和任务限制。Memory
- 关于已使用的内存的信息。CGroup
- 相关的控制组的信息。
如果你只想检查服务状态,使用systemctl is-active
命令。例如,要验证nginx服务正在运行,可以运行。
systemctl is-active nginx.service
输出
active
该命令将向你显示服务状态。如果服务处于活动状态,该命令会返回一个退出状态0,这对在shell脚本中使用该命令很有用。
总结
我们已经向你展示了如何使用systemctl
命令来列出Linux服务,并检查它们的状态。
如果你有任何问题或反馈,请随时在下面发表意见。