strace是一个强大的命令行工具,用于Linux服务器中的进程监控、诊断和故障排除程序。一般来说,它用于截取和记录系统调用和进程接收的信号。你可以使用race来分析程序与系统的交互情况,以调试任何程序。
如果程序不断崩溃,或者没有按照预期的运行,这个工具非常有用。它可以深入了解系统的运行情况。任何用户都可以跟踪自己的运行进程。
在本教程中,我们将向您展示如何在Linux服务器上使用strace命令行工具。
安装Strace
默认情况下,所有Linux服务器系统的默认存储库中都有strace。
在 Debian 和 Ubuntu操作系统上,使用以下命令安装 strace。
apt-get install strace -y
在 RHEL 和 centos 操作系统上,使用以下命令安装 strace。
dnf install strace -y
安装完 strace 后,可以使用以下命令验证 strace 的版本。
strace -V
1. 追踪系统调用
strace ls file1.txt
strace的另一个用途(除了调试一些问题)是,你可以发现程序读取了哪些配置文件。
例如
strace php 2>&1 | grep php.ini
2. 过滤特定的系统调用
默认情况下,strace 会显示给定可执行文件的所有系统调用,如果您想只显示特定的系统调用,可以使用 strace -e 选项。如果您想只显示特定的系统调用,可以使用 strace -e 选项。
strace -e write ls file1.txt file2.txt
strace -e open ls file1.txt file2.txt
如果你想显示由特定进程(如 ssh)打开的文件,请运行以下命令。
strace -f -e open /usr/sbin/sshd 2>&1 | grep ssh
要跟踪与网络相关的系统调用,请运行以下命令。
strace -e network nc -v -n 127.0.0.1 80
3. 附加到已经运行的进程
如果一个进程已经在运行,你可以使用它的PID跟踪它,如下所示。
strace -p 5315
这个命令将持续显示进程所做的系统调用,可按CTRL+C键停止。
其中:5315是正在运行的进程的进程ID。
4. 将跟踪输出重定向到文件
您可以在使用 strace 命令时使用 -o 标志来保存 strace 输出到指定的文件。
strace -o file_out.txt ls file1.txt
现在你可以用下面的命令显示file_out.txt文件的内容。
cat file_out.txt
5. 打印系统调用所花费的时间
要打印每次调用的相对时间戳,使用-r标志,如下所示。
strace -r ls file1.txt
要显示ls命令每次系统调用的开始和结束之间的时间差,使用-T选项。
strace -T ls file1.txt
要打印每次系统调用的挂钟时间,请运行以下命令。
strace -t ls file1.txt
-tt 选项显示时间戳,后面是微秒。
strace -tt ls file1.txt
6. 显示系统调用的指令指针
您可以使用 -i 标志与 strace 命令一起打印命令在每次系统调用时的指令指针。
strace -i ls file1.txt
7. 生成系统调用报告
你可以使用 -c 标志来获取执行跟踪的有用统计报告。
strace -c ls /var/www/html
在上面这个命令的输出中,”calls “一栏表示该特定系统调用被执行了多少次。
8. 打印strace的调试输出
要打印 strace 命令的调试信息,请使用 -d,如下所示。
strace -d ls file1.txt
9. 基于某种条件跟踪系统调用
你也可以根据具体的情况来跟踪系统调用。例如,运行以下命令跟踪所有与内存管理有关的系统调用。
strace -q -e memory ls file1.txt
要跟踪信号变现的系统调用,运行以下命令。
strace -e signal ls file1.txt
要跟踪系统调用的进程,运行以下命令。
strace -e process ls file1.txt
在本文中,我们了解了如何使用strace命令。这个工具对于系统管理员和程序员调试和排除任何程序的故障非常有用。