strace是
linux環境下的一款程式除錯工具,用來監察乙個應用程式所使用的系統呼叫及它所接收的系統資訊。追蹤程式執行時的整個生命週期,輸出每乙個系統呼叫的名字,引數,返回值和執行消耗的時間等。
strace常用引數:
-p 跟蹤指定的程序
-f 跟蹤由fork子程序系統呼叫
-f 嘗試跟蹤vfork子程序系統調吸入,與-f同時出現時, vfork不被跟蹤
-o filename 預設strace將結果輸出到stdout。通過-o可以將輸出寫入到filename檔案中
-ff 常與-o選項一起使用,不同程序(子程序)產生的系統呼叫輸出到filename.pid檔案
-r 列印每乙個系統呼叫的相對時間
-t 在輸出中的每一行前加上時間資訊。 -tt 時間確定到微秒級。還可以使用-ttt列印相對時間
-v 輸出所有系統呼叫。預設情況下,一些頻繁呼叫的系統呼叫不會輸出
-s 指定每一行輸出字串的長度,預設是32。檔名一直全部輸出
-c 統計每種系統呼叫所執行的時間,呼叫次數,出錯次數。
-e expr 輸出過濾器,通過表示式,可以過濾出掉你不想要輸出
1. strace追蹤多個程序方法:
當有多個子程序的情況下,比如php-fpm、nginx等,用strace追蹤顯得很不方便。可以使用下面的方法來追蹤所有的子程序。
1
2
3
4
5
# vim /root/.bashrc //新增以下內容
functionstraceall"|sed's/\([0-9]*\)/-p \1/g')
} # source /root/.bashrc
執行:1
# traceall php-fpm
2. 追蹤web伺服器系統呼叫情況
1
2
# strace -f -f -s 1024 -o nginx-strace /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# strace -f -f -o php-fpm-strace /usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm.conf
3. 追蹤mysql執行語句
1
2
# strace -f -f -ff -o mysqld-strace -s 1024 -p mysql_pid
# find ./ -name "mysqld-strace*" -type f -print |xargs grep -n "select.*from"
4. whatisdong---檢視程式在幹啥
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
# this script is from
nsamples=1
sleeptime=0
pid=$(pidof$1)
forxin$(seq1$nsamples)
dosleep$sleeptime
done|\
awk'
begin
/^thread/
/^\#/ else }
end '|\
sort|uniq-c|sort-r-n-k1,1
輸出:1
2
3
4
5
6
7
8
9
# profiler.sh mysqld
727pthread_cond_wait@@glibc_2.3.2,cache_thread,put_in_cache=true),handle_one_connection,start_thread,??
4pthread_cond_wait@@glibc_2.3.2,os_event_wait_low,os_aio_simulated_handle,fil_aio_wait,io_handler_thread,start_thread,??
4??,??
2read,my_real_read,my_net_read,do_command,handle_one_connection,start_thread,??
1pthread_cond_wait@@glibc_2.3.2,os_event_wait_low,srv_master_thread,start_thread,??
1pthread_cond_wait@@glibc_2.3.2,mysql_bin_log::wait_for_update,mysql_binlog_send,dispatch_command,do_command,handle_one_connection,start_thread,??
1do_sigwait,sigwait,signal_hand,start_thread,??
1
Linux 程序監控工具 Strace
最近在做蜜罐專案,因為要追蹤攻擊者的操作行為,所以想到通過攻擊者的ip獲取pid.那麼想知道程序都進行了哪些操作,讓我想到了strace工具。那麼strace都有哪些功能呢?總結如下 c 統計每一系統呼叫的所執行的時間,次數和出錯的次數等.d 輸出strace關於標準錯誤的除錯資訊.f 跟蹤由for...
strace實時檢視程序日誌輸出
在啟動程序的時候忘記重定向log到輸出檔案,或者terminal意外退出但是程式還在繼續執行,但我想看看程式執行的具體情況,看看程式輸出的log,這時候strace命令就派上用場了 strace命令 安裝方式 apt get install strace strace 來變通的看一下日誌,strac...
strace 跟蹤程序中的系統呼叫
strace常用來跟蹤程序執行時的系統呼叫和所接收的訊號。在linux世界,程序不能直接訪問硬體裝置,當程序需要訪問硬體裝置 比如讀取磁碟檔案,接收網路資料等等 時,必須由使用者態模式切換至核心態模式,通過系統呼叫訪問硬體裝置。strace可以跟蹤到乙個程序產生的系統呼叫,包括引數,返回值,執行消耗...