strace 是一个强大的 Linux 命令行工具,用于跟踪系统调用和信号。它可以用来诊断问题、调试程序或了解程序与操作系统之间的交互。以下是如何使用 strace 跟踪进程的步骤:
在大多数 Linux 发行版中,strace 已经预装。如果没有,可以使用包管理器进行安装。例如,在基于 Debian 的系统上,可以使用以下命令安装:
sudo apt-get update
sudo apt-get install strace
跟踪单个进程
要跟踪一个正在运行的进程,可以使用 -p 选项,后跟进程 ID(PID):
strace -p <PID>
例如,要跟踪 PID 为 1234 的进程:
strace -p 1234
跟踪新启动的进程
要跟踪一个新启动的进程,可以在命令行前加上 strace,然后是你要执行的命令及其参数:
strace your_command [arguments]
例如,要跟踪 ls 命令的执行:
strace ls
跟踪所有子进程
要跟踪一个进程及其所有子进程,可以使用 -f 选项:
strace -f -p <PID>
输出到文件
默认情况下,strace 的输出会打印到终端。要将输出重定向到文件,可以使用 -o 选项:
strace -o output.txt -p <PID>
限制跟踪的系统调用
使用 -e 选项可以限制 strace 跟踪的系统调用。例如,只跟踪 read 和 write 系统调用:
strace -e trace=read,write -p <PID>
跟踪信号
使用 -e 选项还可以跟踪特定的信号。例如,跟踪 SIGINT(中断信号):
strace -e trace=signal=SIGINT -p <PID>
时间戳
使用 -T 选项可以在输出中添加时间戳:
strace -T -p <PID>
strace 可能会对程序的性能产生影响,特别是在跟踪大量系统调用时。strace 时要小心,因为它可能会暴露敏感信息。通过这些基本和高级用法,你应该能够有效地使用 strace 来跟踪和分析进程的行为。