Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux查询服务和定位可执行文件

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

作者: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查询服务和定位可执行文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文