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
























