#5. head/tail命令
大多數情況下,登錄服務器的唯一目的是診斷某些問題,常規方法是查看日志。有各種不同應用類型的日志,比如Apache日志、MySQL日志、郵件日志等。那麼你用什麼命令來查看日志呢,難道不是tail嗎?這其實與此類似,我們有時候可以使用“head”命令來查看一個文件的開始幾行。
幾個例子:
- *持續檢查Apache錯誤日志文件,可以使用以下命令:
- ___FCKpd___0nbsp;tail -f /var/log/httpd/error_log
- *查看MySQL日志中的前15行內容,可以使用以下命令:
- ___FCKpd___0nbsp;head -15 /var/log/mysqld.log
#4. vi/nano/emacs工具
一般而言,文本編輯器需要頻繁地用來創建/更新配置文件。我更喜歡使用vim,使用起來非常舒服,很容易記住它的一些快速編輯命令。
下面是使用vi的幾個例子。用vi打開一個文件,而且不進入插入模式(insert mode),那麼你可以輸入如下所示的有用字符:
- =>跳至行末
- $
- => 跳至行首
- 0
- => 刪除余下的行
- D
- => 重復上一個命令
- . (點)
- => 給每行的末尾加上“maal”。1表示第一行,$表示最後一行
- :1,___FCKpd___1nbsp;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(下一個窗口)的含義:
- ___FCKpd___2nbsp;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
#2. netstat/nmap命令
這兩個命令都是非常有用的命令,它們用來診斷網絡問題。當然,ping/traceroute可能是最常用的命令,但是若要說哪個更有效,nmap和netstat命令比基本的ping命令用處要大。Netstat可以顯示網絡狀態,Nmap是一種安全/端口掃描器,也可以說成是網絡探索命令。
netstat的例子如下:
- *顯示全部互聯網(端口80)連接數量:
- ___FCKpd___3nbsp;netstat -an |grep :80 |wc -l
- *顯示機器上監聽的所有端口:
- ___FCKpd___3nbsp;netstat -ant | grep LISTEN
- *在你的LAN上面用nmap命令掃描一個機器,並且獲悉它的哪些端口是開放的:
- ___FCKpd___3nbsp;nmap ip
#1. find和grep命令
日常工作會遇到的問題包括:有多少文件占用了大多數的磁盤空間?刪除所有超過兩天的臨時文件;找出因含有舊服務器名稱而引起問題的文件數;把所有後綴名為“.list”的文件改成“.txt”文件。面對這些工作時,命令find和grep會是你最好的朋友。
Find命令用來搜索文件。你可以指定很多選項,比如文件創建日期、或者文件大小要大於你指定的容量等。通常,我們也把find跟xargs或者exec結合起來使用,在find命令返回的文件上執行命令。
find命令的例子:
- *在/var目錄中尋找10個最大的文件:
- ___FCKpd___4nbsp;find /var -type f -ls | sort -k 7 -r -n | head -10
- *在/var/log/中尋找大小超過5GB的文件:
- ___FCKpd___4nbsp;find /var/log/ -type f -size +5120M -exec ls -lh {} \;
- *尋找今天所有的文件並把它們復制到另外一個目錄下面:
- ___FCKpd___4nbsp;find /home/me/files -ctime 0 -print -exec cp {} /mnt/backup/{} \;
- *找到所有超過一周的臨時文件夾並刪除:
- ___FCKpd___4nbsp;find /temp/ -mtime +7-type f | xargs /bin/rm -f
- *找到並重命名所有的mp3文件(把文件名字中的大寫字母變成小寫):
- ___FCKpd___4nbsp;find /home/me/music/ -type f -name *.mp3 -exec rename 'y/[A-Z]/[a-z]/' '{}' \;
- grep命令的一些例子:
- *打印Apache的文件根目錄名稱:
- ___FCKpd___4nbsp;grep -i documentroot /etc/httpd/conf/httpd.conf
- *查看沒有評論以及空行的文件內容:
- ___FCKpd___4nbsp;grep -Ev “^$|^#” /etc/my.cnf
- *只打印分配給本接口的IP地址:
- ___FCKpd___4nbsp;ifconfig eth0 | grep 'inet addr:' | cut -d':' -f2 | awk '{ print $1}'
- *查看某個特定日期發送了多少email消息:
- ___FCKpd___4nbsp;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