1. 前言
本文主要讲解如何在Linux系统上查看服务的运行状态。
Linux系统提供各种系统服务(如进程管理、登录服务、日志、计划任务等)和网络服务(如远程登录、电子邮件、打印机、web主机、数据存储、文件传输、域名解析(使用DNS)、动态IP地址分配(使用DHCP)等等)。
从技术上讲,服务是一个进程或一组进程(通常称为守护进程),在后台连续运行,等待请求(特别是来自客户机的请求)。
Linux支持不同的方式来管理服务,比如启动、停止、重启、开机自启动等,大多数最新的Linux发行版在使用相同的进程管理器-systemd。
systemd是Linux系统和服务管理器init进程的一个替代品,它与SysV和LSB init脚本兼容,systemctl命令是管理systemd的主要工具。
systemd的组件:
在本教程中,我们将演示如何查看Linux系统中systemd可管理的所有服务。
2. 如何查看Linux系统中systemd可管理的所有服务
当您不带任何参数运行systemctl命令时,它将打印所有已加载的systemd单元的列表(请阅读systemd文档以获得有关systemd单元的更多信息)。显示各服务单元的状态(无论是活动的还是非活动的)。
- systemctl
列出系统上所有已加载的服务,查看它们活动状态,是否正在运行、是否关闭、是否启动失败。
- systemctl list-units --type=service
或者
- systemctl --type=service
要列出所有已加载但已经设置开机自启动的服务
- systemctl list-units --type=service --state=active
- systemctl --type=service --state=active
查看所有正在运行的服务:
- systemctl list-units --type=service --state=running
- systemctl --type=service --state=running
如果经常使用前面的命令,可以在创建别名命令,编辑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上监听。
此外,如果您的服务器防火墙服务运行的状态,使用以下命令查看已经允许或者阻塞的端口或者服务
- firewall-cmd --list-services
- firewall-cmd --list-ports
Ubuntu 用户
- sudo ufw status
3. 总结
在本教程中,我们演示了如何在Linux中查看systemd下运行的服务及这些服务的运行状态。我们还介绍了如何检查服务正在监听的端口,以及如何查看在防火墙服务已经允许或者阻塞的服务和端口号。