用Systemctl列出Linux的服务

评论 0 浏览 0 2020-12-24

在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 nginxsystemctl 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服务,并检查它们的状态。

如果你有任何问题或反馈,请随时在下面发表意见。

最后更新2023-03-11
0 个评论
标签