countlinux
Ⅰ 詳解linux系統內存知識及調優方案
內存是計算機中重要的部件之一,它是與CPU進行溝通的橋梁。計算機中所有程序的運行都是在內存中進行的,因此內存的性能對計算機的影響非常大。內存作用是用於暫時存放CPU中的運算數據,以及與硬碟等外部存儲器交換的數據。只要計算機在運行中,CPU就會把需要運算的數據調到內存中進行運算,當運算完成後CPU再將結果傳送出來,內存的運行也決定了計算機的穩定運行。對於整個操作系統來說,內存可能是最麻煩的的設備。而其性能的好壞直接影響著整個操作系統。
我們知道CPU是不能與硬碟打交道的,只有數據被載入到內存中才可以被CPU調用。cpu在訪問內存的時候需要先像內存監控程序請求,由監控程序控制和分配內存的讀寫請求,這個監控程序叫做MMU(內存管理單元)。下面以32位系統來說明內存的訪問過程:
32位的系統上每一個進程在訪問內存的時候,每一個進程都當做自己有4個G的內存空間可用,這叫虛擬內存(地址),虛擬內存轉化成物理內存是通過MMU來完成的。為了能夠從線性地址轉換成物理地址,需要page table(頁表)的內存空間,page table要載入到MMU上。為了完成線性地址到物理地址的映射,如果按照1個位元組1個位元組映射的話,需要一張非常大的表,這種轉換關系會非常的復雜。因此把內存空間又劃分成了另外一種存儲單元格式,通常為4K。在不同的硬體平台上,它們的大小一般是不一樣的,像x86 32位的有4k的頁;而64位的有4k頁,2M頁,4M頁,8M頁等等,默認都是4k的。每一個進程一般而言都有自己的頁路徑和頁表映射機制,不管那一個頁表都是由內核載入的。每一個進程只能看到自己的線性地址空間,想要增加新的內存的時候,只能在自己的線性地址空間中申請,並且申請後一定是通過操作系統的內核映射到物理地址空間中去找那麼一段空間,並且告訴線性地址空間准備好了,可以訪問,並且在page table中增加一條映射關系,於是就可以訪問物理內存了,這種叫做內存分配。但是新的申請一定是通過操作的內核到物理內存中去找那麼一段空間,並且告訴線性地址空間好了,可以建設映射關系,最終page table建立映射關系。
這反映了上述描述過程的大體情況。可以看到每一個用戶程序都會有自己的頁表,並且映射到對應的主存儲器上去。
根據上述文字和圖表的描述可以發現2個問題:
1.每個進程如果需要訪問內存的時候都需要去查找page table的話,勢必會造成伺服器的性能底下
2.如果主存儲器的內存滿了以後,應用程序還需要調用內存的時候怎麼辦
對於第一個問題,我們就需要藉助TLB(Translation Lookaside Buffer)翻譯後備緩沖器。TLB是一個內存管理單元,它可以用於改進虛擬地址到物理地址轉換速度的緩存。這樣每次在查找page table的時候就可以先去TLB中查找相應的頁表數據,如果有就直接返回,沒有再去查找page table,並把查找到的結果緩存中TLB中。TLB雖然解決了緩存的功能,但是在那麼page table中查找映射關系仍然很慢,所以又有了page table的分級目錄。page table可以分為1級目錄,2級目錄和偏移量
但是一個進程在運行的時候要頻繁的打開文件,關閉文件。這就意味著要頻繁的申請內存和釋放內存。有些能夠在內存中緩存數據的那些進程,他們對內存的分配和回收更多,那麼每一次分配都會在頁表中建立一個對應項。所以,就算內存的速度很快,大量頻繁的同一時間分配和釋放內存,依然會降低伺服器的整體性能。當然內存空間不夠用的時候,我們稱為oom(out of memory,內存耗盡)。當內存耗盡的時候,,整個操作系統掛了。這種情況下我們可以考慮交換分區,交換分區畢竟是由硬碟虛擬出來的內存,所以其性能與真正的內存相比,差了很多,所以要盡力避免使用交換分區。有物理內存空間的時候盡量保證全部使用物理內存。cpu無論如何是不能給交換內存打交道的,它也只能給物理內存打交道,能定址的空間也只能是物理內存。所以當真正物理內存空間不夠用的時候,會通過LRU演算法把其中最近最少使用的內存放到交換內存中去,這樣物理內存中的那段空間就可以供新的程序使用了。但是這樣會引發另外的一個問題,即原來的進程通過page table尋找的時候,那一段空間的數據已經不屬於它了。所以此刻cpu發送通知或者異常告訴這個程序,這個地址空間已不屬於它,這個時候可能會出現2種情況:
1.物理內存有可用的空間可用:這個時候cpu會根據以前的轉換策略會把交換分區中的那段內存重新送到物理內存中去,但是轉換過來的空間地址不一定會是以前的那一段空間地址,因為以前的那一段空間地址可能已經被別人使用了。
2.物理內存沒有可用的空間可用:這個時候依然會使用LRU算發把當前物理地址空間上最近最少使用的空間地址轉換到交換內存中去,並把當前進程需要的這斷在交換空間中的內存送到物理內存空間中去,並且重新建立映射關系。
上述通知或者異常出現的情況,通常叫做缺頁異常。缺頁異常也分為大異常和小異常兩種。大異常就是訪問的數據內存中沒有,不的不去硬碟上載入,無論是從交換內存中還是直接從磁碟的某個文件系統上,反正需要從硬碟上去載入,這種異常載入需要很長時間。小異常就是進程之間通過共享內存,第二個進程訪問的時候,查看本地的內存映射表沒有,但是其它進程已經擁有了這個內存頁,所以可以直接映射,這種異常載入需要的時間一般很短。
在操作系統開機的時候,每一個io設備都會像cpu申請一些列的隨機埠,這種埠叫做io埠。在IBM PC體系結構中,I/O地址空間一共提供了65,536個8位的I/O埠。正是這些io埠的存在,cpu可以與io設備進行讀寫交互的過程。在執行讀寫操作時,CPU使用地址匯流排選擇所請求的I/O埠,使用數據匯流排在CPU寄存器和埠之間傳送數據。I/O埠還可以被映射到物理地址空間:因此,處理器和I/O設備之間的通信就可以直接使用對內存進行操作的匯編語言指令(例如,mov、and、or等等)。現代的硬體設備更傾向於映射I/O,因為這樣處理的速度較快,並可以和DMA結合起來使用。這樣io在和內存傳數據的時候就不需要通過cpu,cpu把匯流排的控制權交給DMA,每次io傳數據的時候就調用DMA一次,就把cpu給解放了出來。當數據傳輸完了以後,DMA通知給cpu中斷一次。DMA在運行的時候對整個匯流排有控制許可權,當cpu發現有其它進程需要使用匯流排的時候,二者就會產生爭用。這個時候,在匯流排控制權的使用上,CPU和DMA具有相等的許可權。只要CPU委託給了DMA,就不能隨意的收回這個委託,就要等待DMA的用完。
如果沒有其它進程可以運行,或者其它進程運行的時間非常短,這個時候CPU發現我們的IO仍然沒有完成,那就意味著,CPU只能等待IO了。CPU在時間分配裡面有個iowait的值,就是CPU在等待IO花費的時間。有些是在同步調用過程中,CPU必須要等待IO的完成;否者CPU可以釋放IO的傳輸在背後自動完成,CPU自己去處理其它的事情。等硬碟數據傳輸完成以後,硬碟只需要像CPU發起一個通知即可。CPU外圍有一種設備,這個設備叫做可編程中斷控制器。每一個硬體設備為了給CPU通信,在剛開機的時候,在BIOS實現檢測的時候,這個設備就要到可編程中斷控制器上去注冊一個所謂的中斷號。那麼這個號碼就歸這個硬體使用了。當前主機上可能有多個硬體,每一個硬體都有自己的號碼,CPU在收到中斷號以後,就能夠通過中斷相量表查找到那個硬體設備進行中斷。並且就由對應的IO埠過來處理了。
CPU正在運行其它進程,當一個中斷請求發過來的時候,CPU會立即終止當前正在處理的進程,而去處理中斷。當前CPU掛起當前正在處理的進程,轉而去執行中斷的過程,也叫做中斷切換。只不過,這種切換在量級別上比進程切換要低一些,而且任何中斷的優先順序通常比任何進程也要高,因為我們指的是硬體中斷。中斷還分為上半部和下半部,一般而言,上半部就是CPU在處理的時候,把它接進來,放到內存中,如果這個事情不是特別緊急(CPU或者內核會自己判斷),因此在這種情況下,CPU回到現場繼續執行剛才掛起的進程,當這個進程處理完了,再回過頭來執行中斷的下半部分。
在32位系統中,我們的內存(線性地址)地址空間中,一般而言,低地址空間有一個G是給內核使用的,上面3個G是給進程使用的。但是應該明白,其實在內核內存當中,再往下,不是直接這樣劃分的。32位系統和64位系統可能不一樣(物理地址),在32位系統中,最低端有那麼10多M的空間是給DMA使用的。DNA的匯流排寬度是很小的,可能只有幾位,所以定址能力很有限,訪問的內存空間也就很有限。如果DMA需要復制數據,而且自己能夠定址物理內存,還可以把數據直接壯哉進內存中去,那麼就必須保證DMA能夠定址那段內存才行。定址的前提就是把最低地址斷M,DA的定址范圍內的那一段給了DMA。所以站在這個角度來說,我們的內存管理是分區域的。
在32位系統上,16M的內存空間給了ZONE_DMA(DMA使用的物理地址空間);從16M到896M給了ZONE_NORMAL(正常物理地址空間),對於Linux操作系統來說,是內核可以直接訪問的地址空間;從896M到1G這斷空間叫做"Reserved"(預留的物理地址空間);從1G到4G的這段物理地址空間中,我們的內核是不能直接訪問的,要想訪問必須把其中的一段內容映射到Reserved來,在Reserved中保留出那一段內存的地址編碼,我們內核才能上去訪問,所以內核不直接訪問大於1G的物理地址空間。所以在32位系統上,它訪問內存當中的數據,中間是需要一個額外步驟的。
在64位系統上,ZONE_DAM給了低端的1G地址空間,這個時候DMA的定址能力被大大加強了;ZONE_DAM32可以使用4G的空間;而大於1G以上給劃分了ZONE_NORMAL,這段空間都可以被內核直接訪問。所以在64位上,內核訪問大於1G的內存地址,就不需要額外的步驟了,效率和性能上也大大增加,這也就是為什麼要使用64位系統的原因。
在現在的PC架構上,AMD,INTER都支持一種機制,叫做PEA(物理地址擴展)。所謂PAE。指的是在32位系統的地址匯流排上,又擴展了4位,使得32位系統上的地址空間可以達到64G。當然在32為系統上,不管你的物理內存有多大,單個進程所使用的空間是無法擴展的。因為在32位的系統上,線性地址空間只有4個G,而單個進程能夠識別的訪問也只有3個G。
linux的虛擬內存子系統包含了以下幾個功能模塊:
slab allocator,zoned buddy allocator,MMU,kswapd,bdflush
slab allocator叫做slab分配器
buddy allocator又叫做buddy system,叫做夥伴系統,也是一種內存分配器
buddy system是工作在MMU之上的,而slab allocator又是工作在buddy system之上的。
設置為小於等於1G,在資料庫伺服器應該勁量避免使用交換內存
3.在應用伺服器上,可以設置為RAM*0.5,當然這個是理論值
如果不的不使用交換內存,應該把交換內存放到最靠外的磁軌分區上,因為最外邊的磁碟的訪問速度最快。所以如果有多塊硬碟,可以把每塊硬碟的最外層的磁軌拿一小部分出來作為交換分區。交換分區可以定義優先順序,因此把這些硬碟的交換內存的優先順序設置為一樣,可以實現負載均衡的效果。定義交換分區優先順序的方法為編輯/etc/fstab:
/dev/sda1 swap swap pri=5 0 0
/dev/sdb1 swap swap pri=5 0 0
/dev/sdc1 swap swap pri=5 0 0
/dev/sdd1 swap swap pri=5 0 0
四.內存耗盡時候的相關調優參數
當Linux內存耗盡的時候,它會殺死那些佔用內存最多的進程,以下三種情況會殺死進程:
1.所有的進程都是活動進程,這個時候想交換出去都沒有空閑的進程
2.沒有可用的page頁在ZONE_NORMAL中
3.有其它新進程啟動,申請內存空間的時候,要找一個空閑內存給做映射,但是這個時候找不到了
一旦內存耗盡的時候,操作系統就會啟用oom-kill機制。
在/proc/PID/目錄下有一個文件叫做oom_score,就是用來指定oom的評分的,就是壞蛋指數。
如果要手動啟用oom-kill機制的話,只需要執行echo f>/proc/sysrq-trigger即可,它會自動殺掉我們指定的壞蛋指數評分最高的那個進程
可以通過echo n > /proc/PID/oom_adj來調整一個進程的壞蛋評分指數。最終的評分指數就是2的oom_adj的值的N次方。假如我們的一個進程的oom_adj的值是5,那麼它的壞蛋評分指數就是2的5次方。
如果想禁止oom-kill功能的使用可以使用vm.panic_on_oom=1即可。
五.與容量有關的內存調優參數:
overcommit_memory,可用參數有3個,規定是否能夠過量使用內存:
0:默認設置,內核執行啟發式的過量使用處理
1:內核執行無內存的過量使用處理。使用這個值會增大內存超載的可能性
2:內存的使用量等於swap的大小+RAM*overcommit_ratio的值。如果希望減小內存的過度使用,這個值是最安全的
overcommit_ratio:將overcommit_memory指定為2時候,提供的物理RAM比例,默認為50
六.與通信相關的調優參數
常見在同一個主機中進行進程間通信的方式:
1.通過消息message;2.通過signal信號量進行通信;3.通過共享內存進行通信,跨主機常見的通信方式是rpc
以消息的方式實現進程通信的調優方案:
msgmax:以位元組為單位規定消息隊列中任意消息的最大允許大小。這個值一定不能超過該隊列的大小(msgmnb),默認值為65536
msgmnb:以位元組為單位規定單一消息隊列的最大值(最大長度)。默認為65536位元組
msgmni:規定消息隊列識別符的最大數量(及隊列的最大數量)。64位架構機器的默認值為1985;32位架構機器的默認值為1736
以共享內存方式實現進程通信的調優方案:
shmall:以位元組為單位規定一次在該系統中可以使用的共享內存總量(單次申請的上限)
shmmax:以位元組為單位規定每一個共享內存片段的最大大小
shmmni:規定系統范圍內最大共享內存片段。在64和32位的系統上默認值都是4096
七.與容量相關的文件系統可調優參數:
file-max:列出內核分配的文件句柄的最大值
dirty_ratio:規定百分比值,當臟數據達到系統內存總數的這個百分比值後開始執行pdflush,默認為20
dirty_background_ratio:規定百分比值,當某一個進程自己所佔用的臟頁比例達到系統內存總數的這個百分比值後開始在後台執行pdflush,默認為10
dirty_expire_centisecs:pdlush每隔百分之一秒的時間開啟起來刷新臟頁,默認值為3000,所以每隔30秒起來開始刷新臟頁
dirty_writeback_centisecs:每隔百分之一秒開始刷新單個臟頁。默認值為500,所以一個臟頁的存在時間達到了5秒,就開始刷新臟
八.linux內存常用的觀察指標命令:
Memory activity
vmstat [interval] [count]
sar -r [interval] [count]
Rate of change in memory
sar -R [interval] [count]
frmpg/s:每秒釋放或者分配的內存頁,如果為正數,則為釋放的內存頁;如果為負數,則為分配的內存頁
bufpg/s:每秒buffer中獲得或者釋放的內存頁。如果為正數則為獲得的內存頁,為負數。則為釋放的內存頁
campg/s:每秒cache中獲得或者釋放的內存頁。如果為正數則為獲得的內存頁,為負數。則為釋放的內存頁
Swap activity
sar -W [interval] [count]
ALL IO
sar -B [interval] [count]
pgpgin/s:每秒從磁碟寫入到內核的塊數量
pgpgout/s:每秒從內核寫入到磁碟的塊數量
fault/s:每秒鍾出現的缺頁異常的個數
majflt/s:每秒鍾出現的大頁異常的個數
pgfree/s:每秒回收回來的頁面個數
Ⅱ 在linux中,count=$#實現了什麼功能
第1行、假如你的腳本是test.sh,當你執行./test.sh
a
b
c時候,你有三個參數
$#的值就是參數的數量3,相當於變數count=3
$0=./test.sh
$1=a
$2=b
$3=c
第3行、只要$count值>0,就進行while循環,
-gt是great
then的意思
調用變數count的方法:是在前面加$,這里的$count=3
第6行、count=$((count-1))
每循環一次count值減1
Ⅲ 在linux中,count=$#實現了什麼功能
第一句是把$#賦值給了count變數,$#是特殊Shell變數,指的是參數的個數。
cmd變數的內容是echo命令
第三句是循環,條件是只要count不等於0
第六句是count值減1
程序的意思是:
一直循環,只要參數個數不是0,那麼顯示這個參數,前面加上一個$符號。
即你的參數是foo的話,那麼顯示的就是$foo
eval的意思是運行變數cmd中命令
Ⅳ linux dd指令用法中參數bs,count
你對bs=xxx count=mmm的說法是正確的,但是對dd的列印提示說法不正確。
dd的輸出是:
x+y records in
m+n records out
其中 x和m的含義是 x和m個完整的塊(也就是你用bs指定的塊大小)被讀入和寫出。
其中y和n的含義是 y和n個不完整的塊(部分塊)被讀入和寫出。
最常見產生的不完整塊的讀入是由於碰到了讀入的文件尾,比如你有一個文件a.log的大小是10個位元組,你用下面的命令就會出現1+1的情況,因為第二個塊不夠6個位元組,只有4位元組。
dd if=a.log of=b.log bs=6 count=2
1+1 records in
1+1 records out
常見的出現0+0的情況是由於被讀的文件是空文件(0位元組),比如下面的命令
dd if=/dev/null of=b.log bs=6 count=2
0+0 records in
0+0 records out
Ⅳ Linux文件系統操作命令
Linux文件系統操作命令大全
Linux命令有很多,那麼Linux文件系統操作命令又有哪些呢?下面我為你介紹!
文件系統操作命令:
1. cat:可以顯示文件的內容(經常和more搭配使用),或將多個文件合並成一個文件。
2. chgrp:用來改變文件或目錄所屬的用戶組,命令的參數以空格分開的要改變屬組的文件列表,文件名支持通配符,如果用戶不是該文件的所有者,則不能改變該文件的所屬組。
3. chmod:用於改變文件或目錄的訪問許可權,該命令有兩種用法:一種是使用圖形化的方法,另一種是數字設置法。
4. chown:用來將指定用戶或組為特定的所有者。用戶可以設置為用戶名或用戶ID,組可以是組名或組ID。特定的文件是以空格分開的可以改變許可權的文件列表,文件名支持通配符。
5. clear:用來清除終端屏幕。
6. cmp:用來比較兩個文件的大小。
7. cp:()可以將文件或目錄復制到其他目錄中,就如同Dos下的命令一樣,功能非常強大。在使用cp命令時,只需要指定源文件名或目標目錄即可。
8. cut:用來移除文件的部分內容。
9. diff:用來找出兩個文件的不同之處。
10. : 用來顯示磁碟的剩餘空間的大小。
11. file:用來顯示文件的類型。
12. find:用來在目錄中搜索文件,並執行指定的操作。
13. head:只查看文件的頭幾行內容,而不必瀏覽整個文件。
14. ln:可以在文件之間創建鏈接,實際上是給某個文件指定一個訪問它的別名。
15. less:用法與more類似,可以查看超過一屏的文件內容,不同的是less除了可以按空格鍵向下顯示文件外,還可以利用方向鍵來滾動顯示文件,要結束瀏覽,只要在less的提示符“:”後按Q即可。
16. locate:可用於查找文件,且比find命令的搜索速度快。
17. ls(list):用來顯示當前目錄中的文件和子目錄列表。
18. mkdir(make directory):建立子目錄。
19. more:用於顯示內容超過一屏的文件,為了避免文件內容顯示瞬間就消失,可以使用more命令讓文件顯示滿一屏時暫停,在按下任意鍵的時候繼續顯示下一屏的內容。
20. rmkdir(remove directory):用來刪除“空”的子目錄或無用的目錄文件。
21. mv(move):可以將文件以及目錄移到其他位置,或更改文件以及目錄的名稱。
22. pico:可指定文本的編輯方式。
23. pwd(print working directory):可顯示用戶當前所在的目錄。
24. rm:用來刪除系統中過時或無用的文件,可以刪除目錄中的文件或目錄本身,對於鏈接文件,原有文件保持不變。
25. sort:將文本文件自動分類。
26. stat:用於顯示文件或文件系統的狀態。
27. Strings:顯示文件中要列印的字元串。
28. tail:輸出文件的結尾。
29. touch:改變文件的時間戳。
30. umask:用於啟動bash shell。
31. uniq:移除已分類文件中的重復文本行。
32. vi:啟動vi文本編輯器。
33. wc:顯示文件中位元組、片語合文本行的數目。
34. whereis:查找特定目錄下的原始程序,二進製程序或用戶手冊等文件的位置。
35. man:如果用戶對某個命令想了解更詳細的話,可使用此命令。
36. dd:復制一個文件。
37. df:查看一個文件系統的磁碟空間使用情況。
38. edquoat:設置用戶與用戶組的磁碟空間限制,即Windows系統中的配額。
39. fdformat:格式化軟盤。
40. fdisk:執行Linux下的`磁碟分區。
41. mkfs:建立一個Linux文件系統。
42. mkswap:創建一個Linux交換分區。
43. mount:掛載一個文件系統。
44. quota:限制和顯示用戶可用的磁碟空間。
45. swapon,swapoff:啟用或取消設備和文件的交換頁。
46. quotaon,quotaoff:啟用或取消quota限制。
47. umount:取消文件系統的裝備。
系統管理命令
1. finger:查詢用戶信息,也能查看默認的用戶環境。
2. ftp:標準的文件傳輸協議的用戶介面,是在網路上傳輸文件最簡單有效的方法。
3. host:用於DNS查詢。
4. hostname:用於顯示或設置系統的主機名。
5. ifconfig:用於配置網卡介面。(可以使用down或up參數來禁用或啟用某個網卡介面)
6. mail:發送和接收郵件。
7. netstat:顯示網路連接、路由表和網路介面信息,用戶可以知道目前那些網路連接正在運行。
8. ping:此命令用於測試本計算機和網路上其它的計算機是否相連。
9. rlogin:遠程登陸命令,該命令與telnet命令很相似,允許用戶啟動遠程系統的交互會話。
10. rcp:rcp(remote file )命令是遠程文件復制命令,該命令用於在計算機之間復制文件,有兩中格式,一種格式用於文件動文件的復制,另一種用於把文件或目錄復制到其他文件目錄中。
11. route:此命令用於顯示或設置IP路由表。
12. tcpmp:此命令用於測試網路的通信量。
13. talk:此命令可用於事項網路用戶的適時交談,但是必須將雙方系統的信息加入各自的/etc/hosts文件中,以相互識別。
14. telnet:此命令用於通過網路登陸遠程計算機,如同操作本地計算機一樣。
15. wall:wall(write all)命令可以用於發送消息給登陸本機的用戶。在發送消息時,可直接輸入要發送的消息,也可以把文件當成消息發送。
16. wget:此命令用於Linux環境下從Internet上下載文件,支持http和ftp協議,支持代理伺服器和斷點連續傳功能,能夠遞歸遠程主機上的目錄,查找合乎要求的的文件並下載到本地硬碟上。Wget命令可以在後台運行,截獲並忽略hantfup信號,因此用戶退出登陸後,仍可繼續運行。
17. &,bg:&,bg命令是後台執行命令,有時候用戶執行的程序可能要話很多時間,如果放在前台執行,可能無法繼續其他操作,最好將他放在後台執行。
18. fg:fg命令是前台執行命令,如果用戶有程序在後台運行,可以通過fg命令將程序從後台移到前台執行。
19. jobs:此命令用於顯示正在後台執行的任務清單。Bg,fg,jobs命令都屬於bash命令,
20. kill:此命令用於終止一個程序,例如:#[root@rathat9 root]kill 3793
21. ps:此命令用於顯示程序的狀態。
22. top:此命令用於顯示當前CPU進程。
23. at batch atp atrm:這些命令用於排序,檢查或刪除後台運行的任務。
Linux與用戶有關的命令:
1. passwd命令:更改用戶口令。
格式:passwd [用戶名]
2. su命令:可以讓一個普通用戶擁有超級用戶或其他用戶的許可權,也可以讓超級擁護以普通用戶的身份做一些事情。
格式:su[選項][?][使用者賬號]
說明:若沒有指定的使用者賬號,則系統預設值為超級用戶root。該命令中個選項的含義分別為:
-c:執行一個命令後就結束。
-:加了這個減號的目的是使環境變數和欲轉換的用戶相同。
-m:保留環境變數不變。
Linux系統管理命令:
1. wall命令:對全部以登陸的用戶發送信息。
2. write命令:向系統中某一用戶發送信息。
格式:write 用戶賬號 [終端名稱]
3. mesg命令:設定是否允許其他用戶用write命令給自己發送信息。
如果允許輸入命令:mesg y
如果不允許輸入命令:mesg n
4. sync命令:在關閉Linux系統是使用的。Sync是強制把內存中的數據寫回硬碟,以免數據丟失。
5. shutdown命令:可以安全的關閉或重啟Linux它在系統關閉之前給系統上的所有登陸用戶提示一條警告信息。
格式:shutdown [選項][時間][警告信息]
命令中選項的含義:
-k:並不真正關機,而只是發出警告信息給所有用戶。
-r:關機後立即重新啟動。
-h:關機後不重新啟動。
-f快速關機,重新啟動時跳過fsck。
-n:快速關機,不經過init程序。
-c:取消一個已經運行的shutdown。
6. free命令:查看當前系統內存的使用情況,它顯示系統中剩餘及已用的物理內存和交換內存,以及共享內存和被核心使用的緩沖區。
格式:free [-b | -k |-m]
命令中各個選項的含義:
-b:以位元組為單位顯示。
-k:以K位元組為單位顯示。
-m:以兆位元組為單位顯示。
7. uptime命令:顯示系統已經運行了多長時間,它依次顯示下列信息:現在時間、系統已經運行了多長時間、目前有多少登陸用戶、系統在過去的1分鍾、5分鍾和15分鍾內的平均負載。
8. df命令:檢查文件系統的磁碟空間佔用情況。
格式:df [選項]
說明:df命令可顯示所有文件系統對I節點和磁碟塊的使用情況。
命令中各個選項的含義:
-a:顯示所有文件系統的磁碟使用情況,包括0塊(block)的文件系統。
-k:以k位元組為單位顯示。
-i:顯示i節點信息,而不是磁碟塊。
-t:顯示各指定類型的文件系統的磁碟空間使用情況。
-x:列出不是某一指定類型文件系統的磁碟空間使用情況。
-T:顯示文件系統類型。
9. 命令:顯示磁碟空間的使用情況。統計目錄(或文件)所佔磁碟的大小。
格式: [選項] [Names…]
說明:該命令逐級進入指定目錄的每一個子目錄並顯示該目錄佔用文件系統數據塊(1024位元組)的情況。若沒有給出Names,則對當前目錄進行統計。
命令中各個選項的含義:
-s:對每個Names參數只給出佔用的數據塊總數。
-a:遞歸的顯示指定目錄中各文件及子孫目錄中個文件佔用的數據塊數。若既不指定-s,也不指定-a,則顯示Names中的每一個目錄及其中的各子目錄所佔的磁碟塊數。
-b:以位元組為單位列出磁碟空間使用情況(系統預設以k位元組為單位)。
-k:以1024位元組為單位列出磁碟空間的使用情況。
-c:最後再加上一個總計(系統預設設置)。
-l:計算所有的文件大小,對硬鏈接文件,則計算多次。
-x:跳過在不同文件系統上的目錄不予統計。
10. dd命令:把指定的輸入文件拷貝到指定的輸出文件中,並且在拷貝過程中可以進行格式轉換。
格式:dd [選項]
命令中各個選項的含義:
if = 輸入文件(或設備名稱)。
of = 輸出文件(或設備名稱)。
ibs = bytes 一次讀取bytes位元組,及讀入緩沖區的位元組數。
skip = blocks 跳過讀入緩沖區開頭的ibs*blocks塊。
obs = bytes 一次寫入bytes位元組,及寫入緩沖區的位元組數。
bs = bytes 同時設置讀/寫緩沖區的位元組數(等於設置ibs和obs).
cbs = byte 一次轉換bytes位元組。
count = blocks 只拷貝輸入的block塊。
conv = ASCⅡ 把EBCDIC碼轉換為ASCⅡ。
conv = ebcdic 把ASCⅡ碼轉換為EBCDIC碼。
conv = ibm ibm把ASCⅡ碼轉換為alternate EBCDIC碼。
conv = block 把變動位轉換成固定字元。
conv = ublock 把固定位轉換成變動位。
conv = ucase 把字母由小寫轉換為大寫。
conv = lcase 把字母由大寫轉換為小寫。
conv = notrunc 不截短輸出文件。
conv = swab 交換每一對輸入位元組。
conv = noerror 出錯是不停止處理。
conv = sync 把每個輸入記錄的大小都調到ibs的大小(用NUL填充)。
11. fdformat命令:低級格式化軟盤。
格式:format [-n] device
說明:-n 軟盤格式化後不作檢驗。
12. echo命令:在顯示器上顯示一段文字,一般起到一個提示作用。
格式:echo [-n] 字元串
13. cal命令:顯示某年某月的日歷。
格式:cal [選項] [月 [年]]
命令中各個選項的含義:
-j:顯示出給定月中的每一天是一年中的第幾天(從1月1日算起)。
-y:顯示出整年的日歷。
14. date命令:顯示和設置系統日期和時間。
格式:date [選項] 顯示時間格式 (以 + 開頭,後面接格式)
date [選項] 設置時間格式
命令中各個選項的含義:
15. clear命令:清除屏幕上的信息。
Vi的基本命令:
1. 移動游標:
Ctrl + b:上滾一屏
Ctrl + f:下滾一屏
Ctrl + d:下滾半屏
Ctrl + u:上滾半屏
G: 移到文件最後
W:移到下個字的開頭
B:跳至上個字的開頭
2. 刪除
x:刪除當前游標所在後面一個字元
#x:刪除當前游標所在後面#個字元。例如,5x表示刪除5個字元。
dd:刪除當前游標所在行
#dd:刪除當前游標所在後面#行。例如,5dd表示刪除字游標算起的5行。
:l,#d:例如,:1,12d表示刪除自行1至行12的文字
X:刪當前游標的左字元
D:刪至行尾
3. 更改
cw:更改游標處的字到此單字的字尾處
c#w:例如,c3w表示更改3個字
cc:修改行
c:替換到行尾
4. 取代
r:取代游標處的字元
R:取代字元直到按ESC為止
5. 復制
yw:拷貝游標處的字到字尾只緩沖區
P:把緩沖區的資料貼上來
yy:拷貝游標所在之行至緩沖區
#yy:例如:5yy,拷貝游標所在之處以下5行至緩沖區
Linux文件的復制,刪除和移動命令
1.cp命令:該命令的功能是將給出的文件或目錄拷貝到另一文件或目錄中,同MSDOS下的COPY命令一樣,功能十分強大。
語法:cp[選項]源文件或目錄,目標文件或目錄
說明該命令把指定的源文件復制到目標文件或把多個源文件復制到目標目錄中。
該命令的各項選項含義如下:
-a:該選項通常在拷貝目錄是使用。他保留鏈接,文件屬性,並遞歸地拷貝目錄,其作用等於dpr選項的組合。
-d:拷貝是保留鏈接
-f:刪除已經存在的目標文件而不提示。
-I:和 f選項相反,在覆蓋目標文件之前將給出提示要求擁護確認。回答y時目標文件將被覆蓋,是互動式拷貝。
-p:此時cp除復制源文件的內容外,還將把其修改時間和反問許可權也復制到新文件中。
-r;若給出的源文件是一目錄文件,此時cp將遞歸復制該目錄下所有的子目錄和文件。此時目標文件必須為一個目錄名。
-L:不作拷貝,只是鏈接文件。
需要說明的是,為防止用戶在不經意的情況下用cp命令破壞另一個文件,如用戶指定的目標文件名已存在,用cp 命令拷貝文件後,這個文件酒會被新源文件覆蓋,因此,建議用戶在使用cp命令拷貝文件時,最好使用I選項。
2.mv命令:用戶可以使用mv命令來為文件或目錄改名或將文件由一個目錄移入另一個目錄中。該命令如同MS-DOS下的ren 和 move 的組合。
語法:mv[選項]源文件或目錄 目標文件或目錄。
說明:視mv命令中第二個參數類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或將其移至一個新的目錄中。當第二個參數類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以是源目錄名),他將所給的源文件或目錄重命名為給頂的目標文件名。當第二個參數是已存在的目錄名稱時,源文件或目錄參加參數可以有很多個,mv命令將個參數指定的源文件均移至目標目錄中。在跨文件系統移動文件時,mv先拷貝,再將原有文件刪除,而鏈至該文件的鏈接也將丟失。
命令中各選項的含義為:
-I:交互方式操作。如果mv操作將導致對已存在的目標文件的覆蓋,此時系統詢問是否重寫,要求用戶回答y或n,這樣可以避免誤覆蓋文件。
-f:禁止交互操作。在mv操作要覆蓋某已有的目標文件是不給任何指示,指定此選項後,I選項將不再起作用。
如果所給目標文件(不是目錄)已存在,此時該文件的內容將後備新文件覆蓋,為防止用戶用mv命令破壞另一個文件,使用mv命令移動文件時,最好使用I選項。
3.rm命令:用戶可以用rm命令刪除不需要的文件。該命令的功能問刪除一個目錄中的一個或多個文件或目錄,他也可以將某個目錄及其下的所有文件及子目錄均刪除。對於鏈接文件,只是斷開了鏈接,源文件保持不變。
Rm命令的一般形式為:
Rm [選項]文件……
如果沒有使用-r選項,則rm不會刪除目錄。
該命令的各選項含義如下:
-f:忽略不存在的文件,從不給出提示。
-r:指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。
-I:進行互動式刪除。
使用rm命令要小心。因為一旦文件被刪除,他是不能被恢復的。為了防止這種情況的發生可以使用I選項倆逐個確認要刪除的文件。如果用戶輸入y,文件將被刪除。如果輸入任何其他東西,文件則不會刪除。
Linux目錄的創建與刪除命令:
1. mkdir命令
功能:創建一個目錄(類似MS-DOS下的md命令)。
語法:mkdir[選項]dir-name
說明:該命令創建由dir-name命名的目錄。要求創建目錄的用戶在當前目錄中(dir-name的父目錄中)具有寫許可權,並且dirname不能是當前目錄中已有的目錄或文件名稱。
命令中個選項的含義為:
-m:對新建目錄設置存取許可權。也可以用chmod命令設置。
-p:可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄。
2. rmdir命令
功能:刪除空目錄。
語法:rmdir[選項]dir-name。/
說明:dir-name表示目錄名。該命令從一個目錄中刪除一個或多個子目錄項。需要特別注意的是,一個目錄被刪除之前必須是空的。Rm-r dir 命令可代替rndir,但是有危險性。刪除某目錄時也必須具有對父目錄的、寫許可權。
命令中個選項的含義為:
-p遞歸刪除目錄dirname,當子目錄刪除後其父目錄為空時,也一同被刪除。如果整個路徑被刪除或者由於某種原因保留部分路徑,則系統在標准輸出上顯示相應的信息。
3. cd命令
功能:改變工作目錄。
語法:cd[directory]
說明:該命令將當前目錄改變至directory所指定的目錄。若沒有指定directory,則回到用戶的主目錄。為了改變到指定目錄,用戶必須擁有對指定目錄的執行和讀許可權。
該命令可以使用通配符(如”*,_”這樣的通配符號)。
4. pwd命令
在Linux層次結構中,用戶可以在被授權的任意目錄下利用mkdir命令創建新目錄,也可以利用cd命令從一個目錄轉換到另一個目錄。然而,沒有提示符來告知用戶目前處於哪一個目錄中。想要知道當前所處的目錄,可以用pwd命令,該命令顯示整個路徑名。
語法:pwd
說明:此命令顯示出當前工作目錄的絕對路徑。
5. ls命令
ls是list的簡寫,其功能為列出目錄的內容。這是擁護最常用的一個命令之一,因為用戶需要不時地查看某個目錄的內容,該命令類似於DOS下的dir命令
語法:ls[選項][目錄或是文件]
對於每個目錄,該命令將列出其中的所有子目錄與文件。對於每個文件,ls將輸出其文件名以及所要求的其他信息。默認情況下,輸出條目按字母順序排序。但未給出目錄名或是文件名時,就顯示當前目錄的信息。
命令中各個選項的含義:
-a:顯示指定目錄下所有子目錄與文件,包括隱藏文件。
-A:顯示指定目錄下所有子目錄與文件,包括隱藏文件。但不列出“.”和“..”.
-b:對文件名中的不可顯示字元用把禁止
linux中所有設備都是以文件的形式顯示
linux下文件的後綴名無實際意義
命令
pwd 顯示路徑
man +命令 列出操作說明
ls -l/-help列出 文件目錄
cd / 目錄做實驗
安裝步驟 configure make make install?
rm -r dl 遞歸刪除目錄
rm -rf 刪除所有目錄
rm -f 加文件名 刪除文件
rmdir +文件地址 刪除文件夾所有和rm -rf功能差不多
touch 加名字 創建新文件
cp 復制 mv 移動 rm 刪除
vi 文本編輯器 輸入a將從命令格式變成輸入格式
head tail 查看前面和後面
find 加位置 加文件名 查找
echo $PATH 查詢路徑
useradd 加名字 添加用戶
userdel 加名字 刪除用戶
su 加用戶名 切換用戶
chmod +x/-x 加文件名 修改文件許可權
chmod 755 加文件名 改變許可權在安裝程序時
grep 加文本字元 加在那個文件 查找字元存在那行
fdisk -l 查看磁碟信息
命令1|命令2|命令三... 管道
ps -ef查看進程
ifconfig linux查看ip
重定向
linux和其它機器之間共享文件vsftp Windows和linux傳輸文件15-17
putty遠程登錄軟體ssh
service iptables off防火牆關閉
tar -xvf 第二層解壓縮
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(註:tar是打包,不是壓縮!)
———————————————
.gz
解壓1:gunzip FileName.gz
解壓2:gzip -d FileName.gz
壓縮:gzip FileName
.tar.gz 和 .tgz
解壓:tar zxvf FileName.tar.gz ./DirName
壓縮:tar zcvf FileName.tar.gz DirName
.tar.bz2
解壓:tar xjf FileName.tar.bz2 ./DirName
壓縮:tar cjf FileName.tar.bz2 DirName
rpm -ivh 加.rpm文件 安裝
安裝sudo apt-get install 軟體名
;Ⅵ linux中查看物理內存和配置空間的命令是什麼
linux中查看物理內存的命令是:dmidecode -t memory | grep Size。(如果沒有安裝dmidecode 需要先執行yum -y install dmidecode)
物理內存是沒辦法配置的,只能配置虛擬內存,在Linux系統即Swap分區,查看Swap分區的命令是:free -k 或者 free -m。m代表以MB為單位,k代表以KB為單位。
(6)countlinux擴展閱讀
dmidecode命令介紹
使用方法:
dmidecode [OPTIONS]
參數介紹:
-d, --dev-mem FILE 從設備文件讀取內存(默認: /dev/mem)
-h, --help顯示此幫助文本並退出。
-q, --quiet 減少詳細輸出。
-t, --type TYPE 僅顯示給定類型的條目。
-V, --version 查看版本號。
Ⅶ linux如何查看有多少用戶登錄
Linux中查看總共有多少用戶登錄的命令是:who | wc -l,命令解釋如下:
統計有多少行用wc命令加-l參數,wc命令可以統計出多少字、行、字元數,-l參數表示僅僅統計出行數。這個命令要和Linux的管道符結合使用,比如想知道一個文件有多少行可以這樣用:
cat /etc/passwd | wc -l
而查看當前有哪些用戶登錄可以用who命令,who命令的顯示中一行結果就是一個已登錄的用戶,再加上wc -l命令就可以統計出有多少用戶登錄了,所以最終命令是:
who | wc -l
Ⅷ linux中test$count什麼意思
Linux系統中有時需要檢測某個條件是否成立,那麼就要用到test命令了,Linux下test的用法有很多,下面就隨學習啦小編一起來學習下Linux系統中如何使用test命令吧。
1.判斷一個命令的結果使用test,其返回0,或一個整數。返回0表示true,返回整數表示錯誤碼
2.獲取上一個命令的返回結果使用$?
3.例如
我的伺服器上面存在/home/www這樣一個文件夾,所以ls /home/www這個命令的返回結果為0;
即echo $?的返回值為0
我的伺服器上面不存在/home/kkk這樣一個文件夾,所以ls /home/kkk這個命令的返回結果為這個命令執行後的錯誤碼;
.png
即echo $?的返回結果為2。這個2表示文件或文件夾不存在。
4.常用的文件測試符
-e表示此文件名是否存在
-f表示此文件名是否是文件
-d表示此文件名是否是文件夾
-r表示此文件名是否可讀
-w表示此文件是否可寫
-x表示此文件是否可執行
-S表示此文件是否問socket
4.1在我的伺服器上/home/www為一個文件夾
所以test -e /home/www的結果為0,即true,此文件名存在
所以test -f /home/www 的結果不為0,即false,此文件名不為文件
所以test -d /home/www的結果為0,即為true,此文件名為文件夾
4.2在我的伺服器上/home/kkk這個文件名不存在
所以test -e /home/kkk的結果不為0,即false,此文件名不存在
所以test -d /home/kkk的結果不為0,即false,此文件名不問文件夾。
上面就是Linux邏輯命令之test命令的使用方法介紹了,如果你要判斷一個條件是否成立,就會用過該命令,你學會了嗎?
文章知識點與官方知識檔案匹配
CS入門技能樹Linux進階新增用戶
24650 人正在系統學習中
打開CSDN APP,看更多技術內容
shell語法中的test命令詳解
test命令用法。功能:檢查文件和比較值 1)判斷表達式 if test (表達式為真) if test !表達式為假 test 表達式1 –a 表達式2 兩個表達式都為真 test 表達式1 –o 表達式2 兩個表達式有一個為真 2)判斷字元串 test –n 字...
繼續訪問
linux期末vi簡答題,Linux操作系統期末練習題lym
71.進程可以忽略大部分信號,但下列信號中()不能忽略 A.SIGBORT B.SIGILL C.SIGQUIT D.SIGKILL72.調用exec函數會將原來設置為要捕獲的信號都更改為() A. 默認 B.忽略 C.另一捕獲 D.默認或忽略 73.可用於在不同主機的進程間通信的技術是() A. 管道 B.共享內存 C.消息隊列 D.套接字 74.只能在...
繼續訪問
linux命令test功能,linux利用test命令的測試功能
當要檢測系統上的某些文件或者相關屬性時,利用test這個命令來工作:測試的標志代表意義-e該文件名是否存在-f該文件名是否存在且為文件-d該文件名是否存在且為目錄-b該文件名是否存在且為一個block device設備-c該文件名是否存在且為一個character device設備-S該文件名是否存在且為一個Socket文件-p該文件名是否存在且為一個FIFO文件-L該文件名是否存在且為一個連接文...
繼續訪問
熱門推薦 Linux shell 的 test 命令用法詳解
基本格式: test expression expression為test命令構造的表達式。 這里expression是test命令可以理解的任何有效表達式,該簡化格式將是讀者可能會踫見的最常用格式 返回值: test命令或者返回0(真) 或者返回1(假). test可理解的表達式類型分為四類: 表達式判斷 字元串比較 數字比較 文件比較 1)判斷表達
繼續訪問
linux shell 條件測試
1.文件條件測試 -r 可讀 -w 可寫 -x 可執行 ...
繼續訪問
test
test命令編程開發test命令是shell環境中測試條件表達式的實用工具。語法test(選項)選項-b<文件>:如果文件為一個塊特殊文件,則為真; -c<文件>:如果文件為一個字元特殊文件,則為真; -d<文件>:如果文件為一個目錄,則為真; -e<文件>:如果文件存在,則為真; -f<文件>:如果文件為一個普通文...
繼續訪問
linux 測試 命令大全,linux命令大全之-test測試命令
格式:test 測試條件字元串測試:注意空格:test str1 == str2 測試字元串是否相等test str1 != str2 測試字元串是否不相等test str1 測試字元串是否不為空test -n str1 測試字元串是否不為空test -z str1 測試字元串是否為空整數測試test int1 -eq int2 測試整數是否相等test int1 -ge int2 測試int1是...
繼續訪問
linux test 命令,Linuxtest命令、test命令
Linux中的test命令test命令可以檢測一個文件或者目錄是否存在,或者對一個文件或目錄的讀寫許可權等等常見語法test -選項 文件或目錄-e 文件名是否存在,存在$?返回0也就是true-f 文件名是否存在,且為文件 存在$?返回0-d 文件名是否存在,且為目錄 存在$?返回0-L 文件名是否存在,且為鏈接文件 存在$?返回0-r -w -x 這三個是單選項,文件名是否存在,並且具有可讀...
繼續訪問
shell test 命令
shell test 命令
繼續訪問
linux中test命令詳解
linux中test命令詳解,包含test的多種實用方法
繼續訪問
[Linux]:Linux shell 的 test 命令用法詳解
基本格式: test expression expression為test命令構造的表達式。 這里expression是test命令可以理解的任何有效表達式,該簡化格式將是讀者可能會踫見的最常用格式 返回值: test命令或者返回0(真) 或者返回1(假). test
繼續訪問
linux test -e ps,test
1、Linux如何掛載windows下的共享目錄?mount.cifs //IP地址/server /mnt/server -o user=administrator,password=123456linux 下的server需要自己手動建一個 後面的user與pass 是windows主機的賬號和密碼 注意空格 和逗號2、如何查看http的並發請求數與其TCP連接狀態?netstat -n | ...
繼續訪問
linux之test命令詳解
linux之test命令詳解 test作用檢查某個條件是否成立,返回值為0(真)或者其他值(假),可通過echo $?查看返回值,也常用於循環和條件語句。 test一般有三種用法: 測試文件或者文件夾 字元串比較 數值比較 1.測試文件或者文件夾 參數 說明 -e 當路徑存在時返回真 -f 當路徑存在且為文件時返回真 -d 當路徑存在且為文件夾時返回真 [root@linuxforliuhj test]# ll total 20 -rw-r--r--. 1 root root
繼續訪問
最新發布 linux test命令
https://os.51cto.com/article/705259.html
繼續訪問
linux test命令測試標志
test命令測試標志
繼續訪問
linux test 使用方法,Linux系統test命令使用方法介紹
Linux系統中有時需要檢測某個條件是否成立,那麼就要用到test命令了,Linux下test的用法有很多,下面就隨小編一起來學習下Linux系統中如何使用test命令吧。1.判斷一個命令的結果使用test,其返回0,或一個整數。返回0表示true,返回整數表示錯誤碼2.獲取上一個命令的返回結果使用$?3.例如我的伺服器上面存在/home/www這樣一個文件夾,所以ls /home/www這個命令...
繼續訪問
linux shell編程學習--test測試比較命令
本文介紹了linux shell自帶test命令的各種用法。在linux shell編程過程中,如何使用test命令進行算術比較,文件屬性,文件修改,字元串比較,以及邏輯表達式運算的操作。
繼續訪問
linux shell test 命令
Shell中的 test 命令用於檢查某個條件是否成立,它可以進行數值、字元和文件三個方面的測試。 1.數值比較 參數 說明 -eq 等於則為真 -ne 不等於則為真 -gt 大於則為真 -ge 大於等於則為真 -lt 小於則為真 -le 小於等於則為真 舉例: num1=100 num2=1...
繼續訪問
linux shell 字元比較與數值比較,bash的調試
test命令用法。功能:檢查文件和比較值1)判斷表達式if test (表達式為真)if test !表達式為假test 表達式1 –a 表達式2 兩個表達式都為真test 表達式1 –o 表達式2
繼續訪問
linux中test的用法
寫評論
評論