Linux系统如何查看服务的运行状态

1. 前言

本文主要讲解如何在Linux系统上查看服务的运行状态。

Linux系统提供各种系统服务(如进程管理、登录服务、日志、计划任务等)和网络服务(如远程登录、电子邮件、打印机、web主机、数据存储、文件传输、域名解析(使用DNS)、动态IP地址分配(使用DHCP)等等)。

Linux系统如何查看服务的运行状态

从技术上讲,服务是一个进程或一组进程(通常称为守护进程),在后台连续运行,等待请求(特别是来自客户机的请求)。

Linux支持不同的方式来管理服务,比如启动、停止、重启、开机自启动等,大多数最新的Linux发行版在使用相同的进程管理器-systemd。

systemd是Linux系统和服务管理器init进程的一个替代品,它与SysV和LSB init脚本兼容,systemctl命令是管理systemd的主要工具。

systemd的组件:

Linux系统如何查看服务的运行状态

在本教程中,我们将演示如何查看Linux系统中systemd可管理的所有服务。

2. 如何查看Linux系统中systemd可管理的所有服务

当您不带任何参数运行systemctl命令时,它将打印所有已加载的systemd单元的列表(请阅读systemd文档以获得有关systemd单元的更多信息)。显示各服务单元的状态(无论是活动的还是非活动的)。

systemctl 

Linux系统如何查看服务的运行状态

列出系统上所有已加载的服务,查看它们活动状态,是否正在运行、是否关闭、是否启动失败。

systemctl list-units --type=service 

或者

systemctl --type=service 

Linux系统如何查看服务的运行状态

要列出所有已加载但已经设置开机自启动的服务

systemctl list-units --type=service --state=active 
systemctl --type=service --state=active 

Linux系统如何查看服务的运行状态

查看所有正在运行的服务:

systemctl list-units --type=service --state=running 
systemctl --type=service --state=running 

Linux系统如何查看服务的运行状态

如果经常使用前面的命令,可以在创建别名命令,编辑bashrc文件

vim ~/.bashrc 

添加以下内容,创建别名命令running_services。

alias running_services='systemctl list-units  --type=service  --state=running' 

保存文件并退出。使用running_services命令查看服务器上所有已加载、正在运行的服务的列表。

ss -ltup | grep sshd 
running_services 

此外,服务的一个重要方面是它们使用的端口。要确定守护进程监听的端口,可以使用netstat或ss工具,如下所示。

其中-l选项表示打印所有监听的套接字,-t显示所有TCP连接,-u显示所有UDP连接,-n表示打印数字端口号(而不是应用程序名称),-p表示显示应用程序名称。

netstat -ltup | grep sshd 

或者

ss -ltup | grep sshd 

第五列显示套接字:本地地址:端口。在本例中,进程sshd正在端口22上监听。

Linux系统如何查看服务的运行状态

此外,如果您的服务器防火墙服务运行的状态,使用以下命令查看已经允许或者阻塞的端口或者服务

Linux系统如何查看服务的运行状态

firewall-cmd --list-services 
firewall-cmd --list-ports 

Ubuntu 用户

sudo ufw status