玩轉Linux - 經常使用的命令和操做

簡述

每一個程序員基本都應該用過Linux操做系統,有的用來搭建服務器,有的用來安裝前端擴展插件工具等等,可是無一例外都是須要操做Linux,因此我此次分享一些常見的實用的命令。html

本文將持續更新...前端

chkconfig

chkconfig命令用於檢查,設置系統的各類服務。linux

chkconfig 可查詢操做系統在每個執行等級中會執行哪些系統服務,其中包括各種常駐服務。程序員

語法正則表達式

chkconfig [--add][--del][--list][系統服務]

或

chkconfig [--level <等級代號>][系統服務][on/off/reset]

參數:express

  • --add  增長所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啓動的敘述文件內增長相關數據。數組

  • --del  刪除所指定的系統服務,再也不由chkconfig指令管理,並同時在系統啓動的敘述文件內刪除相關數據。服務器

  • --level<等級代號>  指定讀系統服務要在哪個執行等級中開啓或關畢。網絡

實例列出chkconfig所知道的全部命令。app

# chkconfig -list

開啓服務。

//列出chkconfig所知道的全部的服務的狀況
#  chkconfig -list

//開啓Telnet服務 
# chkconfig telnet on

關閉服務

//列出chkconfig所知道的全部的服務的狀況
# chkconfig -list 

//關閉Telnet服務
# chkconfig telnet off

hostname

這個命令主要是用來查看機器的域名活IP地址的。

  • hostname 沒有選項,顯示主機名字

  • hostname –d 顯示機器所屬域名

  • hostname –f 顯示完整的主機名和域名

  • hostname –i 顯示當前機器的ip地址

ping

ping 命令將數據包發向用戶指定地址。當包被接收。目標機器發送返回數據包。

ping 主要有兩個做用

  1. 用來確認網絡鏈接是暢通的。

  2. 用來查看鏈接的速度信息。

若是你 ping www.yahoo.com 它將返回它的ip地址 。你能夠經過 ctrl+C 來中止命令。

ifconfig

Linux中 ifconfig 命令用於顯示或設置網絡設備。

ifconfig 可設置網絡設備的狀態,或是顯示目前的設置。

案例:

一、顯示網絡設備信息:ifconfig

eth0   Link encap:Ethernet HWaddr 00:50:56:0A:0B:0C 
     inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0
     inet6 addr: fe80::250:56ff:fe0a:b0c/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:172220 errors:0 dropped:0 overruns:0 frame:0
     TX packets:132379 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000 
     RX bytes:87101880 (83.0 MiB) TX bytes:41576123 (39.6 MiB)
     Interrupt:185 Base address:0x2024 

lo    Link encap:Local Loopback 
     inet addr:127.0.0.1 Mask:255.0.0.0
     inet6 addr: ::1/128 Scope:Host
     UP LOOPBACK RUNNING MTU:16436 Metric:1
     RX packets:2022 errors:0 dropped:0 overruns:0 frame:0
     TX packets:2022 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0 
     RX bytes:2459063 (2.3 MiB) TX bytes:2459063 (2.3 MiB)

二、啓動關閉指定網卡:

ifconfig eth0 down(關)
ifconfig eth0 up(開)

三、爲網卡配置和刪除IPv6地址:

ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //爲網卡誒之IPv6地址
ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //爲網卡刪除IPv6地址

四、用ifconfig修改MAC地址

ifconfig eth0 down //關閉網卡
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址
ifconfig eth0 up //啓動網卡
ifconfig eth1 hw ether 00:1D:1C:1D:1E //關閉網卡並修改MAC地址 
ifconfig eth1 up //啓動網卡

五、配置IP地址

//給eth0網卡配置IP地址
ifconfig eth0 192.168.1.56 

// 給eth0網卡配置IP地址,並加上子掩碼
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 

// 給eth0網卡配置IP地址,加上子掩碼,加上個廣播地址
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255

六、啓用和關閉ARP協議

ifconfig eth0 arp  //開啓
ifconfig eth0 -arp  //關閉

七、設置最大傳輸單元

//設置能經過的最大數據包大小爲 1500 bytes
ifconfig eth0 mtu 1500

nslookup

nslookup命令是經常使用域名查詢工具,就是查DNS信息用的命令。

nslookup 這個命令在 有ip地址時,能夠用這個命令來顯示主機名,能夠找到給定域名的全部ip地址。(必須鏈接到互聯網才能使用這個命令)

例子:nslookup www.baidu.com

你也可使用 nslookup 從ip得到主機名或從主機名得到ip。

【系統沒有nslookup命令?】

若是你的Linux系統沒有nslookup命令,那麼八成是你沒有安裝bind-utils包。

直接yum install bind-utils就能夠解決問題了。

netstat

Netstat 命令用於顯示各類網絡相關信息,如網絡鏈接,路由表,接口狀態 (Interface Statistics),masquerade 鏈接,多播成員 (Multicast Memberships) 等等。

netstat是發現主機鏈接最有用最通用的Linux命令。

你可使用"netstat -g"查詢該主機訂閱的全部多播組(網絡)。

netstat -nap | grep port //將會顯示使用該端口的應用程序的進程id
netstat -a  or netstat –all //將會顯示包括TCP和UDP的全部鏈接  
netstat --tcp  or netstat –t //將會顯示TCP鏈接
netstat --udp or netstat –u //將會顯示UDP鏈接
netstat -g //將會顯示該主機訂閱的全部多播網絡。

chmod

Linux/Unix 的文件調用權限分爲三級 : 文件擁有者、羣組、其餘。

利用 chmod 能夠藉以控制文件如何被他人所調用。

使用權限 : 全部使用者

語法:

chmod [-cfvR] [--help] [--version] mode file...

參數說明:

mode : 權限設定字串,格式以下 :
[ugoa...][[+-=][rwxX]...][,...]

其中:
u 表示該文件的擁有者,g 表示與該文件的擁有者屬於同一個羣體(group)者,o 表示其餘之外的人,a 表示這三者皆是。

+ 表示增長權限、- 表示取消權限、= 表示惟一設定權限。

r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該文件是個子目錄或者該文件已經被設定過爲可執行。

-c : 若該文件權限確實已經更改,才顯示其更改動做
-f : 若該文件權限沒法被更改也不要顯示錯誤訊息
-v : 顯示權限變動的詳細資料
-R : 對目前目錄下的全部文件與子目錄進行相同的權限變動(即以遞迴的方式逐個變動)
--help : 顯示輔助說明
--version : 顯示版本

實例:

將文件 file1.txt 設爲全部人皆可讀取 :

chmod ugo+r file1.txt

將文件 file1.txt 設爲全部人皆可讀取 :

chmod a+r file1.txt

將文件 file1.txt 與 file2.txt 設爲該文件擁有者,與其所屬同一個羣體者可寫入,但其餘之外的人則不可寫入 :

chmod ug+w,o-w file1.txt file2.txt

將 ex1.py 設定爲只有該文件擁有者能夠執行 :

chmod u+x ex1.py

將目前目錄下的全部文件與子目錄皆設爲任何人可讀取 :

chmod -R a+r *

此外chmod也能夠用數字來表示權限如 :

chmod 777 file

語法爲:

chmod abc file
其中a,b,c各爲一個數字,分別表示User、Group、及Other的權限。
r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=5。
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
效果相同

若用chmod 4755 filename可以使此程序具備root的權限。

find

find 命令用來在指定目錄下查找文件。

任何位於參數以前的字符串都將被視爲欲查找的目錄名。

若是使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。而且將查找到的子目錄和文件所有進行顯示。

語法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} ;

參數說明 :

find 根據下列規則判斷 path 和 expression,在命令列上第一個 - ( ) , ! 以前的部份爲 path,以後的是 expression。

若是 path 是空字串則使用目前路徑,若是 expression 是空字串則使用 -print 爲預設 expression。

expression 中可以使用的選項有二三十個之多,在此只介紹最經常使用的部份。

-mount, -xdev : 只檢查和指定目錄在同一個文件系統下的文件,避免列出其它文件系統中的文件
-amin n : 在過去 n 分鐘內被讀取過
-anewer file : 比文件 file 更晚被讀取過的文件
-atime n : 在過去 n 天過讀取過的文件
-cmin n : 在過去 n 分鐘內被修改過
-cnewer file :比文件 file 更新的文件
-ctime n : 在過去 n 天過修改過的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的文件,ipath 會忽略大小寫
-name name, -iname name : 文件名稱符合 name 的文件。iname 會忽略大小寫
-size n : 文件大小 是 n 單位,b 表明 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。-type c : 文件類型是 c 的文件。

d: 目錄
c: 字型裝置文件
b: 區塊裝置文件
p: 具名貯列
f: 通常文件
l: 符號連結
s: socket

-pid n : process id 是 n 的文件
你可使用 ( ) 將運算式分隔,並使用下列運算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2

實例:

將目前目錄及其子目錄下全部延伸檔名是 c 的文件列出來。

find . -name "*.c"

將目前目錄其其下子目錄中全部通常文件列出

find . -ftype f

將目前目錄及其子目錄下全部最近 20 分鐘內更新過的文件列出

find . -ctime -20

查找/var/logs目錄中更改時間在7日之前的普通文件,並在刪除以前詢問它們:

find /var/logs -type f -mtime +7 -ok rm { } ;

查找前目錄中文件屬主具備讀、寫權限,而且文件所屬組的用戶和其餘用戶具備讀權限的文件:

find . -type f -perm 644 -exec ls -l { } ;

爲了查找系統中全部文件長度爲0的普通文件,並列出它們的完整路徑:

find / -type f -size 0 -exec ls -l { } ;

查找/var/logs目錄中更改時間在7日之前的普通文件,並在刪除以前詢問它們:

find /var/logs -type f -mtime +7 -ok rm { } ;

mv

mv 命令用來爲文件或目錄更名、或將文件或目錄移入其它位置。

語法:

mv [options] source dest
mv [options] source... directory

參數說明:

-i: 若指定目錄已有同名文件,則先詢問是否覆蓋舊文件;
-f: 在mv操做要覆蓋某已有的目標文件時不給任何指示;

mv參數設置與運行結果
命令格式 運行結果
mv 文件名 文件名 將源文件名改成目標文件名
mv 文件名 目錄名 將文件移動到目標目錄
mv 目錄名 目錄名 目標目錄已存在,將源目錄
移動到目標目錄;目標
目錄不存在則更名
mv 目錄名 文件名 出錯

實例:

將文件 aaa 改名爲 bbb :

mv aaa bbb

將info目錄放入logs目錄中。注意,若是logs目錄不存在,則該命令將info更名爲logs。

mv info/ logs

再如將/usr/student下的全部文件和目錄移到當前目錄下,命令行爲:

mv /usr/student/*

cp

cp命令主要用於複製文件或目錄。

語法

cp [options] source dest

cp [options] source... directory

參數說明:

-a:此選項一般在複製目錄時使用,它保留連接、文件屬性,並複製目錄下的全部內容。其做用等於dpR參數組合。
-d:複製時保留連接。這裏所說的連接至關於Windows系統中的快捷方式。
-f:覆蓋已經存在的目標文件而不給出提示。
-i:與-f選項相反,在覆蓋目標文件以前給出提示,要求用戶確認是否覆蓋,回答"y"時目標文件將被覆蓋。
-p:除複製文件的內容外,還把修改時間和訪問權限也複製到新文件中。
-r:若給出的源文件是一個目錄文件,此時將複製該目錄下全部的子目錄和文件。
-l:不復制文件,只是生成連接文件。

實例:

// 使用指令"cp"將當前目錄"test/"下的全部文件複製到新目錄"newtest"下,輸入以下命令:

cp –r test/ newtest

注意:用戶使用該指令複製目錄時,必須使用參數"-r"或者"-R"。

awk

AWK是一種處理文本文件的語言,是一個強大的文本分析工具。

之因此叫AWK是由於其取了三位創始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。

語法

awk [選項參數] 'script' var=value file(s)

awk [選項參數] -f scriptfile var=value file(s)

選項參數說明:

// 指定輸入文件折分隔符,fs是一個字符串或者是一個正則表達式,如-F:。
-F fs or --field-separator fs

// 賦值一個用戶定義變量。
-v var=value or --asign var=value

// 從腳本文件中讀取awk命令。
-f scripfile or --file scriptfile

// 對nnn值設置內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目。
// 這兩個功能是Bell實驗室版awk的擴展功能,在標準awk中不適用。
-mf nnn and -mr nnn

// 在兼容模式下運行awk。因此gawk的行爲和標準的awk徹底同樣,全部的awk擴展都被忽略。
-W compact or --compat, -W traditional or --traditional

// 打印簡短的版權信息。
-W copyleft or --copyleft, -W copyright or --copyright

// 打印所有awk選項和每一個選項的簡短說明。
-W help or --help, -W usage or --usage

// 打印不能向傳統unix平臺移植的結構的警告。
-W lint or --lint

// 打印關於不能向傳統unix平臺移植的結構的警告。
-W lint-old or --lint-old

// 打開兼容模式。但有如下限制,不識別:/x、函數關鍵字、func、換碼序列以及當fs是一個空格時,將新行做爲一個域分隔符;操做符**和**=不能代替^和^=;fflush無效。
-W posix

// 容許間隔正則表達式的使用,參考(grep中的Posix字符類),如括號表達式[[:alpha:]]。
-W re-interval or --re-inerval

// 使用program-text做爲源代碼,可與-f命令混用。
-W source program-text or --source program-text

// 打印bug報告信息的版本。
-W version or --version

基本用法:

log.txt文本內容以下:

2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo

用法一:

awk '{[pattern] action}' {filenames}   // 行匹配語句 awk '' 只能用單引號

實例:

// 每行按空格或TAB分割,輸出文本中的一、4項

awk '{print $1,$4}' log.txt

---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo

// 格式化輸出
 awk '{printf "%-8s %-10s\n",$1,$4}' log.txt

---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo

用法二:

awk -F  // -F至關於內置變量FS, 指定分割字符

實例:

// 使用","分割

awk -F, '{print $1,$2}'   log.txt

---------------------------------------------
2 this is a test
3 Are you like awk
This's a test
10 There are orange apple

// 或者使用內建變量
 awk 'BEGIN{FS=","} {print $1,$2}'     log.txt

---------------------------------------------
2 this is a test
3 Are you like awk
This's a test
10 There are orange apple

// 使用多個分隔符.先使用空格分割,而後對分割結果再使用","分割
 awk -F '[ ,]'  '{print $1,$2,$5}'   log.txt

---------------------------------------------
2 this test
3 Are awk
This's a
10 There apple

用法三:

awk -v  // 設置變量

實例:

awk -va=1 '{print $1,$1+a}' log.txt

---------------------------------------------
2 3
3 4
This's 1
10 11

awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt

---------------------------------------------
2 3 2s
3 4 3s
This's 1 This'ss
10 11 10s

用法四:

awk -f {awk腳本} {文件名}

實例:

awk -f cal.awk log.txt
相關文章
相關標籤/搜索