經常使用Linux 服務器命令--各類性能指標命令

 

 

若是你想知道你的服務器正在作幹什麼,你就須要瞭解一些基本的命令,一旦你精通了這些命令,那你就是一個專業的 Linux 系統管理員。java

監控命令##

iostat###

iostat命令用來顯示存儲系統的詳細信息,一般用它來監控磁盤 I/O 的狀況。要特別注意 iostat 統計結果中的 %iowait 值,太大了代表你的系統存儲系統性能低下。linux

命令: iostat -m -x 1 1000ios

能夠觀察對應的CPU中的%iowait數據,除此以外iostat還提供了一些更詳細的I/O狀態數據,好比比較重要的有:nginx

  1. **avgqu-sz : ** The average queue length of the requests that were issued to the device. (磁盤隊列的請求長度,正常的話2,3比較好。能夠和cpu的load同樣的理解)。
  2. **await : **The average time (in milliseconds) for I/O requests issued to the device to be served. (表明一個I/O操做從wait到完成的總時間)。
  3. svctm和%util都是表明處理該I/O請求花費的時間和CPU的時間比例。 判斷是否瓶頸時,這兩個參數不是主要的。
  4. r/s w/s 和 rMB/s wMB/s 都是表明當前系統處理的I/O的一些狀態,前者是咱們常說的tps,後者就是吞吐量。這也是評價一個系統的性能指標。

meminfo 和 free###

Meminfo 可以讓你獲取內存的詳細信息,你可使用 cat 和 grep 命令來顯示 meminfo 信息:web

另外你可使用 free 命令來顯示動態的內存使用信息,free 只是給你大概的內存信息,而 meminfo 提供的信息更加詳細。ubuntu

mpstat###

mpstat是MultiProcessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPUs系統裏,其不但能查看全部CPU的平均情況信息,並且可以查看特定CPU的信息。windows

mpstat的語法以下:mpstat [-P {|ALL}] [internal [count]],參數的含義以下:安全

-P {|ALL} 表示監控哪一個CPU, cpu在[0,cpu個數-1]中取值
internal 相鄰的兩次採樣的間隔時間
count 採樣的次數,count只能和delay一塊兒使用
當沒有參數時,mpstat則顯示系統啓動之後全部信息的平均值。有interval時,第一行的信息自系統啓動以來的平均信息。

命令:mpstat -P ALL 1 1000ruby

 

CPU 處理器IDbash

user 在internal時間段裏,用戶態的CPU時間(%),不包含 nice值爲負 進程 (usr/total)*100

nice 在internal時間段裏,nice值爲負進程的CPU時間(%) (nice/total)*100

system 在internal時間段裏,核心時間(%) (system/total)*100

iowait 在internal時間段裏,硬盤IO等待時間(%) (iowait/total)*100

irq 在internal時間段裏,硬中斷時間(%) (irq/total)*100

soft 在internal時間段裏,軟中斷時間(%) (softirq/total)*100

idle 在internal時間段裏,CPU除去等待磁盤IO操做外的由於任何緣由而空閒的時間閒置時間(%)(idle/total)*100

intr/s 在internal時間段裏,每秒CPU接收的中斷的次數intr/total)*100

CPU總的工做時間=total_cur=user+system+nice+idle+iowait+irq+softirq

total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq

user=user_cur – user_pre

total=total_cur-total_pre

其中_cur 表示當前值,_pre表示interval時間前的值。上表中的全部值可取到兩位小數點。

注意:這裏面的%iowait列,CPU等待I/O操做所花費的時間。這個值持續很高一般多是I/O瓶頸所致使的。經過這個參數能夠比較直觀的看出當前的I/O操做是否存在瓶頸。

netstat###

Netstat 和 ps 命令相似,是 Linux 管理員基本上天天都會用的工具,它顯示了大量跟網絡相關的信息,例如 socket 的使用、路由、接口、協議、網絡等等,下面是一些經常使用的參數:

 

nmon###

Nmon, 是 Nigel's Monitor 的縮寫,是一個使用很廣泛的開源工具,用以監控 Linux 系統的性能。Nmon 監控多個子系統的性能數據,例如處理器的使用率、內存使用率、隊列、磁盤I/O統計、網絡I/O統計、內存頁處理和進程信息。Nmon 也提供了一個圖形化的工具:

 

要運行 nmon,你能夠在命令行中啓動它,而後選擇要監控的子系統,這些子系統都對應有一個快捷鍵,例如輸入 c 可查看 CPU 信息,m用於查看內存,d用來查看磁盤信息等,你也能夠使用 -f 命令將 nmon 的執行結果保存到一個 CSV 文件中,便於往後分析。-----在每日的監控工做中,我發現 nmon 是我最經常使用的工具。

pmap###

pmap 命令用來報告每一個進程佔用內存的詳細狀況,可用來看是否有進程超支了,該命令須要進程 id 做爲參數

ps 和 pstree###

ps 和 pstree 命令是 Linux 系統管理員最好的朋友,均可以用來列表正在運行的全部進程。 ps 告訴你每一個進程佔用的內存和 CPU 處理時間,而 pstree 顯示的信息沒那麼詳細,但它以樹形結構顯示進程之間的依賴關係,包括子進程信息。一旦發現某個進程有問題,你可使用 kill 來殺掉它。
 
命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid

這個命令的做用,主要是能夠獲取到對應一個進程下的線程的一些信息。 好比你想分析一下一個java進程的一些運行瓶頸點,能夠經過該命令找到全部當前Thread的佔用CPU的時間,也就是這裏的最後一列。

 

好比這裏找到了一個 TID : 6603,所佔用的TIME時間最高。經過 printf "%x\n" 6603 首先轉化成16進制, 繼續經過 jstack命令dump出當前的jvm進程的堆棧信息。 經過 Grep命令便可以查到對應16進制的線程id信息,很快就能夠找到對應最耗CPU的代碼塊在哪。

簡單的解釋下,jstack下這一串線程信息內容:"qtp812487918-32" prio=10 tid=0x00007f69b4430000 nid=0x19cb waiting on condition [0x00007f69a5b86000]

pidstat###

命令: pidstat -p pid -u -d -t -w -h 1 1000

至關實用的一個命令,能夠 基於當個進程分析對應的性能數據,包括CPU,I/O,IR , CS等,能夠方便開發者更加精細化的觀察系統的運行狀態。不過pidstat貌似是在2.6內核的一些較新的版本纔有,須要安裝sysstat包。在ubuntu下,能夠經過 sudo apt-get install sysstat進行安裝。
 
pidstat強大之處在於它不只能夠 監視進程的性能狀況,也能夠 監視線程的性能狀況
命令:pidstat -p 3287 -r 1 1000 查看進程內存監控

dstat###

命令:dstat -y --tcp 1 1000

 

經過dstat --tcp能夠比較方便的看到當前的tcp的各類狀態,不須要每次netstat -nat去看

tcpdump###

tcpdump 是一個簡單、可靠的網絡監控工具,用來作基本的協議分析,看看那些進程在使用網絡以及如何使用網絡。固然,若是你要獲取跟詳細的信息,你應該使用 Wireshark。

top###

top 命令顯示當前的活動進程,默認它是按消耗 CPU 的厲害程度進行排序,每5秒鐘刷新一次列表,你也能夠選擇不一樣的排序方式,例如 m 是按內存佔用方式進行排序的快捷鍵。

 命令:top -Hp pid

 

能夠實時的跟蹤並獲取指定進程中最耗cpu的線程。再用ps命令中提到的jstack方法提取到對應的線程堆棧信息。

默認狀況下,Top 被調用時使用交互模式。在此模式下,Top 無限期運行,並能夠經過按鍵從新定義 Top 的運行方式。可是,有時你須要對 Top 的輸出進行後續處理,但這在此模式下難以實現。解決方法?使用批處理模式。

命令:top -b

哈,等等,它是不斷重複運行的,同交互模式同樣。不用擔憂,你可使用 -n 限制重複數量。因此,若是你但願得到一次性結果,鍵入:

命令:top -b -n 1

這一模式的真正優點在於你能夠很容易的與 at 或 cron 命令結合。它們的結合,使得 Top 能夠在特定時間對資源使用狀態進行快照。例如,使用 at ,咱們能夠設定 top 在一分鐘以後運行。

細心的讀者可能會問「在建立新任務時,爲何我須要在調用 Top 以前設置環境變量 TERM?」。答案是,Top 運行時須要此變量,但「at」在定時調用時並不會保留它。同上面那樣簡單的設置能夠確保 Top 正常運行。

如何監控制定進程
有時,咱們只對幾個進程感興趣,可能只是所有進程中的4個或5個。例如,若是你想要監測進程標識(PID)爲4360和4358的進程,你須要鍵入:top -p 19647,10065

看起來很簡單,只須要使用 -p 列出全部須要的 PID,並使用逗號間隔或簡單的屢次使用 -p便可。

另外一種多是監測擁有特定用戶標識(UID)的進程。應對此需求,你可使用 -u 或 -U 選項。假設用戶「johndoe」的 UID 爲500,鍵入:top -u taomk

或:top -U taomk

結論是,你既能夠純使用用戶名,也可以使用數字 UID。「-u,-U?這二者不一樣?」是的。同多數其它 GNU 工具同樣,選項是大小寫敏感的。-U 意味着 Top 將會搜索有效的、真實的、被保存的以及文件系統的 UID 進行匹配,而 -u 僅匹配有效的用戶id。要知道,每個 Linux 進程在運行時都是用有效用戶標識(effective UID),而其中有些並不等同真實用戶標識。多數狀況是,對相似文件系統權限或操做系統功能這項的有效用戶標識感興趣的人將會檢查它,而不是 UID。

不一樣於 -p 僅用於命令行選項,-U 和 -u 均可以在交互模式中使用。同你猜想的同樣,鍵入‘U’或‘u’能夠依據用戶名過濾進程。一樣的規則依然適用,‘u’爲有效用戶標識,‘U’爲 真實/有效/保存/文件系統用戶名。你將被要求鍵入用戶名或數字 UID。

sar###

sar命令也是Linux系統中重要的性能監測工具之一,它能夠週期性地對內存和CPU使用狀況進行採樣

命令:sar -u 1 3 查看CPU使用率

命令:sar -r 1 3 查看內存使用率

命令:sar -b 1 3 查看I/O使用率

uptime###

uptime 命令告訴你這臺服務器從開機啓動到如今已經運行了多長時間了。同時也包含了從啓動到如今服務器的平均負載狀況:

vmstat###

你能夠使用 vmstat 來監控虛擬內存,通常 Linux 上的開發者喜歡使用虛擬內存來得到最佳的存儲性能。該命令報告關於內核線程、虛擬內存、磁盤、陷阱和 CPU 活動的統計信息。由 vmstat 命令生成的報告能夠用於平衡系統負載活動。系統範圍內的這些統計信息(全部的處理器中)都計算出以百分比表示的平均值,或者計算其總和。

vmstat:能夠查看內存,交互區分,I/O操做,上下文切換,時鐘中斷以及CPU的使用狀況。

命令:vmstat 1 3

其餘命令###

CPU命令##

查看系統內核信息###

命令:uname -a

命令:uname -r

查看系統發行版信息###

命令:cat /etc/issue

命令:cat /proc/version

查看系統CPU邏輯核數###

命令:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

查看系統CPU物理核數###

命令:cat /proc/cpuinfo | grep physical | uniq -c

 

命令:grep "model name" /proc/cpuinfo

查看系統CPU運行位數###

命令:getconf LONG_BIT

說明:當前CPU運行在64bit模式下

查看系統CPU是否支持64位計算###

命令:cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l

 

說明:結果大於0, 支持64bit計算. lm指long mode, 支持lm則是64bit

查看系統Shell腳本###

cat /proc/cpuinfo命令###

  1. processor:邏輯處理器的id。
  2. physical id:物理封裝的處理器的id。
  3. core id:每一個核心的id。
  4. cpu cores:位於相同物理封裝的處理器中的內核數量。
  5. siblings:位於相同物理封裝的處理器中的邏輯處理器的數量。

查看物理CPU的個數:cat /proc/cpuinfo |grep "physical id"|sort |uniq| wc -l

查看邏輯CPU的個數:cat /proc/cpuinfo |grep "processor"|wc -l

查看CPU是幾核:cat /proc/cpuinfo |grep "cores"|uniq

查看CPU的主頻:cat /proc/cpuinfo |grep MHz|uniq

日期時間##

date命令###

查看當前系統時間:date

修改當前系統時間:date -s "2009-07-28 15:32:00"

解壓縮命令##

tar解壓###

find命令##

列出當前目錄的文件樹

find . -print 2 > /dev/null | awk '!/\.$/ {for (i=1;i<NF;i++){d=length($i);if ( d < 5 && i != 1 )d=5;printf("%"d"s","|")}print "---"$NF}' FS='/'

who命令##

查看用戶所在哪些終端:who | awk '{print $1 "\t" $6}'

查看硬件配置##

uname -a:查看內核/操做系統/CPU信息
head -n 1 /etc/issue:查看操做系統版本
cat /proc/cpuinfo:查看CPU信息
hostname:查看計算機名
lspci -tv:列出全部PCI設備
lsusb -tv:列出全部USB設備
lsmod:列出加載的內核模塊
**env **:查看環境變量資源

free -m:查看內存使用量和交換區使用量
df -h:查看各分區使用狀況
du -sh <目錄名>:查看指定目錄的大小
grep MemTotal /proc/meminfo:查看內存總量
grep MemFree /proc/meminfo:查看空閒內存量
uptime:查看系統運行時間、用戶數、負載
cat /proc/loadavg:查看系統負載磁盤和分區

mount | column -t:查看掛接的分區狀態
fdisk -l:查看全部分區
swapon -s:查看全部交換分區
hdparm -i /dev/hda:查看磁盤參數(僅適用於IDE設備)
dmesg | grep IDE:查看啓動時IDE設備檢測情況網絡

ifconfig:查看全部網絡接口的屬性
iptables -L:查看防火牆設置
**route -n **:查看路由表
netstat -lntp:查看全部監聽端口
netstat -antp:查看全部已經創建的鏈接
**netstat -s **:查看網絡統計信息進程

ps -ef:查看全部進程
top:實時顯示進程狀態用戶
w:查看活動用戶
id <用戶名>:查看指定用戶信息
last:查看用戶登陸日誌
cut -d: -f1 /etc/passwd:查看系統全部用戶
cut -d: -f1 /etc/group:查看系統全部組
crontab -l:查看當前用戶的計劃任務服務

chkconfig --list:列出全部系統服務
chkconfig --list | grep on:列出全部啓動的系統服務程序

rpm -qa:查看全部安裝的軟件包

重啓命令##

shutdown###

shutdown命令安全地將系統關機。有些用戶會使用直接斷掉電源的方式來關閉linux,這是十分危險的。由於linux與windows不一樣,其後臺運行着許多進程,因此強制關機可能會致使進程的數據丟失﹐使系統處於不穩定的狀態﹐甚至在有的系統中會損壞硬件設備。

而在系統關機前使用shutdown命令﹐系統管理員會通知全部登陸的用戶系統將要關閉。而且login指令會被凍結﹐即新的用戶不能再登陸。直接關機或者延遲必定的時間才關機都是可能的﹐還可能重啓。這是由全部進程〔process〕都會收到系統所送達的信號〔signal〕決定的。這讓像vi之類的程序有時間儲存目前正在編輯的文檔﹐而像處理郵件〔mail〕和新聞〔news〕的程序則能夠正常地離開等等。

shutdown執行的工做是送信號〔signal〕給init程序﹐要求它改變runlevel。Runlevel 0被用來停機〔halt〕﹐runlevel 6是用來從新激活〔reboot〕系統﹐而runlevel 1則是被用來讓系統進入管理工做能夠進行的狀態﹔這是預設的﹐假定沒有-h也沒有-r參數給shutdown。要想了解在停機〔halt〕或者從新開機〔reboot〕過程當中作了哪些動做﹐你能夠在這個文件/etc/inittab裏看到這些runlevels相關的資料。

shutdown 參數說明:

[-t] 在改變到其它runlevel以前﹐告訴init多久之後關機。
[-r] 重啓計算器。
[-k] 並不真正關機﹐只是送警告信號給每位登陸者〔login〕。
[-h] 關機後關閉電源〔halt〕。
[-n] 不用init﹐而是本身來關機。不鼓勵使用這個選項﹐並且該選項所產生的後果每每不老是你所預期獲得的。
[-c] cancel current process取消目前正在執行的關機程序。因此這個選項固然沒有時間參數﹐可是能夠輸入一個用來解釋的訊息﹐而這信息將會送到每位使用者。
[-f] 在重啓計算器〔reboot〕時忽略fsck。
[-F] 在重啓計算器〔reboot〕時強迫fsck。
[-time] 設定關機〔shutdown〕前的時間。
命令:shutdown -r -t 0:0就是當即關機,若是設置爲7,則是7秒鐘以後關機

halt###

halt就是調用shutdown -h。halt執行時﹐殺死應用進程﹐執行sync系統調用﹐文件系統寫操做完成後就會中止內核。

halt 參數說明:

[-n] 防止sync系統調用﹐它用在用fsck修補根分區以後﹐以阻止內核用老版本的超級塊〔superblock〕覆蓋修補過的超級塊。
[-w] 並非真正的重啓或關機﹐只是寫wtmp〔/var/log/wtmp〕紀錄。
[-d] 不寫wtmp紀錄〔已包含在選項[-n]中〕。
[-f] 沒有調用shutdown而強制關機或重啓。
[-i] 關機〔或重啓〕前﹐關掉全部的網絡接口。
[-p] 該選項爲缺省選項。就是關機時調用poweroff。

reboot###

reboot的工做過程差很少跟halt同樣﹐不過它是引起主機重啓﹐而halt是關機。它的參數與halt相差很少。

init###

init是全部進程的祖先﹐它的進程號始終爲1﹐因此發送TERM信號給init會終止全部的用戶進程﹑守護進程等。shutdown 就是使用這種機制。

init定義了8個運行級別(runlevel), init 0爲關機﹐init 1爲重啓。關於init能夠長篇大論﹐這裏就再也不敘述。另外還有 telinit命令能夠改變init的運行級別﹐好比﹐telinit -i S可以使系統進入單用戶模式﹐而且得不到使用shutdown時的信息和等待時間。

apt-get使用##

「起初GNU/Linux系統中只有.tar.gz。用戶必須本身編譯他們想使用的每個程序。在Debian出現之後,人們認爲有必要在系統中添加一種機制用來管理安裝在計算機上的軟件包。人們將這套系統稱爲dpkg。至此着名的‘package’首次在GNU/Linux上出現。不久之後紅帽子也開始着手創建本身的包管理系統‘rpm’。

「GNU/Linux的創造者們很快又陷入了新的窘境。他們但願經過一種快捷、實用並且高效的方式來安裝軟件包。這些軟件包能夠自動處理相互之間的依賴關係,而且在升級過程當中維護他們的配置文件。Debian又一次充當了開路先鋒的角色。她獨創了APT(Advanced Packaging Tool)。這一工具後來被Conectiva 移植到紅帽子系統中用於對rpm包的管理。在其餘一些發行版中咱們也能看到她的身影。」

"同時,apt是一個很完整和先進的軟件包管理程序,使用它可讓你,又簡單,又準確的找到你要的的軟件包, 而且安裝或卸載都很簡潔。 它還可讓你的全部軟件都更新到最新狀態,並且也能夠用來對ubuntu進行升級。"

"apt是須要用命令來操做的軟件,不過如今也出現了不少有圖形的軟件,好比Synaptic, Kynaptic 和 Adept。"

apt-get update——在修改/etc/apt/sources.list或者/etc/apt/preferences之後運行該命令。此外您須要按期運行這一命令以確保您的軟件包列表是最新的。
apt-get install packagename——安裝一個新軟件包(參見下文的aptitude)。
apt-get remove packagename——卸載一個已安裝的軟件包(保留配置文件)。
apt-get --purge remove packagename——卸載一個已安裝的軟件包(刪除配置文件)。
dpkg --force-all --purge packagename——有些軟件很難卸載,並且還阻止了別的軟件的應用,就能夠用這個,不過有點冒險。
apt-get autoclean——apt會把已裝或已卸的軟件都備份在硬盤上,因此若是須要空間的話,可讓這個命令來刪除你已經刪掉的軟件。
apt-get clean——這個命令會把安裝的軟件的備份也刪除,不過這樣不會影響軟件的使用的。
apt-get upgrade——更新全部已安裝的軟件包。
apt-get dist-upgrade——將系統升級到新版本。
apt-cache search string——在軟件包列表中搜索字符串。
dpkg -l package-name-pattern——列出全部與模式相匹配的軟件包。若是您不知道軟件包的全名,您可使用「 package-name-pattern」。
aptitude——詳細查看已安裝或可用的軟件包。與apt-get相似,aptitude能夠經過命令行方式調用,但僅限於某些命令——最多見的有安裝和卸載命令。因爲aptitude比apt-get瞭解更多信息,能夠說它更適合用來進行安裝和卸載。
apt-cache showpkg pkgs——顯示軟件包信息。
apt-cache dumpavail——打印可用軟件包列表。
apt-cache show pkgs——顯示軟件包記錄,相似於dpkg –print-avail。
apt-cache pkgnames——打印軟件包列表中全部軟件包的名稱。
dpkg -S file——這個文件屬於哪一個已安裝軟件包。
dpkg -L package——列出軟件包中的全部文件。
apt-file search filename——查找包含特定文件的軟件包(不必定是已安裝的),這些文件的文件名中含有指定的字符串。apt-file是一個獨立的軟件包。您必須先使用apt-get install來安裝它,然後運行apt-file update。若是apt-file search filename輸出的內容太多,您能夠嘗試使用apt-file search filename | grep -w filename(只顯示指定字符串做爲完整的單詞出如今其中的那些文件名)或者相似方法,例如:apt-file search filename | grep /bin/(只顯示位於諸如/bin或/usr/bin這些文件夾中的文件,若是您要查找的是某個特定的執行文件的話,這樣作是有幫助的)。
apt-get autoclean——按期運行這個命令來清除那些已經卸載的軟件包的.deb文件。經過這種方式,您能夠釋放大量的磁盤空間。若是您的需求十分迫切,可使用apt-get clean以釋放更多空間。這個命令會將已安裝軟件包裹的.deb文件一併刪除。大多數狀況下您不會再用到這些.debs文件,所以若是您爲磁盤空間不足而感到焦頭爛額,這個辦法也許值得一試。

wget下載##

wget是在Linux下開發的開放源代碼的軟件,做者是Hrvoje Niksic,後來被移植到包括Windows在內的各個平臺上。它有如下功能和特色:

(1)支持斷點下傳功能;這一點,也是網絡螞蟻和FlashGet當年最大的賣點,如今,Wget也可使用此功能,那些網絡不是太好的用戶能夠放心了;
(2)同時支持FTP和HTTP下載方式;儘管如今大部分軟件可使用HTTP方式下載,可是,有些時候,仍然須要使用FTP方式下載軟件;
(3)支持代理服務器;對安全強度很高的系統而言,通常不會將本身的系統直接暴露在互聯網上,因此,支持代理是下載軟件必須有的功能;
(4)設置方便簡單;可能,習慣圖形界面的用戶已經不是太習慣命令行了,可是,命令行在設置上其實有更多的優勢,最少,鼠標能夠少點不少次,也不要擔憂是否錯點鼠標;
(5)程序小,徹底免費;程序小能夠考慮不計,由於如今的硬盤實在太大了;徹底免費就不得不考慮了,即便網絡上有不少所謂的免費軟件,可是,這些軟件的廣告卻不是咱們喜歡的;

wget http://soft.deepvps/web/nginx/nginx-0.8.0.tar.gz:下載遠程服務器上的文件到本身的服務器,連上傳都省了,服務器不是100M就是1000M的帶寬,下載一個2-3兆的MT還不是幾十秒的事;

wget -c http://soft.deepvps/web/nginx/nginx-0.8.0.tar.gz:繼續下載上次未下載完的文件;

wget參數說明
-t,--tries=NUMBER 是否下載次數(0表示無窮次)
-O --output-document=FILE保存下載日誌到文件FILE
-nc, --no-clobber 不要覆蓋已經存在的文件
-N,--timestamping只下載比本地新的文件
-T,--timeout=SECONDS 設置超時時間
-Y,--proxy=on/off 關閉代理

1)下載整個http或者ftp站點:wget http://place.your.url/here
這個命令能夠將http://place.your.url/here 首頁下載下來。使用-x會強制創建服務器上如出一轍的目錄,若是使用-nd參數,那麼服務器上下載的全部內容都會加到本地當前目錄。

2)遞歸下載 :wget -r http://place.your.url/here
這 個命令會按照遞歸的方法,下載服務器上全部的目錄和文件,實質就是下載整個網站。這個命令必定要當心使用,由於在下載的時候,被下載網站指向的全部地址同 樣會被下載,所以,若是這個網站引用了其餘網站,那麼被引用的網站也會被下載下來!基於這個緣由,這個參數不經常使用。能夠用-l number參數來指定下載的層次。例如只下載兩層,那麼使用-l 2。

3)製做鏡像站點,那麼可使用-m參數,例如:wget -m http://place.your.url/here
這時wget會自動判斷合適的參數來製做鏡像站點。此時,wget會登陸到服務器上,讀入robots.txt並按robots.txt的規定來執行。

4)斷點續傳,例如:wget -c http://the.url.of/incomplete/file
當文件特別大或者網絡特別慢的時候,每每一個文件尚未下載完,鏈接就已經被切斷,此時就須要斷點續傳。wget的斷點續傳是自動的,只須要使用-c參數,使用斷點續傳要求服務器支持斷點續傳。-t參數表示重試次數,例如須要重試100次,那麼就寫-t 100,若是設成-t 0,那麼表示無窮次重試,直到鏈接成功。-T參數表示超時等待時間,例如-T 120,表示等待120秒鏈接不上就算超時。

**5)批量下載,例如:wget -i download.txt **
若是有多個文件須要下載,那麼能夠生成一個文件,把每一個文件的URL寫一行,例如生成文件download.txt,而後用命令:wget -i download.txt 這樣就會把download.txt裏面列出的每一個URL都下載下來。(若是列的是文件就下載文件,若是列的是網站,那麼下載首頁)

6)選擇性的下載,例如:wget -m –reject=gif http://target.web.site/subdirectory
能夠指定讓wget只下載一類文件,或者不下載什麼文件。例如:wget -m –reject=gif http://target.web.site/subdirectory 表示下載http://target.web.site/subdirectory, 可是忽略gif文件。–accept=LIST 能夠接受的文件類型,–reject=LIST拒絕接受的文件類型。

7)密碼和認證
wget只能處理利用用戶名/密碼方式限制訪問的網站,能夠利用兩個參數:

對於須要證書作認證的網站,就只能利用其餘下載工具了,例如curl。

8)利用代理服務器進行下載
若是用戶的網絡須要通過代理服務器,那麼可讓wget經過代理服務器進行文件的下載。此時須要在當前用戶的目錄下建立一個.wgetrc文件。文件中能夠設置代理服務器:

http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
分別表示http的代理服務器和ftp的代理服務器。若是代理服務器須要密碼則使用:

這兩個參數。
使用參數–proxy=on/off 使用或者關閉代理。

附錄:命令格式:

wget [參數列表] [目標軟件、網頁的網址]

-V,–version 顯示軟件版本號而後退出;
-h,–help顯示軟件幫助信息;
-e,–execute=COMMAND 執行一個 「.wgetrc」命令

-o,–output-file=FILE 將軟件輸出信息保存到文件;
-a,–append-output=FILE將軟件輸出信息追加到文件;
-d,–debug顯示輸出信息;
-q,–quiet 不顯示輸出信息;
-i,–input-file=FILE 從文件中取得URL;

-t,–tries=NUMBER 是否下載次數(0表示無窮次)
-O –output-document=FILE下載文件保存爲別的文件名
-nc, –no-clobber 不要覆蓋已經存在的文件
-N,–timestamping只下載比本地新的文件
-T,–timeout=SECONDS 設置超時時間
-Y,–proxy=on/off 關閉代理

-nd,–no-directories 不創建目錄
-x,–force-directories 強制創建目錄

-http-user=USER設置HTTP用戶
-http-passwd=PASS設置HTTP密碼
-proxy-user=USER設置代理用戶
-proxy-passwd=PASS設置代理密碼

-r,–recursive 下載整個網站、目錄(當心使用)
-l,–level=NUMBER 下載層次

-A,–accept=LIST 能夠接受的文件類型
-R,–reject=LIST拒絕接受的文件類型
-D,–domains=LIST能夠接受的域名
-exclude-domains=LIST拒絕的域名
-L,–relative 下載關聯連接
-follow-ftp 只下載FTP連接
-H,–span-hosts 能夠下載外面的主機
-I,–include-directories=LIST容許的目錄
-X,–exclude-directories=LIST 拒絕的目錄

lsof使用##

lsof filename 顯示打開指定 文件的全部進程
lsof -a 表示兩個參數都必須知足時才顯示結果
lsof -c string 顯示COMMAND列中包含指定字符的進程全部打開的文件
lsof -u username 顯示所屬user進程打開的文件
lsof -g gid 顯示歸屬gid的進程狀況
lsof +d /DIR/ 顯示目錄下被進程打開的文件
lsof +D /DIR/ 同上,可是會搜索目錄下的全部目錄,時間相對較長
lsof -d FD 顯示指定文件描述符的進程
lsof -n 不將IP轉換爲hostname,缺省是不加上-n參數
lsof -i 用以顯示符合條件的進程狀況
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
 
查看22端口如今運行的狀況:lsof -i :22

查看所屬root用戶進程所打開的文件類型爲txt的文件:lsof -a -u root -d txt

相關文章
相關標籤/搜索