??
工作中,常用的命令,進(jìn)行總結(jié)下。
場(chǎng)景1:大張負(fù)責(zé)線上一個(gè)服務(wù),使用java語(yǔ)言開發(fā)的。有一天,他收到報(bào)警,大概意思就是服務(wù)不能用,這個(gè)時(shí)候,老板讓他查下是什么原因?
下面是大張的處理過程?
登錄到這個(gè)機(jī)器,看下java進(jìn)程
ps -aux | grep -v ‘grep’ | grep java –color=auto
經(jīng)過分析,
場(chǎng)景1:發(fā)現(xiàn)沒有這個(gè)服務(wù)的java進(jìn)程linux常用命令,大張給老板說,這個(gè)服務(wù)停了。這個(gè)事情算是搞定了。
場(chǎng)景2:發(fā)現(xiàn)這個(gè)服務(wù)的進(jìn)程是存在的,大張執(zhí)行下面的命令,看下這個(gè)服務(wù)的監(jiān)聽的端口,
netstat -lnpt
大張看到了這個(gè)監(jiān)聽的端口是有的,但是看不到哪個(gè)是進(jìn)程占用的,因?yàn)榇髲埖臋?quán)限問題,大張切換成root角色權(quán)限的用戶,假設(shè)叫niubi
sudo -u niubi -i
大張看到了占用這個(gè)端口的進(jìn)程,lsof -i:端口,然后大張想看下監(jiān)聽這個(gè)端口的進(jìn)程和剛才用ps -ef | grep -v ‘grep’ | grep java 查到的進(jìn)程是啥關(guān)系,然后大張使用了如下命令,
pstree
但是,大張看不出什么,大張又執(zhí)行了pstree -Aup
這個(gè)時(shí)候大張發(fā)現(xiàn),這兩個(gè)進(jìn)程的父子關(guān)系,然后就斷定,進(jìn)程沒問題,端口沒問題,那么怎么辦呢?其實(shí),本應(yīng)該去看應(yīng)用的日志的,哎,還是去看應(yīng)用日志吧。
看應(yīng)用日志
日志文件都存放到一個(gè)指定目錄,假設(shè)為/var/apps/log
這個(gè)目錄下面有很多的日志,大張,先執(zhí)行如下命令:
ls -ls
這么多日志,怎么看,大張找到了當(dāng)天的日志,假設(shè)是app.log.2015-09-12
大張使用命令
less -MN app.log.2015-09-12
然后輸入errorlinux常用命令,沒啥收獲,然后大張執(zhí)行命令:
cat app.log.2015-09-12 | grep Exception –color=auto
發(fā)現(xiàn)很多異常,大張想看下有多少,然后執(zhí)行了命令
cat app.log.2015-09-12 | grep Exception | wc -l
(或者grep Exception app.log.2015-09-12)
哇塞,還挺多,問題很嚴(yán)重!
不過從日志中,經(jīng)過分析可能是IO方面的問題,大張決定看下機(jī)器的負(fù)載情況。
看機(jī)器負(fù)載
大張執(zhí)行了命令top
大張看了幾個(gè)cpu,和內(nèi)存使用情況,然后看了眼有無(wú)僵尸(zombie)進(jìn)程
,應(yīng)該沒啥問題,然后大張又看了下磁盤使用情況:
df -hl
也沒啥問題,然后看下當(dāng)前目錄的總量占用情況,執(zhí)行命令:du -sh ./
也沒啥問題,執(zhí)行du -sh *命令,看了每個(gè)日志文件的大小,也沒啥,
大張實(shí)在是解決不了問題了,抓狂。。。!
場(chǎng)景2:
有一天,大張啟動(dòng)一個(gè)需要打開很多文件的程序,總是打不開文件,憑著經(jīng)驗(yàn),大張想應(yīng)該是用命令看下:ulimit -a
在cmd下執(zhí)行上面的命令,或是保存成bat文件再運(yùn)行,限制一下權(quán)限,看行不。如果 sudoers 文件限制了一個(gè)用戶只能執(zhí)行某些命令,但是沒限制他用 -e 參數(shù),那貌似就可以用 bash 的漏洞突破限制了吧。: 如果 sudoers 文件限制了一個(gè)用戶只能執(zhí)行某些命令,但是沒限制他用 -e 參數(shù),那貌似就可以用 bash 的漏洞突破限制了吧。
然后大張調(diào)整了ulimit大小,就OK了。
后來(lái),大張學(xué)習(xí)了以下命令:
物理cpu的個(gè)數(shù)如下所示:
cat /proc/cpuinfo | grep ‘physical id’ | sort | uniq | wc -l
每個(gè)物理CPU中core的個(gè)數(shù)(即核數(shù)),如下:
cat /proc/cpuinfo| grep ‘cpu cores’ | uniq
查看內(nèi)存使用情況:
free -m
查看硬盤使用情況:
fdisk -l
df -h
查看I/O性能:
iostat
查看負(fù)載
uptime
查看系統(tǒng)內(nèi)核
uname -a