天天看點

[網摘學習]5個Linux指令

#1. head/tail指令

大多數情況下,登入伺服器的唯一目的是診斷某些問題,正常方法是檢視日志。有各種不同應用類型的日志,比如apache日志、mysql日志、郵件日志等。那麼你用什麼指令來檢視日志呢,難道不是tail嗎?這其實與此類似,我們有時候可以使用“head”指令來檢視一個檔案的開始幾行。

幾個例子:

*持續檢查apache錯誤日志檔案,可以使用以下指令:  

$ tail -f /var/log/httpd/error_log 

*檢視mysql日志中的前15行内容,可以使用以下指令:  

$ head -15 /var/log/mysqld.log  

#2. vi/nano/emacs工具

一般而言,文本編輯器需要頻繁地用來建立/更新配置檔案。我更喜歡使用vim,使用起來非常舒服,很容易記住它的一些快速編輯指令。

下面是使用vi的幾個例子。用vi打開一個檔案,而且不進入插入模式(insert mode),那麼你可以輸入如下所示的有用字元:

=>跳至行末  

 $  

=> 跳至行首  

=> 删除餘下的行  

 d  

=> 重複上一個指令  

. (點)  

=> 給每行的末尾加上“maal”。1表示第一行,$表示最後一行  

:1,$ s/$/maal/  

=>在5至10行的行首加上“bingo”  

:5,10 s/^/bingo/  

=> 檔案在光标之後的内容中如果出現foo,則把它替換成bar  

:s/foo/bar/g  

=> 删除本行并進入插入模式  

c  

=> 去掉windows系統檔案中的^m  

:se ff=unix  

=> 開啟/關閉行數顯示  

 :set nu  

 :set nonu  

=> 顯示檔案裡的實際行數  

:%!cat -n  

=> 定位光标下面的單詞  

 * (星号)  

#3. screen指令

在nix世界中,screen指令是尚未得到充分利用的指令之一。打個比方,當你最後一次在遠端伺服器上執行一個指令時,如果你發現那個指令需要幾個小時才能完成,或者當你需要登入10個伺服器并檢查東西、在它們之間複制檔案的時候,突然之間,你的網際網路連接配接重新開機了,ssh會話也終結了,這時,你就會用到screen指令,而一旦你開始使用這個指令,你就會被它吸引。screen是一個終端複用器(terminal multiplexer),允許你通過使用一個實體終端來管理多個程序(比如ssh會話)。每個程序都有自己的虛拟視窗,而你可以在跟每個程序互動的虛拟視窗之間來回切換。

我們再深入的解釋一下。假設你有許多伺服器,理想情況下你應該把ssh(端口22)通路限制放在特定的ip位址上面。這樣,你可以登陸一個允許遠端ip通路的伺服器。此時,你就可以鍵入“screen”(所有主要的linux版本都安裝了screen指令)并開始執行。你會看到一個狀态欄,你可以按ctrl+ac組合鍵建立新的screen視窗。用ctrl+an (下一個)和ctrl+ap(上一個)組合鍵在視窗之間進行切換。通常,它提供的功能非常有用,比如遠端終端會話管理(分離或共享終端會話),無限視窗數量(這與固定的linux虛拟控制台數量不一樣),在視窗之間複制/粘貼,在視窗中顯示活動或靜止,把終端分割成多個區(橫向以及縱向),共享終端等等。

你可以把你的參數儲存在.screenrc檔案中,下面是我的.screenrc檔案一樣,在裡面我已經重新定義了狀态欄的外觀和感覺,并且設定了鍵f5(上一個視窗)和f6(下一個視窗)的含義:

$ cat ~/.screenrc   

#請不要有煩人的鈴聲  

vbell on  

#在挂起時分離  

autodetach on  

#不顯示版權頁  

startup_message off  

#模仿.logout消息  

pow_detach_msg "screen session of \$logname \$:cr:\$:nl:ended." 

#告知$termcap硬狀态(視窗清單和時鐘)支援  

termcapinfo xterm* ti@:te@  

#把每個視窗中的shell設成登入shell  

shell -$shell 

defscrollback 10000  

#按照某種序列擴充vt100描述  

termcap vt* af=\e[3%dm:ab=\e[4%dm   

caption always  

caption string '%{= wk}[ %{k}%h %{k}][%= %{= wk}%?%-lw%?%{r}(%{r}%n*%f%t%?(%u)%?%{r})%{k}%?%+lw%?%?%= %{k}][%{b} %d/%m %{k}%c %{k}]'   

#重新定義按鍵綁定  

bind -k f5 prev   

bind -k f6 next  

#4. netstat/nmap指令

這兩個指令都是非常有用的指令,它們用來診斷網絡問題。當然,ping/traceroute可能是最常用的指令,但是若要說哪個更有效,nmap和netstat指令比基本的ping指令用處要大。netstat可以顯示網絡狀态,nmap是一種安全/端口掃描器,也可以說成是網絡探索指令。

netstat的例子如下:

*顯示全部網際網路(端口80)連接配接數量:  

$ netstat -an |grep :80 |wc -l  

*顯示機器上監聽的所有端口:  

$ netstat -ant | grep listen  

*在你的lan上面用nmap指令掃描一個機器,并且獲悉它的哪些端口是開放的:  

$ nmap ip  

#5. find和grep指令

日常工作會遇到的問題包括:有多少檔案占用了大多數的磁盤空間?删除所有超過兩天的臨時檔案;找出因含有舊伺服器名稱而引起問題的檔案數;把所有字尾名為“.list”的檔案改成“.txt”檔案。面對這些工作時,指令find和grep會是你最好的朋友。

find指令用來搜尋檔案。你可以指定很多選項,比如檔案建立日期、或者檔案大小要大于你指定的容量等。通常,我們也把find跟xargs或者exec結合起來使用,在find指令傳回的檔案上執行指令。

find指令的例子:

*在/var目錄中尋找10個最大的檔案:  

$ find /var -type f -ls | sort -k 7 -r -n | head -10  

*在/var/log/中尋找大小超過5gb的檔案:  

$ find /var/log/ -type f -size +5120m -exec ls -lh {} \;  

*尋找今天所有的檔案并把它們複制到另外一個目錄下面:  

$ find /home/me/files -ctime 0  -print -exec cp {} /mnt/backup/{} \;  

*找到所有超過一周的臨時檔案夾并删除:  

$ find /temp/ -mtime +7-type f | xargs /bin/rm -f  

*找到并重命名所有的mp3檔案(把檔案名字中的大寫字母變成小寫):  

$ find /home/me/music/ -type f -name *.mp3 -exec rename 'y/[a-z]/[a-z]/' '{}' \;  

grep指令的一些例子:  

*列印apache的檔案根目錄名稱:  

$ grep -i documentroot  /etc/httpd/conf/httpd.conf  

*檢視沒有評論以及空行的檔案内容:  

$ grep -ev “^$|^#” /etc/my.cnf  

*隻列印配置設定給本接口的ip位址:  

$ ifconfig eth0 | grep 'inet addr:' | cut -d':' -f2 | awk '{ print $1}' 

*檢視某個特定日期發送了多少email消息:  

$ cat /var/log/maillog | grep "status=sent" | grep "may 25" | wc -l  

*在程序清單中找出一個正在運作的process/daemon(多謝網友staranneph的提醒):  

ps -ef | grep mysql  

*你也可以通過使用上面的指令來注釋cpu/men的使用情況,比如像下面的指令輸出,你可以看到plesk的統計程序本身就占用了大于18%的cpu性能:  

[root@myserver ~]# ps aux | grep statistics  

root      8183 18.4  0.0  58384  2848 ?        d    04:05   3:00 /usr/local/psa/admin/sbin/statistics  

原文:top 5 most useful commands or tools for linux administrators 作者:linux admin zone

轉載請注明出處:http://www.cnblogs.com/haochuang/ 8年it工作經驗,5年測試技術與管理,2年産品與項目管理,曾參與過雲計算\雲存儲\車聯網産品研發工作; 業餘自媒體人,有技術類垂直微信公衆号;如有招聘或求職方面需求,請mail to [email protected] ;或通過 qq:363573922 微網誌:@念槐聚 聯系;