在Linux中,服务是在后台运行的程序。服务可以按需启动,也可以在启动时启动。
如果您使用Linux作为主要操作系统或开发平台,那么您将处理不同的服务,例如webserver,ssh或cron。在调试系统问题时,了解如何列出正在运行的服务或检查服务状态非常重要。
最近的大多数Linux发行版都使用systemd作为默认的初始化系统和服务管理器。
Systemd是一套用于管理Linux系统的工具。它用于启动计算机,管理服务,自动挂载文件系统,日志事件,设置主机名和其他系统任务。
本文介绍了如何在Linux中列出服务。
列出Linux服务
Systemd使用unit单元的概念,可以是服务,sockets套接字,mount points挂载点,devices等。使用ini
格式定义的文本文件来定义unit单元。这些文件包括有关设备和其设置和要执行的命令的信息。文件扩展名定义unit单位文件类型。例如,系统服务unit单元文件具有.service
扩展名。
systemctl
是一个命令行程序,用于控制systemd和管理服务。它是systemd生态系统的一部分,默认情况下在所有系统上都可用。
要获取所有已加载的服务unit单元的列表,请输入:
sudo systemctl list-units --type service
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
...
输出的每一行从左到右包含以下几列:
UNIT
-服务unit单位的名称。LOAD
-有关unit单元文件是否已加载到内存中的信息。ACTIVE
-高级别unit单位文件激活状态,可以是active活动,reloading重新加载,inactive非活动,failed失败,activating激活,deactivating停用。SUB
-低级别unit文件激活状态。该字段的值取决于单位类型。例如,服务单元类型可以处于以下状态之一:dead死亡,退出exited,失败failed,inactive不活动或running正在运行。DESCRIPTION
-unit文件的简短描述。
默认情况下,该命令仅列出已加载的活动unit。要同时查看已加载但无效的unit,请传递以下--all
选项:
sudo systemctl list-units --type service --all
如果要查看所有已安装的unit文件,而不仅仅是加载的unit文件,请使用:
sudo systemctl list-unit-files
显示服务状态
要检查服务的状态,请使用以下systemctl status
命令:
sudo systemctl status <service_name>.service
<service_name>
您要检查的服务unit的名称在哪里。例如,要确定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
-服务unit单元是否已加载以及单元文件的完整路径。它还显示是否在启动时启动了设备。Active
-服务是否处于活动状态并正在运行。如果您的终端支持颜色,并且该服务已启用并且正在运行,则点(●
)和“活动(正在运行)”部分将以绿色打印。该行还显示了服务运行了多长时间。Docs
-服务文档。Process
-有关服务进程的信息。Main PID
-服务PID。Tasks
-unit的任务数和任务限制。Memory
-有关已用内存的信息。CGroup
-有关控制组的信息。
如果只想检查服务状态,请使用systemctl is-active
命令。例如,要验证nginx服务正在运行,可以运行:
systemctl is-active nginx.service
active
该命令将向您显示服务状态。如果该服务处于活动状态,则该命令返回退出状态0,这在shell脚本中使用该命令时很有用。
结论
我们已经向您展示了如何使用该systemctl
命令列出Linux服务并检查其状态。
如果您有任何疑问或反馈,请在下面发表评论。