天天看點

Linux 常用操作及指令

Load是用來度量伺服器工作量的大小,即計算機cpu任務執行隊列的長度,值越大,表明包括正在運作和待運作的程序數越多。

可以通過w,top,uptime,procinfo指令,也可以通過/proc/loadavg檔案檢視。

procinfo工具安裝請參考Linux環境下安裝軟體。

伺服器負載(load/load average)是根據程序隊列的長度來顯示的。

當伺服器出現負載高的現象時(建議以15分鐘平均值為參考),可能是由于CPU資源不足,I/O讀寫瓶頸,記憶體資源不足等原因造成,也可能是由于CPU正在進行密集型計算。

建議使用vmstat -x,iostat,top指令判斷負載過高的原因,然後找到具體占用大量資源的程序進行優化處理。

可以通過free,top(執行後可通過shitf+m對記憶體排序),vmstat,procinfo指令,也可以通過/proc/meminfo檔案檢視。

可以使用top -p PID,pmap -x PID,ps aux|grep PID指令,也可以通過/proc/$process_id(程序的PID)/status檔案檢視,例如/proc/7159/status檔案。

可以使用netstat -tunlp,netstat -antup,lsof -i:PORT指令檢視。

可以使用ps auxww|grep PID,ps -ef,lsof -p PID,top -p PID指令檢視。

可以使用kill -9 PID(程序号),killall 程式名(比如killall cron)來殺死程序。

如果要殺死的是僵屍程序,則需要殺掉程序的父程序才有效果,指令為: kill -9 ppid(ppid為父程序ID号,可以通過ps -o ppid PID查找,例如ps -o ppid 32535)。

可以使用top指令檢視僵屍程序(zombie)的總數,使用ps -ef | grep defunct | grep -v grep查找具體僵屍程序的資訊。

伺服器端口的啟動監聽,需要從作業系統本身以及應用程式檢視。

linux作業系統1024以下的端口隻能由root使用者啟動,即需要先運作sudo su –擷取root權限後再啟用服務端口。

應用程式問題,建議通過應用程式啟動日志來排查失敗原因,例如端口沖突(騰訊伺服器系統使用端口不能占用,比如36000),配置問題等。

指令名稱

說明

top

程序監控指令,用來監控系統的整體性能。

可以顯示系統負載,程序,cpu,記憶體,分頁等資訊,常用shift+m和shift+p來按memory和cpu使用對程序進行排序。

vmstat

系統監控指令,重點側重于虛拟記憶體,也可以監控cpu,程序,記憶體分頁以及IO的狀态資訊。

例如,vmstat 3 10,每隔3秒輸出結果,執行10次。

iostat

用于輸出cpu狀态和IO狀态的工具,可以詳細展示系統的IO資訊。

例如iostat -dxmt 10,每10秒以MB的格式輸出IO的詳細資訊。

df

用來檢查系統的磁盤空間占用狀況。

例如:df -m,以MB為機關展現磁盤使用狀況。

lsof

列舉系統中被打開的檔案,由于linux是以檔案系統為基礎,此指令在系統管理中很有幫助。

例如:

lsof -i:36000,顯示使用36000端口的程序 

lsof -u root,顯示以root運作的程式 

lsof -c php-fpm,顯示php-fpm程序打開的檔案 

lsof php.ini,顯示打開php.ini的程序。

ps

程序檢視指令,可以用來顯示程序的詳細資訊。

常用指令參數組合為,ps -ef,ps aux,推薦使用ps -A -o來自定義輸出字段。

ps -A -o pid,stat,uname,%cpu,%mem,rss,args,lstart,etime |sort -k6,6 -rn,按所列字段輸出并以第六個字段進行排序 

ps -A -o comm |sort -k1 |uniq -c|sort -k1 -rn|head,列出運作執行個體最多的程序。

其他常用的指令和檔案,free -m,du,uptime,w,/proc/stat,/proc/cpuinfo,/proc/meminfo。

排查步驟如下:

1) 确認crontab是否正常運作。

可以運作指令crontab -e添加如下測試條目*/1 * * * * /bin/date >> /tmp/crontest 2>&1 &,然後觀察/tmp/crontest檔案。

如果有問題,建議使用ps aux|grep cron查找cron的pid,kill -9 PID結束cron程序,然後通過/etc/init.d/cron start重新啟動cron。

2) 确認cron條目中的腳本路徑為絕對路徑。

3) 檢視運作cron的使用者帳号是否正确,同時檢視/etc/cron.deny中是否包含此賬戶。

4) 檢查腳本的執行權限,腳本目錄以及日志的檔案權限。

5) 建議通過背景方式運作腳本,在腳本條目後添加“&”,例如,*/1 * * * * /bin/date >> /tmp/crontest 2>&1 &

Linux核心啟動順序為:

/sbin/init程序啟動,

然後依次執行init初始腳本,

運作級别腳本/etc/rc.d/rc*.d,*号值等于運作模式,可以在/etc/inittab中檢視,最後執行/etc/rc.d/rc.local。

如果需要配置開機任務,可以在/etc/rc.d/rc*.d中的S**rclocal檔案配置,也可以在/etc/rc.d/rc.local中配置。

硬碟隻讀的常見原因如下:

1) 磁盤空間滿

可以通過df -m指令檢視磁盤使用情況,然後删除多餘的檔案釋放磁盤空間(非第三方檔案不建議删除,如果需要請确認);

2) 磁盤inode資源占用完

可以通過df -i指令檢視,确認相關的程序;

3) 硬體故障

如果hosting應用通過上述方式仍無法确認原因,請撥打咨詢熱線4009100100或送出工單協助定位。

系統級别的日志檔案存放路徑為/var/log。

常用的系統日志為/var/log/messages 。

可以首先通過df指令檢視磁盤分區使用情況,比如df -m;

然後通過du指令檢視具體檔案夾的大小,比如du -sh ./*,du -h --max-depth=1|head -10;

使用ls指令列出檔案以及大小,比如ls -lSh;

另外,也可以通過find指令直接檢視特定目錄下的檔案大小,比如find / -type f -size +10M -exec ls -lrt {} ;

可以通過下列指令檢視系統版本:

uname -a,cat /proc/version,cat /etc/issue

伺服器本身沒有對顯示語言有限制,如果是終端軟體的影響中文的顯示,可以嘗試調整【選項】-【會話選項】-【外觀】(secureCRT設定,其他版本軟體請查找相關設定);

如果是純Linux shell出現亂碼,請使用export指令檢視使用者環境變量,檢視LANG,LC_CTYPE等環境變量設定。

可以通過如下設定,使SecureCRT連接配接雲伺服器時,不斷開連接配接:

打開secureCRT選項(Options),選擇會話選項(Session Opetions),點選終端(Terminal),在右側反空閑(Anti-idle)的框中勾選發送協定NO-OP(Send protocol NO-OP),時間設定為每120秒(every 120 seconds)。

有時,登入linux伺服器執行 rm 指令删除檔案後,用 df 指令檢視硬碟空間,發現删除檔案後可用的硬碟空間沒有增加。原因是通過 rm 指令删除檔案的時候,如果正好有其它程序在通路該檔案,通過 df 指令檢視,删除的檔案占用的空間是沒有立即釋放的。

解決方法:

使用root權限執行 lsof |grep deleted ,檢視正在使用被删除檔案的程序的PID,通過指令 kill -9 PID 殺掉對應的程序即可。

本文轉自 頂風走千裡 51CTO部落格,原文連結:http://blog.51cto.com/13505030/2047587

繼續閱讀