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 標志來獲取執行跟蹤的有用統計報告。
在上面這個命令的輸出中,”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命令。這個工具對于系統管理員和程序員調試和排除任何程序的故障非常有用。