Linux管理員不可不知的五大命令+工具
原創(chuàng)【51CTO精選譯文】對于Linux管理員來說,有很多非常有用的工具可供選擇。在這里,我只是列舉出其中5個,Linux管理員日常操作都要用到的工具。我認為,功能***的工具可能并不適合你的使用情況,而且絕對有些工具我還忘了把它們統(tǒng)計進來,如果是這樣的話,我懇請大家把我沒收錄的工具在評論中寫出來。另外,本文中提到的工具僅供選擇,并不是每個人都一定需要它們,而那些沒提到的工具,并不是說Linux管理員就不需要使用,像SSH, SCP這樣的工具,每個Linux管理員都必須使用并且沒有其他選擇。
#5. head/tail命令
大多數(shù)情況下,登錄服務器的唯一目的是診斷某些問題,常規(guī)方法是查看日志。有各種不同應用類型的日志,比如Apache日志、MySQL日志、郵件日志等。那么你用什么命令來查看日志呢,難道不是tail嗎?這其實與此類似,我們有時候可以使用“head”命令來查看一個文件的開始幾行。
幾個例子:
- *持續(xù)檢查Apache錯誤日志文件,可以使用以下命令:
- $ tail -f /var/log/httpd/error_log
- *查看MySQL日志中的前15行內(nèi)容,可以使用以下命令:
- $ head -15 /var/log/mysqld.log
#4. vi/nano/emacs工具
一般而言,文本編輯器需要頻繁地用來創(chuàng)建/更新配置文件。我更喜歡使用vim,使用起來非常舒服,很容易記住它的一些快速編輯命令。
下面是使用vi的幾個例子。用vi打開一個文件,而且不進入插入模式(insert mode),那么你可以輸入如下所示的有用字符:
- =>跳至行末
- $
- => 跳至行首
- 0
- => 刪除余下的行
- D
- => 重復上一個命令
- . (點)
- => 給每行的末尾加上“maal”。1表示***行,$表示***一行
- :1,$ s/$/maal/
- =>在5至10行的行首加上“bingo”
- :5,10 s/^/bingo/
- => 文件在光標之后的內(nèi)容中如果出現(xiàn)foo,則把它替換成bar
- :s/foo/bar/g
- => 刪除本行并進入插入模式
- C
- => 去掉windows系統(tǒng)文件中的^M
- :se ff=unix
- => 開啟/關(guān)閉行數(shù)顯示
- :set nu
- :set nonu
- => 顯示文件里的實際行數(shù)
- :%!cat -n
- => 定位光標下面的單詞
- * (星號)
#3. screen命令
在nix世界中,screen命令是尚未得到充分利用的命令之一。打個比方,當你***一次在遠程服務器上執(zhí)行一個命令時,如果你發(fā)現(xiàn)那個命令需要幾個小時才能完成,或者當你需要登錄10個服務器并檢查東西、在它們之間復制文件的時候,突然之間,你的互聯(lián)網(wǎng)連接重啟了,ssh會話也終結(jié)了,這時,你就會用到screen命令,而一旦你開始使用這個命令,你就會被它吸引。Screen是一個終端復用器(terminal multiplexer),允許你通過使用一個物理終端來管理多個進程(比如ssh會話)。每個進程都有自己的虛擬窗口,而你可以在跟每個進程交互的虛擬窗口之間來回切換。
我們再深入的解釋一下。假設你有許多服務器,理想情況下你應該把ssh(端口22)訪問限制放在特定的IP地址上面。這樣,你可以登陸一個允許遠程IP訪問的服務器。此時,你就可以鍵入“screen”(所有主要的linux版本都安裝了screen命令)并開始執(zhí)行。你會看到一個狀態(tài)欄,你可以按Ctrl+ac組合鍵創(chuàng)建新的screen窗口。用Ctrl+an (下一個)和Ctrl+ap(上一個)組合鍵在窗口之間進行切換。通常,它提供的功能非常有用,比如遠程終端會話管理(分離或共享終端會話),無限窗口數(shù)量(這與固定的Linux虛擬控制臺數(shù)量不一樣),在窗口之間復制/粘貼,在窗口中顯示活動或靜止,把終端分割成多個區(qū)(橫向以及縱向),共享終端等等。
你可以把你的參數(shù)保存在.screenrc文件中,下面是我的.screenrc文件一樣,在里面我已經(jīng)重新定義了狀態(tài)欄的外觀和感覺,并且設置了鍵f5(上一個窗口)和f6(下一個窗口)的含義:
- $ cat ~/.screenrc
- #請不要有煩人的鈴聲
- vbell on
- #在掛起時分離
- autodetach on
- #不顯示版權(quán)頁
- startup_message off
- #模仿.logout消息
- pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."
- #告知$TERMCAP硬狀態(tài)(窗口列表和時鐘)支持
- 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}][% %d/%m %{k}%c %{k}]'
- #重新定義按鍵綁定
- bind -k F5 prev
- bind -k F6 next
#2. netstat/nmap命令
這兩個命令都是非常有用的命令,它們用來診斷網(wǎng)絡問題。當然,ping/traceroute可能是最常用的命令,但是若要說哪個更有效,nmap和netstat命令比基本的ping命令用處要大。Netstat可以顯示網(wǎng)絡狀態(tài),Nmap是一種安全/端口掃描器,也可以說成是網(wǎng)絡探索命令。
netstat的例子如下:
- *顯示全部互聯(lián)網(wǎng)(端口80)連接數(shù)量:
- $ netstat -an |grep :80 |wc -l
- *顯示機器上監(jiān)聽的所有端口:
- $ netstat -ant | grep LISTEN
- *在你的LAN上面用nmap命令掃描一個機器,并且獲悉它的哪些端口是開放的:
- $ nmap ip
#1. find和grep命令
日常工作會遇到的問題包括:有多少文件占用了大多數(shù)的磁盤空間?刪除所有超過兩天的臨時文件;找出因含有舊服務器名稱而引起問題的文件數(shù);把所有后綴名為“.list”的文件改成“.txt”文件。面對這些工作時,命令find和grep會是你***的朋友。
Find命令用來搜索文件。你可以指定很多選項,比如文件創(chuàng)建日期、或者文件大小要大于你指定的容量等。通常,我們也把find跟xargs或者exec結(jié)合起來使用,在find命令返回的文件上執(zhí)行命令。
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
- *查看沒有評論以及空行的文件內(nèi)容:
- $ grep -Ev “^$|^#” /etc/my.cnf
- *只打印分配給本接口的IP地址:
- $ ifconfig eth0 | grep 'inet addr:' | cut -d':' -f2 | awk '{ print $1}'
- *查看某個特定日期發(fā)送了多少email消息:
- $ cat /var/log/maillog | grep "status=sent" | grep "May 25" | wc -l
- *在進程列表中找出一個正在運行的process/daemon(多謝網(wǎng)友staranneph的提醒):
- ps -ef | grep mysql
- *你也可以通過使用上面的命令來注釋cpu/men的使用情況,比如像下面的命令輸出,你可以看到Plesk的統(tǒng)計進程本身就占用了大于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
【編輯推薦】