Linux管理員不可不知的五大命令+工具

【51CTO精選譯文】對於Linux管理員來說,有很多非常有用的工具可供選擇。在這裏,我只是列舉出其中5個,Linux管理員日常操作都要用到的工具。我認爲,功能最強的工具可能並不適合你的使用情況,而且絕對有些工具我還忘了把它們統計進來,如果是這樣的話,我懇請大家把我沒收錄的工具在評論中寫出來。另外,本文中提到的工具僅供選擇,並不是每個人都一定需要它們,而那些沒提到的工具,並不是說Linux管理員就不需要使用,像SSH, SCP這樣的工具,每個Linux管理員都必須使用並且沒有其他選擇。

#5. head/tail命令

大多數情況下,登錄服務器的唯一目的是診斷某些問題,常規方法是查看日誌。有各種不同應用類型的日誌,比如Apache日誌、MySQL日誌、郵件日誌等。那麼你用什麼命令來查看日誌呢,難道不是tail嗎?這其實與此類似,我們有時候可以使用“head”命令來查看一個文件的開始幾行。

幾個例子:

  1. *持續檢查Apache錯誤日誌文件,可以使用以下命令:  
  2.  
  3. $ tail -f /var/log/httpd/error_log 
  4.  
  5. *查看MySQL日誌中的前15行內容,可以使用以下命令:  
  6.  
  7. $ head -15 /var/log/mysqld.log  
  8.  

#4. vi/nano/emacs工具

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

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

  1. =>跳至行末  
  2.  $  
  3. => 跳至行首  
  4.  0  
  5. => 刪除餘下的行  
  6.  D  
  7. => 重複上一個命令  
  8. . (點)  
  9. => 給每行的末尾加上“maal”。1表示第一行,$表示最後一行  
  10. :1,$ s/$/maal/  
  11. =>在5至10行的行首加上“bingo”  
  12. :5,10 s/^/bingo/  
  13. => 文件在光標之後的內容中如果出現foo,則把它替換成bar  
  14. :s/foo/bar/g  
  15. => 刪除本行並進入插入模式  
  16. C  
  17. => 去掉windows系統文件中的^M  
  18. :se ff=unix  
  19. => 開啓/關閉行數顯示  
  20.  :set nu  
  21.  :set nonu  
  22. => 顯示文件裏的實際行數  
  23. :%!cat -n  
  24. => 定位光標下面的單詞  
  25.  * (星號)  
  26.  

#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(下一個窗口)的含義:

  1. $ cat ~/.screenrc   
  2. #請不要有煩人的鈴聲  
  3. vbell on  
  4.  
  5. #在掛起時分離  
  6. autodetach on  
  7.  
  8. #不顯示版權頁  
  9. startup_message off  
  10.  
  11. #模仿.logout消息  
  12. pow_detach_msg "Screen session of /$LOGNAME /$:cr:/$:nl:ended." 
  13.  
  14. #告知$TERMCAP硬狀態(窗口列表和時鐘)支持  
  15. termcapinfo xterm* ti@:te@  
  16.  
  17. #把每個窗口中的shell設成登錄shell  
  18. shell -$SHELL 
  19.  
  20. defscrollback 10000  
  21.  
  22. #按照某種序列擴展vt100描述  
  23.  
  24. termcap vt* AF=/E[3%dm:AB=/E[4%dm   
  25. caption always  
  26. caption string '%{= wk}[ %{k}%H %{k}][%= %{= wk}%?%-Lw%?%{r}(%{r}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %{k}][%{b} %d/%m %{k}%c %{k}]'   
  27.  
  28. #重新定義按鍵綁定  
  29.  
  30. bind -k F5 prev   
  31. bind -k F6 next  
  32.  

#2. netstat/nmap命令

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

netstat的例子如下:

  1. *顯示全部互聯網(端口80)連接數量:  
  2. $ netstat -an |grep :80 |wc -l  
  3. *顯示機器上監聽的所有端口:  
  4. $ netstat -ant | grep LISTEN  
  5. *在你的LAN上面用nmap命令掃描一個機器,並且獲悉它的哪些端口是開放的:  
  6. $ nmap ip  
  7.  

#1. find和grep命令

日常工作會遇到的問題包括:有多少文件佔用了大多數的磁盤空間?刪除所有超過兩天的臨時文件;找出因含有舊服務器名稱而引起問題的文件數;把所有後綴名爲“.list”的文件改成“.txt”文件。面對這些工作時,命令find和grep會是你最好的朋友。

Find命令用來搜索文件。你可以指定很多選項,比如文件創建日期、或者文件大小要大於你指定的容量等。通常,我們也把find跟xargs或者exec結合起來使用,在find命令返回的文件上執行命令。

find命令的例子:

  1. *在/var目錄中尋找10個最大的文件:  
  2. $ find /var -type f -ls | sort -k 7 -r -n | head -10  
  3.  
  4. *在/var/log/中尋找大小超過5GB的文件:  
  5. $ find /var/log/ -type f -size +5120M -exec ls -lh {} /;  
  6.  
  7. *尋找今天所有的文件並把它們複製到另外一個目錄下面:  
  8. $ find /home/me/files -ctime 0  -print -exec cp {} /mnt/backup/{} /;  
  9.  
  10. *找到所有超過一週的臨時文件夾並刪除:  
  11. $ find /temp/ -mtime +7-type f | xargs /bin/rm -f  
  12.  
  13. *找到並重命名所有的mp3文件(把文件名字中的大寫字母變成小寫):  
  14. $ find /home/me/music/ -type f -name *.mp3 -exec rename 'y/[A-Z]/[a-z]/' '{}' /;  
  15.  
  16. grep命令的一些例子:  
  17. *打印Apache的文件根目錄名稱:  
  18. $ grep -i documentroot  /etc/httpd/conf/httpd.conf  
  19.  
  20. *查看沒有評論以及空行的文件內容:  
  21. $ grep -Ev “^$|^#” /etc/my.cnf  
  22.  
  23. *只打印分配給本接口的IP地址:  
  24. $ ifconfig eth0 | grep 'inet addr:' | cut -d':' -f2 | awk '{ print $1}' 
  25.  
  26. *查看某個特定日期發送了多少email消息:  
  27. $ cat /var/log/maillog | grep "status=sent" | grep "May 25" | wc -l  
  28.  
  29. *在進程列表中找出一個正在運行的process/daemon(多謝網友staranneph的提醒):  
  30. ps -ef | grep mysql  
  31.  
  32. *你也可以通過使用上面的命令來註釋cpu/men的使用情況,比如像下面的命令輸出,你可以看到Plesk的統計進程本身就佔用了大於18%的cpu性能:  
  33. [root@myserver ~]# ps aux | grep statistics  
  34. root      8183 18.4  0.0  58384  2848 ?        D    04:05   3:00 /usr/local/psa/admin/sbin/statistics  
  35.  

原文:Top 5 most useful commands or tools for Linux administrators 作者:Linux Admin Zone

 

轉載自:http://os.51cto.com/art/201004/193498.htm

發佈了33 篇原創文章 · 獲贊 24 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章