1.概述
計(jì)算機(jī)領(lǐng)域水太深了,不可能什么都記住,所以只需要理解并記住核心的原理,其他的交給網(wǎng)絡(luò),用的時(shí)候查一下就可以了。因此整理了平時(shí)工作中自己覺得好用的命令。
2.系統(tǒng)相關(guān)
- 查看手冊命令
man
- 只查看當(dāng)前下一級目錄占用大小
du --max-depth=1 -h
- 查看某個(gè)進(jìn)程是否在運(yùn)行
ps -ef | grep prog | grep -v grep
pgrep prog
- 查看內(nèi)存統(tǒng)計(jì)
free -m
- 查看系統(tǒng)任務(wù)運(yùn)行情況(類似window的任務(wù)管理器)
top
- 根據(jù)內(nèi)存或者CPU占用對進(jìn)程排序
- 內(nèi)存排序:執(zhí)行top,然后按“shift + m”,這時(shí)進(jìn)程就會按照內(nèi)存占用從大到小排序。
- CPU排序:執(zhí)行top即可,top默認(rèn)是按照CPU占用排序,也可以執(zhí)行“shift + p”從內(nèi)存大小排序轉(zhuǎn)換為CPU排序。
- 查看系統(tǒng)CPU占用情況
mpstat -P ALL 2
- 查看系統(tǒng)io,內(nèi)存,swap分區(qū),cpu等匯總統(tǒng)計(jì)信息
vmstat 2
- 查看系統(tǒng)tcp連接情況
netstat -anpt
3.進(jìn)程相關(guān)
- 殺掉所有某個(gè)程序的所有進(jìn)程
killall program
- 強(qiáng)殺一個(gè)指定pid的進(jìn)程,江湖俗稱“酒殺”,一殺必中
kill -9 pid
- 查看某個(gè)程序的所有進(jìn)程
pidof program
- 查看指定pid的進(jìn)程的運(yùn)行時(shí)加載的環(huán)境變量
cat /proc/pid/environ | tr -s '\0' '\n'
- 通過pid查看對應(yīng)的執(zhí)行文件(這對查看來歷不明的進(jìn)程有幫助)
lsof -p pid | grep txt
- 查看指定pid的進(jìn)程內(nèi)存地址空間映射(查看進(jìn)程運(yùn)行時(shí)實(shí)際加載的是那個(gè)庫)
pmap -x pid
- 查看程序的符號表(排查編譯連接失敗,調(diào)用異常等問題很好用)
nm file
readelf -s file
- 查看指定pid的進(jìn)程線程關(guān)系樹(查看某個(gè)開源程序是否是多線程模型)
pstree -p pid
- 查看指定pid的進(jìn)程打開的文件
lsof -p pid
- 查看指定pid的進(jìn)程當(dāng)前運(yùn)行時(shí)的堆棧
pstack pid
- 查看指定pid的進(jìn)程當(dāng)前在執(zhí)行的系統(tǒng)調(diào)用
strace -p pid
- 查看指定pid的進(jìn)程當(dāng)前在執(zhí)行的庫調(diào)用
ltrace -p pid
- 查看指定程序依賴的動(dòng)態(tài)鏈接庫
ldd program
4.運(yùn)營調(diào)試相關(guān)
- 從一堆文件中查找包含某個(gè)字符串的文件(編譯一堆文件時(shí)有變量沖突時(shí)特別好用,可以快速定位在那些文件中聲明了相同的變量)
find ./ -type f -name ".c" -o -name ".h" | xargs grep "strings"
- 查看文件被那些進(jìn)程打開(對查看庫被那些進(jìn)程使用,在你要修改一個(gè)基礎(chǔ)庫在評估影響范圍的時(shí)候就很好用)
fuser -v filename
lsof filename
- 對字符串求MD5值或者SHA1值(驗(yàn)證程序MD5和SHA1算法時(shí)特別有用)
echo -n "abcde123" | md5sum
echo -n "abcde123" | sha1sum
- linux shell中如何快速查詢歷史命令
ctrl + r
- 查看執(zhí)行歷史帶詳細(xì)時(shí)間
export HISTTIMEFORMAT="%F %T
whoami"
history
- c++函數(shù)符號轉(zhuǎn)換成c模式工具
c++filt
- gdb設(shè)置打印完整字符串
set print element 0
- scp跨主機(jī)遠(yuǎn)程拷貝
scp src user@host:dest
- ssh登錄遠(yuǎn)程主機(jī)
ssh user@host
- 返回當(dāng)前用戶的home目錄
cd
cd ~
- 返回上一個(gè)目錄
cd -
- 刪除當(dāng)前輸入的命令
ctrl + u
- 中斷當(dāng)前命令的輸入或者中斷當(dāng)前在執(zhí)行的前臺程序
ctrl + c
- 強(qiáng)制退出當(dāng)前命令的執(zhí)行,有時(shí)執(zhí)行ctrl + c無用時(shí)采用
ctrl + \
- 實(shí)時(shí)查看日志文件的輸出(只要日志有更新就能看到且是實(shí)時(shí)的)
tail -20f /home/xxx/log/yy.log
- 測試web服務(wù)工具
curl
wget
- 打包壓縮命令
tar -zcvf test.tar ./*
- 解包解壓命令
tar -zxvf test.tar
5.寫在最后
后續(xù)我會寫一系列關(guān)于Linux后端研發(fā)的文章,為大家展示如何一步一步構(gòu)建一個(gè)真正的Linux后端集群服務(wù),記錄一個(gè)“Linux C/C++后端研發(fā)菜鳥成長記”。