答案:使用systemctl list-units --type=service --state=running命令可列出Linux系统中由systemd管理的正在运行的服务,该命令适用于CentOS 7/8、Ubuntu 16.04+等现代发行版,能清晰展示服务名称、状态及描述,是查看运行服务的首选方法。

在Linux系统上,要列出所有正在运行的服务,最直接有效的方法是使用
systemctl list-units --type=service --state=running
在我日常维护Linux服务器时,发现列出运行中的服务是一个非常基础但又频繁的操作。不同的场景和系统版本,我们可能会用到不同的命令,但核心目标都是一样的:了解系统当前有哪些后台任务在默默工作。
首先,对于大多数现代Linux发行版,
systemd
systemctl
systemctl list-units --type=service --state=running
这条命令的输出通常包括服务名称(UNIT)、加载状态(LOAD)、活动状态(ACTIVE)、子状态(SUB)以及简短描述。
LOAD
ACTIVE
SUB
running
有时候,我可能想看所有服务,无论它们是否运行,以便了解系统可能启动的服务有哪些,这时我会用:
systemctl list-units --type=service --all
然后通过
grep running
ACTIVE
对于一些较老的系统,或者那些仍然依赖
SysVinit
Upstart
service
service --status-all
这个命令会列出所有通过
SysVinit
[ + ]
[ - ]
[ ? ]
systemctl
systemd
最后,如果你想从更底层的进程角度去理解,
ps
grep
ps aux | grep -i 'service_name'
例如,要查看Apache进程,你可以
ps aux | grep httpd
systemctl
ps
在Linux的世界里,服务管理工具的演变本身就是一段有趣的历史,也常常让人感到困惑。我个人觉得,理解它们之间的差异,对于我们高效管理系统至关重要。
最主要的两种服务管理体系是
SysVinit
systemd
SysVinit
SysVinit
/etc/init.d/
systemd
SysVinit
systemd
systemd
.service
/etc/systemd/system/
/usr/lib/systemd/system/
systemctl
systemd
systemd
介于两者之间,还有
Upstart
SysVinit
systemd
Upstart
所以,当我们谈论“服务管理工具”时,现在基本上就是指
systemd
systemctl
service
/etc/init.d/
判断一个服务是否异常或崩溃,这可不只是看它是否“运行中”那么简单。有时候服务虽然显示“running”,但实际上可能已经卡死、资源耗尽或者功能不正常。这就像一个人虽然睁着眼睛,但可能已经神志不清了。
我通常会采取多维度的方法来诊断:
systemctl status <service_name>
Active:
active (running)
active (exited)
inactive (dead)
failed
failed
CGroup:
Main PID:
journalctl -u <service_name>
systemd
journald
journalctl -u <service_name>
-e
-f
error
failed
exception
segfault
检查服务自身的日志文件: 很多应用程序服务(例如Web服务器Nginx、数据库MySQL)除了向
journald
/var/log/
/var/log/nginx/error.log
/var/log/mysql/error.log
journalctl
tail -f
资源监控: 一个“假死”的服务可能仍然在运行,但却消耗了异常的CPU、内存或I/O资源。我会使用
top
htop
free -h
iostat
ps aux --sort=-%mem | head
ps aux --sort=-%cpu | head
网络连接状态: 对于提供网络服务的应用,检查其监听端口是否正常也是一个好方法。
netstat -tulnp | grep <port_number>
ss -tulnp | grep <port_number>
通过这些方法组合使用,我通常能比较全面地判断一个服务的健康状况,并快速定位问题所在。
在没有图形界面的Linux服务器上管理服务,这几乎是每一个Linux系统管理员的日常。我个人觉得,命令行(CLI)虽然初看起来有些生硬,但一旦掌握,它的效率和灵活性是图形界面无法比拟的。
熟练运用systemctl
systemctl start nginx
systemctl enable nginx
systemctl restart mysql
利用grep
awk
systemctl list-units
grep
systemctl list-units --type=service --state=running | grep ssh
awk
sed
使用tmux
screen
tmux
screen
日志的实时监控与分析:
journalctl -f
tail -f /var/log/some_service.log
grep
journalctl -f -u nginx | grep error
SSH密钥认证与别名: 频繁登录服务器,每次输入密码是很低效的。配置SSH密钥认证(
ssh-keygen
ssh-copy-id
~/.ssh/config
Host myserver
Hostname 192.168.1.100
User admin
ssh myserver
简单的Shell脚本: 对于一些重复性的检查或管理任务,我会编写简单的Shell脚本来自动化。比如,一个脚本可以检查多个关键服务的运行状态,并在发现异常时发送通知。虽然不是复杂的配置管理工具,但对于个人或小型团队来说,这种轻量级的自动化非常实用。
通过这些命令行工具和技巧,即使没有图形界面,我们也能高效、精准地管理Linux服务器上的各项服务。
以上就是Linux如何列出所有正在运行的服务的详细内容,更多请关注php中文网其它相关文章!
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号