psaux為查看系統(tǒng)當(dāng)前所有進(jìn)程命令。
創(chuàng)新互聯(lián)不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對營銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時,也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級,滿足企業(yè)一站式成都全網(wǎng)營銷推廣需求,讓再小的高端網(wǎng)站設(shè)計(jì)也能產(chǎn)生價值!
工具/原料
VMware??Linux??電腦
方法/步驟
1、打開VMware虛擬機(jī),打開終端命令行,通過”su“命令切換到root用戶下。
2、輸入“psaux“按下回車鍵,即可顯示linux下所有的進(jìn)程。
3、輸入ps-le也可以顯示所有的進(jìn)程,這個是按照優(yōu)先級來顯示。
1、首先打開xshell軟件,連接上linux服務(wù)器,使用指令ps查看系統(tǒng)進(jìn)程,參數(shù)a表示全部,u表示以用戶格式顯示,x表示進(jìn)程參數(shù)。
2、接著通過符號|加上grep查找具體的某個進(jìn)程,如下圖所示。
3、然后輸入ps -ef用于查看進(jìn)程的父進(jìn)程id,如下圖所示。
4、最后使用pstree指令查看進(jìn)程樹結(jié)構(gòu),如下圖所示就完成了。
hexdump: 查看文件的內(nèi)容,比如二進(jìn)制文件中包含的某些字符串,通常用來調(diào)試驅(qū)動用
描述
我們以event1為例,當(dāng)我們insmod掛載了鍵盤驅(qū)動后,出現(xiàn)一個event1設(shè)備,
此時沒有按鍵按下,所以event1里面的數(shù)據(jù)是沒有的,那么數(shù)據(jù)又是從來哪里來?
通過鍵盤驅(qū)動的read函數(shù),若有按鍵按下,就會上傳按鍵數(shù)據(jù)給用戶層hexdump
因?yàn)殒I盤驅(qū)動的input_handler 是:evdev_handler
所以鍵盤驅(qū)動的read函數(shù)是: evdev_handler-evdev_fops-evdev_read
進(jìn)入evdev_read()函數(shù),如下圖所示:
evdev_event_to_user()這個函數(shù)從字面上來看,顯然就是用來上傳給用戶層的函數(shù),其中buffer是函數(shù)參數(shù),指向用戶層,所以數(shù)據(jù)就是event.
我們來看看event的結(jié)構(gòu)體:input_event
把 time里的成員展開如下:
所以我們hexdump調(diào)試任何輸入子系統(tǒng)event XX驅(qū)動時,有信息就會打印上面數(shù)據(jù)
1.調(diào)試鍵盤驅(qū)動
以按開發(fā)板的按鍵 KEY_L,為例(因?yàn)閿?shù)據(jù)是從低到高打印的,所以數(shù)據(jù)是反的):
根據(jù)這些可以查看系統(tǒng)調(diào)用的完整性,比如說服務(wù)器連接數(shù)一直漲,說明fd沒有close,close調(diào)用在上邊有缺失
strace -t -T -v -f -p 16705 -Te write 只看write系統(tǒng)調(diào)用
sudo gcore xxpid 生成dump文件
sudo dlv core binfile core.xxxx 調(diào)試coredump文件,查看調(diào)用棧、goroutines
查看系統(tǒng)級別日志 /var/log/messages
messages 日志是核心系統(tǒng)日志文件。它包含了系統(tǒng)啟動時的引導(dǎo)消息,以及系統(tǒng)運(yùn)行時的其他狀態(tài)消息。IO 錯誤、網(wǎng)絡(luò)錯誤和其他系統(tǒng)錯誤都會記錄到這個文件中。其他信息,比如某個人的身份切換為 root,也在這里列出。如果服務(wù)正在運(yùn)行,比如 DHCP 服務(wù)器,您可以在 messages 文件中觀察它的活動。通常,/var/log/messages 是您在做故障診斷時首先要查看的文件。
tcpdump -i lo -nnA 'port 7076' and 'tcp[13] 4 != 0 ' 抓rst包,發(fā)送給7076端口或者是7076端口發(fā)出去的
mac osx系統(tǒng):sudo tcpdump -i lo0 -nnA 'port 3000'
lsof全名list opened files,也就是列舉系統(tǒng)中已經(jīng)被打開的文件。我們都知道,linux環(huán)境中,任何事物都是文件,
設(shè)備是文件,目錄是文件,甚至sockets也是文件。所以,用好lsof命令,對日常的linux管理非常有幫助。
lsof是linux最常用的命令之一,通常的輸出格式為:
引用
常見包括如下幾個字段:更多的可見manual。
1、COMMAND
默認(rèn)以9個字符長度顯示的命令名稱??墒褂?c參數(shù)指定顯示的寬度,若+c后跟的參數(shù)為零,則顯示命令的全名
2、PID:進(jìn)程的ID號
3、PPID
父進(jìn)程的IP號,默認(rèn)不顯示,當(dāng)使用-R參數(shù)可打開。
4、PGID
進(jìn)程組的ID編號,默認(rèn)也不會顯示,當(dāng)使用-g參數(shù)時可打開。
5、USER
命令的執(zhí)行UID或系統(tǒng)中登陸的用戶名稱。默認(rèn)顯示為用戶名,當(dāng)使用-l參數(shù)時,可顯示UID。
6、FD
是文件的File Descriptor number,或者如下的內(nèi)容:
(這里很難翻譯對應(yīng)的意思,保留英文)
引用
文件的File Descriptor number顯示模式有:
引用
7、TYPE
引用
IPv4 IPv4的包;
IPv6 使用IPv6格式的包,即使地址是IPv4的,也會顯示為IPv6,而映射到IPv6的地址;
DIR 目錄
LINK 鏈接文件
詳情請看manual中更多的注釋。
8、DEVICE
使用character special、block special表示的設(shè)備號
9、SIZE
文件的大小,如果不能用大小表示的,會留空。使用-s參數(shù)控制。
10、NODE
本地文件的node碼,或者協(xié)議,如TCP等
11、NAME
掛載點(diǎn)和文件的全路徑(鏈接會被解析為實(shí)際路徑),或者連接雙方的地址和端口、狀態(tài)等
常用示例:
1.顯示開啟文件/home/oracle/10.2.0/db_1/bin/tnslsnr的進(jìn)程
2.知道22端口現(xiàn)在運(yùn)行什么程序
3.顯示init進(jìn)程現(xiàn)在打開的文件
6.依照文件夾/home/oracle來搜尋,但不會打開子目錄,用來顯示目錄下被進(jìn)程開啟的文件
顯示內(nèi)容太多了,不顯示了
lsof -n 不將IP轉(zhuǎn)換為hostname,缺省是不加上-n參數(shù)
關(guān)注:
進(jìn)程調(diào)試命令:truss、strace和ltrace
進(jìn)程無法啟動,軟件運(yùn)行速度突然變慢,程序的"SegmentFault"等等都是讓每個Unix系統(tǒng)用戶頭痛的問題,而這些問題都可以通過使用truss、strace和ltrace這三個常用的調(diào)試工具來快速診斷軟件的"疑難雜癥"。