Linux系统提供各种系统服务(如进程管理、登录、syslog、cron等)和网络服务(如远程登录、电子邮件、打印机、Web主机、数据存储、文件传输、域名解析(使用DNS)、动态IP地址分配(使用DHCP)等等)。
从技术上讲,服务是一个或一组进程(通常称为守护进程)在后台连续运行,等待请求(特别是来自客户机的请求)。
Linux支持不同的方法来管理服务(启动、停止、重启、在系统启动时的自动启动等),通常通过流程或服务管理器。 大多数现代Linux发行版现在使用相同的进程管理器:systemd。
Systemd是Linux的系统和服务管理器; init进程的替代品,与SysV和LSB init脚本兼容,systemctl命令是管理systemd的主要工具。
在本指南中,我们将演示如何在Linux下列出systemd下所有正在运行的服务。
在Linux SystemD下列出正在运行的服务
当您运行没有任何参数的systemctl命令时,它将显示所有已加载的systemd单元(有关systemd单元的更多信息,请阅读systemd文档)的列表,包括服务,并显示它们的状态(是否处于活动状态)。
# systemctl
要列出系统上所有已加载的服务(无论是活动的,运行的,退出的还是失败的,请使用 list-units子命令和--type开关,其值为service。
# systemctl list-units --type=service
或者
# systemctl --type=service
要列出所有已加载但处于活动状态的服务,包括正在运行的服务和已退出的服务,可以添加--state选项,其值为active,如下所示。
# 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
然后在别名列表下添加以下行,如屏幕截图所示。
alias running_services='systemctl list-units --type=service --state=running'
将更改保存在文件中并关闭它。 从现在开始,使用“running_services”命令查看服务器上所有已加载,正在运行的服务的列表。
# running_services #使用Tab完成
此外,服务的一个重要方面是他们使用的端口。 要确定守护程序进程正在侦听的端口,可以使用netstat或ss工具,如图所示。
其中标志-l表示打印所有侦听套接字,-t显示所有TCP连接,-u表示所有UDP连接,-n表示打印数字端口号(而不是应用程序名称),-p表示显示应用程序名称。
# netstat -ltup | grep MySQLd.service
或者
# ss -ltup | grep zabbix_agentd
第五列显示套接字:本地地址:端口。 在这种情况下,进程zabbix_agentd正在侦听端口10050。
此外,如果您的服务器运行防火墙服务,该服务控制如何阻止或允许来自或来自所选服务或端口的流量,您可以使用firewall-cmd或ufw命令列出已在防火墙中打开的服务或端口( 取决于您正在使用的Linux发行版),如下所示。
# firewall-cmd --list-services [FirewallD]
# firewall-cmd --list-ports
$ sudo ufw status [UFW Firewall]
总结
目前为止就这样了! 在本指南中,我们演示了如何在Linux下查看systemd下的运行服务。 我们还介绍了如何检查服务正在侦听的端口以及如何查看在系统防火墙中打开的服务或端口。 你有任何补充或提问吗? 如果有,请使用下面的评论表联系我们。