如何查看linux命令执行过程
如何查看linux命令执行过程详细介绍
在 Linux 系统中,查看命令的执行过程可以通过多种工具实现,具体方法取决于你需要监控的维度(如进程状态、系统调用、脚本执行步骤等)。以下是常用的几种方式:
一、监控进程状态与资源使用
ps命令(静态进程查看)
查看进程的当前状态、PID、CPU / 内存占用等信息:
bashaux 进程名或命令关键词进程名
top/htop命令(动态实时监控)top:实时显示系统资源占用,按Shift + :可输入命令(如pid <PID>聚焦特定进程)。htop(需额外安装,通常更易用):支持鼠标操作,清晰展示进程树和资源占用:bashdnf
二、跟踪系统调用与信号(
strace)
strace 可实时显示进程执行时发起的 系统调用(Kernel 级操作,如文件读写、网络请求等)和接收的信号,适合调试命令执行失败或异常行为。
用法:
bash
命令 参数PID
output.log 命令
示例:跟踪 ls /etc 的系统调用:
bash
/etc
输出会显示每一步系统调用(如 openat、readdir 等)及其返回值,帮助定位命令在哪个环节卡住或出错。
三、跟踪库函数调用(
ltrace)
与 strace 不同,ltrace 用于跟踪进程调用的 用户空间库函数(如 C 库函数 printf、fopen 等),适合分析程序对库函数的依赖。
用法:
bash
ltrace 命令 参数ltrace PID
示例:跟踪 echo "hello" 调用的库函数:
bash
ltrace
四、调试脚本执行过程(
sh -x/
bash -x)
如果需要查看 Shell 脚本 的执行步骤(逐行调试),可在运行脚本时添加 -x 选项,显示每一行代码及其变量展开后的内容。
用法:
bash
script.shscript.sh
示例:
bash
$ test.sh+
Start
+
+ num+5
+ "
五、查看进程树与依赖关系(
pstree/
systemd-cgtop)
pstree:以树状结构显示进程关系,清晰看到父进程与子进程的启动顺序:
bashpstree PID 或进程名pstree
systemd-cgtop(针对 systemd 管理的服务):
监控系统服务的资源占用和进程层次,适合查看后台服务的执行流程。
bashsystemd-cgtop
六、高级动态跟踪工具(适合深度分析)
systemtap(系统级动态跟踪):
基于 DTrace 框架,可自定义脚本跟踪内核或用户空间的函数,适合复杂性能分析(需安装systemtap包)。
bashstapbpftrace(轻量级 BPF 工具):
基于 eBPF 技术,简洁高效,可跟踪系统调用、函数执行时间等:
bashbpftrace
总结:按需选择工具
- 简单进程监控:
top/htop(实时资源)、ps/pstree(进程关系)。 - 系统调用级调试:
strace(内核操作)、ltrace(库函数)。 - 脚本调试:
sh -x/bash -x(逐行追踪)。 - 深度性能分析:
systemtap/bpftrace(自定义动态跟踪)。
根据具体场景选择合适的工具,通常从 strace 和 top 开始排查,逐步深入。如果需要跟踪后台服务,结合日志文件(如命令输出重定向到文件)会更高效。