我使用過的linux命令之strace

2021-09-20 09:29:52 字數 1229 閱讀 9858

strace常用來跟蹤程序執行時的系統呼叫和所接收的訊號。 在linux世界,程序不能直接訪問硬體裝置,當程序需要訪問硬體裝置(比如讀取磁碟檔案,接收網路資料等等)時,必須由使用者態模式切換至核心態模式,通過系統呼叫訪問硬體裝置。strace可以跟蹤到乙個程序產生的系統呼叫,包括引數,返回值,執行消耗的時間。

最常用選項:

-f 跟蹤由fork呼叫所產生的子程序.

-ff 如果提供-o filename,則所有程序的跟蹤結果輸出到相應的filename.pid中,pid是各程序的程序號.

-f 嘗試跟蹤vfork呼叫.在-f時,vfork不被跟蹤.

-o filename 將strace的輸出寫入檔案filename

-p pid 指定要跟蹤的程序id

所有選項請參考man手冊。或:

-tt 列印精確時間(微秒級)

有兩種使用方法

第一種是跟蹤正在執行的程式:

strace -f -ff -tt  -o strace.log  -p $pid
第二種是啟動以乙個程式並進行追蹤:

strace -f -ff -tt  -o strace.log ip a add 10.0.2.18/24 dev enp0s3
strace是定位疑難雜症,以及效能問題的利器。待後面實踐之後再來總結。

這篇文章中講了幾個不錯的例子,可以參考一下。

使用truss、strace或ltrace診斷軟體的"疑難雜症"

參考:

使用truss、strace或ltrace診斷軟體的"疑難雜症"

前段時間遇到了乙個由於selinux選項開啟,keepalived無許可權讀取配置檔案的問題。

使用的keepalived版本為1.2.13,keepalived在沒有配置檔案的情況下,程序也能夠正常啟動。但是在沒有配置檔案的情況下,不會有主備狀態,節點也不會加入224.0.0.18這個組播組。keepalived也沒有列印作業系統日誌。所以分析起來毫無方向。

無奈請教專家,專家使用strace命令一番分析,就找到了keepalived讀取不到配置檔案的原因:

permission denied.

原來selinux被設定成了enforcing模式,型別為target。並且keepalived程序與配置檔案所屬type不一致。所以導致無許可權讀檔案。

第一次知道strace和selinux,趕緊學習學習。。

我使用過的Linux命令之mkdir 建立目錄

mkdir命令是常用的命令之一,用來建立目錄。mkdir 命令建立由 directory 引數指定的乙個或多個新的目錄。每個新目錄包含標準項 點 和 點 點 您可以使用 m mode 標誌為新的目錄指定許可權。您可以使用 umask 子例程為 mkdir 命令設定預設方式。該命令建立指定的目錄名,要...

linux使用過的命令

檢視centos 版本 cat etc redhat release 1,複製貼上檔案 cp 選項 原始檔或目錄 目標檔案或目錄 2,剪下貼上檔案 mv 選項 原始檔或目錄 目標檔案或目錄 3,刪除檔案 rm 檔案 慎用 rm rf linux下檔案的複製 移動與刪除命令為 cp,mv,rm 一 檔...

用過的linux命令

1.系統命令 檢視 du hs 進入目錄 cd 檢視歷史命令 history linux自動補全命令 tab 2.檔案操作 建立資料夾 mkdir 建立檔案 touch vi也可以建,但記得儲存 檢視隱藏檔案 ls a 比如swp檔案 列出當前目錄下的所有檔案 包括隱藏檔案 的絕對路徑,對目錄不做遞...