Linux系統(tǒng)調(diào)用工具strace的使用方法和實(shí)踐

      網(wǎng)友投稿 855 2022-05-29

      1、在操作系統(tǒng)運(yùn)維中會(huì)出現(xiàn)程序或系統(tǒng)命令運(yùn)行失敗,通過報(bào)錯(cuò)和日志無法定位問題根因。

      2、如何在沒有內(nèi)核或程序代碼的情況下查看系統(tǒng)調(diào)用的過程。

      1、strace是有用的診斷,說明和調(diào)試工具,linux系統(tǒng)管理員可以在不需要源代碼的情況下即可跟蹤系統(tǒng)的調(diào)用。

      2、strace顯示有關(guān)進(jìn)程的系統(tǒng)調(diào)用的信息,這可以幫助確定一個(gè)程序使用的哪個(gè)函數(shù),當(dāng)然在系統(tǒng)出現(xiàn)問題時(shí)可以使用 strace定位系統(tǒng)調(diào)用過程中失敗的原因,這是定位系統(tǒng)問題的很好的方法。

      1. strace安裝方法:

      CentOS/EulerOS系統(tǒng)

      # yum install strace

      Ubuntu系統(tǒng):

      Linux系統(tǒng)調(diào)用工具strace的使用方法和實(shí)踐

      # apt-get install strace –y

      2.strace的常用參數(shù)及示例

      -c

      統(tǒng)計(jì)每一系統(tǒng)調(diào)用的所執(zhí)行的時(shí)間,次數(shù)和出錯(cuò)的次數(shù)等。

      示例:打印執(zhí)行uptime時(shí)系統(tǒng)系統(tǒng)調(diào)用的時(shí)間、次數(shù)、出錯(cuò)次數(shù)和syscall

      # strace -c uptime

      -d

      顯示有關(guān)標(biāo)準(zhǔn)錯(cuò)誤的strace本身的一些調(diào)試輸出。

      -f

      跟蹤子進(jìn)程,這些子進(jìn)程是由于fork(2)系統(tǒng)調(diào)用而由當(dāng)前跟蹤的進(jìn)程創(chuàng)建的。

      -i

      在系統(tǒng)調(diào)用時(shí)打印指令指針。

      -t

      跟蹤的每一行都以時(shí)間為前綴。

      -tt

      如果給出兩次,則打印時(shí)間將包括微秒。

      -ttt

      如果給定三次,則打印時(shí)間將包括微秒,并且前導(dǎo)部分將打印為自該**以來的秒數(shù)。

      -T

      顯示花費(fèi)在系統(tǒng)調(diào)用上的時(shí)間。這將記錄每個(gè)系統(tǒng)調(diào)用的開始和結(jié)束之間的時(shí)間差。

      -v

      打印環(huán)境,統(tǒng)計(jì)信息,termios等調(diào)用的未縮寫版本。這些結(jié)構(gòu)在調(diào)用中非常常見,因此默認(rèn)行為顯示了結(jié)構(gòu)成員的合理子集。使用此選項(xiàng)可獲取所有詳細(xì)信息。

      -V

      打印strace的版本號(hào)。

      -e?expr

      限定表達(dá)式,用于修改要跟蹤的事件或如何跟蹤它們:

      -e trace=set

      僅跟蹤指定的系統(tǒng)調(diào)用集。該-c選項(xiàng)用于確定哪些系統(tǒng)調(diào)用可能是跟蹤有用有用。例如,trace=open,close,read,write表示僅跟蹤這四個(gè)系統(tǒng)調(diào)用。

      -e trace=file

      跟蹤所有以文件名作為參數(shù)的系統(tǒng)調(diào)用。

      示例:打印執(zhí)行l(wèi)s時(shí)跟文件有關(guān)的系統(tǒng)調(diào)用。

      # strace -e trace=file ls

      -e trace=process

      跟蹤涉及過程管理的所有系統(tǒng)調(diào)用。這對(duì)于觀察進(jìn)程的派生,等待和執(zhí)行步驟很有用。

      -e trace=network

      跟蹤所有與網(wǎng)絡(luò)相關(guān)的系統(tǒng)調(diào)用。

      -e trace=signal

      跟蹤所有與信號(hào)相關(guān)的系統(tǒng)調(diào)用。

      -e trace=ipc

      跟蹤所有與IPC相關(guān)的系統(tǒng)調(diào)用。

      -o?文件名

      將跟蹤輸出寫入文件名而不是stderr。

      -p?pid

      使用進(jìn)程ID?pid附加到該進(jìn)程并開始跟蹤。跟蹤可以隨時(shí)通過鍵盤中斷信號(hào)(CTRL?-C)終止。

      -S

      按指定條件對(duì)-c選項(xiàng)打印的直方圖輸出進(jìn)行排序。

      示例:打印執(zhí)行uname系統(tǒng)調(diào)用中calls的次數(shù)排序

      # strace -fc -S calls uname

      注:其他參數(shù)可以查看man手冊(cè)

      # man strace

      以“定位一次系統(tǒng)無法解析域名故障”為例

      【問題現(xiàn)象】:

      無法訪問外網(wǎng)域名,提示Name or service not know。

      且已檢查系統(tǒng)DNS配置文件/etc/resolv.conf正確,排除DNS解析失敗。

      【問題分析】:

      當(dāng)前無法確定系統(tǒng)在執(zhí)行 解析域名失敗的原因,這時(shí)候需要使用strace查看系統(tǒng)調(diào)用過程,域名解析通常跟系統(tǒng)讀取文件相關(guān),因此我們只查看open file的過程。具體命令如下:

      # strace -e strace=open ping www.baidu.com

      如上圖所示在系統(tǒng)調(diào)用過程中出現(xiàn)/usr/lib64/libnss_dns.so.2文件缺失,則問題根因已確定為libnss_dns.so.2系統(tǒng)庫文件缺失。

      【解決方法】:

      libnss_dns.so.2文件由glibc-devel包產(chǎn)生,因此重新安裝該包即可,請(qǐng)執(zhí)行

      # yum reinstall glibc-devel

      Linux

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:云合同電子合同助力全國旅游監(jiān)管服務(wù)平臺(tái)
      下一篇:如何只用一個(gè)小時(shí)定制一個(gè)行業(yè)AI 模型
      相關(guān)文章
      久久久久亚洲精品中文字幕| 亚洲精品9999久久久久无码| 国产99久久亚洲综合精品| 亚洲一区二区三区免费在线观看| 色拍自拍亚洲综合图区| 亚洲成人中文字幕| 亚洲AV无码精品色午夜果冻不卡 | 久久久久亚洲AV无码专区网站 | 97se亚洲综合在线| 亚洲黄网在线观看| 亚洲性色高清完整版在线观看| 亚洲视频免费在线看| 亚洲自偷精品视频自拍| 亚洲成a人片在线观看中文!!!| 亚洲国产超清无码专区| 亚洲娇小性色xxxx| 亚洲色偷偷综合亚洲av78| 亚洲欧美日韩中文二区| 色欲色欲天天天www亚洲伊| 国产AV无码专区亚洲AV麻豆丫 | 午夜亚洲国产成人不卡在线 | 亚洲国产精品乱码在线观看97| 亚洲激情电影在线| 亚洲入口无毒网址你懂的| 国产亚洲精aa在线看| 亚洲国产aⅴ成人精品无吗| 国产亚洲视频在线| 久久亚洲精品无码播放| 亚洲人精品午夜射精日韩| 亚洲AV成人一区二区三区AV| 久久亚洲日韩看片无码| 亚洲av乱码一区二区三区香蕉 | 亚洲暴爽av人人爽日日碰| 亚洲?v女人的天堂在线观看| 成人伊人亚洲人综合网站222| 国产AⅤ无码专区亚洲AV | 亚洲最大天堂无码精品区| 亚洲av永久中文无码精品综合| 国产亚洲人成在线影院| 亚洲色欲色欲www在线丝| 亚洲综合国产精品|