Ⅰ 怎樣分析linux的性能指標
一、處理器參數
這是一個很簡單的參數,它直觀的描述了每個CPU的利用率。在xSeries架構中,如果CPU的利用率長時間的超過80%,就可能是出現了處理器的瓶頸。
Runable processes
這個值描述了正在准備被執行的進程,在一個持續時間里這個值不應該超過物理CPU數量的10倍,否則CPU方面就可能存在瓶頸。
Blocked
描述了那些因為等待I/O操作結束而不能被執行的進程,Blocked可能指出你正面臨I/O瓶頸。
User time
描述了處理用戶進程的百分比,包括nice time。如果User time的值很高,說明系統性能用在處理實際的工作。
System time
描述了CPU花費在處理內核操作包括IRQ和軟體中斷上面的百分比。如果system time很高說明系統可能存在網路或者驅動堆棧方面的瓶頸。一個系統通常只花費很少的時間去處理內核的操作。
Idle time
描述了CPU空閑的百分比。
Nice time
描述了CPU花費在處理re-nicing進程的百分比。
Context switch
系統中線程之間進行交換的數量。
Waiting
CPU花費在等待I/O操作上的總時間,與blocked相似,一個系統不應該花費太多的時間在等待I/O操作上,否則你應該進一步檢測I/O子系統是否存在瓶頸。
Interrupts
Interrupts值包括硬Interrupts和軟Interrupts,硬Interrupts會對系統性能帶
來更多的不利影響。高的Interrupts值指出系統可能存在一個軟體的瓶頸,可能是內核或者驅動程序。注意Interrupts值中包括CPU時鍾導
致的中斷(現代的xServer系統每秒1000個Interrupts值)。
二、內存參數
Free memory
相比其他操作系統,Linux空閑內存的值不應該做為一個性能參考的重要指標,因為就像我們之前提到過的,Linux內核會分配大量沒有被使用的內存作為文件系統的緩存,所以這個值通常都比較小。
Swap usage
這個值描述了已經被使用的swap空間。Swap
usage只表示了Linux管理內存的有效性。對識別內存瓶頸來說,Swap In/Out才是一個比較又意義的依據,如果Swap
In/Out的值長期保持在每秒200到300個頁面通常就表示系統可能存在內存的瓶頸。
Buffer and cache
這個值描述了為文件系統和塊設備分配的緩存。注意在Red Hat Enterprise Linux
3和更早一些的版本中,大部分空閑內存會被分配作為緩存使用。在Red Hat Enterprise Linux
4以後的版本中,你可以通過修改/proc/sys/vm中的page_cache_tuning來調整空閑內存中作為緩存的數量。
Slabs
描述了內核使用的內存空間,注意內核的頁面是不能被交換到磁碟上的。
Active versus inactive memory
提供了關於系統內存的active內存信息,Inactive內存是被kswapd守護進程交換到磁碟上的空間。
三、網路參數
Packets received and sent
這個參數表示了一個指定網卡接收和發送的數據包的數量。
Bytes received and sent
這個參數表示了一個指定網卡接收和發送的數據包的位元組數。
Collisions per second
這個值提供了發生在指定網卡上的網路沖突的數量。持續的出現這個值代表在網路架構上出現了瓶頸,而不是在伺服器端出現的問題。在正常配置的網路中沖突是非常少見的,除非用戶的網路環境都是由hub組成。
Packets dropped
這個值表示了被內核丟掉的數據包數量,可能是因為防火牆或者是網路緩存的缺乏。
Overruns
Overruns表達了超出網路介面緩存的次數,這個參數應該和packets dropped值聯繫到一起來判斷是否存在在網路緩存或者網路隊列過長方面的瓶頸。
Errors
這個值記錄了標志為失敗的幀的數量。這個可能由錯誤的網路配置或者部分網線損壞導致,在銅口千兆乙太網環境中部分網線的損害是影響性能的一個重要因素。
四、塊設備參數
Iowait
CPU等待I/O操作所花費的時間。這個值持續很高通常可能是I/O瓶頸所導致的。
Average queue length
I/O請求的數量,通常一個磁碟隊列值為2到3為最佳情況,更高的值說明系統可能存在I/O瓶頸。
Average wait
響應一個I/O操作的平均時間。Average wait包括實際I/O操作的時間和在I/O隊列里等待的時間。
Transfers per second
描述每秒執行多少次I/O操作(包括讀和寫)。Transfers per second的值與kBytes per second結合起來可以幫助你估計系統的平均傳輸塊大小,這個傳輸塊大小通常和磁碟子系統的條帶化大小相符合可以獲得最好的性能。
Blocks read/write per second
這個值表達了每秒讀寫的blocks數量,在2.6內核中blocks是1024bytes,在早些的內核版本中blocks可以是不同的大小,從512bytes到4kb。
Kilobytes per second read/write
按照kb為單位表示讀寫塊設備的實際數據的數量。
Ⅱ 一文帶你搞定TCP重傳
TCP重傳機制主要是為了防止網路包丟棄,重傳的工作方式主要藉助TCP頭部中的序列號和確認號來決定是否重傳,重傳的觸發方式主要由以下幾種:
什麼是超時重傳?
發送方在發送數據時設置一個定時器,當超過指定時間後如果還沒有收到接收方的ACK響應,就會重發數據包。
超時重傳的發生場景
什麼是RTT?什麼是RTO?
RTT就是數據包的往返時間,RTO就是超時重傳時間。
RTO的長短對數據包的重傳有什麼影響?
RTO如何設置?
RTO既不能過長也不能過短,略微大於RTT是最好的。但RTT會因為網路的變化而發生變化,所以在Linux系統中為了計算RTO,會對RTT進行兩個采樣:
RFC6289建議使用旁乎以下公式計算RTO:
上述表達式中,在linux中α = 0.125,β = 0.25,μ = 1,δ = 4,至於為啥是這些值,別問問就斗高是前人大量的測試積累得出。
假設因為網路阻塞觸發了超時,如何避免頻繁重發加劇網路阻塞?
超時時間加倍,就是每當重傳的時候,都會將下一次的超時時間設置為當前值的兩倍,避免頻繁重發導致網路更加阻塞。
超時重傳的弊端是什麼?
超時周期可能相對較長,重傳的等待時間可能過長。
什麼是快速重傳?
快速重傳不再以時間作為重傳的標准,而是以數據作為重傳的標准。
上述Seq2因為某些原因沒有抵達接收方,但接收方已經收到了Seq3、4、5的數據包,並且回復了三次ACK2的數據包。發送端在收到三次ACK2的數據包以後,就會在超時定時器之前重傳Seq2的數據包。
重傳所有包還是重傳丟失的包?
由於發送端並不知道三次ACK2的數據包是由發送方的哪幾個數據包響應回來的(也就是Seq3、4、5),因此只重傳Seq2還是要重傳所有的數據包也是個問題。
根據TCP實現的不同,上述兩種情況都可能存在。
SACK重傳
SACK重傳其實就是選擇性重傳,它是為了解決快速重傳不知道需要重傳哪些包的問題。
SACK是如何讓發送方知道重傳哪些包的?
TCP的選項欄位增加一個SACK欄位,接收方會將已經收到數據包序列號范圍發送給發送方,這樣發送方通過SACK信息就能找到丟失的數據包重傳此數據包。
SACK的使用條件
SACK必須要發送方和接收方同時支持,在linux中可以通過net.ipv4.tcp_sack參數開啟(Linux2.4以後默認開啟)。
SACK可以讓發送方准確的知道哪些數據包接收方沒有收到,而D-SACK可以讓發送方知道有哪些數據包被重復接收了。
D-SACK的優點是什麼?
D-SACK如何讓發送方知道ACK包丟失
上圖中接收方收到了3000~3999的數據運銷悉包,但回應的ACK發生了丟失,假設此時觸發了超時重傳,發送方會首先重傳3000~3499的數據包,接收方在收到該包以後發現該包已經被接收過了,於是會回復一個SACK = 3000~3500告訴發送方該數據包已經被接受過了,因為ACK已經到4000了,所以這里是一個D-SACK。發送方在收到報文以後可以知道數據包沒有丟,丟的只是ACK報文。
D-SACK如何判斷數據包發送延時
上圖中1000~1499的數據包被網路延遲,後續發送方收到了三個連續ACK 1000的報文觸發了超時重傳,重傳以後,延時的網路包也抵達了接收方,此時接收方會回復一個SACK=1000~1500,因為ACK已經到了3000,所以這里是一個D-SACK,表示收到了重復的包。發送方收到了該ACK報文以後也可以判斷出快速重傳的原因是因為網路延遲。
如何開啟D-SACK
在Linux下可以通過net.ipv4.tcp_dsack參數開啟/關閉這個功能(Linux 2.4後默認打開)。
Ⅲ 如何備份redhat linux系統
備份linux系統,不像Windows,Linux不限制根用戶存孝頌唯取任何東西,因此,你完全可以把一個分區上每一個的文件放入一個TAR文件中。來實施這一方法,用這個成為根用戶:
sudo su
接著去你的文件系統的根目錄(在我們的例子中,我們使用它,不過你可以去你希望備份的任何地方,包括遠程或可移動驅動器。)
cd /
然後,下面就是我用來備份我的系統的完整的命令:
tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys
接著,讓我們稍微解釋一下:
很明顯,'tar'部分就是我們將要使用的軟體。
'cvpfz'是我們給tar加的選項,像「創建一個壓縮文檔」(這是顯然的),「保存許可權」(以便使每一個相同的文件有相同的許可權),以及「gzip」(縮減大小)。
接下來巧培,是壓縮文檔將獲得的名稱,在我們的例子中是backup.tgz。
緊隨其後的是我們想要備份的根目錄。既然我們想備份所有東西:/
接著就是我們要剔除的目錄了。我們不想備份每一樣東西,因為包括有些目錄不是非常有用。同時確保你沒有把備份文件本身也加進去了,否則,你會得到怪異的結果的。你也許同樣不打算把/mnt文件夾包括進來——如果你在那兒掛載了其他分區——否則最終你會把那些也備份的。同時確保你沒有任何東西掛載在 /media(即沒有掛載任何cd或可移動介質)。否則,剔除/media。
如果你想排除所有的其他分區,你可以使用 'l' 參數代替 --exclude, 上面的命令看起來象這樣:
tar cvpzlf backup.tgz / --exclude=/lost+found --exclude=/backup.tgz
按:kvidell在論壇主題里建議也剔除/dev目錄。不過,我有其他證據表明這樣做是不明智的。
好了,如果命令適合你的話,敲擊確定鍵(或者回車鍵,管它叫什麼名字),然後什麼都不用干,放鬆一下。備份也許會花上一段時間。
完了以後,在你的文件系統的根目錄會有一個叫作backup.tgz的文件——很可能相當巨大。現在你可以把燒錄到DVD上,或者移動到另一台機器,你可以做任何你想做的事情。
按2:在進程的最後,你也許會得到一條信息,寫著「tar:由於先前錯誤的耽擱而存在錯誤」或者其他什麼,不過大多數情況下你可以僅僅忽略它。
作為選擇,你可以使用Bzip來壓縮你的備份。這意味著較高的壓縮比但是也意味著較低的速度。如果壓縮比對你很重要,只需用「j」替換命令中的「z」, 同時給備份命一個相應的擴展名。這些會使命令變成這樣:
tar cvpjf backup.tar.bz2 / --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys
2.1. 通過網路備份如果空白的文件系統太少了並且你又不能掛載其它的文件系統來保存備份文件,你有可能使用 netcat 來完成備份.
在接受端你必須設置 netcat 用於寫備份文件,象這樣:
nc -l -p 1024 > backup.tar.bz2
然後你傳送 tar 命令,不帶 'f' 參數通過 netcat 在發送端,象這樣:
tar cvpj / | nc -q 0 1024
在上面的命令中 1024 僅僅是一個隨機的埠號, 任何從 1024 或以上的都可以工作.
如果安全的通過網路備份不依賴文件系統完成備份. 事櫻搏實上一個真正快的網路比寫備份文件到磁碟要快.
在上面的講述中 (由於我剛剛發呆,因此我不能證實它是可靠的) 是這個命令:
tar cvpj / | ssh "cat > backup.tar.bz2"
3. 恢復警告:看在上帝的份上,在這一部分請小心謹慎。如果你不理解你在這里幹了什麼,你可能最終毀壞了對你而言很重要的東西,所以請小心謹慎。 那麼,我們將緊接著上一章的例子:在分區的根目錄下的backup.tgz文件
再一次確保你是根用戶以及備份文件在文件系統的根目錄。
Linux美妙的地方之一就是這一項工作甚至可以在一個正在運行的系統上進行;沒必要被引導cd或者任何東西搞得暈頭轉向。當然,如果你使你的系統無法被引導了。你也許別無選擇,只能使用一張live-cd了,但是結果是一樣的。你甚至可以在Linux系統正在運行的時候,移除它裡面所有文件。可是我不告訴你那個命令!
好了,言歸正傳。這是我要用的命令:
tar xvpfz backup.tgz -C /
如果你使用 bz2
tar xvpfj backup.tar.bz2 -C /
警告:這會把你分區里所有文件替換成壓縮文檔里的文件!
只要敲一下確定/回車/你的兄弟/隨便什麼,然後去看焰火吧。同樣,這會花一段時間。等它完成了,你就有了一個完全恢復的Ubuntu系統!只需確保在你做其他任何事情之前,重新創建你剔除的目錄:
mkdir proc mkdir lost+found mkdir mnt mkdir sys etc...
當你重啟以後,所以的事情都會和你備份的時候一模一樣。
3.1. 恢復 GRUB那麼,如果你想把你的系統移動到一塊新硬碟上,或者,你想對你的GRUB做一些糟糕的事情(比方說,安裝Windows),你也將需要重裝GRUB。在這個論壇里,有不少如何做這個的非常好的指導,所以我不會從頭重新做起。相反,看一下這里(論壇) 或者這兒:
在這個論壇主題中,提出了一些方法。我個人建議第二個,remmelt貼出來的,因為我發現它每次都管用。
對,就是那個!我希望它有幫助!
4. 其他方法也許你也想看一下這些能幫助你自動備份系統的程序
Partimage
Mondo Rescue
Ⅳ 如何修改linux tcp established老化時間
不明白你說的老化時間,關姿圓於established的時間,摘錄個別人的高掘心得吧
TCP協議有個超時重傳機制,想必大家都比較熟悉。TCP協議是一種傳輸可靠的協議,因此這個機制是必不可少的。那麼今天要探討的是在發送隊列還有數據的情況下,網路連接異常斷開後,協議棧是到底是怎樣來處理這些數據的,資源又是怎樣被回收的呢?
我這里先給出幾個測試的結果:
1、修改linux系統下的tcp_retries2為1,當socket發送隊列有一定數據時,突然切斷網線,造成異常斷鏈的場景,此時,大約過了1秒,用netstat觀察established的連接消失;
2、繼續把該參數修改為15,重復上面的實驗,發現大約過了15分鍾後,established的連接才斷開;
3、把參數再次修改為5,大約過了7秒,連接消失
/proc/sys/net/ipv4/tcp_retries2
思考:TCP的超時後,重傳的次數和重傳的時間間隔是影響連接斷開的主要參數。但是,從上面的跡念塌實驗數據來看,似乎沒有什麼規律。查閱linux幫助文檔,發現這個重傳的時間間隔與RTO有關,而這個參數又是協議棧通過檢測網路狀況而實時改變的。
Ⅳ /proc文件系統的作用
理解 Proc 文件系統
--------------------------------------------------------------------------------
作者:王旭 翻譯 2004-10-05 18:25:55 來自:linuxfocus
目錄:
/proc --- 一個虛擬文件系統
載入 proc 文件系統
察看 /proc 的文件
得到有用的系統/內核信息
有關運行中的進程的信息
通過 /proc 與內核交互
結論
參考文獻
摘要:
Linux 內核提供了一種通過 /proc 文件系統,在運行時訪問內核內部數據結構、改變內核設置的機制。盡管在各種硬體平台上的 Linux 系統的 /proc 文件系統的基本概念都是相同的,但本文只討論基於 intel x86 架構的 Linux /proc 文件系統。
_________________ _________________ _________________
/proc --- 一個虛擬文件系統
/proc 文件系統是一種內核和內核模塊用來向進程 (process) 發送信息的機制 (所以叫做 /proc)。這個偽文件系統讓你可以和內核內部數據結構進行交互,獲取 有關進程的有用信息,在運行中 (on the fly) 改變設置 (通過改變內核參數)。 與其他文件系統不同,/proc 存在於內存之中而不是硬碟上。如果你察看文件 /proc/mounts (和 mount 命令一樣列出所有已經載入的文件系統),你會看到其中 一行是這樣的:
grep proc /proc/mounts
/proc /proc proc rw 0 0
/proc 由內核控制,沒有承載 /proc 的設備。因為 /proc 主要存放由內核控制的狀態信息,所以大部分這些信息的邏輯位置位於內核控制的內存。對 /proc 進行一次 'ls -l' 可以看到大部分文件都是 0 位元組大的;不過察看這些文件的時候,確實可以看到一些信息。這怎麼可能?這是因為 /proc 文件系統和其他常規的文件系統一樣把自己注冊到虛擬文件系統層 (VFS) 了。然而,直到當 VFS 調用它,請求文件、目錄的 i-node 的時候,/proc 文件系統才根據內核中的信息建立相應的文件和目錄。
載入 proc 文件系統
如果系統中還沒有載入 proc 文件系統,可以通過如下命令載入 proc 文件系統:
mount -t proc proc /proc
上述命令將成功載入你的 proc 文件系統。更多細節請閱讀 mount 命令的 man page。
察看 /proc 的文件
/proc 的文件可以用於訪問有關內核的狀態、計算機的屬性、正在運行的進程的狀態等信息。大部分 /proc 中的文件和目錄提供系統物理環境最新的信息。盡管 /proc 中的文件是虛擬的,但它們仍可以使用任何文件編輯器或像'more', 'less'或 'cat'這樣的程序來查看。當編輯程序試圖打開一個虛擬文件時,這個文件就通過內核中的信息被憑空地 (on the fly) 創建了。這是一些我從我的系統中得到的一些有趣結果:
$ ls -l /proc/cpuinfo
-r--r--r-- 1 root root 0 Dec 25 11:01 /proc/cpuinfo
$ file /proc/cpuinfo
/proc/cpuinfo: empty
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Pentium III (Coppermine)
stepping : 6
cpu MHz : 1000.119
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
sep_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 mmx fxsr xmm
bogomips : 1998.85
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Pentium III (Coppermine)
stepping : 6
cpu MHz : 1000.119
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
sep_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 mmx fxsr xmm
bogomips : 1992.29
這是一個從雙 CPU 的系統中得到的結果,上述大部分的信息十分清楚地給出了這個系統的有用的硬體信息。有些 /proc 的文件是經過編碼的,不同的工具可以被用來解釋這些編碼過的信息並輸出成可讀的形式。這樣的工具包括:'top', 'ps', 'apm' 等。
得到有用的系統/內核信息
proc 文件系統可以被用於收集有用的關於系統和運行中的內核的信息。下面是一些重要的文件:
/proc/cpuinfo - CPU 的信息 (型號, 家族, 緩存大小等)
/proc/meminfo - 物理內存、交換空間等的信息
/proc/mounts - 已載入的文件系統的列表
/proc/devices - 可用設備的列表
/proc/filesystems - 被支持的文件系統
/proc/moles - 已載入的模塊
/proc/version - 內核版本
/proc/cmdline - 系統啟動時輸入的內核命令行參數
proc 中的文件遠不止上面列出的這么多。想要進一步了解的讀者可以對 /proc 的每一個文件都'more'一下或讀參考文獻[1]獲取更多的有關 /proc 目錄中的文件的信息。我建議使用'more'而不是'cat',除非你知道這個文件很小,因為有些文件 (比如 kcore) 可能會非常長。
有關運行中的進程的信息
/proc 文件系統可以用於獲取運行中的進程的信息。在 /proc 中有一些編號的子目錄。每個編號的目錄對應一個進程 id (PID)。這樣,每一個運行中的進程 /proc 中都有一個用它的 PID 命名的目錄。這些子目錄中包含可以提供有關進程的狀態和環境的重要細節信息的文件。讓我們試著查找一個運行中的進程。
$ ps -aef | grep mozilla
root 32558 32425 8 22:53 pts/1 00:01:23 /usr/bin/mozilla
上述命令顯示有一個正在運行的 mozilla 進程的 PID 是 32558。相對應的,/proc 中應該有一個名叫 32558 的目錄
$ ls -l /proc/32558
total 0
-r--r--r-- 1 root root 0 Dec 25 22:59 cmdline
-r--r--r-- 1 root root 0 Dec 25 22:59 cpu
lrwxrwxrwx 1 root root 0 Dec 25 22:59 cwd -> /proc/
-r-------- 1 root root 0 Dec 25 22:59 environ
lrwxrwxrwx 1 root root 0 Dec 25 22:59 exe -> /usr/bin/mozilla*
dr-x------ 2 root root 0 Dec 25 22:59 fd/
-r--r--r-- 1 root root 0 Dec 25 22:59 maps
-rw------- 1 root root 0 Dec 25 22:59 mem
-r--r--r-- 1 root root 0 Dec 25 22:59 mounts
lrwxrwxrwx 1 root root 0 Dec 25 22:59 root -> //
-r--r--r-- 1 root root 0 Dec 25 22:59 stat
-r--r--r-- 1 root root 0 Dec 25 22:59 statm
-r--r--r-- 1 root root 0 Dec 25 22:59 status
文件 "cmdline" 包含啟動進程時調用的命令行。"envir" 進程的環境變兩。 "status" 是進程的狀態信息,包括啟動進程的用戶的用戶ID (UID) 和組ID(GID) ,父進程ID (PPID),還有進程當前的狀態,比如"Sleelping"和"Running"。每個進程的目錄都有幾個符號鏈接,"cwd"是指向進程當前工作目錄的符號鏈接,"exe"指向運行的進程的可執行程序,"root"指向被這個進程看作是根目錄的目錄 (通常是"/")。目錄"fd"包含指向進程使用的文件描述符的鏈接。 "cpu"僅在運行 SMP 內核時出現,裡面是按 CPU 劃分的進程時間。
/proc/self 是一個有趣的子目錄,它使得程序可以方便地使用 /proc 查找本進程地信息。/proc/self 是一個鏈接到 /proc 中訪問 /proc 的進程所對應的 PID 的目錄的符號鏈接。
通過 /proc 與內核交互
上面討論的大部分 /proc 的文件是只讀的。而實際上 /proc 文件系統通過 /proc 中可讀寫的文件提供了對內核的交互機制。寫這些文件可以改變內核的狀態,因而要慎重改動這些文件。/proc/sys 目錄存放所有可讀寫的文件的目錄,可以被用於改變內核行為。
/proc/sys/kernel - 這個目錄包含反通用內核行為的信息。 /proc/sys/kernel/{domainname, hostname} 存放著機器/網路的域名和主機名。這些文件可以用於修改這些名字。
$ hostname
machinename.domainname.com
$ cat /proc/sys/kernel/domainname
domainname.com
$ cat /proc/sys/kernel/hostname
machinename
$ echo "new-machinename" > /proc/sys/kernel/hostname
$ hostname
new-machinename.domainname.com
這樣,通過修改 /proc 文件系統中的文件,我們可以修改主機名。很多其他可配置的文件存在於 /proc/sys/kernel/。這里不可能列出所有這些文件,讀者可以自己去這個目錄查看以得到更多細節信息。
另一個可配置的目錄是 /proc/sys/net。這個目錄中的文件可以用於修改機器/網路的網路屬性。比如,簡單修改一個文件,你可以在網路上癮藏匿的計算機。
$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
這將在網路上癮藏你的機器,因為它不響應 icmp_echo。主機將不會響應其他主機發出的 ping 查詢。
$ ping machinename.domainname.com
no answer from machinename.domainname.com
要改回預設設置,只要
$ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/proc/sys 下還有許多其它可以用於改變內核屬性。讀者可以通過參考文獻 [1], [2] 獲取更多信息。
結論
/proc 文件系統提供了一個基於文件的 Linux 內部介面。它可以用於確定系統的各種不同設備和進程的狀態。對他們進行配置。因而,理解和應用有關這個文件系統的知識是理解你的 Linux 系統的關鍵。
參考文獻
[1] 有關Linux proc 文件系統的文檔位於: /usr/src/linux/Documentation/filesystems/proc.txt
[2] RedHat Guide: The /proc File System: http://www.redhat.com/docs/manuals/linux/RHL-7.3-Manual/ref-guide/ch-proc.html
Ⅵ linux沒有tcptimestamp
Linux中沒有TCP Timestamp選項,它是一個由Windows操作系統提供的網路協議特性,用於優化TCP連接質量。它可以通燃知過在數據段中添加一飢段侍個特殊的欄位來實現對TCP連接質爛吵量的優化,這種欄位就是時間戳。這種機制可以通過回復發送時間戳,幫助探測網路延遲並實現網路優化,不過因為Linux不支持TCP Timestamp選項,所以無法實現這種功能。
Ⅶ IBM、HP、SUN、Linux的容災備份系統對比
LINUX內核的升級是為了適應最新硬體的,決不會「對硬體產品提出了什麼新的要求」。Linux的特色之一是效率高,它能發揮硬體的最大性能。而不是相新游戲一樣,推著顯卡和內存升級。
IBM/HP/SUN對Linux都沒有直接支持。IBM/SUN對開源社區是有支持的,但不是對Linux。
IBM是一家大公司,它的資料庫、開發工具等產品都與Microsoft有直接的競爭關系。Microsoft依靠桌面起家,但在伺服器市場是越做越好,IBM十分不爽。不爽怎麼辦?IBM看中了開源社區的力量。它不惜重金支持Eclipse項目和Mozilla項目,很快就贏得了開源社區的回應。Eclipse3.0的火爆,FireFox的流行,速度超乎Microsoft的想像。IBM是借開源給Microsoft施加壓力。
Sun為網路而生,而Linux天生就是一個網路操作系統,Sun怎麼能視而不見呢?java最重要的正滲族特點之一就是跨平台,Linux自然是其中之喊前一,這不能叫支持Linux吧。而Sun擁有自己的操作系統Solaris,眾所周知Linux和Solaris都是基於Unix/GNU的操作系統,Sun當然更支持自己的產品。舉弊何況Solaris的軟體移植到Linux實在不是什麼難事。可以說Sun是支持Java(和Solaris)遠大於支持Linux。
HP在我印象中是硬體廠商,硬體廠商對Linux的支持都不多,最多隻是預裝Linux。但份額實在太小,現階段沒有意義。預裝Linux一般是免費的發行版。Linux開發商得不到好處。特別的,在中國,預裝Linux只是為了降低整機價格而已。
如果要排名的話,應該是
IBM>SUN>HP
Ⅷ linux下有沒有什麼好的代碼統計工具
1 sloccount源代碼行數統計工具
--------------------------------------------------------------------------------
sloccount=Count Source Lines Of Code
官網 : http://www.dwheeler.com/sloccount/
1.1 Ubuntu安裝
--------------------------------------------------------------------------------
sudo apt-get install sloccount
1.2 使用
--------------------------------------------------------------------------------
sloccount [--version] [--cached] [--append] [ --datadir directory ]
[--follow] [--plicates] [--crossps] [--autogen] [--multiproject]
[--filecount] [--wide] [--details] [ --effort F E ] [ --schele F E ] [
--personcost cost ] [ --overhead overhead ] [ --addlang language ] [
--addlangall ] [--] directories
--cached
跳過計算過程,直接使用上次結果
參數
描述
–multiproject
如果該文件夾包括一系列的子文件夾,而它們中的每一個都是相對獨立開發的不同的項目,那麼使用」–multiproject」選項,評估將會正確的考慮到這一點
–filecount
顯示文件數目而非代碼行數
–details
顯示每個源文件的詳細信息
–plicates
算上所有重復的(默認情況下如果文件有相同的內容,則只算一個)
–crossps
如果頂目錄包含幾個不同的項目,並且你想把不同的項目下重復的文件在每個項目中都算上一次,則使用該選項
1.3 轉換成html文件
--------------------------------------------------------------------------------
有一個sloc2html.py可以把生成的結果轉換為帶圖形統計結果的html文件. 缺點是對中文支持不好
例如:
sloccount --wide --multiproject SourceDirectory > result.txt
sloc2html.py result.txt > result.html
再打開result.html即可看到結果形如:
下載地址 http://www.dwheeler.com/sloccount/sloc2html.py.txt
輸出樣例 http://www.dwheeler.com/sloccount/sloc2html-example.html
wget http://www.dwheeler.com/sloccount/sloc2html.py.txt -O sloc2html.py
sloc2html.py文件源代碼如下
#!/usr/bin/env python
# Written by Rasmus Toftdahl Olesen <[email protected]>
# Modified slightly by David A. Wheeler
# Released under the GNU General Public License v. 2 or higher
from string import *
import sys
NAME = "sloc2html"
VERSION = "0.0.2"
if len(sys.argv) != 2:
print "Usage:"
print "\t" + sys.argv[0] + " <sloc output file>"
print "\nThe output of sloccount should be with --wide and --multiproject formatting"
sys.exit()
colors = { "python" : "blue",
"ansic" : "yellow",
"perl" : "purple",
"cpp" : "green",
"sh" : "red",
"yacc" : "brown",
"lex" : "silver"
# Feel free to make more specific colors.
"ruby" : "maroon",
"cs" : "gray",
"java" : "navy",
"ada" : "olive",
"lisp" : "fuchsia",
"objc" : "purple",
"fortran" : "purple",
"cobol" : "purple",
"pascal" : "purple",
"asm" : "purple",
"csh" : "purple",
"tcl" : "purple",
"exp" : "purple",
"awk" : "purple",
"sed" : "purple",
"makefile" : "purple",
"sql" : "purple",
"php" : "purple",
"mola3" : "purple",
"ml" : "purple",
"haskell" : "purple"
}
print "<html>"
print "<head>"
print "<title>Counted Source Lines of Code (SLOC)</title>"
print "</head>"
print "<body>"
print "<h1>Counted Source Lines of Code</h1>"
file = open ( sys.argv[1], "r" )
print "<h2>Projects</h2>"
line = ""
while line != "SLOC\tDirectory\tSLOC-by-Language (Sorted)\n":
line = file.readline()
print "<table>"
print "<tr><th>Lines</th><th>Project</th><th>Language distribution</th></tr>"
line = file.readline()
while line != "\n":
num, project, langs = split ( line )
print "<tr><td>" + num + "</td><td>" + project + "</td><td>"
print "<table width=\"500\"><tr>"
for lang in split ( langs, "," ):
l, n = split ( lang, "=" )
print "<td bgcolor=\"" + colors[l] + "\" width=\"" + str( float(n) / float(num) * 500 ) + "\">" + l + "=" + n + " (" + str(int(float(n) / float(num) * 100)) + "%)</td>"
print "</tr></table>"
print "</td></tr>"
line = file.readline()
print "</table>"
print "<h2>Languages</h2>"
while line != "Totals grouped by language (dominant language first):\n":
line = file.readline()
print "<table>"
print "<tr><th>Language</th><th>Lines</th></tr>"
line = file.readline()
while line != "\n":
lang, lines, per = split ( line )
lang = lang[:-1]
print "<tr><td bgcolor=\"" + colors[lang] + "\">" + lang + "</td><td>" + lines + " " + per + "</td></tr>"
line = file.readline()
print "</table>"
print "<h2>Totals</h2>"
while line == "\n":
line = file.readline()
print "<table>"
print "<tr><td>Total Physical Lines of Code (SLOC):</td><td>" + strip(split(line,"=")[1]) + "</td></tr>"
line = file.readline()
print "<tr><td>Estimated development effort:</td><td>" + strip(split(line,"=")[1]) + " person-years (person-months)</td></tr>"
line = file.readline()
line = file.readline()
print "<tr><td>Schele estimate:</td><td>" + strip(split(line,"=")[1]) + " years (months)</td></tr>"
line = file.readline()
line = file.readline()
print "<tr><td>Total estimated cost to develop:</td><td>" + strip(split(line,"=")[1]) + "</td></tr>"
print "</table>"
file.close()
print "Please credit this data as \"generated using 'SLOCCount' by David A. Wheeler.\"\n"
print "</body>"
print "</html>"