在 Debian(以及大多数 Linux 发行版)里,“进程依赖”通常可以指几种不同场景。下面按常见需求分类说明如何查看。
常用于排查“缺少 libxxx.so”之类问题。
ldd(最常用)ldd /path/to/binary
或针对正在运行的进程:
ldd /proc/<PID>/exe
示例:
ldd /bin/ls
⚠️ 注意:不要对不信任的程序用 ldd(它可能执行代码)。
cat /proc/<PID>/maps查看进程当前加载了哪些库文件:
cat /proc/1234/maps
更直观一点:
ls -l /proc/1234/map_files/
pmappmap <PID>
如果你想看“某个进程来自哪个 deb 包,以及它依赖什么包”。
which nginx
# 或
readlink /proc/<PID>/exe
dpkg -S /usr/sbin/nginx
apt-cache depends nginx
或
dpkg -s nginx
例如 systemd 服务之间的依赖。
systemctl list-dependencies nginx
反向依赖(谁依赖它):
systemctl list-dependencies --reverse nginx
ps -ef
pstree -p <PID>
lsof -p <PID>
| 目的 | 命令 |
|---|---|
| 查看程序依赖的库 | ldd |
| 查看运行中进程加载的库 | /proc/PID/maps |
| 查看进程所属 deb 包 | dpkg -S |
| 查看包依赖 | apt-cache depends |
| 查看服务依赖 | systemctl list-dependencies |
| 查看进程打开的文件 | lsof -p |
如果你能具体说一下是**“缺库”“服务启动失败”“性能分析”还是“安全审计”**,我可以给你更针对性的命令示例。