|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 511|回復: 1
打印 上一主題 下一主題

linux运维利器—–strace命令

[複製鏈接]

1481

主題

12

好友

3883

積分

大學生

Rank: 6Rank: 6

  • TA的每日心情

    2020-5-21 09:25
  • 簽到天數: 1532 天

    [LV.Master]伴壇終老

    推廣值
    0
    貢獻值
    0
    金錢
    2987
    威望
    3883
    主題
    1481

    回文勇士 簽到達人 簽到勳章 文明人 中學生 高中生 文章勇士 文章達人 大學生

    樓主
    發表於 2013-12-30 10:38:47
    strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。下面智游推送就为大家介绍linux运维中的strace命令
    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 输出过滤器,通过表达式,可以过滤出掉你不想要输出
    应用场景
    MySQL执行语句列表

    当发生个http请求的时候,很多时候希望得到这个http请求发生了多少次数据库SELECT操作,是否在同一个mysql connection连接里面完成。这里以访问本页为例子,通过strace来跟踪这些MySQL SELECT查询语句。
    //-9514是mysqld的进程号,为了看到整条SQL语句,我们通过-s 1024希望输出更多内容
    #strace -f -F -ff -o strace-mysqld -s 1024 -p 9514
    #find . -name "strace-mysqld*" -type f -print |xargs grep -n "SELECT.*FROM wp_"
    ./strace-mysqld.19203:64:
    read(19, "\3SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'", 72) = 72
    ./strace-mysqld.19203:165:
    read(19, "\3SELECT * FROM wp_users WHERE user_login = 'admin'", 50) = 50
    ./strace-mysqld.19203:184:
    read(19, "\3SELECT meta_key, meta_value FROM wp_usermeta WHERE user_id = 1", 63) = 63
    ./strace-mysqld.19203:295:
    read(19, "\3SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules' LIMIT 1", 80) = 80
    ./strace-mysqld.19203:311:
    read(19, "\3 SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.ID = 501
         AND wp_posts.post_type = 'post'  ORDER BY wp_posts.post_date DESC ", 136) = 136
    ... (这里省去了一些)
    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-5-29 08:45 , Processed in 0.029690 second(s), 25 queries , Gzip On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部