在Linux系统中,查看服务(即守护进程)通常取决于所使用的初始化系统(init system)。现代主流发行版(如CentOS 7+、Ubuntu 15.04+、Debian 8+、Fedora、RHEL 7+)均采用systemd作为服务管理器。对于仍使用SysVinit或Upstart的旧版系统,命令有所不同。以下分别介绍专业、准确的查看方法。

若系统使用systemd,主要通过systemctl命令进行服务管理。要列出所有已加载的服务单元(包括运行中、已退出、失败等状态),使用命令:systemctl list-units --type=service。该命令会输出服务名称、加载状态、激活状态(active/inactive)、子状态(running/exited/dead)以及描述。若只查看正在运行的服务,可加参数--state=running:systemctl list-units --type=service --state=running。若要查看所有已安装的服务单元文件(包括未加载的),使用systemctl list-unit-files --type=service,输出会显示每个服务是否启用(enabled/disabled/static)。对于单个服务的详细状态(包括进程ID、主进程PID、内存、日志片段等),使用systemctl status <服务名>,例如systemctl status sshd。
对于使用SysVinit的旧版系统(如CentOS 6、Ubuntu 14.04及更早),服务查看通过service命令和chkconfig工具实现。命令service --status-all会列出所有/etc/init.d/下的服务脚本及其当前运行状态(通常以绿色[+]表示运行,红色[-]表示停止)。若要查看单个服务状态,使用service <服务名> status,例如service httpd status。此外,chkconfig --list可显示所有SysV服务的运行级别启用情况。若系统使用Upstart(如Ubuntu 14.04),则通过initctl list查看所有Upstart任务状态。
除上述系统级服务管理工具外,还可通过ps命令直接查看进程。例如ps aux | grep <服务名>可过滤出特定服务进程,但此方法仅显示进程本身,不提供服务单元的状态信息(如是否启用、是否自动重启等)。对于更详细的进程树,使用pstree或pgrep。另外,netstat -tulpn或ss -tulpn可查看当前监听端口对应的服务进程,有助于定位网络服务。
在实际运维中,最推荐且最专业的方式是:先确认初始化系统类型(可通过ps -p 1 -o comm=查看PID 1的进程名,若为systemd则输出systemd,为init则输出init或upstart)。然后根据系统类型选择对应命令。对于systemd系统,systemctl list-units --type=service是查看服务状态的权威命令;对于SysVinit系统,service --status-all是标准做法。此外,journalctl -u <服务名>可查看服务日志,systemctl is-enabled <服务名>可检查服务是否开机自启。

查看详情

查看详情