一文详解Linux如何查询服务和定位可执行文件

 更新时间:2025年11月18日 08:40:14   作者:ayaya_mana  
这篇文章主要为大家详细介绍了Linux中查询服务和定位可执行文件的相关命令,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

1 查看所有运行服务

1.1 使用systemd系统

# 查看所有正在运行的服务
systemctl list-units --type=service --state=running

# 查看所有服务(包括未运行的)
systemctl list-unit-files --type=service

1.2 使用传统SysVinit系统

# 查看所有服务状态
service --status-all

# 或使用init.d目录
ls /etc/init.d/

2 查看特定服务的详细信息

使用systemctl status命令可以获取服务的详细状态信息,包括主进程ID和可执行文件路径【turn0search8】:

systemctl status nginx.service

输出示例:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2024-01-10 14:30:45 CST; 2 days ago
 Main PID: 1237 (nginx)
    Tasks: 3 (limit: 4915)
   Memory: 10.5M
   CGroup: /system.slice/nginx.service
           ├─1237 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ├─1238 nginx: worker process
           └─1239 nginx: worker process

3 定位服务安装文件位置

3.1 通过进程ID定位可执行文件

获取进程PID

ps -ef | grep nginx
# 或使用pgrep
pgrep nginx

通过/proc文件系统查看

ls -l /proc/1237/exe
# 或使用readlink获取真实路径
readlink -f /proc/1237/exe

使用lsof命令

lsof -p 1237 | grep txt

3.2 通过包管理器查询安装文件

RPM系统(CentOS/RHEL/Fedora)

# 查看软件包安装的所有文件
rpm -ql nginx

# 查看未安装包将安装的文件
rpm -qpl nginx-package.rpm

Debian系统(Ubuntu/Debian)

# 查看软件包安装的所有文件
dpkg -L nginx

# 查看未安装包将安装的文件
dpkg -c nginx-package.deb

3.3 使用which和whereis命令

# 查找可执行文件路径
which nginx

# 查找二进制文件、源文件和帮助文档位置
whereis nginx

4 高级技巧与实用方法

4.1 查看服务配置文件位置

# 对于systemd服务
systemctl show nginx --property=FragmentPath

# 查看环境文件位置
systemctl show nginx --property=EnvironmentFile

4.2 使用pstree查看进程树

# 显示进程树及PID
pstree -p | grep nginx

# 显示完整命令行参数
pstree -a | grep nginx

4.3 查找服务相关所有文件

# 结合find命令查找相关文件
find / -name "*nginx*" 2>/dev/null

# 查找配置文件
rpm -qc nginx  # RPM系统
dpkg -L nginx | grep -E '\.conf$'  # Debian系统

5 应用示例

定位Nginx服务

查看服务状态

systemctl status nginx

获取主进程PID(假设为1237)

定位可执行文件

readlink -f /proc/1237/exe
# 输出:/usr/sbin/nginx

查找配置文件

rpm -qc nginx  # 或 dpkg -L nginx | grep conf

列出所有安装文件

rpm -ql nginx  # 或 dpkg -L nginx

6 常见问题与解决方案

问题解决方案
权限不足使用sudo执行命令或切换到root用户
找不到服务确认服务名称是否正确,使用通配符搜索
符号链接问题使用readlink -f获取真实路径
容器环境在容器内执行相同命令或使用docker inspect

到此这篇关于一文详解Linux如何查询服务和定位可执行文件的文章就介绍到这了,更多相关Linux查询服务和定位可执行文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux服务器上创建python虚拟环境过程

    linux服务器上创建python虚拟环境过程

    在Linux服务器上创建Python虚拟环境时,由于需要更高版本的Python(如3.10.0),首先确保openssl版本符合要求,如果openssl版本不足,需要升级,升级openssl后,设置环境变量,并在编译安装Python时指定openssl版本,最后,创建并激活Python虚拟环境
    2025-03-03
  • 通过yum升级CentOS/RHEL最小化安装的方法

    通过yum升级CentOS/RHEL最小化安装的方法

    下面小编就为大家带来一篇通过yum升级CentOS/RHEL最小化安装的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • linux下安装boost库的完整步骤记录

    linux下安装boost库的完整步骤记录

    Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,,作为标准库的后备,是C++标准化进程的发动机之一,下面这篇文章主要给大家介绍了关于如何在linux下安装boost库的完整步骤,需要的朋友可以参考下
    2018-11-11
  • linux设置hosts全过程

    linux设置hosts全过程

    这篇文章主要介绍了linux设置hosts全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Linux安装多个jdk版本进行切换

    Linux安装多个jdk版本进行切换

    这篇文章主要为大家详细介绍了Linux安装多个jdk版本进行切换的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Apache ab并发负载压力测试实现方法

    Apache ab并发负载压力测试实现方法

    Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力
    2019-09-09
  • linux free命令以及系统内存占用过高的处理方式

    linux free命令以及系统内存占用过高的处理方式

    这篇文章主要介绍了linux free命令以及系统内存占用过高的处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Linux下apache如何限制并发连接和下载速度

    Linux下apache如何限制并发连接和下载速度

    在Linux下限值Apache的并发连接数和下载速度需要用到一款Apache的扩展模块mod_limitipconn,下面我们就来讨论mod_limitipconn的安装使用方法
    2014-11-11
  • Linux之RabbitMQ集群部署过程

    Linux之RabbitMQ集群部署过程

    文章主要介绍了RabbitMQ消息中间件的原理、作用、优点、常用模式和配置,以及与Kafka的对比,并详细讲解了RabbitMQ集群的搭建过程,包括节点配置、数据存储、防火墙设置、集群策略设置等,最后提供了常见问题的解决方法,文章还补充介绍了负载均衡器haproxy的安装和配置
    2026-05-05
  • CentOS8 yum/dnf 配置国内源的方法

    CentOS8 yum/dnf 配置国内源的方法

    这篇文章主要介绍了CentOS8 yum/dnf 配置国内源的方法,需要的朋友可以参考下
    2019-10-10

最新评论