菜鸟科技网

Unix查看服务有哪些常用命令?

在Unix和Linux系统中,管理服务是系统管理员的核心任务之一,掌握查看服务的命令对于监控系统状态、排查故障至关重要,Unix系统提供了多种命令来查看服务的运行状态、依赖关系、资源占用等信息,下面将详细介绍这些命令的使用方法和场景。

Unix查看服务有哪些常用命令?-图1
(图片来源网络,侵删)

基础服务查看命令

  1. ps命令
    ps(Process Status)用于查看当前进程的快照,通过结合不同的选项可以筛选出服务进程。ps -ef显示所有进程的详细信息(UID、PID、PPID、CSTIME、TTY、TIME、CMD),其中CMD列通常包含服务名称或启动命令,若需查看特定服务,可使用grep过滤,如ps -ef | grep nginxps aux则以用户为中心显示进程,包含CPU、内存占用率(%CPU、%MEM),适合分析资源消耗。

  2. systemctl命令(现代系统)
    对于使用systemd的发行版(如Ubuntu 16+、CentOS 7+),systemctl是核心工具。systemctl list-units --type=service列出所有单元(Unit),包括服务的加载状态(loaded)、活动状态(active)、子状态(running)等。systemctl status 服务名(如systemctl status httpd)显示服务的详细状态、日志和进程信息。systemctl is-enabled 服务名检查服务是否开机自启。

服务状态与日志分析

  1. service命令
    在较旧的SysVinit系统中,service命令用于管理服务,如service --status-all列出所有服务的状态(用表示运行,表示停止),service 服务名 status查看特定服务状态,该命令在systemd系统中逐渐被systemctl取代。

  2. journalctl命令
    结合systemctl使用时,journalctl -u 服务名可查看服务的系统日志,如journalctl -u nginx.service --since today显示今日的Nginx日志,适合排查服务启动失败或运行异常问题。

    Unix查看服务有哪些常用命令?-图2
    (图片来源网络,侵删)

端口与进程关联

  1. netstatss命令
    服务通常监听特定端口,netstat -tuln显示所有TCP/UDP监听端口及对应进程ID(PID),通过netstat -tuln | grep :80可筛选Web服务端口。ssnetstat的替代品,速度更快,语法类似,如ss -tulnp | grep :80-p选项显示PID和进程名。

服务依赖与树状结构

  1. pstree命令
    pstree -p以树状结构展示进程的父子关系,帮助理解服务的依赖链。pstree -p | grep httpd可查看Apache进程的父进程和子进程,判断服务是否由进程管理器(如supervisord)启动。

第三方工具

部分系统使用chkconfig(CentOS 6)管理开机自启服务,chkconfig --list列出所有服务的启动级别状态;upstart系统(如Ubuntu 14.04)则通过initctl list查看服务状态。

常用命令对比表

命令 适用系统 核心功能 示例
ps -ef 所有Unix 查看所有进程详情 ps -ef \| grep mysql
systemctl systemd系统 管理服务状态、日志、开机自启 systemctl status sshd
service SysVinit 查看/控制服务状态 service apache2 status
ss -tulnp Linux 2.6+ 查看监听端口及关联进程 ss -tulnp \| grep :3306
journalctl systemd系统 查看服务日志 journalctl -u docker.service

相关问答FAQs

Q1: 如何判断服务是否正在运行?
A1: 可通过多种方式判断:

  • 使用systemctl is-active 服务名,返回active表示运行;
  • 使用ps -ef | grep 服务名,若返回包含服务进程的行(注意排除grep自身),则服务运行;
  • 使用netstat -tuln | grep 端口号,若端口处于监听状态(LISTEN),则服务可能运行。

Q2: 服务启动失败后如何定位问题?
A2: 可按以下步骤排查:

  1. 使用systemctl status 服务名查看错误日志,重点关注Active: failed及日志中的错误信息;
  2. 使用journalctl -u 服务名 --no-pager查看详细日志,结合grep过滤关键词(如"error");
  3. 检查服务配置文件语法是否正确,如nginx -t(Nginx)、httpd -t(Apache);
  4. 确认资源是否充足(如内存、文件描述符),可通过ulimit -a查看限制。
Unix查看服务有哪些常用命令?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇