cp命令
公司主營業(yè)務:網(wǎng)站建設、成都網(wǎng)站設計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出扶余免費做網(wǎng)站回饋大家。
該命令的功能是將給出的文件或目錄拷貝到另一文件或目錄中,同MSDOS下的copy命令一樣,功能十分強大
語法: cp [選項] 源文件或目錄 目標文件或目錄
說明:該命令把指定的源文件復制到目標文件或把多個源文件復制到目標目錄中
-r 若給出的源文件是一目錄文件,此時cp將遞歸復制該目錄下所有的子目錄和文件
mv命令
用戶可以使用mv命令來為文件或目錄改名或?qū)⑽募梢粋€目錄移入另一個目錄中。該命令如同MSDOS下的ren和move的組合
語法:mv [選項] 源文件或目錄 目標文件或目錄
rm命令
該命令的功能為刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件及子目錄均刪除
rm命令的一般形式為:
rm [選項] 文件…
如果沒有使用-r選項,則rm不會刪除目錄
該命令的各選項含義如下:
-f 忽略不存在的文件,從不給出提示
-r 指示rm將參數(shù)中列出的全部目錄和子目錄均遞歸地刪除
Vi命令
插入模式
按「i」切換進入插入模式「insert mode」,按“i”進入插入模式后是從光標當前位置開始輸入文件
按「a」進入插入模式后,是從目前光標所在位置的下一個位置開始輸入文字
按「o」進入插入模式后,是插入新的一行,從行首開始輸入文字
從插入模式切換為命令行模式
按「ESC」鍵
查找字符
「/關鍵字」:先按「/」鍵,再輸入您想尋找的字符,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往后尋找到您要的關鍵字為止
「?關鍵字」:先按「?」鍵,再輸入您想尋找的字符,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往前尋找到您要的關鍵字為止
離開vi
「q」:按「q」就是退出,如果無法離開vi,可以在「q」后跟一個「!」強制離開vi
「qw」:一般建議離開時,搭配「w」一起使用,這樣在退出的時候還可以保存文件
mkdir命令
功能:創(chuàng)建一個目錄(類似MSDOS下的md命令)
語法:mkdir [選項] dir-name
說明:該命令創(chuàng)建由dir-name命名的目錄。要求創(chuàng)建目錄的用戶在當前目錄中(dir-name的父目錄中)具有寫權限,并且dirname不能是當前目錄中已有的目錄或 文件名稱。
命令中各選項的含義為:
-p 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在, 加上此選項后, 系統(tǒng)將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄
cd 命令
功能:改變工作目錄
語法:cd [directory]
說明:該命令將當前目錄改變至directory所指定的目錄。若沒有指定directory, 則回到用戶的主目錄。為了改變到指定目錄,用戶必須擁有對指定目錄的執(zhí)行和讀權限
ls 命令
功能: 列出目錄的內(nèi)容,該命令類似于DOS下的dir命令
語法:ls [選項] [目錄或是文件]
對于每個目錄,該命令將列出其中的所有子目錄與文件。對于每個文件,ls將輸出 其文件名以及所要求的其他信息。默認情況下,輸出條目按字母順序排序。當未給出目錄名或是文件名時,就顯示當前目錄的信息。
命令中各選項的含義如下:
-a 顯示指定目錄下所有子目錄與文件,包括隱藏文件
-c 按文件的修改時間排序
-t 顯示時按修改時間(最近優(yōu)先)而不是按名字排序。若文件修改時間相同,則 按字典順序。修改時間取決于是否使用了c或u選頂。缺省的時間標記是最后一次修改時間
tar命令
tar可以為文件和目錄創(chuàng)建檔案。利用tar,用戶可以為某一特定文件創(chuàng)建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上創(chuàng)建檔案,現(xiàn)在,用戶可以在任何設備上創(chuàng)建檔案,如軟盤。利用tar命令,可以把一大堆的文件和目錄全部打包成一個文件,這對于備份文件或?qū)讉€文件組合成為一個文件以便于網(wǎng)絡傳輸是非常有用的。Linux上的tar是GNU版本的。
語法:tar [主選項+輔選項] 文件或者目錄
使用該命令時,主選項是必須要有的,它告訴tar要做什么事情,輔選項是輔助使用的,可以選用。
主選項:
-c 創(chuàng)建新的檔案文件。如果用戶想備份一個目錄或是一些文件,就要選擇這個選項。
-x 從檔案文件中釋放文件。
-f 使用檔案文件或設備,這個選項通常是必選的。
-v 詳細報告tar處理的文件信息。如無此選項,tar不報告文件信息。
-z 用gzip來壓縮/解壓縮文件,加上該選項后可以將檔案文件進行壓縮,但還原時也一定要使用該選項進行解壓縮
文件或目錄的訪問權限
Linux系統(tǒng)中的每個文件和目錄都有訪問許可權限,用它來確定誰可以通過何種方式對文件和目錄進行訪問和操作
文件或目錄的訪問權限分為只讀,只寫和可執(zhí)行三種。以文件為例,只讀權限表示只允許讀其內(nèi)容,而禁止對其做任何的更改操作??蓤?zhí)行權限表示允許將該文件作為一個程序執(zhí)行。文件被創(chuàng)建時,文件所有者自動擁有對該文件的讀、寫和可執(zhí)行權限,以便于對文件的閱讀和修改。用戶也可根據(jù)需要把訪問權限設置為需要的任何組合
有三種不同類型的用戶可對文件或目錄進行訪問:文件所有者,同組用戶、其他用戶。所有者一般是文件的創(chuàng)建者。所有者可以允許同組用戶有權訪問文件,還可以將文件的訪問權限賦予系統(tǒng)中的其他用戶。在這種情況下,系統(tǒng)中每一位用戶都能訪問該用戶擁有的文件或目錄
每一文件或目錄的訪問權限都有三組,每組用三位表示,分別為文件屬主的讀、寫和執(zhí)行權限;與屬主同組的用戶的讀、寫和執(zhí)行權限;系統(tǒng)中其他用戶的讀、寫和執(zhí)行權限。當用ls -l命令顯示文件或目錄的詳細信息時,最左邊的一列為文件的訪問權限。
例如:
$ ls -l sobsrc. tgz
-rw-r–r– 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz
橫線代表空許可。r代表只讀,w代表寫,x代表可執(zhí)行。注意這里共有10個位置。第一個字符指定了文件類型。在通常意義上,一個目錄也是一個文件。如果第一個字符是橫線,表示是一個非目錄的文件。如果是d,表示是一個目錄
例如:
- rw- r– r–
普通文件 文件主 組用戶 其他用戶
是文件sobsrc.tgz 的訪問權限,表示sobsrc.tgz是一個普通文件;sobsrc.tgz的屬主有讀寫權限;與sobsrc.tgz屬主同組的用戶只有讀權限;其他用戶也只有讀權限。
chmod 命令
chmod命令是非常重要的,用于改變文件或目錄的訪問權限。用戶用它控制文件或目錄的訪問權限。
該命令有兩種用法。一種是包含字母和操作符表達式的文字設定法;另一種是包含數(shù)字的數(shù)字設定法。
文字設定法
chmod [who] [+ | - | =] [mode] 文件名
命令中各選項的含義為:
操作對象who可是下述字母中的任一個或者它們的組合:
u 表示“用戶(user)”,即文件或目錄的所有者。
g 表示“同組(group)用戶”,即與文件屬主有相同組ID的所有用戶。
o 表示“其他(others)用戶”
a 表示“所有(all)用戶”。它是系統(tǒng)默認值。
操作符號可以是:
+ 添加某個權限。
- 取消某個權限。
= 賦予給定權限并取消其他所有權限(如果有的話)
設置mode所表示的權限可用下述字母的任意組合:
r 可讀
w 可寫
x 可執(zhí)行
X 只有目標文件對某些用戶是可執(zhí)行的或該目標文件是目錄時才追加x 屬性。
s 在文件執(zhí)行時把進程的屬主或組ID置為該文件的文件屬主。方式“u+s”設置文件的用戶ID位,“g+s”設置組ID位。
t 保存程序的文本到交換設備上。
u 與文件屬主擁有一樣的權限。
g 與和文件屬主同組的用戶擁有一樣的權限。
o 與其他用戶擁有一樣的權限。
文件名:以空格分開的要改變權限的文件列表,支持通配符
在一個命令行中可給出多個權限方式,其間用逗號隔開。
例如:chmod g+r,o+r example
使同組和其他用戶對文件example 有讀權限
chgrp命令
功能:改變文件或目錄所屬的組。
語法:chgrp [選項] group filename
該命令改變指定指定文件所屬的用戶組。其中group可以是用戶組ID,也可以是/etc/group文件中用戶組的組名。文件名是以空格分開的要改變屬組的文件列表,支持通配符。如果用戶不是該文件的屬主或超級用戶,則不能改變該文件的組。
該命令的各選項含義為:
-R 遞歸式地改變指定目錄及其下的所有子目錄和文件的屬組
chown 命令
功能:更改某個文件或目錄的屬主和屬組。這個命令也很常用。例如root用戶把自己的一個文件拷貝給用戶xu,為了讓用戶xu能夠存取這個文件,root用戶應該把這個文件的屬主設為xu,否則,用戶xu無法存取這個文件。
語法:chown [選項] 用戶或組 文件
說明:chown將指定文件的擁有者改為指定的用戶或組。用戶可以是用戶名或用戶ID。組可以是組名或組ID。文件是以空格分開的要改變權限的文件列表,支持通配符。
該命令的各選項含義如下:
-R 遞歸式地改變指定目錄及其下的所有子目錄和文件的擁有者
-v 顯示chown命令所做的工作
passwd命令
出于系統(tǒng)安全考慮,Linux系統(tǒng)中的每一個用戶除了有其用戶名外,還有其對應的用戶口令。因此使用useradd命令增加時,還需使用passwd命令為每一位新增加的用戶設置口令;用戶以后還可以隨時用passwd命令改變自己的口令
該命令的一般格式為: passwd [用戶名] 其中用戶名為需要修改口令的用戶名。只有超級用戶可以使用“passwd 用戶名”修改其他用戶的口令,普通用戶只能用不帶參數(shù)的passwd命令修改自己的口令
該命令的使用方法如下:
輸入passwd Enter;
在new password:提示下輸入新的口令(在屏幕上看不到這個口令):
系統(tǒng)提示再次輸入這個新口令
su命令
它可以讓一個普通用戶擁有超級用戶或其他用戶的權限,也可以讓超級用戶以普通用戶的身份做一些事情。普通用戶使用這個命令時必須有超級用戶或其他用戶的口令。如要離開當前用戶的身份,可以打exit
該命令的一般形式為: su [選項] [使用者帳號]
說明:若沒有指定使用者帳號,則系統(tǒng)預設值為超級用戶root。 該命令中各選項的含義分別為:
-c 執(zhí)行一個命令后就結束
- 加了這個減號的目的是使環(huán)境變量和欲轉(zhuǎn)換的用戶相同
-m 保留環(huán)境變量不變
shutdown命令
shutdown 命令可以安全地關閉或重啟Linux系統(tǒng),它在系統(tǒng)關閉之前給系統(tǒng)上的所有登錄用戶提示一條警告信息。該命令還允許用戶指定一個時間參數(shù),可以是一個精確的時間,也可以是從現(xiàn)在開始的一個時間段。精確時間的格式是hh:mm,表示小時和分鐘;時間段由“+”和分鐘數(shù)表示。系統(tǒng)執(zhí)行該命令后,會自動進行數(shù)據(jù)同步的工作
該命令的一般格式為: shutdown [選項] [時間] [警告信息] 命令中各選項的含義為:
-k 并不真正關機,而只是發(fā)出警告信息給所有用戶。
-r 關機后立即重新啟動。
-h 關機后不重新啟動。
-f 快速關機,重啟動時跳過fsck。
-n 快速關機,不經(jīng)過init程序。
-c 取消一個已經(jīng)運行的shutdown
需要特別說明的是,該命令只能由超級用戶使用
free命令
free命令的功能是查看當前系統(tǒng)內(nèi)存的使用情況,它顯示系統(tǒng)中剩余及已用的物理內(nèi)存和交換內(nèi)存,以及共享內(nèi)存和被核心使用的緩沖區(qū)。
該命令的一般格式為: free [-b | -k | -m] 命令中各選項的含義如下:
-b 以字節(jié)為單位顯示。
-k 以K字節(jié)為單位顯示。
-m 以兆字節(jié)為單位顯示
df命令
功能:檢查文件系統(tǒng)的磁盤空間占用情況。可以利用該命令來獲取硬盤被占用了多少空間,目前還剩下多少空間等信息
語法:df [選項]
說明:df命令可顯示所有文件系統(tǒng)對i節(jié)點和磁盤塊的使用情況。
該命令各個選項的含義如下:
-a 顯示所有文件系統(tǒng)的磁盤使用情況,包括0塊(block)的文件系統(tǒng),如/proc文件系統(tǒng)。
-k 以k字節(jié)為單位顯示。
-i 顯示i節(jié)點信息,而不是磁盤塊。
-t 顯示各指定類型的文件系統(tǒng)的磁盤空間使用情況。
du命令
du的英文原義為“disk usage”,含義為顯示磁盤空間的使用情況。
功能:統(tǒng)計目錄(或文件)所占磁盤空間的大小。
語法:du [選項] [Names…]
說明:該命令逐級進入指定目錄的每一個子目錄并顯示該目錄占用文件系統(tǒng)數(shù)據(jù)塊(1024字節(jié))的情況。若沒有給出Names,則對當前目錄進行統(tǒng)計。
該命令的各個選項含義如下:
-s 對每個Names參數(shù)只給出占用的數(shù)據(jù)塊總數(shù)。
date命令
date命令的功能是顯示和設置系統(tǒng)日期和時間。
該命令的一般格式為: date [選項] 顯示時間格式(以+開頭,后面接格式)
date 設置時間格式
命令中各選項的含義分別為:
-s datestr, –set datestr 設置datestr 描述的日期
注意:只有超級用戶才有權限使用date命令設置時間,一般用戶只能使用date命令顯示時間。
ifconfig
作用
ifconfig用于查看和更改網(wǎng)絡接口的地址和參數(shù),包括IP地址、網(wǎng)絡掩碼、廣播地址,使用權限是超級用戶
格式
ifconfig -interface [options] address
主要參數(shù)
-interface:指定的網(wǎng)絡接口名,如eth0和eth1
up:激活指定的網(wǎng)絡接口卡
down:關閉指定的網(wǎng)絡接口
address:設置指定接口設備的IP地址
netmask address:設置接口的子網(wǎng)掩碼
應用說明
ifconfig是用來設置和配置網(wǎng)卡的命令行工具。為了手工配置網(wǎng)絡,這是一個必須掌握的命令。使用該命令的好處是無須重新啟動機器。
要賦給eth0接口IP地址207.164.186.2,并且馬上激活它,使用下面命令:
#fconfig eth0 210.34.6.89 netmask 255.255.255.128
該命令的作用是設置網(wǎng)卡eth0的IP地址、網(wǎng)絡掩碼和網(wǎng)絡的本地廣播地址。若運行不帶任何參數(shù)的ifconfig命令,這個命令將顯示機器所有激活接口的信息。帶有“-a”參數(shù)的命令則顯示所有接口的信息,包括沒有激活的接口。注意,用ifconfig命令配置的網(wǎng)絡設備參數(shù),機器重新啟動以后將會丟失
如果要暫停某個網(wǎng)絡接口的工作,可以使用down參數(shù):
#ifconfig eth0 down
netstat
作用
檢查整個Linux網(wǎng)絡狀態(tài)
格式
netstat [-acCeFghilMnNoprstuvVwx][-A][–ip]
主要參數(shù)
-a–all:顯示所有連線中的Socket
-l–listening:顯示監(jiān)控中的服務器的Socket
-n–numeric:直接使用IP地址,而不通過域名服務器
-p–programs:顯示正在使用Socket的程序識別碼和程序名稱
-t–tcp:顯示TCP傳輸協(xié)議的連線狀況
-u–udp:顯示UDP傳輸協(xié)議的連線狀況
-apn 查看開啟的端口
應用實例
netstat主要用于Linux察看自身的網(wǎng)絡狀況,如開啟的端口、在為哪些用戶服務,以及服務的狀態(tài)等。此外,它還顯示系統(tǒng)路由表、網(wǎng)絡接口狀態(tài)等??梢哉f,它是一個綜合性的網(wǎng)絡狀態(tài)的察看工具。在默認情況下,netstat只顯示已建立連接的端口。如果要顯示處于監(jiān)聽狀態(tài)的所有端口,使用-a參數(shù)即可:
#netstat -a
lsof
作用
顯示系統(tǒng)打開的文件
格式
lsof 〔options〕 filename
主要參數(shù)
lsof -a: 表示兩個參數(shù)都必須滿足時才顯示結果
lsof -c string: 顯示COMMAND列中包含指定字符的進程所有打開的文件
lsof -u username: 顯示所屬user進程打開的文件
lsof -g gid: 顯示歸屬gid的進程情況
lsof +d /DIR/: 顯示目錄下被進程打開的文件
lsof +D /DIR/: 同上,但是會搜索目錄下的所有目錄,時間相對較長
lsof -d FD: 顯示指定文件描述符的進程
lsof -n: 不將IP轉(zhuǎn)換為hostname,缺省是不加上-n參數(shù)
lsof -i: 用以顯示符合條件的進程情況
lsof -i:port: 查看端口運行的程序。
例如:查看22端口所運行的程序 #lsof -i:22
telnet
作用
telnet表示開啟終端機階段作業(yè),并登入遠端主機。telnet是一個Linux命令,同時也是一個協(xié)議(遠程登陸協(xié)議)
格式
telnet [-8acdEfFKLrx][-b][-e][-k][-l][-n][-S][-X][主機名稱IP地址通信端口]
ftp
作用
ftp命令進行遠程文件傳輸。FTP是ARPANet的標準文件傳輸協(xié)議,該網(wǎng)絡就是現(xiàn)今Internet的前身,所以ftp既是協(xié)議又是一個命令。
格式
ftp [-dignv][主機名稱IP地址]
應用說明
ftp命令是標準的文件傳輸協(xié)議的用戶接口,是在TCP/IP網(wǎng)絡計算機之間傳輸文件簡單有效的方法,它允許用戶傳輸ASCⅡ文件和二進制文件。為了使用ftp 來傳輸文件,用戶必須知道遠程計算機上的合法用戶名和口令。這個用戶名/口令的組合用來確認ftp會話,并用來確定用戶對要傳輸?shù)奈募M行什么樣的訪問。另外,用戶需要知道對其進行ftp會話的計算機名字的IP地址
用戶可以通過使用ftp客戶程序,連接到另一臺計算機上;可以在目錄中上下移動、列出目錄內(nèi)容;可以把文件從遠程計算機機拷貝到本地機上;還可以把文件從本地機傳輸?shù)竭h程系統(tǒng)中。ftp內(nèi)部命令有72個,下面列出主要幾個內(nèi)部命令:
ls:列出遠程機的當前目錄
cd:在遠程機上改變工作目錄
lcd:在本地機上改變工作目錄
close:終止當前的ftp會話
get(mget):從遠程機傳送指定文件到本地機
put(mput):從本地機傳送指定文件到遠程機
quit:斷開與遠程機的連接,并退出ftp
route
作用
route表示手工產(chǎn)生、修改和查看路由表
格式
#route [-add][-net|-host] targetaddress [-netmask Nm][dev]If]
#route [-delete][-net|-host] targetaddress [gw Gw] [-netmask Nm] [dev]If]
主要參數(shù)
-add:增加路由
-delete:刪除路由
-net:路由到達的是一個網(wǎng)絡,而不是一臺主機
-host:路由到達的是一臺主機
-netmask Nm:指定路由的子網(wǎng)掩碼
gw:指定路由的網(wǎng)關
[dev]If:強迫路由鏈指定接口。
應用實例
route命令是用來查看和設置Linux系統(tǒng)的路由信息,以實現(xiàn)與其它網(wǎng)絡的通信。要實現(xiàn)兩個不同的子網(wǎng)之間的通信,需要一臺連接兩個網(wǎng)絡的路由器,或者同時位于兩個網(wǎng)絡的網(wǎng)關來實現(xiàn)
在Linux系統(tǒng)中,設置路由通常是為了解決以下問題:該Linux系統(tǒng)在一個局域網(wǎng)中,局域網(wǎng)中有一個網(wǎng)關,能夠讓機器訪問Internet,那么就需要將這臺機器的IP地址設置為Linux機器的默認路由。使用下面命令可以增加一個默認路由:
route add 0.0.0.0 192.168.1.1
top
作用
top命令用來顯示執(zhí)行中的程序進程,使用權限是所有用戶。
格式
top [-] [d delay] [q] [c] [S] [s] [i] [n]
主要參數(shù)
d:指定更新的間隔,以秒計算
q:沒有任何延遲的更新。如果使用者有超級用戶,則top命令將會以最高的優(yōu)先序執(zhí)行
c:顯示進程完整的路徑與名稱
i:不顯示任何閑置(Idle)或無用(Zombie)的行程
n:顯示更新的次數(shù),完成后將會退出top。
說明
top命令是Linux系統(tǒng)管理的一個主要命令,通過它可以獲得許多信息。這里我們結合圖1來說明它給出的信息
下面列出了詳細解釋
PID(Process ID):進程標示號
USER:進程所有者的用戶名
PR:進程的優(yōu)先級別
NI:進程的優(yōu)先級別數(shù)值
VIRT:進程占用的虛擬內(nèi)存值
RES:進程占用的物理內(nèi)存值
SHR:進程使用的共享內(nèi)存值
S:進程的狀態(tài),其中S表示休眠,R表示正在運行,Z表示僵死狀態(tài),N表示該進程優(yōu)先值是負數(shù)
%CPU:該進程占用的CPU使用率
%MEM:該進程占用的物理內(nèi)存和總內(nèi)存的百分比
TIME+:該進程啟動后占用的總的CPU時間
Command:進程啟動的啟動命令名稱,如果這一行顯示不下,進程會有一個完整的命令行。
在修改內(nèi)核參數(shù)前,需要注意以下幾點:
本文提供以下兩種修改Linux實例內(nèi)核參數(shù)的方法。
/proc/sys/ 目錄是Linux內(nèi)核在啟動后生成的偽目錄,其目錄下的 net 文件夾中存放了當前系統(tǒng)中開啟的所有內(nèi)核參數(shù),目錄樹結構與參數(shù)的完整名稱相關,如 net.ipv4.tcp_tw_recycle ,它對應的文件是 /proc/sys/net/ipv4/tcp_tw_recycle 文件,文件的內(nèi)容就是參數(shù)值。方法一中修改的參數(shù)值僅在當前運行中生效,系統(tǒng)重啟后會回滾到歷史值,一般用于臨時性驗證修改的效果。若需要永久性修改,請參見方法二。
RedHat向管理員提供了非常好的方法,使我們可以在系統(tǒng)運行時更改內(nèi)核參數(shù),而不需要重新引導系統(tǒng)。這是通過/PRoc虛擬文件系統(tǒng)實現(xiàn)的。/proc/sys目錄下存放著大多數(shù)的內(nèi)核參數(shù),并且設計成可以在系統(tǒng)運行的同時進行更改。下面我們以打開內(nèi)核的 ip轉(zhuǎn)發(fā)功能為例說明在系統(tǒng)運行時修改內(nèi)核參數(shù)的兩種方法。IP轉(zhuǎn)發(fā)是指允許系統(tǒng)對來源和目的地都不是本機的數(shù)據(jù)包通過網(wǎng)絡,RedHat默認屏蔽此功能,在 需要用本機作為路由器、NAT等情況下需要開啟此功能。 方法一:修改/proc下內(nèi)核參數(shù)文件內(nèi)容 直接修改內(nèi)核參數(shù)ip_forward對應在/proc下的文件/proc/sys/net/ipv4/ip_forward。用下面命令查看ip_forward文件內(nèi)容: # cat /proc/sys/net/ipv4/ip_forward 該文件默認值0是禁止ip轉(zhuǎn)發(fā),修改為1即開啟ip轉(zhuǎn)發(fā)功能。修改命令如下: # echo 1 /proc/sys/net/ipv4/ip_forward 修改過后就馬上生效,即內(nèi)核已經(jīng)打開ip轉(zhuǎn)發(fā)功能。但如果系統(tǒng)重啟后則又恢復為默認值0,如果想永久打開需要通過修改/etc/sysctl.conf文件的內(nèi)容來實現(xiàn)。 方法二.修改/etc/sysctl.conf文件 默認sysctl.conf文件中有一個變量是 net.ipv4.ip_forward = 0 將后面值改為1,然后保存文件。因為每次系統(tǒng)啟動時初始化腳本/etc/rc.d/rc.sysinit會讀取/etc/sysctl.conf文件的內(nèi)容,所以修改后每次系統(tǒng)啟動時都會開啟ip轉(zhuǎn)發(fā)功能。但只是修改sysctl文件不會馬上生效,如果想使修改馬上生效可以執(zhí)行下面的命令: # sysctl –p 在修改其他內(nèi)核參數(shù)時可以向/etc/sysctl.conf文件中添加相應變量即可,下面介紹/proc/sys下內(nèi)核文件與配置文件 sysctl.conf中變量的對應關系,由于可以修改的內(nèi)核參數(shù)都在/proc/sys目錄下,所以sysctl.conf的變量名省略了目錄的前面部 分(/proc/sys)。 將/proc/sys中的文件轉(zhuǎn)換成sysctl中的變量依據(jù)下面兩個簡單的規(guī)則: 1.去掉前面部分/proc/sys 2.將文件名中的斜杠變?yōu)辄c 這兩條規(guī)則可以將/proc/sys中的任一文件名轉(zhuǎn)換成sysctl中的變量名。 例如: /proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward /proc/sys/kernel/hostname =》 kernel.hostname 可以使用下面命令查詢所有可修改的變量名 # sysctl –a 下面例舉幾個簡單的內(nèi)核參數(shù): 1./proc/sys/kernel/shmmax 該文件指定內(nèi)核所允許的最大共享內(nèi)存段的大小。 2./proc/sys/kernel/threads-max 該文件指定內(nèi)核所能使用的線程的最大數(shù)目。 3./proc/sys/kernel/hostname 該文件允許您配置網(wǎng)絡主機名。
由于Linux的內(nèi)核參數(shù)信息都存在內(nèi)存中,因此可以通過命令直接修改,并且修改后直接生效。但是,當系統(tǒng)重新啟動后,原來設置的參數(shù)值就會丟失,而系統(tǒng)每次啟動時都會自動去/etc/sysctl.conf文件中讀取內(nèi)核參數(shù),因此將內(nèi)核的參數(shù)配置寫入這個文件中,是一個比較好的選擇。
首先打開/etc/sysctl.conf文件,查看如下兩行的設置值,這里是:
kernel.shmall
=
2097152
kernel.shmmax
=
4294967295
如果系統(tǒng)默認的配置比這里給出的值大,就不要修改原有配置。同時在/etc/sysctl.conf文件最后,添加以下內(nèi)容:
fs.file-max
=
6553600
kernel.shmmni
=
4096
kernel.sem
=
250
32000
100
128
net.ipv4.ip_local_port_range
=
1024
65000
net.core.rmem_default
=
4194304
net.core.rmem_max
=
4194304
net.core.wmem_default
=
262144
net.core.wmem_max
=
262144
這里的“fs.file-max
=
6553600”其實是由“fs.file-max
=
512
*
PROCESSES”得到的,我們指定PROCESSES的值為12800,即為“fs.file-max
=512
*12800”。
sysctl.conf文件修改完畢后,接著執(zhí)行“sysctl
-p”使設置生效。
[root@localhost
~]#
sysctl
-p
常用的內(nèi)核參數(shù)的含義如下。
kernel.shmmax:表示單個共享內(nèi)存段的最大值,以字節(jié)為單位,此值一般為物理內(nèi)存的一半,不過大一點也沒關系,這里設定的為4GB,即“4294967295/1024/1024/1024=4G”。
kernel.shmmni:表示單個共享內(nèi)存段的最小值,一般為4kB,即4096bit.
kernel.shmall:表示可用共享內(nèi)存的總量,單位是頁,在32位系統(tǒng)上一頁等于4kB,也就是4096字節(jié)。
fs.file-max:表示文件句柄的最大數(shù)量。文件句柄表示在Linux系統(tǒng)中可以打開的文件數(shù)量。
ip_local_port_range:表示端口的范圍,為指定的內(nèi)容。
kernel.sem:表示設置的信號量,這4個參數(shù)內(nèi)容大小固定。
net.core.rmem_default:表示接收套接字緩沖區(qū)大小的缺省值(以字節(jié)為單位)。
net.core.rmem_max
:表示接收套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)
net.core.wmem_default:表示發(fā)送套接字緩沖區(qū)大小的缺省值(以字節(jié)為單位)。
net.core.wmem_max:表示發(fā)送套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)。
作為高性能WEB服務器,只調(diào)整Nginx本身的參數(shù)是不行的,因為Nginx服務依賴于高性能的操作系統(tǒng)。
以下為常見的幾個Linux內(nèi)核參數(shù)優(yōu)化方法。
net.ipv4.tcp_max_tw_buckets
對于tcp連接,服務端和客戶端通信完后狀態(tài)變?yōu)閠imewait,假如某臺服務器非常忙,連接數(shù)特別多的話,那么這個timewait數(shù)量就會越來越大。
畢竟它也是會占用一定的資源,所以應該有一個最大值,當超過這個值,系統(tǒng)就會刪除最早的連接,這樣始終保持在一個數(shù)量級。
這個數(shù)值就是由net.ipv4.tcp_max_tw_buckets這個參數(shù)來決定的。
CentOS7系統(tǒng),你可以使用sysctl -a |grep tw_buckets來查看它的值,默認為32768,
你可以適當把它調(diào)低,比如調(diào)整到8000,畢竟這個狀態(tài)的連接太多也是會消耗資源的。
但你不要把它調(diào)到幾十、幾百這樣,因為這種狀態(tài)的tcp連接也是有用的,
如果同樣的客戶端再次和服務端通信,就不用再次建立新的連接了,用這個舊的通道,省時省力。
net.ipv4.tcp_tw_recycle = 1
該參數(shù)的作用是快速回收timewait狀態(tài)的連接。上面雖然提到系統(tǒng)會自動刪除掉timewait狀態(tài)的連接,但如果把這樣的連接重新利用起來豈不是更好。
所以該參數(shù)設置為1就可以讓timewait狀態(tài)的連接快速回收,它需要和下面的參數(shù)配合一起使用。
net.ipv4.tcp_tw_reuse = 1
該參數(shù)設置為1,將timewait狀態(tài)的連接重新用于新的TCP連接,要結合上面的參數(shù)一起使用。
net.ipv4.tcp_syncookies = 1
tcp三次握手中,客戶端向服務端發(fā)起syn請求,服務端收到后,也會向客戶端發(fā)起syn請求同時連帶ack確認,
假如客戶端發(fā)送請求后直接斷開和服務端的連接,不接收服務端發(fā)起的這個請求,服務端會重試多次,
這個重試的過程會持續(xù)一段時間(通常高于30s),當這種狀態(tài)的連接數(shù)量非常大時,服務器會消耗很大的資源,從而造成癱瘓,
正常的連接進不來,這種惡意的半連接行為其實叫做syn flood攻擊。
設置為1,是開啟SYN Cookies,開啟后可以避免發(fā)生上述的syn flood攻擊。
開啟該參數(shù)后,服務端接收客戶端的ack后,再向客戶端發(fā)送ack+syn之前會要求client在短時間內(nèi)回應一個序號,
如果客戶端不能提供序號或者提供的序號不對則認為該客戶端不合法,于是不會發(fā)ack+syn給客戶端,更涉及不到重試。
net.ipv4.tcp_max_syn_backlog
該參數(shù)定義系統(tǒng)能接受的最大半連接狀態(tài)的tcp連接數(shù)??蛻舳讼蚍斩税l(fā)送了syn包,服務端收到后,會記錄一下,
該參數(shù)決定最多能記錄幾個這樣的連接。在CentOS7,默認是256,當有syn flood攻擊時,這個數(shù)值太小則很容易導致服務器癱瘓,
實際上此時服務器并沒有消耗太多資源(cpu、內(nèi)存等),所以可以適當調(diào)大它,比如調(diào)整到30000。
net.ipv4.tcp_syn_retries
該參數(shù)適用于客戶端,它定義發(fā)起syn的最大重試次數(shù),默認為6,建議改為2。
net.ipv4.tcp_synack_retries
該參數(shù)適用于服務端,它定義發(fā)起syn+ack的最大重試次數(shù),默認為5,建議改為2,可以適當預防syn flood攻擊。
net.ipv4.ip_local_port_range
該參數(shù)定義端口范圍,系統(tǒng)默認保留端口為1024及以下,以上部分為自定義端口。這個參數(shù)適用于客戶端,
當客戶端和服務端建立連接時,比如說訪問服務端的80端口,客戶端隨機開啟了一個端口和服務端發(fā)起連接,
這個參數(shù)定義隨機端口的范圍。默認為32768 61000,建議調(diào)整為1025 61000。
net.ipv4.tcp_fin_timeout
tcp連接的狀態(tài)中,客戶端上有一個是FIN-WAIT-2狀態(tài),它是狀態(tài)變遷為timewait前一個狀態(tài)。
該參數(shù)定義不屬于任何進程的該連接狀態(tài)的超時時間,默認值為60,建議調(diào)整為6。
net.ipv4.tcp_keepalive_time
tcp連接狀態(tài)里,有一個是established狀態(tài),只有在這個狀態(tài)下,客戶端和服務端才能通信。正常情況下,當通信完畢,
客戶端或服務端會告訴對方要關閉連接,此時狀態(tài)就會變?yōu)閠imewait,如果客戶端沒有告訴服務端,
并且服務端也沒有告訴客戶端關閉的話(例如,客戶端那邊斷網(wǎng)了),此時需要該參數(shù)來判定。
比如客戶端已經(jīng)斷網(wǎng)了,但服務端上本次連接的狀態(tài)依然是established,服務端為了確認客戶端是否斷網(wǎng),
就需要每隔一段時間去發(fā)一個探測包去確認一下看看對方是否在線。這個時間就由該參數(shù)決定。它的默認值為7200秒,建議設置為30秒。
net.ipv4.tcp_keepalive_intvl
該參數(shù)和上面的參數(shù)是一起的,服務端在規(guī)定時間內(nèi)發(fā)起了探測,查看客戶端是否在線,如果客戶端并沒有確認,
此時服務端還不能認定為對方不在線,而是要嘗試多次。該參數(shù)定義重新發(fā)送探測的時間,即第一次發(fā)現(xiàn)對方有問題后,過多久再次發(fā)起探測。
默認值為75秒,可以改為3秒。
net.ipv4.tcp_keepalive_probes
第10和第11個參數(shù)規(guī)定了何時發(fā)起探測和探測失敗后再過多久再發(fā)起探測,但并沒有定義一共探測幾次才算結束。
該參數(shù)定義發(fā)起探測的包的數(shù)量。默認為9,建議設置2。
設置和范例
在Linux下調(diào)整內(nèi)核參數(shù),可以直接編輯配置文件/etc/sysctl.conf,然后執(zhí)行sysctl -p命令生效。