1. 系統(tǒng)相關
- 查看手冊命令
man
- 只查看當前下一級目錄占用大小
du --max-depth=1 -h
- 查看某個進程是否在運行
ps -ef | grep prog | grep -v grep
pgrep prog
- 查看內存統(tǒng)計
free -m
- 查看系統(tǒng)任務運行情況(類似window的任務管理器)
top
ps:根據內存或者CPU占用對進程排序
- 內存排序:執(zhí)行top,然后按“shift + m”,這時進程就會按照內存占用從大到小排序翩腐。
- CPU排序:執(zhí)行top即可狮腿,top默認是按照CPU占用排序戚炫,也可以執(zhí)行“shift + p”從內存大小排序轉換為CPU排序猜旬。
- 查看系統(tǒng)CPU占用情況
mpstat -P ALL 2
- 查看系統(tǒng)io桩砰,內存阶捆,swap分區(qū)凌节,cpu等匯總統(tǒng)計信息
vmstat 2
- 查看系統(tǒng)tcp連接情況
netstat -anpt
2. 進程相關
- 殺掉某個程序的所有進程
killall program
- 強殺一個指定pid的進程,江湖俗稱“酒殺”洒试,一殺必中
kill -9 pid
- 查看某個程序的所有進程
pidof program
- 查看指定pid的進程的運行時加載的環(huán)境變量
cat /proc/pid/environ | tr -s '\0' '\n'
- 通過pid查看對應的執(zhí)行文件(這對查看來歷不明的進程有幫助)
lsof -p pid | grep txt
- 查看指定pid的進程內存地址空間映射(查看進程運行時實際加載的是那個庫)
pmap -x pid
- 查看程序的符號表(排查編譯連接失敗倍奢,調用異常等問題很好用)
nm file
readelf -s file
- 查看指定pid的進程線程關系樹(查看某個開源程序是否是多線程模型)
pstree -p pid
- 查看指定pid的進程打開的文件
lsof -p pid
- 查看指定pid的進程當前運行時的堆棧
pstack pid
- 查看指定pid的進程當前在執(zhí)行的系統(tǒng)調用
strace -p pid
- 查看指定pid的進程當前在執(zhí)行的庫調用
ltrace -p pid
- 在查看指定程序依賴的動態(tài)鏈接庫
ldd program
3. 運營調試
- 從一堆文件中查找包含某個字符串的文件(編譯一堆文件時有變量沖突時特別好用,可以快速定位在那些文件中聲明了相同的變量)
find ./ -type f -name ".c" -o -name ".h" | xargs grep "strings"
- 查看文件被那些進程打開(對查看庫被那些進程使用垒棋,在你要修改一個基礎庫在評估影響范圍的時候就很好用)
fuser -v filename
lsof filename
- 對字符串求MD5值或者SHA1值(驗證程序MD5和SHA1算法時特別有用)
echo -n "abcde123" | md5sum
echo -n "abcde123" | sha1sum
- linux shell中如何快速查詢歷史命令
ctrl + r
- 查看執(zhí)行歷史帶詳細時間
export HISTTIMEFORMAT="%F %T whoami "
history
- c++函數符號轉換成c模式工具
c++filt
- gdb設置打印完整字符串
set print element 0
- scp跨主機遠程拷貝
scp src user@host:dest
- ssh登錄遠程主機
ssh user@host
- 返回當前用戶的home目錄
cd
cd ~
- 返回上一個目錄
cd -
- 刪除當前輸入的命令
ctrl + u
- 中斷當前命令的輸入或者中斷當前在執(zhí)行的前臺程序
ctrl + c
- 強制退出當前命令的執(zhí)行卒煞,有時執(zhí)行ctrl + c無用時采用
ctrl + \
- 實時查看日志文件的輸出(只要日志有更新就能看到且是實時的)
tail -20f /home/xxx/log/yy.log
- 測試web服務工具
curl
wget
- 打包壓縮命令
tar -zcvf test.tar ./*
- 解包解壓命令
tar -zxvf test.tar
4.其它
- history
查看所有歷史記錄
- ctrl + r
查詢歷史記錄