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查询服务和定位可执行文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论