Linux 程序監控工具 Strace

2021-08-19 08:52:14 字數 1932 閱讀 1905

最近在做蜜罐專案,因為要追蹤攻擊者的操作行為,所以想到通過攻擊者的ip獲取pid.那麼想知道程序都進行了哪些操作,讓我想到了strace工具。那麼strace都有哪些功能呢?總結如下:

-c 統計每一系統呼叫的所執行的時間,次數和出錯的次數等.

-d 輸出strace關於標準錯誤的除錯資訊.

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

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

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

-h 輸出簡要的幫助資訊.

-i 輸出系統呼叫的入口指標.

-q 禁止輸出關於脫離的訊息.

-r 列印出相對時間關於,,每乙個系統呼叫.

-t 在輸出中的每一行前加上時間資訊.

-tt 在輸出中的每一行前加上時間資訊,微秒級.

-ttt 微秒級輸出,以秒了表示時間.

-t 顯示每一呼叫所耗的時間.

-v 輸出所有的系統呼叫.一些呼叫關於環境變數,狀態,輸入輸出等呼叫由於使用頻繁,預設不輸出.

-v 輸出strace的版本資訊.

-x 以十六進製制形式輸出非標準字串

-xx 所有字串以十六進製制形式輸出.

-a column 設定返回值的輸出位置.預設 為40.

-e expr

指定乙個表示式,用來控制如何跟蹤.格式:[qualifier=][!]value1[,value2]...

qualifier只能是 trace,abbrev,verbose,raw,signal,read

,write

其中之一.value是用來限定的符號或數字.預設的 qualifier是 trace.感嘆號是否定符號.例如:-eopen等價於 -e trace=open,表示只跟蹤open呼叫.而-etrace!=open 表示跟蹤除了open以外的其他呼叫.有兩個特殊的符號 all 和 none. 注意有些shell使用!來執行歷史記錄裡的命令,所以要使用\\.

-e trace=set

只跟蹤指定的系統 呼叫.例如:-e trace=open,close,rean,write表示只跟蹤這四個系統呼叫.預設的為set=all.

-e trace=file

只跟蹤有關檔案操作的系統呼叫.

-e trace=process 只跟蹤有關程序控制的系統呼叫.

-e trace=network 跟蹤與網路有關的所有系統呼叫.

-e strace=signal 跟蹤所有與系統訊號有關的 系統呼叫

-e trace=ipc 跟蹤所有與程序通訊有關的系統呼叫

-e abbrev=set 設定strace輸出的系統呼叫的結果集.-v 等與 abbrev=none.預設為abbrev=all.

-e raw=set 將指定的系統呼叫的引數以十六進製制顯示.

-e signal=set 指定跟蹤的系統訊號.預設為all.如 signal=!sigio(或者signal=!io),表示不跟蹤sigio訊號.

-e read=set 輸出從指定檔案中讀出 的資料.例如: -e read=3,5

-e write=set 輸出寫入到指定檔案中的資料.

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

-p pid 跟蹤指定的程序pid.

-s strsize 指定輸出的字串的最大長度.預設為32.檔名一直全部輸出.

-u username 以username的uid和gid執行被跟蹤的命令

那麼,strace 怎麼用呢?

比如我想監聽乙個通過ssh連線到我的服務的bash程序:

下面是我輸入了乙個「ll」命令。strace能精確的追蹤到。

linux 程序監控

1 ps命令 直接在linux系統中輸入 ps 結果如下 預設情況下,ps命令指揮顯示執行在當前控制台下的屬於當前使用者的程序。pid 程式的程序號 tty 程式執行的終端 time 程式執行的時間 引數 在linux系統中,程序的狀態有五種 1.執行 正在執行或在執行佇列中等待 2.中斷 休眠中,...

linux 程序監控

supervise是daemontools的乙個工具,可以用來監控管理unix下的應用程式運 況,在應用程式出現異常時,supervise可以重新啟動指定程式。使用 mkdir test cd test vim run 寫入希望執行的操作 supervise test 注意這裡是的引數是run檔案上...

linux 程序監控

supervise是daemontools的乙個工具,可以用來監控管理unix下的應用程式運 況,在應用程式出現異常時,supervise可以重新啟動指定程式。使用 mkdir test cd test vim run 寫入希望執行的操作 supervise test 注意這裡是的引數是run檔案上...