4

如何使用Systemctl列出Linux服务

 3 years ago
source link: https://www.myfreax.com/listing-linux-services-with-systemctl/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在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服务并检查其状态。

如果您有任何疑问或反馈,请在下面发表评论。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK