首頁  >  文章  >  運維  >  linux必學的60個指令

linux必學的60個指令

coldplay.xixi
coldplay.xixi原創
2020-08-01 15:14:1916353瀏覽

linux必學的60個指令:1、login的作用是登入系統,它的使用權限是所有使用者;2、shutdown指令的作用是關閉計算機,它的使用權限是超級使用者;3 、halt指令的作用是關閉系統,它的使用權限是超級使用者。

linux必學的60個指令

Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁碟操作、檔案存取、目錄操作、進程管理、文件權限設定等。所以,在Linux系統上工作離不開使用系統提供的指令。要真正理解Linux系統,

就必須從Linux指令學起,透過基礎的命令學習可以進一步理解Linux系統。

不同Linux發行版的指令數量不一樣,但Linux發行版本最少的指令也有200多個。這裡筆者把比較重要和使用頻率最多的指令,依照它們在系統中的作用分成下面六個部分一一介紹。

◆ 安裝與登入指令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;

◆ 檔案處理指令:file、mkdir、grep、dd 、find、mv、ls、diff、cat、ln;

◆ 系統管理相關指令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;

◆ 網路操作指令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;

◆◆ 系統安全相關指令:passwd、su、umask、chgrp、 chmod、chown、chattr、sudo ps、who;

◆ 其它指令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。

本文以Mandrake Linux 9.1(Kenrel 2.4.21)為例,介紹Linux下的安裝與登入指令。

immortality按:請用ctrl f在本頁中尋找某一部分的內容或某一指令的用法。

相關學習推薦:linux影片教學

#Linux必學的60個指令(1)-安裝與登陸指令

login

1.作用

login的作用是登入系統,它的使用權限是所有使用者。

2.格式

login [name][-p ][-h 主機名稱]

3.主要參數

-p:通知login保持現在的環境參數。

-h:用來向遠端登入的之間傳輸使用者名稱。

如果選擇用命令列模式登入Linux的話,那麼看到的第一個Linux命令就是login:。

一般介面是這樣的:

Manddrake Linux release 9.1(Bamboo) for i586

renrel 2.4.21-0.13mdk on i686 / tty1

localhost login:root

password:

上面程式碼中,第一行是Linux發行版本號,第二行是核心版本號和登入的虛擬控制台,我們在第三行輸入登入名,按下「Enter」鍵在Password後輸入帳號密碼,即可登入系統。出於安全考慮,輸入帳戶密碼時字元不會在螢幕上回顯,遊標也不移動。

登入後會看到下面這個介面(以超級使用者為例):

[root@localhost root]

#last login:Tue ,Nov 18 10: 00:55 on vc/1

上面顯示的是登入星期、月、日、時間和使用的虛擬控制台。

4.應用程式技巧

Linux

是一個真正的多使用者作業系統,可以同時接受多個使用者登錄,也允許一個使用者進行多次登入。這是因為Linux和許多版本的Unix一樣,提供了虛擬控制台的

存取方式,允許使用者在同一時間從控制台(系統的控制台是與系統直接相連的監視器和鍵盤)進行多次登入。每個虛擬控制台可以看作是獨立的工作站,工作台

之間可以切換。虛擬控制台的切換可以透過按下Alt鍵和一個功能鍵來實現,通常使用F1-F6 。

例如,使用者登入後,按一下「Alt

F2」鍵,使用者就可以看到上面出現的「login:」提示符,說明使用者看到了第二個虛擬控制台。然後只要按下「Alt

F1」鍵,就可以回到第一個虛擬控制台。一個新安裝的Linux系統允許使用者使用「Alt F1」到「Alt F6」鍵來存取前六個虛擬控制台。虛擬控制

台最有用的是,當一個程式出錯造成系統死鎖時,可以切換到其它虛擬控制台工作,關閉這個程式。

shutdown

1.作用

shutdown指令的作用是關閉計算機,它的使用權限是超級使用者。

2.格式

shutdown [-h][-i][-k][-m][-t]

3.重要參數

-t:在改變到其它運作等級之前,告訴init程式多久以後關機。

-k:不真正關機,只是發送警訊給每位登入者。

-h:關機後關閉電源。

-c:cancel current process取消目前正在執行的關機程式。所以這個選項當然沒有時間參數,但可以輸入一個用來解釋的訊息,而這資訊將會送到每位使用者。

-F:重新啟動電腦時強迫fsck。

-time:設定關機前的時間。

-m: 將系統改為單一使用者模式。

-i:關機時顯示系統資訊。

4.指令說明

shutdown

指令可以安全地將系統關機。有些用戶會使用直接斷掉電源的方式來關閉Linux系統,這是十分危險的。因為Linux與Windows不同,其後台運行著

許多進程,所以強制關機可能會導致進程的資料遺失,使系統處於不穩定的狀態,甚至在有的系統中會損壞硬體設備(硬碟)。在系統關機前使用

shutdown指令,系統管理員會通知所有登入的使用者係統將要關閉,並且login指令會被凍結,即新的使用者不能再登入。

halt

1.作用

halt指令的作用是關閉系統,它的使用權限是超級使用者。

2.格式

halt [-n] [-w] [-d] [-f] [-i] [-p]

3.主要參數說明

-n:防止sync系統調用,它用在用fsck修補根分區之後,以阻止核心用舊版的超級區塊覆蓋修補過的超級區塊。

-w:不是真正的重啟或關機,只是寫wtmp(/var/log/wtmp)紀錄。

-f:沒有呼叫shutdown,而強制關機或重新啟動。

-i:關機(或重新啟動)前,關掉所有的網路介面。

-f:強迫關機,不呼叫shutdown這個指令。

-p: 當關機的時候順便做關閉電源的動作。

-d:關閉系統,但不留下紀錄。 

4.指令說明

halt

就是呼叫shutdown

-h。 halt執行時,殺死應用程式,執行sync(將存於buffer中的資料強制寫入硬碟中)系統調用,檔案系統寫操作完成後就會停止核心。若係統的

運行等級為0或6,則關閉系統;否則以shutdown指令(加上-h參數)來取代。 

reboot

1.作用

reboot指令的作用是重新啟動計算機,它的使用權限是系統管理者。

2.格式

reboot [-n] [-w] [-d] [-f] [-i]

3.主要參數

-n: 在重開機前不做將記憶體資料寫回硬碟的動作。

-w: 不會真的重啟機,只是把記錄寫到/var/log/wtmp檔案裡。

-d: 不把記錄寫到/var/log/wtmp檔案裡(-n這個參數包含了-d)。

-i: 在重開機之前先把所有與網路相關的裝置停止。

install

1.作用

install指令的作用是安裝或升級軟體或備份數據,它的使用權限是所有使用者。

2.格式

(1)install [選項]... 來源目的地

(2)install [選項]... 來源... 目錄

(3)install -d [選項]... 目錄...

#前兩種格式中,會將複製至或將多個檔案複製至已存在的,同時設定權

限模式及所有者/所屬群組。在第三種格式中,會建立所有指定的目錄及它們的主目錄。長選項必須用的參數在使用短選項時也是必須的。

3.主要參數

--backup[=CONTROL]:為每個已存在的目的地檔案備份。

-b:類似 ——backup,但不接受任何參數。

-c:(此選項不作處理)。

-d,--directory:所有參數都當作目錄處理,並且會建立指定目錄的所有主目錄。

-D:建立前的所有主目錄,然後將複製至 ;在第一種使用格式中有用。

-g,--group=群組:自行設定所屬群組,而不是進程目前的所屬群組。

-m,--mode=模式:自行設定權限模式 (像chmod),而非rwxr-xr-x。

-o,--owner=擁有者:自行設定擁有者 (只適用於超級使用者)。

-p,--preserve-timestamps:以檔案的存取/修改時間作為對應的目的地檔案的時間屬性。

-s,-strip:用strip指令刪除symbol table,只適用於第一及第二種使用格式。

-S,--suffix=字尾:自行指定備份檔案的。

-v,--verbose:處理每個檔案/目錄時印出名稱。

——help:顯示此幫助訊息並離開。

--version:顯示版本訊息並離開。

mount

1.作用

mount指令的作用是載入檔案系統,它的用權限是超級使用者或/etc/fstab中允許的使用者。

2.格式

mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir

3.主要參數

-h:顯示輔助資訊。

-v:顯示訊息,通常和-f用來除錯。

-a:將/etc/fstab中定義的所有檔案系統掛上。

-F:這個指令通常和-a一起使用,它會為每一個mount的動作產生一個行程負責執行。在系統需要掛上大量NFS檔案系統時可以加快載入的速度。

-f:通常用於調試。它會使mount不執行實際掛上的動作,而是模擬整個掛上的過程,通常會和-v一起使用。

-t vfstype:顯示已載入檔案系統的類型。

-n:一般而言,mount掛上後會在/etc/mtab中寫入一筆資料,在系統中沒有可寫入檔案系統的情況下,可以用這個選項取消這個動作。

4.應用技巧

在Linux

和Unix系統上,所有檔案都是作為一個大型樹(以/為根)的一部分存取的。要存取CD-ROM上的文件,需要將CD-ROM設備掛裝在檔案樹中的某個掛點

裝飾點。如果發行版安裝了自動掛裝包,那麼這個步驟可自動進行。在Linux中,如果要使用硬碟、光碟機等儲存設備,就得先將它加載,當儲存設備掛上了之後,

就可以把它當成一個目錄來存取。掛上一個設備使用mount指令。使用mount這個指令時,至少要先知道下列三種資訊:要載入物件的檔案系統類型、要

載入物件的裝置名稱及要將裝置載入到哪個目錄下。

(1)Linux可以辨識的檔案系統

◆ Windows 95/98常用的FAT 32檔案系統:vfat ;

◆ Win NT/2000 的檔案系統: ntfs ;

◆ OS/2使用的檔案系統:hpfs;

◆ Linux使用的檔案系統:ext2、ext3;

◆ CD-ROM光碟使用的文件系統:iso9660。

雖然vfat是指FAT 32系統,但事實上它也相容於FAT 16的檔案系統類型。

(2)決定裝置的名稱

在Linux

中,裝置名稱通常都存在/dev裡。這些設備名稱的命名都是有規則的,可以用「推理」的方式把設備名稱找出來。例如,/dev/hda1這個

IDE設備,hd是Hard Disk(硬碟)的,sd是SCSI Device,fd是Floppy Device(或是Floppy

#Disk?)。 a代表第一個設備,通常IDE介面可以接上4個IDE設備(例如4塊硬碟)。所以要辨識IDE硬碟的方法分別就是hda、hdb、hdc、

hdd。 hda1中的「1」代表hda的第一個硬碟分割區

(partition),hda2代表hda的第二主分割區,第一個邏輯分割區從hda5開始,依此類推。此外,可以直接檢查

/var/log/messages文件,在該文件中可以找到電腦開機後系統已辨認出來的設備代號。

(3)查找掛接點

在決

定將裝置掛接之前,先查看一下電腦是不是有個/mnt的空目錄,該目錄就是專門用來當作掛載點(Mount

Point)的目錄。建議在/mnt裡建幾本/mnt/cdrom、/mnt/floppy、/mnt/mo等目錄,當成目錄的專用掛載點。舉例而言,如

要掛載下列5個設備,其執行指令可能如下(假設都是Linux的ext2系統,如果是Windows XX請將ext2改成vfat):

軟碟===>mount -t ext2 /dev/fd0 /mnt/floppy

cdrom ===>mount -t iso9660 /dev/hdc /mnt/cdrom

SCSI cdrom ===>mount -t iso9660 /dev/sdb /mnt/scdrom

SCSI cdr ===>mount -t iso9660 /dev/sdc /mnt/scdr

#不過目前大多數較新的Linux發行版本(包括紅旗Linux、中軟體Linux、Mandrake Linux等)都可以自動掛載檔案系統,但Red Hat Linux除外。

umount

1.作用

umount指令的作用是卸載一個檔案系統,它的使用權限是超級使用者或/etc/fstab中允許的使用者。

2.格式

unmount -a [-fFnrsvw] [-t vfstype] [-n] [-rw] [-F] device dir

#3.使用說明

umount

指令是mount指令的逆操作,它的參數和使用方法和mount指令是一樣的。 Linux掛裝CD-ROM後,就會鎖定CD—ROM,這樣就無法用CD-

ROM面板上的Eject按鈕彈出它。但是,當不再需要光碟時,如果已將/cdrom作為符號鏈接,請使用umount/cdrom來卸載它。只有當無用戶

正在使用光碟時,該指令才會成功。該指令包括了將具有目前工作目錄當作該光碟中的目錄的終端機視窗。

chsh

1.作用

chsh指令的功能是改變使用者shell設定,它的使用權限是所有使用者。

2.格式

chsh [ -s ] [ -list] [ --help ] [ -v ] [ username ]

#3.主參數

#-l:顯示系統所有Shell類型。

-v:顯示Shell版本號。

4.應用技巧

前面介紹了Linux下有多種Shell,一般缺省的是Bash,如果想更換Shell類型可以使用chsh指令。先輸入帳號密碼,然後輸入新Shell類型,如果操作正確系統會顯示「Shell change」。其介面一般如下:

Changing fihanging shell for cao

Password:

New shell [/bin/bash]: /bin/tcsh

上面程式碼中,[ ]內是目前使用的Shell。一般使用者只能修改自己的Shell,超級使用者可以修改全體使用者的Shell。若要查詢系統提供哪些Shell,可以使用chsh -l 指令,請參閱圖1所示。

圖1 系統可以使用的Shell型別

從圖1可以看到,筆者係統中可以使用的Shell有bash(缺省)、csh、sh、tcsh四種。

exit

1.作用

exit指令的作用是退出系統,它的使用權限是所有使用者。

2.格式

exit

3.參數

exit指令沒有參數,執行後退出系統進入登入介面。

last

1.作用

last指令的作用是顯示近期使用者或終端的登入情況,它的使用權限是所有使用者。透過last指令查看該程式的log,管理者可以獲知誰曾經或企圖連接系統。

2.格式

1ast[—n][-f file][-t tty] [—h 節點][-I —IP][—1][-y][ 1D]

3.主要參數

-n:指定輸出記錄的條數。

-f file:指定以檔案file作為查詢的log檔案。

-t tty:只顯示指定的虛擬控制台上登入情況。

-h 節點:只顯示指定的節點上的登入。

-i IP:只顯示指定的IP上登入的情況。

-1:用IP來顯示遠端位址。

-y:顯示記錄的年、月、日。

-ID:知道查詢的使用者名稱。

-x:顯示系統關閉、使用者登入和登出的歷史。

動手練習

上面介紹了Linux安裝和登入指令,下面介紹幾個實例,動手練習剛才講過的指令。

1.一次執行多個命令

在一個命令列中可以執行多個命令,用分號將各個命令隔開即可,例如:

# last -x;halt

上面程式碼表示在顯示系統關閉、使用者登入和登出的歷史後關閉電腦。

2.利用mount掛裝檔案系統存取Windows系統

許多Linux發行版本現在都可以自動載入Vfat分割區來存取Windows系統,而Red Hat各個版本都沒有自動載入Vfat分割區,因此還需要進行手工操作。

mount

可以將Windows分割區當作Linux的一個「檔案」掛接到Linux的一個空資料夾下,從而將Windows的分割區和/mnt這個目錄連結起來。因

此,只要存取這個資料夾就相當於存取該分割區了。首先要在/mnt下建立winc資料夾,在命令提示字元輸入下面指令:

#mount -t vfat /dev/hda1 /mnt/winc

表示將Windows的C分割區掛到Liunx的/mnt/winc目錄下。這時,在/mnt/winc目錄下就可以看到Windows中C碟的內容了。使

用類似的方法可以存取Windows系統的D、E磁碟。在Linux系統顯示Windows的分割區一般順序這樣的:hda1為C碟、hda5為D碟、

hda6為E碟…以此類推。上述方法可以查看Windows系統有一個很大的問題,就是Windows中的所有中文檔案名稱或資料夾名稱全部顯示為問號

“?”,而英文卻可以正常顯示。我們可以加入一些參數讓它顯示中文。也以上面的操作為例,此時輸入指令:

#mount -t vfat -o iocharset=cp936 /dev/hda1 /mnt/winc

現在它就可以正常顯示中文了。

3.使用mount加掛閃碟上的檔案系統

在Linux下使用隨身碟非常簡單。 Linux對USB設備有很好的支持,當插入閃盤後,閃盤被識別為一個SCSI盤,通常輸入以下命令:

# mount /dev/sda1 /usb

#就能夠加掛閃盤上的檔案系統。

小知識

Linux指令與Shell

謂Shell,就是指令解釋程序,它提供了程式設計接口,可以使用程式來程式設計.學習Shell對於Linux初學者理解Linux系統是非常重要的。

Linux系統的Shell作為作業系統的外殼,為使用者提供了使用作業系統的介面。 Shell是指令語言、指令解釋程式及程式設計語言的統稱,是使用者和

Linux核心之間的介面程式。如果把Linux核心想像成球體的中心,Shell就是圍繞著內核的外層。當從Shell或其它程式向Linux傳遞命

令時,核心會做出對應的反應。 Shell在Linux系統的作用和MS DOS下的COMMAND.COM和Windows 95/98 的

explorer.exe相似。 Shell雖然不是系統核心的一部分,只是系統核心的一個外延,但它能夠呼叫系統核心的大部分功能。因此,可以說

Shell是Unux/Linux最重要的實用程式。

Linux中的Shell有多種類型,其中最常用的是Bourne

Shell(sh)、C Shell(csh)和Korn Shell(ksh)。大多數Linux發行版本缺省的Shell是Bourne

Again Shell,它是Bourne Shell的擴展,簡稱bash,與Bourne Shell完全向後相容,並且在Bourne

Shell的基礎上增加了很多特性。 bash放在/bin/bash中,可以提供如指令補全、指令編輯和指令歷史表等功能。它也包含了許多C

Shell和Korn

Shell中的優點,有一個靈活和強大的程式設計接口,同時又有很友善的使用者介面。 Linux系統中200多個指令中有40個是bash的內部指令,主要包括

exit、less、lp、kill、 cd、pwd、fc、fg等。

Linux必學的60個指令(2)-檔案處理指令

Linux

系統資訊存放在檔案裡,檔案與普通的公務文件類似。每個文件都有自己的名字、內容、存放地址及其它一些管理訊息,如文件的使用者、文件的大小等。文件可以是

一封信、一個通訊錄,或是程式的來源語句、程式的數據,甚至可以包括可執行的程式和其它非正文內容。

Linux檔案系統具有良好的結構,系統提供了許多檔案處理程序。這裡主要介紹常用的文件處理指令。

file

1.作用 件內容判斷檔案類型,使用權限是所有使用者。

2.格式

file透過探測文

file [options] 檔案名稱

3.[options]主要參數

-v:在標準輸出後顯示版本訊息,並且退出。

-z:偵測壓縮過的檔案類型。

-L:允許符合連線。

-f name:從檔案namefile讀取要分析的檔案名稱清單。

4.簡單說明

使用file指令可以知道某個文件究竟是二進位(ELF格式)的可執行檔, 還是Shell Script文件,或是其它的什麼格式。 file能辨識的檔案類型有目錄、Shell腳本、英文文字、二進位執行檔、C語言原始檔、文字檔、DOS的執行檔。

5.應用實例

如果我們看到一個沒有後綴的檔案grap,可以使用下面命令:

$ file grap

grap: English text

此時系統顯示這是一個英文文字檔。需要說明的是,file指令不能偵測包括圖形、音訊、視訊等多媒體檔案類型。

mkdir

1.作用

mkdir指令的作用是建立名稱為dirname的子目錄,與MS DOS下的md指令類似,它的使用權限是所有用戶。

2.格式

mkdir [options] 目錄名稱

3.[options]主要參數

-m, -mode=模式:設定權限,與chmod類似。

-p, --parents:需要時建立上層目錄;如果目錄早已存在,則不當作錯誤。

-v, --verbose:每次建立新目錄都顯示資訊。

--version:顯示版本訊息後離開。

4.應用實例

在進行目錄建立時可以設定目錄的權限,此時使用的參數是「-m」。假設要建立的目錄名稱是“tsk”,讓所有使用者都有rwx(即讀、寫、執行的權限),那麼可以使用以下指令:

$ mkdir -m 777 tsk

grep

1.作用

grep指令可以指定檔案中搜尋特定的內容,並將含有這些內容的行標準輸出。 grep全名為Global Regular Expression Print,表示全域正規表示式版本,它的使用權限是所有使用者。

2.格式

grep [options]

3.主要參數

[options]主要參數:

-c:只輸出匹配行的計數。

-I:不區分大小寫(只適用於單字元)。

-h:查詢多檔案時不顯示檔案名稱。

-l:查詢多檔案時只輸出包含符合字元的檔案名稱。

-n:顯示符合行及行號。

-s:不顯示不存在或無符合文字的錯誤訊息。

-v:顯示不包含符合文字的所有行。

pattern正規表示式主要參數:

\:忽略正規表示式中特殊字元的原始意義。

^:符合正規表示式的開始行。

$: 符合正規表示式的結束行。

\:到符合正規表示式的行結束。

[ ]:單一字符,如[A]即A符合要求 。

[ - ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求 。

。 :所有的單一字元。

* :有字符,長度可以為0。

則表達式是Linux/Unix系統中非常重要的概念。正規表示式(也稱為“regex”或“regexp”)是一個可以描述一類字串的模式

(Pattern)。如果一個字串可以用某個正規表示式來描述,我們就說這個字元和該正規表示式匹配(Match)。這和DOS中使用者可以使用通配符

「*」代表任意字元類似。在Linux系統上,正規表示式通常被用來尋找文字的模式,以及對文字執行「搜尋-取代」操作和其它功能。

4.應用實例

詢DNS服務是日常工作之一,這意味著要維護覆蓋不同網路的大量IP位址。有時IP位址會超過2000個。如果要查看nnn.nnn網路位址,但是卻忘了

第二部分中的其餘部分,只知到有兩個句點,例如nnn nn..。要抽取其中所有nnn.nnn IP位址,使用[0-9 ]\{3

\}\.[0-0\{3\}\。意義是任意數字出現3次,後面跟著句點,接著是任意數字出現3次,後面跟著句點。

$grep '[0-9 ]\{3 \}\.[0-0\{3\}\' ipfile

#補充說明,grep家族也包含fgrep和egrep。 fgrep是fix grep,允許查找字串而不是一個模式;egrep是擴展grep,支援基本及擴展的正則表達式,但不支援\q模式範圍的應用及與之相對應的一些更加規範的模式。

dd

1.作用

dd指令用來複製文件,並根據參數將資料轉換和格式化。

2.格式

dd [options]

3.[opitions]主要參數

bs=位元組:強迫 ibs=及obs=。

cbs=位元組:每次轉換指定的。

conv=關鍵字:根據以逗號分隔的關鍵字表示的方式來轉換檔案。

count=區塊數目:只複製指定的輸入資料。

ibs=位元組:每次讀取指定的。

if=檔案:讀取內容,而非標準輸入的資料。

obs=位元組:每次寫入指定的。

of=檔案:將資料寫入,而不在標準輸出顯示。

seek=區塊數目:先略過以obs為單位的指定的輸出資料。

skip=區塊數目:先略過以ibs為單位的指定的輸入資料。

4.應用實例

dd指令常用來製作Linux啟動磁碟。先找一個可開機內核,讓它的根設備指向正確的根分割區,然後用dd指令將其寫入軟碟:

$ rdev vmlinuz /dev/hda

$dd if =vmlinuz of=/dev/fd0

上面程式碼說明,使用rdev指令將可引導核心vmlinuz中的根裝置指向/dev/hda,請把「hda」換成自己的根分割區,接下來用dd指令將該核心寫入軟碟。

find

1.作用

find指令的作用是在目錄中搜尋文件,它的使用權限是所有使用者。

2.格式

find [path][options][expression]

path指定目錄路徑,系統從這裡開始沿著目錄樹向下尋找檔案。它是一個路徑列表,相互用空格分離,如果不寫path,那麼預設為目前目錄。

3.主要參數

[options]參數:

-depth:使用深度層級的尋找過程方式,在某一層指定目錄中優先尋找檔案內容。

-maxdepth levels:表示至多查找到開始目錄的第level層子目錄。 level是一個非負數,如果level是0的話表示只在當前目錄中查找。

-mindepth levels:表示至少查找到開始目錄的第level層子目錄。

-mount:不在其它檔案系統(如Msdos、Vfat等)的目錄和檔案中尋找。

-version:列印版本。

[expression]是匹配表達式,是find指令接受的表達式,find指令的所有操作都是針對表達式的。它的參數非常多,這裡只介紹一些常用的參數。

—name:支援統配符*和?。

-atime n:搜尋過去n天讀取過的檔案。

-ctime n:搜尋過去n天修改過的檔案。

-group grpoupname:搜尋所有群組為grpoupname的檔案。

-user 使用者名稱:搜尋所有檔案屬主為使用者名稱(ID或名稱)的檔案。

-size n:搜尋檔案大小是n個block的檔案。

-print:輸出搜尋結果,並且列印。

4.應用技巧

find指令尋找檔案的幾種方法:

(1)根據檔案名稱尋找

例如,我們想要尋找一個檔名是lilo.conf的文件,可以使用以下指令:

find / -name lilo.conf

find指令後的「/」表示搜尋整個硬碟。

(2)快速找到檔案

根據檔案名稱尋找檔案會遇到一個實際問題,就是要花費相當長的一段時間,特別是大型Linux檔案系統和大容量硬碟檔案放在很深的子目錄中時。如果我們知道了

這個檔案存放在某個目錄中,那麼只要在這個目錄中往下尋找就能節省很多時間。例如smb.conf文件,從它的文件後綴“.conf”可以判斷這是一個配

置文件,那麼它應該在/etc目錄內,此時可以使用下面命令:

find /etc -name smb.conf

這樣,使用「快速尋找檔案」方式可以縮短時間。

(3)根據部分文件名查找方法

有時我們知道只某個文件包含有abvd這4個字,那麼要查找系統中所有包含有這4個字符的文件可以輸入下面指令:

find / -name '*abvd*'

#輸入這個指令以後,Linux系統會在/目錄中找所有的包含有abvd這4個字元的文件(其中*是通配符),例如abvdrmyz等符合條件的文件都能顯示出來。

(4) 使用混合查找方式來尋找檔案

find指令可以使用混合查找的方法,例如,我們想要在/etc目錄中尋找大於500000字節,並且在24小時內修改的某個文件,則可以使用-and (與)把兩個查找參數連結起來組合成一個混合的查找方式。

find /etc -size 500000c -and -mtime 1

mv

1.作用

mv指令用來為檔案或目錄改名,或者將檔案由一個目錄移入另一個目錄中,它的使用權限是所有使用者。該指令如同DOS指令中的ren和move的組合。

2.格式

mv[options] 原始檔或目錄目標檔或目錄

3.[options]主要參數

-i:交互方式操作。如果mv操作將導致對已存在的目標檔案的覆蓋,此時系統詢問是否重寫,要求使用者回答“y”或“n”,這樣可以避免誤覆蓋檔案。

-f:禁止互動操作。 mv操作要覆寫某個已有的目標檔案時不給任何指示,指定此參數後i參數將不再運作。

4.應用實例

(1)將/usr/cbu中的所有檔案移到目前目錄(以「.」表示):

$ mv /usr/cbu/ * .

(2)將檔案cjh.txt重新命名為wjz.txt:

$ mv cjh.txt wjz.txt 

#ls

1.作用

ls指令用來顯示目錄內容,類似DOS下的dir指令,它的使用權限是所有使用者。

2.格式

ls [options][filename]

#3.options主要參數

-a, --all:不隱藏任何以“.” 字元開始的項目。

-A, --almost-all:列出除了「 . 」及 「.. 」以外的任何項目。

——author:印出每個檔案著作者。

-b, --escape:以八進位溢位序列表示不可列印的字元。

--block-size=大小:區塊以指定的位元組為單位。

-B, --ignore-backups:不列出任何以 ~ 字元結束的項目。

-f:不進行排序,-aU參數生效,-lst參數失效。

-F, -classify:加上檔案類型的指示符號 (*/=@| 其中一個)。

-g:like -l, but do not list owner。

-G, --no-group:inhibit display of group information。

-i, --inode:列出每個檔案的inode號。

-I, --ignore=樣式:不印出任何符合Shell萬用字元的項目。

-k:即--block-size=1K。

-l:使用較長格式列出資訊。

-L, -dereference:當顯示符號連結的檔案資訊時,顯示符號連結所指示的對象,而非符號連結本身的資訊。

-m:所有項目以逗號分隔,並填滿整行行寬。

-n, --numeric-uid-gid:類似-l,但列出UID及GID號。

-N, --literal:列出未經處理的項目名稱,例如不特別處理控製字元。

-p, -file-type:加上檔案類型的指示符號 (/=@| 其中一個)。

-Q, --quote-name:將項目名稱括上雙引號。

-r, --reverse:依相反順序排列。

-R, --recursive:同時列出所有子目錄層。

-s, --size:以區塊大小為序。

4.應用範例

ls

#指令是Linux系統使用頻率最多的指令,它的參數也是Linux指令中最多的。使用ls指令時會有幾種不同的顏色,其中藍色表示是目錄,綠色表示是可執

行文件,紅色表示是壓縮文件,淺藍色表示是連結文件,加粗的黑色表示符號鏈接,灰色表示是其它格式文件。 ls最常使用的是ls- l,見圖1所示。

圖1 使用ls-l指令

文字

零件類型開頭是由10個字元構成的字串。其中第一個字元表示檔案類型,它可以是下述類型之一:-(普通檔案)、d(目錄)、l(符號連結)、b(區塊裝置文

件)、c (字元設備檔案)。後面的9個字元表示檔案的存取權限,分為3組,每組3位。第一組表示檔案屬主的權限,第二組表示同組使用者的權限,第三組表示其

他使用者的權限。每一組的三個字元分別表示對檔案的讀取(r)、寫(w)和執行權限(x)。對於目錄,表示進入權限。 s表示當檔案被執行時,把該檔案的UID

或GID賦予執行程序的UID(使用者ID)或GID(群組

ID)。 t表示設定標誌位(留在內存,不被換出)。如果該檔案是目錄,那麼在該目錄中的檔案只能被超級使用者、目錄擁有者或檔案屬主刪除。如果它是可執行文字

件,那麼在該檔案執行後,指向其正文段的指標仍留在記憶體中。這樣再次執行它時,系統就能更快地裝入該檔案。接著顯示的是檔案大小、產生時間、檔案或指令名

稱。

diff

1.作用

diff指令用於兩個檔案之間的比較,並指出兩者的不同,它的使用權限是所有使用者。

2.格式

diff [options] 原始檔目標檔

3.[options]主要參數

-a:將所有檔案當作文本文件來處理。

-b:忽略空格造成的不同。

-B:忽略空行造成的不同。

-c:使用綱要輸出格式。

-H:利用試探法加速大檔案的搜尋。

-I:忽略大小寫的變化。

-n --rcs:輸出RCS格式。

cmp

1.作用

cmp(「compare」的縮寫)指令用來簡單指出兩個檔案是否有差異,它的使用權限是所有使用者。

2.格式

cmp[options] 檔案名稱

3.[options]主要參數

-l: 將位元組以十進位的方式輸出,並方便將兩個文件中不同的以八進制的方式輸出。

cat

1.作用

cat(「concatenate」的縮寫)命令用於連接並顯示指定的一個和多個文件的有關信息,它的使用權限是所有使用者。

2.格式

cat [options] 檔案1 檔案2…

#3.[options]主要參數

-n:由第一行開始對所有輸出的行數編號。

-b:和-n相似,只不過對於空白行不編號。

-s:當遇到有連續兩行以上的空白行時,就代換為一行的空白行。

4.應用範例

(1)cat指令一個最簡單的用處是顯示文字檔的內容。例如,我們想在命令列看一下README檔案的內容,可以使用指令:

$ cat README 

(2)

有時需要將幾個檔案處理成一個文件,並將這種處理的結果儲存到一個單獨的輸出文件。 cat指令在其輸入上接受一個或多個文件,並將它們作為一個單獨的文件

列印到它的輸出。例如,把README和INSTALL的檔案內容加上行號(空白行不加)之後,將內容附加到一個新文字檔案File1 中:

$ cat README INSTALL File1

#(3 )cat還有一個重要的功能就是可以對行進行編號,見圖2所示。這種功能對於程式文件的編制,以及法律和科學文件的編制很方便,印在左邊的行號使得參考文件的某一部分變得容易,這些在程式設計、科學研究、業務報告甚至是立法工作中都是非常重要的。

圖2 使用cat指令/etc/named.conf檔進行編號

對行進行編號功能有-b(只能對非空白行進行編號)和-n(可以對所有行進行編號)兩個參數:

$ cat -b /etc/named.conf

#ln

1.作用

ln指令用來在文件之間建立鏈接,它的使用權限是所有使用者。

2.格式

ln [options] 原始檔[連結名稱]

#3.參數

-f:在鏈結時先將原始文件刪除。

-d:允許系統管理者硬鏈結自己的目錄。

-s:進行軟鏈結(Symbolic 連結)。

-b:將在鏈結時會被覆寫或刪除的檔案進行備份。

連結有兩種,一種稱為硬連結(Hard Link),另一種稱為符號連結(Symbolic 連結)。預設情況下,ln指令產生硬連結。

連接指透過索引節點來進行的連接。在Linux的檔案系統中,儲存在磁碟分割區中的檔案不管是什麼型別都會給它指派一個編號,稱為索引節點號(Inode

Index)。在Linux中,多個檔案名稱指向同一索引節點是存在的。一般這種連接就是硬連接。硬連接的作用是允許一個文件擁有多個有效路徑名,這樣用戶

就可以建立硬連接到重要文件,以防止「誤刪」的功能。原因如上所述,因為對應該目錄的索引節點有一個以上的連接。只刪除一個連接並不影響索引節點本身和

其它的連接,只有當最後一個連接被刪除後,檔案的資料塊及目錄的連接才會被釋放。也就是說,文件才會真正刪除。

與硬連接相對應,Lnux系統中還有另一種連接,稱為符號連接(Symbilc Link),也稱為軟連接。軟連結檔案有點類似Windows的捷徑。它實際上是特殊文件的一種。在符號連接中,文件實際上是一個文字文件,其中包含的有另一個文件的位置資訊。

動手練習

上面我們介紹了Linux檔案處理指令,下面介紹幾個實例,大家可以動手練習一下剛才講過的指令。

1.利用符號連結快速存取關鍵目錄

符號

號連結是一個非常實用的功能。假設有一些目錄或檔案需要頻繁使用,但由於Linux的檔案和目錄結構等原因,這個檔案或目錄在很深的子目錄中。例如,

Apache

Web伺服器文件位於系統的/usr/local/httpd/htdocs中,不想每次都要從主目錄進入這樣一個長的路徑之中(實際上,這個路徑也

非常不容易記憶)。

為了解決這個問題,可以在主目錄中建立一個符號鏈接,這樣在需要進入該目錄時,只需進入這個連結即可。

為了能方便地進入Web伺服器(/usr/local/httpd/htdocs)文件所在的目錄,在主目錄下可以使用以下指令:

$ ln -s /usr/ local/httpd/htdocs gg

這樣每次進入gg目錄就可訪問Web伺服器的文檔,以後如果不再訪問Web伺服器的文檔時,刪除gg即可,而真正的Web伺服器的文檔並沒有刪除。

2.使用dd指令將init.rd格式的root.ram內容匯入記憶體

dd if=/dev/fd0 of=floppy.fd

dd if= root.ram of=/dev/ram0

#3.grep指令系統呼叫

grep是Linux/Unix中使用最廣泛的指令之一,許多Linux系統內部都可以呼叫它。

(1)如果要查詢目錄清單中的目錄,方法如下:

$ ls -l | grep '∧d'

(2)如果在目錄中查詢不包含目錄的所有文件,方法如下:

$ ls -l | grep '∧[∧d]'

(3)用find指令呼叫grep,如所有C源程式碼中的“Chinput”,方法如下:

$find /ZhXwin -name *.c -exec grep -q -s Chinput {} \;-print

Linux必學的60個指令(3)-系統管理指令

Linux必學的系統管理指令

對於Linux系統來說,無論是中央處理器、記憶體、磁碟機、鍵盤、滑鼠,或是使用者等都是文件,Linux系統管理的命令是它正常運作的核心。熟悉了Linux常用的檔案處理指令以後,這一講介紹對系統和使用者進行管理的命令。

df

1.作用

df指令用來檢查檔案系統的磁碟空間佔用情況,使用權限是所有使用者。

2.格式

df [options]

3.主要參數

-s:只對每個Names參數給予佔用的資料區塊總數。

-a:遞歸地顯示指定目錄中各檔案及子目錄中各檔案所佔用的資料區塊數。若既不指定-s,也不指定-a,則只顯示Names中的每一個目錄及其中的各子目錄所佔的磁碟區塊數。

-k:以1024位元組為單位列出磁碟空間使用量。

-x:跳過在不同檔案系統上的目錄不予統計。

-l:計算所有的檔案大小,對硬連結檔案則計算多次。

-i:顯示inode資訊而非區塊使用量。

-h:以容易理解的格式列印檔案系統大小,例如136KB、254MB、21GB。

-P:使用POSIX輸出格式。

-T:顯示檔案系統類型。

4.說明

df指令被廣泛地用來產生檔案系統的使用統計數據,它能顯示系統中所有的檔案系統的信息,包括總容量、可用的空閒空間、目前的安裝點等。

級權限使用者使用df指令時會發現這樣的情況:某個分割區的容量超過了100%。這是因為Linux系統為超級用戶保留了10%的空間,由其單獨支配。也就是

說,對於超級用戶而言,他所見到的硬碟容量將是110%。這樣的安排對於系統管理而言是有好處的,當硬碟被使用的容量接近100%時系統管理員還可以正常

工作。

5.應用實例

Linux支援的檔案系統非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、MSDOS等。使用df -T指令查看磁碟空間時還可以得到檔案系統的資訊:

#df -T

#檔案系統類型容量已用可用% 掛載點

/dev/hda7 reiserfs 5.2G 1.6G 3.7G 30% /

/dev/hda1 vfat 2.4G 1.6G 827M 66% /windows/C

/dev/hda5 vfat 3.0G 1.7G 1.3G 57% /windows/D

/dev/hda9 vfat 3.0G 2.4G 566M 82% /windows/E

#/dev/hda10 NTFS 3.2G 573M 2. /F

/dev/hda11 vfat 1.6G 1.5G 23M 99% /windows/G

從上面除了可以看到磁碟空間的容量、使用情況外,分割區的檔案系統類型、掛載點等資訊也一覽無遺。

top

1.作用

top指令用來顯示執行中的程式進程,使用權限是所有使用者。

2.格式

top [-] [d delay] [q] [c] [S] [s] [n]

3.主要參數

d:指定更新的間隔,以​​秒計算。

q:沒有任何延遲的更新。如果用戶有超級用戶,則top指令將會以最高的優先權執行。

c:顯示進程完整的路徑與名稱。

S:累積模式,會將己完成或消失的子行程的CPU時間累積起來。

s:安全模式。

i:不顯示任何閒置(Idle)或無用(Zombie)的行程。

n:顯示更新的次數,完成後會退出top。

4.說明

top指令是Linux系統管理的一個主要指令,透過它可以獲得許多資訊。這裡我們結合圖1來說明它所給的資訊。

圖1 top指令的顯示

圖1中,第一行表示的項目依序為目前時間、系統啟動時間、目前系統登入使用者數目、平均負載。第二行顯示的是所有啟動的進程、目前運行的、掛起

(Sleeping)的和無用(Zombie)的進程。第三行顯示的是目前CPU的使用情況,包括系統佔用的比例、使用者使用比例、閒置(Idle)比例。

第四行顯示實體記憶體的使用情況,包括總的可以使用的記憶體、已使用記憶體、空閒記憶體、緩衝區佔用的記憶體。第五行顯示交換分區使用情況,包括總的交換分區、使用

的、空閒的和用於高速緩存的大小。第六行顯示的項目最多,下面列出了詳細解釋。

PID(Process ID):進程標示號碼。

USER:進程擁有者的使用者名稱。

PR:進程的優先順序。

NI:進程的優先等級數值。

VIRT:進程佔用的虛擬記憶體值。

RES:進程佔用的實體記憶體值。

SHR:進程使用的共享記憶體值。

S:進程的狀態,其中S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值是負數。

%CPU:此行程佔用的CPU使用率。

%MEM:此進程佔用的實體記憶體和總記憶體的百分比。

TIME+:此行程啟動後所佔用的總的CPU時間。

Command:進程啟動的啟動命令名稱,如果這一行顯示不下,進程會有一個完整的命令列。

top指令使用過程中,也可以使用一些互動的指令來完成其它參數的功能。這些命令是透過快捷鍵啟動的。

:立刻刷新。

P:依CPU使用大小進行排序。

T:依時間、累計時間排序。

q:退出top指令。

m:切換顯示記憶體資訊。

t:切換顯示進程和CPU狀態資訊。

c:切換顯示命令名稱和完整命令列。

M:根據使用記憶體大小進行排序。

W:將目前設定寫入~/.toprc檔案中。這是寫top設定檔的推薦方法。

可以看到,top指令是一個功能十分強大的監控系統的工具,對於系統管理員而言尤其重要。但是,它的缺點是會消耗很多系統資源。

5.應用實例

使用top指令可以監視指定用戶,缺省情況是監視所有用戶的進程。若想查看指定使用者的狀況,在終端機中按「U」鍵,然後輸入使用者名,系統就會切換為指定使用者的進程運作介面,請見圖2所示。

圖2 使用top指令監視指定使用者

free

1.作用

free指令用來顯示記憶體的使用情況,使用權限是所有用戶。

2.格式

free [-b|-k|-m] [-o] [-s delay] [-t] [-V]

3 。主要參數

-b -k -m:分別以位元組(KB、MB)為單位顯示記憶體使用情況。

-s delay:顯示每隔多少秒數來顯示一次記憶體使用量。

-t:顯示記憶體總和列。

-o:不顯示緩衝區調節列。

4.應用實例

free指令是用來查看記憶體使用情況的主要指令。和top指令相比,它的優點是使用簡單,並且只佔用很少的系統資源。通過-S參數可以使用free指令不間斷地監視有多少內存在使用,這樣可以把它當作一個方便即時監控器。

#free -b -s5

使用這個指令後終端會連續不斷地報告記憶體使用情況(以位元組為單位),每5秒更新一次。

quota

1.作用

quota指令用來顯示磁碟使用情況和限制情況,使用權限超級使用者。

2.格式

quota [-g][-u][-v][-p] 使用者名稱群組名稱

3.參數

-g:顯示使用者所在群組的磁碟使用限制。

-u:顯示使用者的磁碟使用限制。

-v:顯示沒有分配空間的檔案系統的分配情況。

-p:顯示簡化訊息。

4.應用實例

在企業應用程式中磁碟配額非常重要,一般使用者要學會看懂自己的磁碟使用情況。要查詢自己的磁碟配額可以使用下方指令(下例中使用者帳號是caojh):

#quota caojh

Disk quotas for user caojh(uid 502):

Filesystem blocks quota limit grace files quota limit grace

/dev/hda3 58 200000 400000 41 500 1000

以上顯示ID號碼為502的caojh~5000個,硬碟空間限制設定為200MB~400MB。一旦磁碟配額要用完時,就需要刪除一些垃圾檔案或向系統管理員要求追加配額。

at

1.作用

at指令用來在指定時刻執行指定的命令序列。

2.格式

at [-V] [-q x] [-f file] [-m] time

3.主要參數

-V:顯示標準錯誤輸出。

-q:許多佇列輸出。

-f:從檔案讀取作業。

-m:執行完作業後發送電子郵件到使用者。

time:設定作業執行的時間。 time格式有嚴格的要求,由小時、分鐘、日期和時間的偏移組成,其中日期的格式為MM.DD.YY,MM是分鐘,DD是日期,YY是指年份。偏移量的格式為時間+偏移量,單位是minutes、hours和days。

4.應用實例

#at -f data 15:30 2 days

上面指令表示讓系統在兩天後的17:30執行檔data中指明的作業。

lp

1.作用

lp是列印檔案的指令,使用權限是所有使用者。

2.格式

lp [-c][-d][-m][-number][-title][-p]

3.主要參數

-c:先拷貝檔案再列印。

-d:列印佇列檔案。

-m:列印結束後發送電子郵件到使用者。

-number:列印份數。

-title:列印標題。

-p:設定列印的優先級別,最高為100。

4.應用實例

(1)使用lp指令列印多個檔案

#lp 2 3 4

request id is 11 (3 file (s))

其中2、3、4分別是檔案名稱;「request id is 11 (3 file(s)) 」表示這是第11個列印指令,依序列印這三個檔案。

(2)設定列印優先等級

#lp lp -d LaserJet -p 90 /etc/aliases

透過新增“-p 90”,規定了列印作業的優先權為90。它將在優先權低於90的列印作業之前列印,包括沒有設定優先權的作業,預設優先權是50

useradd

1.作用

useradd指令用來建立使用者帳號和建立使用者的起始目錄,使用權限是超級使用者。

2.格式

useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name

3.主要參數

-c:加上備註文字,備註文字保存在passwd的備註欄中。 

-d:指定使用者登入時的啟動目錄。

-D:變更預設值。

-e:指定帳號的有效期限,缺省表示永久有效。

-f:指定密碼過期後多少天即關閉該帳號。

-g:指定使用者所屬的群組。

-G:指定使用者所屬的附加群組。

-m:自動建立使用者的登入目錄。

-M:不要自動建立使用者的登入目錄。

-n:取消建立以使用者名稱為名的群組。

-r:建立系統帳號。

-s:指定使用者登入後所使用的shell。

-u:指定使用者ID號碼。

4.說明

useradd可用來建立使用者帳號,它和adduser指令是相同的。帳號建好之後,再用passwd設定帳號的密碼。使用useradd指令所建立的帳號,實際上是保存在/etc/passwd文字檔中。

5.應用實例

建立一個新使用者帳戶,並設定ID:

#useradd caojh -u 544

需要說明的是,設定ID值時盡量大於500,以免衝突。因為Linux安裝後會建立一些特殊用戶,一般0到499之間的值留給bin、mail這樣的系統帳號。

groupadd

1.作用

groupadd指令用於將新群組加入系統。

2.格式

groupadd [-g gid] [-o]] [-r] [-f] groupname

3.主要參數

-g gid:指定群組ID號碼。

-o:允許群組ID號,不必惟一。

-r:加入群組ID號,低於499系統帳號。

-f:加入已經有的群組時,發展程序退出。

4.應用實例

建立一個新群組,並設定群組ID加入系統:

#groupadd -g 344 cjh

此時在/ etc/passwd檔案中產生一個群組ID(GID)是344的專案。

kill

1.作用

kill指令用來中止一個行程。

2.格式

kill [ -s signal | -p ] [ -a ] pid ...

kill -l [ signal ]

# 3.參數

-s:指定發送的訊號。

-p:類比發送訊號。

-l:指定訊號的名稱清單。

pid:要中止進程的ID號碼。

Signal:表示訊號。

4.說明

進程是Linux系統中一個非常重要的概念。 Linux是一個多任務的作業系統,系統上經常同時運行多個進程。我們不關心這些進程究竟是如何分配的,或者是核心如何管理分配時間片的,所關心的是如何去控制這些進程,讓它們能夠很好地為用戶服務。

Linux

作業系統包含三種不同類型的進程,每種進程都有自己的特點和屬性。交互進程是由一個Shell啟動的進程。交互進程既可以在前台運行,也可以在背景運行。

批次處理程序和終端沒有聯繫,是一個行程序列。監控進程(也稱為系統守護程式)時Linux系統啟動時所啟動的進程,並在背景執行。例如,httpd是著名的

Apache伺服器的監控進程。

kill指令的工作原理是,向Linux系統的核心發送一個系統操作訊號

和某個程式的行程識別號,然後系統核心就可以對行程標識號指定的行程進行操作。例如在top指令中,我們看到系統運行許多進程,有時就需要使用kill中

來提升系統資源。在講解安裝和登陸指令時,曾提到系統多個虛擬控制台的作用是當一個程式出錯造成系統死鎖時,可以切換到其它虛擬控制台工作關閉

這個程式。此時使用的命令就是kill,因為kill是大多數Shell內部命令可以直接呼叫的。

5.應用實例

(1)強行中止(常用殺)一個行程識別號碼為324的程序:

#kill -9 324

(2)解除Linux系統的死鎖

在Linux

中有時會發生這樣一種情況:一個程式崩潰,並且處於死鎖的狀態。此時一般不用重新啟動計算機,只需要中止(或者說是關閉)這個有問題的程式即可。當

kill處於X-Window介面時,主要的程式(除了崩潰的程式之外)一般都已經正常啟動了。此時打開一個終端,在那裡中止有問題的程式。例如,如果

Mozilla瀏覽器程式出現了鎖死的情況,可以使用kill指令來中止所有包含Mozolla瀏覽器的程式。先用top指令查處該程式的PID,然

後使用kill指令停止這個程式:

#kill -SIGKILL XXX

其中,XXX是包含有Mozolla瀏覽器的程式的進程標識號。

(3)使用指令回收記憶體

#

我們知道記憶體對於系統是非常重要的,回收記憶體可以提高系統資源。 kill指令可以及時中止一些「越軌」的程式或很長時間沒有相應的程式。例如,使用top指令發現一個無用 (Zombie) 的進程,此時可以使用下面指令:

#kill -9 XXX

其中,XXX是無用的程序識別號碼。

接著使用下方指令:

#free

此時會發現可用記憶體容量增加了。

(4)killall命令

Linux下還提供了一個killall命令,可以直接使用進程的名字而不是進程標識號,例如:

# killall -HUP inetd

crontab

1.作用

使用crontab命令可以修改crontab設定文件,然後該配置由cron公用程式在適當的時間執行,該命令使用權限是所有用戶。

2.格式

crontab [ -u user ] 檔案

crontab [ -u user ] { -l | -r | -e }

# 3.主要參數

-e:執行文字編輯器來設定時程表,內定的文字編輯器是vi。

-r:刪除目前的時程表。

-l:列出目前的時程表。

crontab

檔案的格式為「M H D m d

cmd」。其中,M代表分鐘(0~59),H代表小時(0~23),D代表天(1~31),m代表月(1~12),d代表一週內的天(0~6, 0為星期

天)。 cmd表示要執行的程序,它被送入sh執行,這個Shell只有USER、HOME、SHELL三個環境變數。

4.說明

和at指令相比,crontab指令適合完成固定週期的任務。

5.應用實例

設定一個定時、定期的系統提示:

#[cao @www cao]#crontab -e

此時系統會開啟一個vi編輯器。

如果輸入以下內容:35 17 * * 5 wall "Tomorrow is Saturday I will go CS",然後儲存退出。這時在/var/spool/cron/目錄下會生產一個cao的文件,內容如下:

# DO NOT EDIT THIS FILE - edit the master and reinstall.

# (/ tmp/crontab.2707 installed on Thu Jan 1 22:01:51 2004)

# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)

35 17 * * 5 wall "Tomorrow is Saturday I will play CS "

這樣每個星期五17:35系統就會彈出一個終端,提醒星期六可以打打CS了!顯示結果見圖3所示。

圖3 一個定時、定期的系統提示

動手練習

#1.聯合使用kill和top指令觀察系統效能的變化

首先啟動一個終端機運行top指令,然後再啟動一個終端使用kill指令,見圖4所示。

圖4 觀察kill指令對top終端機的影響

這時利用上面介紹的kill指令來中止一些程式:

#kill SIGKILL XXX

然後再看top指令終端的變化,包括記憶體容量、CPU使用率、系統負載等。注意,有些進程是不能中止的,不過學習Linux指令時可以試試,看看系統有什麼反應。

2.使用at和halt指令定時關機

先設定關機時間是17:35,輸入下方程式碼:

#at 17:35

warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh

at>halt `-i -p

at>

##job 6 at 2004-01-01 17:35

時實際上已經進入Linux系統的Shell,並且寫一個最簡單程式:halt -i

-p。上面Shell中的文字結束符號表示按「Ctrl+D」組合鍵關閉指令,提交任務退出Shell。 「Job 6 at 2004-01-01

17:35」表示系統接受第6個at指令,在「2004-01-01 17:35」時執行指令:先把所有網路相關的裝置停止,關閉系統後關閉電源。

3.用crontab指令實作每天定時的病毒掃描

前面已經介紹了一個簡單的crontab指令操作,這裡看一些更重要的操作。

(1)建立一個文件,文件名稱自己設定,假設為caoproject:

##crontab -e

(2)文件內容如下:

############## #05 09 * * * antivir######用vi編輯後記憶體退出。 antivir是一個查殺Linux病毒的軟體,當然需要時先安裝在系統中。 ######(3)使用crontab指令加入任務清單:#######crontab caoproject######這樣系統內所有使用者在每天的9點05分會自動進行病毒掃描。 ######4.用kill讓修改的設定檔馬上生效######Windows使用者一般都知道,重要設定檔修改後往往都要重新啟動電腦才能讓修改生效。而Linux由於採用了模組化設計,可以自己根據需要即時設定服務。這裡以網路服務inetd為例介紹一些操作技巧。 ######inetd######是一個監聽守護進程,監聽與提供互聯網服務進程(如rlogin、telnet、ftp、rsh)進行連接的要求,並擴展所需的服務進程。預設情況下,######inetd監聽的這些daemon均列於/etc#######/inetd.conf檔案中。編輯/etc/inetd.conf文件,可以改變inetd啟動伺服器守護程式的選項,然後驅使inetd以###

SIGHUP(signal 1)向目前的inetd進程發送訊號,使inetd重讀該檔案。這過程由kill命令來實現。

用vi或其它編輯器修改inetd.conf後,首先使用下面命令:

#ps -ef |grep inetd

上面程式碼表明查詢inetd.conf的進程號(PID),這裡假設是1426,然後使用下面指令:

# kill -1426 inetd

這樣設定檔就生效了。

這一講介紹的系統管理指令都是比較重要的,特別是crontab指令和quota指令使用起來會有一定難度,需要多做一些練習。另外,使用kill指令要注意「-9「這個參數,練習時最好不要執行一些重要的程式。

Linux必學的60個指令(4)-網路操作指令Linux必學的60個指令:網路操作指令

為Linux系統是在Internet上起源和發展的,它與生俱來擁有強大的網路功能和豐富的網路應用軟體,尤其是TCP/IP網路協定的實現尤為成熟。

Linux的網路指令比較多,其中一些指令像ping、

ftp、telnet、route、netstat等在其它作業系統上也能看到,但也有一些Unix/Linux系統獨有的指令,如ifconfig、

finger、mail等。 Linux網路操作命令的一個特點是,命令參數選項和功能很多,一個命令往往還可以實現其它命令的功能。

ifconfig

1.作用

ifconfig用於檢視和變更網路介面的位址和參數,包括IP位址、網路遮罩、廣播位址,使用權限是超級用戶。

2.格式

ifconfig -interface [options] address

#3.主要參數

-interface:指定的網路介面名,如eth0和eth1。

up:啟動指定的網路介面卡。

down:關閉指定的網路介面。

broadcast address:設定介面的廣播位址。

pointopoint:啟用點對點方式。

address:設定指定介面設備的IP位址。

netmask address:設定介面的子網路遮罩。

4.應用說明

ifconfig是用來設定和設定網路卡的命令列工具。為了手動配置網絡,這是一個必須掌握的命令。使用該指令的好處是無須重新啟動機器。要賦給eth0接口IP地址207.164.186.2,並且馬上激活它,使用下面命令:

#fconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127

指令的功能是設定網路卡eth0的IP位址、網路遮罩和網路的本地廣播位址。若執行不帶任何參數的ifconfig指令,這個指令將顯示機器所有啟動介面的

訊息。帶有“-a”參數的命令則顯示所有介面的信息,包括沒有啟動的介面。注意,用ifconfig指令配置的網路設備參數,機器重新啟動以後會遺失。

如果要暫停某個網路介面的工作,可以使用down參數:

#ifconfig eth0 down

ip

1.作用

ip是iproute2軟體包裡面的一個強大的網路設定工具,它能夠取代一些傳統的網路管理工具,例如ifconfig、route等,使用權限為超級使用者。幾乎所有的Linux發行版本都支援該指令。

2.格式

ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]

3.主要參數

OPTIONS是修改ip行為或改變其輸出的選項。所有的選項都是以-字元開頭,分為長、短兩種形式。目前,ip支援如表1所示選項。

OBJECT是要管理者取得資訊的物件。目前ip認識的對象見表2所示。

表1 ip支援的選項

-V,-Version 列印ip的版本並退出。

-s,-stats,-statistics 輸出更為詳盡的資訊。如果這個選項出現兩次或多次,則輸出的資訊將更為詳盡。

-f,-family 這個選項後面接協定種類,包括inet、inet6或link,強調使用的協定種類。如果沒有足夠的資訊告訴ip使用的協定種類,ip就會使用預設值inet或any。 link比較特殊,它表示不涉及任何網路協定。

-4 是-family inet的簡寫。

-6 是-family inet6的簡寫。

-0 是-family link的簡寫。

-o,-oneline 對每行記錄都使用單行輸出,回行用字元取代。如果需要使用wc、grep等工具處理ip的輸出,則會用到這個選項。

-r,-resolve 查詢網域解析系統,用獲得的主機名稱取代主機IP位址

COMMAND

設定針對指定物件執行的操作,它和物件的類型有關。一般情況下,ip支援物件的增加(add)、刪除(delete)和展示(show或list)。有些

物件不支援這些操作,或有其它的一些指令。對於所有的對象,使用者可以使用help指令來獲得幫助。這個指令會列出這個物件支援的指令和參數的語法。如果沒

有指定物件的操作指令,ip會使用預設的指令。一般情況下,預設指令是list,如果物件不能列出,就會執行help指令。

ARGUMENTS

是指令的一些參數,它們倚賴於物件和指令。 ip支援兩種類型的參數:flag和parameter。 flag由一個關鍵字組成;parameter由一個

關鍵字加一個數值組成。為了方便,每個命令都有一個可以忽略的預設參數。例如,參數dev是ip link指令的預設參數,因此ip link ls

eth0等於ip link ls dev eth0。我們將在後面的詳細介紹每個命令的使用,命令的預設參數將使用default標出。

4.應用實例

新增IP位址192.168.2.2/24到eth0網路卡上:

#ip addr add 192.168.1.1/24 dev eth0

丟棄來源位址屬於192.168.2.0/24網路的所有資料封包:

#ip rule add from 192.168.2.0/24 prio 32777 reject

##ping

1 .作用

ping偵測主機網路介面狀態,使用權限是所有使用者。

2.格式

ping [-dfnqrR​​v][-c][-i][-I][-l][-p][-s][-t] IP位址

3.主要參數

-d:使用Socket的SO_DEBUG功能。

-c:設定完成要求回應的次數。

-f:極限偵測。

-i:指定收發訊息的間隔秒數。

-I:網路介面使用指定的網路介面送出封包。

-l:前置載入,設定在送出要求資訊之前,先行發出的資料包。

-n:只輸出數值。

-p:設定填滿封包的範本樣式。

-q:不顯示指令執行過程,開頭和結尾的相關資訊除外。

-r:忽略普通的Routing Table,直接將封包送到遠端主機上。

-R:記錄路由過程。

-s:設定封包的大小。

-t:設定存活數值TTL的大小。

-v:詳細顯示指令的執行程序。

ping

指令是使用最多的網路指令,通常我們使用它來偵測網路是否連通,它使用ICMP協定。但是有時會有這樣的情況,我們可以瀏覽器查看一個網頁,但是卻無法

ping通,這是因為一些網站處於安全考慮安裝了防火牆。另外,也可以在自己電腦上試一試,透過下面的方法讓系統對ping沒有反應:

# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# netstat

1.作用

檢查整個Linux網路狀態。

2.格式

netstat [-acCeFghilMnNoprstuvVwx][-A][--ip]

3.主要參數

#-a--all :顯示所有連線中的Socket。

-A:列出該網路類型連線中的IP相關位址和網路類型。

-c--continuous:持續列出網路狀態。

-C--cache:顯示路由器設定的緩存資訊。

-e--extend:顯示網路其它相關資訊。

-F--fib:顯示FIB。

-g--groups:顯示多重廣播功能群組組員名單。

-h--help:線上幫助。

-i--interfaces:顯示網頁介面資訊表單。

-l--listening:顯示監控中的伺服器的Socket。

-M--masquerade:顯示偽裝的網路連線。

-n--numeric:直接使用IP位址,而不透過網域名稱伺服器。

-N--netlink--symbolic:顯示網路硬體週邊設備的符號連線名稱。

-o--timers:顯示計時器。

-p--programs:顯示正在使用Socket的程式識別碼和程式名稱。

-r--route:顯示Routing Table。

-s--statistice:顯示網路工作資訊統計表。

-t--tcp:顯示TCP傳輸協定的連線狀況。

-u--udp:顯示UDP傳輸協定的連線狀況。

-v--verbose:顯示指令執行程序。

-V--version:顯示版本資訊。

-w--raw:顯示RAW傳輸協定的連線狀況。

-x--unix:和指定「-A unix」參數相同。

--ip--inet:和指定「-A inet」參數相同。

4.應用實例

netstat

主要用於Linux察看自身的網路狀況,如開啟的連接埠、在為哪些使用者服務,以及服務的狀態等。此外,它還顯示系統路由表、網路介面狀態等。可以說,它是一

個綜合性的網路狀態的察看工具。在預設情況下,netstat只顯示已建立連線的連接埠。如果要顯示處於監聽狀態的所有端口,請使用-a參數:

#netstat -a

Active Internet connections (only servers)

Proto Recv-Q Send -Q Local Address Foreign Address State

tcp 0 0 *:32768 *:* LISTEN

tcp 0 0 *:32769 *:* LISTEN

tcp 0 0 *: nfs *:* LISTEN

tcp 0 0 *:32770 *:* LISTEN

tcp 0 0 *:868 *:* LISTEN

tcp 0 0 *:617 * :* LISTEN

tcp 0 0 *:mysql *:* LISTEN

tcp 0 0 *:netbios-ssn *:* LISTEN

tcp 0 0 *:sunrpc * :* LISTEN

tcp 0 0 *:10000 *:* LISTEN

tcp 0 0 *:http *:* LISTEN

#......

上面顯示出,這台主機同時提供HTTP、FTP、NFS、MySQL等服務。

telnet

1.作用

telnet表示開啟終端機階段作業,並登入遠端主機。 telnet是一個Linux指令,同時也是一個協定(遠端登陸協定)。

2.格式

telnet [-8acdEfFKLrx][-b][-e][-k][-l][-n][-S][-X][主機名稱IP位址]

3.主要參數

-8:允許使用8位元字元資料,包括輸入與輸出。

-a:嘗試自動登入遠端系統。

-b:使用別名指定遠端主機名稱。

-c:不讀取使用者專屬目錄裡的.telnetrc檔案。

-d:啟動排錯模式。

-e:設定脫離字元。

-E:濾除脫離字元。

-f:此參數的效果和指定「-F」參數相同。

-F:使用Kerberos V5認證時,加上此參數可將本機的認證資料上傳到遠端主機。

-k:使用Kerberos認證時,加上此參數讓遠端主機採用指定的領域名,而非該主機的網域名稱。

-K:不自動登入遠端主機。

-l:指定要登入遠端主機的使用者名稱。

-L:允許輸出8位元字元資料。

-n:指定檔案記錄相關資訊。

-r:使用類似rlogin指令的使用者介面。

-S:服務類型,設定telnet連線所需的IP TOS資訊。

-x:假設主機有支援資料加密的功能,就使用它。

-X:關閉指定的認證形態。

4.應用說明

戶使用telnet指令可以進行遠端登錄,並在遠端電腦之間進行通訊。使用者透過網路在遠端電腦上登錄,就像登入本機上執行命令一樣。為了透過

telnet登入遠端電腦上,必須知道遠端電腦上的合法使用者名稱和口令。雖然有些系統確實為遠端使用者提供登入功能,但出於對安全性的考慮,要限制來賓的操作

權限,因此,這種情況下能使用的功能是很少的。

telnet只提供普通終端機仿真,而不支援X-

Window等圖形環境。當允許遠端使用者登入時,系統通常會將這些使用者放在一個受限制的Shell中,以防系統被懷有惡意的或不小心的使用者破壞。使用者還可以

使用telnet從遠端網站登入自己的電腦上,檢查電子郵件、編輯文件和運行程序,就像在本機登入一樣。

ftp

1.作用

ftp指令進行遠端檔案傳輸。 FTP是ARPANet的標準檔案傳輸協議,該網路就是現今Internet的前身,所以ftp既是協議又是一個指令。

2.格式

ftp [-dignv][主機名稱IP位址]

3.主要參數

##-d:詳細顯示指令執行過程,便於排錯分析程式執行的情形。

-i:關閉互動模式,不詢問任何問題。

-g:關閉本機主機檔案名稱支援特殊字元的擴充特性。

-n:不使用自動登陸。

-v:顯示指令執行程序。

4.應用說明

ftp

#命令是標準的檔案傳輸協定的使用者接口,是在TCP/IP網路電腦之間傳輸檔案簡單有效的方法,它允許用戶傳輸ASCⅡ檔案和二進位檔案。為了使用ftp

來傳輸文件,使用者必須知道遠端電腦上的合法使用者名稱和口令。這個使用者名稱/口令的組合用來確認ftp會話,並用來決定使用者對要傳輸的檔案進行什麼樣的存取。

另外,使用者需要知道對其進行ftp會話的電腦名字的IP位址。

使用者可以透過使用ftp客戶程序,連接到另一台電腦上;可以在目錄中上下移動、列出目錄內容;可以把文件從遠端電腦機拷貝到本機上;還可以把文件從本地機傳輸到遠端系統。 ftp內部指令有72個,以下列出主要幾個內部指令:

ls:列出遠端機的目前目錄。

cd:在遠端機上改變工作目錄。

lcd:在本機上改變工作目錄。

close:終止目前的ftp會話。

hash:每次傳送完資料緩衝區中的資料後就顯示一個#號。

get(mget):從遠端機傳送指定檔案到本機。

put(mput):從本機傳送指定檔案到遠端機。

quit:斷開與遠端機的連接,並退出ftp。

route

1.作用

route表示手動產生、修改和檢視路由表。

2.格式

#route [-add][-net|-host] targetaddress [-netmask Nm][dev]If]

#route [-delete ][-net|-host] targetaddress [gw Gw] [-netmask Nm] [dev]If]

3.主要參數

#-add:增加路由。

-delete:刪除路由。

-net:路由到達的是一個網絡,而不是一台主機。

-host:路由到達的是一台主機。

-netmask Nm:指定路由的子網路遮罩。

gw:指定路由的網關。

[dev]If:強迫路由鏈指定介面。

4.應用實例

route指令是用來檢視和設定Linux系統的路由訊息,以實現與其它網路的通訊。要實現兩個不同的子網路之間的通信,需要一台連接兩個網路的路由器,或同時位於兩個網路的網關來實現。

在Linux系統中,設定路由通常是為了解決以下問題:此Linux系統在一個區域網路中,區域網路中有一個網關,能夠讓機器存取Internet,那麼就需要將這台機器的IP位址設定為Linux機器的預設路由。使用下面指令可以增加一個預設路由:

route add 0.0.0.0 192.168.1.1

rlogin

1.作用

rlogin用來進行遠端註冊。

2.格式

rlogin [ -8EKLdx ] [ -e char ] [-k realm ] [ - l username ] host

3.主要參數

-8:此選項始終允許8位元輸入資料通道。該選項允許發送格式化的ANSI字元和其它的特殊代碼。如果不用這個選項,除非遠端的不是終止和啟動字符,否則就去掉奇偶校驗位。

-E:停止把任何字元當作轉義字元。當和-8選項一起使用時,它提供一個完全的透明連接。

-K:關閉所有的Kerberos確認。只有與使用Kerberos 確認協定的主機連線時才使用這個選項。

-L:允許rlogin會話在litout模式中運作。要了解更多信息,請查閱tty線上幫助。

-d:開啟與遠端主機進行通訊的TCP sockets的socket偵錯。要了解更多信息,請查閱setsockopt的線上說明。

-e:為rlogin會話設定轉義字符,預設的轉義字符是「~」。

-k:請求rlogin取得在指定區域內遠端主機的Kerberos許可,而不是獲得由krb_realmofhost(3)確定的遠端主機區域內的遠端主機的Kerberos許可。

-x:為所有透過rlogin會話傳送的資料開啟DES加密。這會影響回應時間和CPU利用率,但是可以提高安全性。

4.使用說明

如果在網路中的不同系統上都有帳號,或是可以存取別人在另一個系統上的帳號,那麼要存取別的系統中的帳號,首先就要註冊到系統中,接著透過網路遠端註冊到帳號所在的系統中。 rlogin可以遠端註冊到別的系統中,它的參數應是一個系統名稱。

rcp

1.作用

rcp代表遠端檔案拷貝,用於電腦之間檔案拷貝,使用權限是所有使用者。

2.格式

rcp [-px] [-k realm] file1 file2 rcp [-px] [-r] [-k realm] file

#3.主要參數

-r:遞歸地將來源目錄中的所有內容拷貝到目的目錄中。要使用這個選項,目的必須是一個目錄。

-p:試圖保留原始檔案的修改時間和模式,忽略umask。

-k:請求rcp取得在指定區域內的遠端主機的Kerberos許可,而不是獲得由krb_relmofhost(3)確定的遠端主機區域內的遠端主機的Kerberos許可。

-x:為傳送的所有資料開啟DES加密。

finger

1.作用

finger用來查詢主機上的登入帳號的信息,通常會顯示使用者名稱、主目錄、停滯時間、登入時間、登入Shell等訊息,使用權限為所有使用者。

2.格式

finger [選項] [使用者] [使用者@主機]

#3.主要參數

-s:顯示使用者註冊名、實際姓名、終端名稱、寫入狀態、停滯時間、登入時間等資訊。

-l:除了用-s選項顯示的信息外,還顯示用戶主目錄、登入Shell、郵件狀態等信息,以及用戶主目錄下的.plan、.project和.forward文件的內容。

-p:除了不顯示.plan檔案和.project檔案以外,與-l選項相同。

4.應用實例

在電腦上使用finger:

[root@localhost root]# Finger

Login Name Tty Idle Login Time Office Office Phone

root root tty1 2 Dec 15 11

root root pts/0 1 Dec 15 11

root root *pts/1 Dec 15 11

5.應用說明

如果要查詢遠端機上的用戶信息,需要在用戶名後面接“@主機名”,採用[用戶名@主機名]的格式,不過要查詢的網絡主機需要運行finger守護程式的支援。

mail

1.作用

mail作用是傳送電子郵件,使用權限是所有使用者。此外,mail還是一個電子郵件程式。

2.格式

mail [-s subject] [-c address] [-b address]

mail -f [mailbox]mail [-u user]

3.主要參數

-b address:表示輸出資訊的匿名收信人地址清單。

-c address:表示輸出資訊的副本()收信人地址清單。

-f [mailbox]:從收件匣者指定郵件信箱讀取郵件。

-s subject:指定輸出資訊的主體行。

[-u user]:連接埠指定最佳化的收件匣讀取郵件。

nslookup

1.作用

nslookup指令的功能是查詢一台機器的IP位址和其對應的網域名稱。使用權限所有使用者。它通常需要一台網域名稱伺服器來提供網域名稱服務。如果使用者已經設定好網域名稱伺服器,就可以用這個指令查看不同主機的IP位址對應的網域名稱。

2.格式

nslookup [IP位址/網域名稱]

3.應用實例

(1)在本機上使用nslookup指令

$ nslookup

Default Server: name.cao.com.cn

Address: 192.168.1.9

>

在符號「>」後面輸入要查詢的IP位址域名,並回車即可。如果要退出該命令,輸入“exit”,並回車即可。

(2)使用nslookup指令測試named

輸入下面指令:

nslookup

然後就進入交換式nslookup環境。如果named正常啟動,則nslookup會顯示目前DNS伺服器的位址和域名,否則表示named沒能正常啟動。

下面簡單介紹一些基本的DNS診斷。

檢查正向DNS解析,在nslookup提示字元下輸入帶網域的主機名,如hp712.my.com,nslookup應能顯示該主機名對應的IP位址。如

果實只輸入hp712,nslookup會根據/etc/resolv.conf的定義,自動加入my.com域名,並回答對應的IP位址。

◆檢查反向DNS解析,在nslookup提示字元下輸入某個IP位址,如192.22.33.20,nslookup應能回答該IP位址所對應的主機名稱。

◆檢查MX郵件地址記錄在nslookup提示字元下輸入:

set q=mx

然後輸入某個域名,輸入my.com和mail.my. com,nslookup應能回答對應的郵件伺服器位址,即support.my.com和support2.my.com。

動手練習

1.危險的網路指令

連網的發展使安全成為一個不能忽視的問題,finger、ftp、rcp和telnet本質上都是不安全的,因為它們在網路上用明文傳送口令和數據,嗅

探器可以非常容易地截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有弱點的,很容易受到「中間伺服器」方式的攻擊。這裡筆者把一些不安全的命

令依照危險等級列出,見表3。

現在ftp、telnet可以被SSH指令取代綁定在埠22上,其連

接採用協商方式,使用RSA加密。身分鑑別完成之後,後面的所有流量都使用IDEA

進行加密。 SSH(Secure Shell)程式可以透過網路登入遠端主機,並執行指令。 rcp、rlogin等遠端呼叫指令也逐漸被VNC軟體取代

#。

2.在一張網卡上綁定多個IP位址

在Linux下,可以使用ifconfig方便地綁定多個IP位址到一張網卡。例如,eth0介面的原有IP位址為192.168.0 .254,可以執行下方指令:

ifconfig eth0:0 192.168.0.253 netmask 255.255.255.0

ifconfig eth0:1 1992.18. 0.252 netmask 255.255.255.0

......

3.修改網卡MAC位址

首先必須關閉網路卡設備,指令如下:

# /sbin/ifconfig eth0 down

修改MAC位址,指令如下:

/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

重新啟用網路卡:

/sbin/ifconfig eht0 up

這樣網路卡的MAC位址就更改完成了。每張網路卡的MAC位址是惟一,但不是不能修改的,只要保證在網路中的MAC位址的惟一性就可以了。

4.初步部署IPv6

IPv4

技術在網路發展中起到了巨大的作用,不過隨著時間的流逝它無論在網路位址的提供、服務品質、安全性等方面都越來越力不從心,IPv6呼之欲出。 Linux

是所有操作系統中最先支持IPv6的,一般Linux基於2.4內核的Linux發行版本都可以直接使用IPv6,不過主要發行版本沒有加載IPv6模

塊,可以使用指令手工加載,需要超級使用者的權限。

(1)載入IPv6模組

使用指令偵測,其中inet6 addr: fe80::5054:abff:fe34:5b09/64,就是eth0網路卡的IPv6位址。

# modprobe IPv6

#ifconfig

eth0 Link encap:Ethernet HWaddr 52:54:AB:34:5B:09

inet addr:192.168 .1.2 Bcast:192.168.1.255 Mask:255.255.255.0

inet6 addr: fe80::5054:abff:fe34:5b09/64 Scope:Link

#tric#tric#UP BRO RUNN. :1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:21 errors:0 dropped:0 overruns:0 carrier:0

#collisions:0 txqueuelen:100

RX bytes:0 (0.0 b) TX bytes:1360 (1.3 Kb)

Interrupt:5 Base address:0xec00

( 2)使用ping指令偵測網路卡的IPv6位址是否有效

#ping6 -I eth0 -c 2 fe80::200:e8ff:fea0:2586

和IPv4不一樣,使用ping6指令時必須指定一個網卡介面,否則系統不知道將資料包傳送到哪個網路設備。 I表示Interface、eth0是第一個網路卡,-c表示迴路,2表示ping6操作兩次。結果見圖1所示。

圖1 IPv6網路下的ping6指令

(3)使用ip指令在IPv6下為eth0增加一個IP位址

#ip -6 addr add 3ffe:ffff :0:f101::1/64 dev eth0

使用ifconfig指令,查看網路卡是否出現第二個IPv6位址。

Linux網路的主要優點是能夠實現資源和資訊的共享,並且使用者可以遠端存取資訊。 Linux提供了一組強而有​​力的網路命令來為使用者服務,這些工具能夠幫助使用者進行網路設定、檢查網路狀況、登入遠端電腦上、傳輸檔案和執行遠端命令等。

上面介紹了Linux中比較重要的網路指令,其實Linux還有許多指令要學習。 Linux網路操作命令的一個特點是命令參數選項很多,並不要求全部記住,關鍵在於理解命令的主要用途和學會使用幫助資訊。

Linux必學的60個命令(5)-網路安全命令Linux必學的60個命令:系統安全相關命令

雖然Linux和Windows NT/2000系統一樣是一個多使用者的系統,但是它們之間有不少重要的差別。對於許多習慣了Windows系統的管理員來講,如何確保Linux作業系統安全可靠將會面臨許多新的挑戰。本文將重點放在Linux系統安全的命令。

passwd

1.作用

passwd指令原來修改帳號的登陸密碼,使用權限是所有使用者。

2.格式

passwd [選項] 帳號名稱

3.主要參數

-l:鎖定已經命名的帳號名稱,只有具備超級使用者權限的使用者方可使用。

-u:解開帳戶鎖定狀態,只有具備超級使用者權限的使用者方可使用。

-x, --maximum=DAYS:最大密碼使用時間(天),只有具備超級使用者權限的使用者方可使用。

-n, --minimum=DAYS:最小密碼使用時間(天),只有具備超級使用者權限的使用者方可使用。

-d:刪除使用者的密碼, 只有具備超級使用者權限的使用者方可使用。

-S:檢查指定使用者的密碼認證種類, 只有具備超級使用者權限的使用者方可使用。

4.應用實例

$ passwd

Changing password for user cao.

Changing password for cao

#(current) UNIX password:

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

#從上面可以看到,使用passwd指令需要輸入舊的密碼,然後再輸入兩次新密碼。

su

1.作用

su的作用是變更為其它使用者的身份,超級使用者除外,需要鍵入該使用者的密碼。

2.格式

su [選項]... [-] [USER [ARG]...]

3.主要參數

# -f , --fast:不必讀取啟動檔(如csh.cshrc 等),僅用於csh或tcsh兩種Shell。

-l , --login:加了這個參數之後,就好像是重新登陸為該用戶一樣,大部分環境變數(例如HOME、SHELL和USER等)都是以該使用者( USER)為主,工作目錄也會改變。如果沒有指定USER,預設情況是root。

-m, -p ,--preserve-environment:執行su時不改變環境變數。

-c command:變更帳號為USER的使用者,並執行指令(command)後再變回原來使用者。

USER:欲變更的使用者帳號,ARG傳入新的Shell參數。

4.應用實例

變更帳號為超級用戶,並在執行df指令後還原用戶。 su -c df root

umask

1.作用

umask設定使用者檔案和目錄的檔案建立缺省屏蔽值,若將此指令放入profile文件,就可控制該使用者後續所建文件的存取許可。它告訴系統在創建文件時不給誰訪問許可。使用權限是所有使用者。

2.格式

umask [-p] [-S] [mode]

3.參數

-S:決定目前的umask設置。

-p:修改umask 設定。

[mode]:修改數值。

4.說明

統Unix的umask值是022,這樣就可以防止同屬於該組的其它用戶及別的組的用戶修改該用戶的文件。既然每個使用者都擁有並屬於一個自己的私有群組,那麼

麼這種「群組保護模式」就不在需要了。嚴密的權限設定構成了Linux安全的基礎,在權限上犯錯是致命的。需要注意的是,umask指令用來設定進程所創

建構的檔案的讀寫權限,最保險的值是0077,也就是關閉建立檔案的進程以外的所有行程的讀寫權限,表示為-rw-------。在

~/.bash_profile中,加上一行指令umask 0077可以保證每次啟動Shell後, 行程的umask權限都可以被正確設定。

5.應用實例

umask -S

u=rwx,g=rx,o=rx

umask -p 177

umask -S

u=rw,g=,o=

上述5行指令,先顯示目前狀態,然後把umask值改為177,結果只有檔案擁有者俱有讀寫檔案的權限,其它使用者不能存取該檔案。這顯然是一種非常安全的設定。

chgrp

1.作用

chgrp表示修改一個或多個檔案或目錄所屬的群組。使用權限是超級使用者。

2.格式

chgrp [選項]... 群組檔案...

#或

chgrp [選項]... --reference =參考文件檔...

將每個的所屬組設定為。

3.參數

-c, --changes :像 --verbose,但只有在有更改時才顯示結果。

--dereference:會影響符號連結所指示的對象,而非符號連結本身。

-h, --no-dereference:會影響符號連結本身,而非符號連結所指示的目的地(當系統支援更改符號連結的擁有者,此選項才有效)。

-f, --silent, --quiet:去除大部分的錯誤訊息。

--reference=參考檔案:使用的所屬群組,而非指定的。

-R, --recursive:遞歸處理所有的檔案及子目錄。

-v, --verbose:處理任何檔案都會顯示資訊。

4.應用說明

該指令改變指定指定檔案所屬的使用者群組。其中group可以是使用者群組ID,也可以是/etc/group檔案中使用者群組的群組名稱。檔案名稱是以空格分開的要改變屬組的檔案列表,支援通配符。如果用戶不是該文件的屬主或超級用戶,則不能改變該文件的群組。

5.應用實例

改變/opt/local /book/及其子目錄下的所有檔案的屬組為book,指令如下:

#$ chgrp - R book /opt/local /book

chmod

1.作用

chmod指令是非常重要的,用來改變檔案或目錄的存取權限,使用者可以用它控制檔案或目錄的存取權限,使用權限是超級使用者。

2.格式

chmod指令有兩種用法。一種是包含字母和操作符表達式的字元設定法(相對權限設定);另一種是包含數字的數字設定法(絕對權限設定)。

(1)字元設定法

chmod [who] [ | - | =] [mode] 檔案名稱

◆操作物件who可以是下述字母中的任一個或它們的組合

u:表示用戶,即檔案或目錄的擁有者。

g:表示同組用戶,即與文件屬主有相同群組ID的所有用戶。

o:表示其它使用者。

a:表示所有用戶,它是系統預設值。

◆ 操作符號

:新增某個權限。

-:取消某個權限。

=:賦予給定權限,並取消其它所有權限(如果有的話)。

◆設定mode的權限可用下述字母的任意組合

r:可讀。

w:可寫入。

x:可執行。

X:只有目標檔案對某些使用者是可執行的或該目標檔案是目錄時才追加x屬性。

s:檔案執行時把進程的屬主或群組ID置為該檔案的檔案屬主。方式「u+s」設定檔案的使用者ID位,「g+s」設定群組ID位。

t:將程式的文字儲存到交換設備上。

u:與檔案屬主擁有一樣的權限。

g:與和文件屬主同群組的使用者擁有一樣的權限。

o:與其它使用者擁有一樣的權限。

檔名:以空格分開的要改變權限的檔案列表,支援通配符。

一個命令列中可以給予多個權限方式,其間用逗號隔開。

(2) 數字設定法

數字設定法的一般形式為: chmod [mode] 檔案名稱

數字屬性的格式應為3個0到7的八進制數,其順序是(u)(g)(o)檔名,以空格分開的要改變權限的檔案列表,支援通配符。

數字

字表示的權限的意義如下:0001為擁有者的執行權限;0002為擁有者的寫權限;0004為擁有者的讀取權限;0010為群組的執行權限;0020為群組的寫入

權限;0040為群組的讀取權限;0100為其他人的執行權限;0200為其他人的寫權限;0400為其他人的讀取權限;1000為貼上位置位;2000表示假

如這個文件是可執行文件,則為群組ID為位置位,否則其中文件鎖定位置位;4000表示假如這個文件是可執行文件,則為用戶ID為位置位元.

3.實例

如果一個系統管理員寫了一個表格(tem)讓所有使用者填寫,那麼必須授權使用者對這個檔案有讀寫權限,可以使用指令:#chmod 666 tem

面程式碼中,這個666數字是如何計算出來的呢? 0002為擁有者的寫入權限,0004為擁有者的讀取權限,0020為群組的寫入權限,0040為群組的讀取權限,

0200為其他人的寫權限,0400為其他人的讀取權限,這6個數字相加就是666(注以上數字都是八進位數),結果見圖1所示。

圖1 用chmod數字方法設定檔案權限

從圖1可以看出,tem檔案的權限是-rw-rw-rw-,也就是使用者對這個檔案有讀寫權限。

如果用字元權限設定使用下方指令:

###chmod a =wx tem

chown

1.作用

更改一個或多個檔案或目錄的屬主和屬群組。使用權限是超級使用者。

2.格式

chown [選項] 使用者或群組檔案

#3.主要參數

--dereference:受影響的是符號連結所指示的對象,而非符號連結本身。

-h, --no-dereference:會影響符號連結本身,而非符號連結所指示的目的地(當系統支援更改符號連結的擁有者,此選項才有效)。

--from=目前擁有者:目前群組只當每個檔案的擁有者和群組符合選項所指定的,才會變更擁有者和群組。其中一個可以省略,這已省略的屬性就不需要符合原有的屬性。

-f, --silent, --quiet:移除大部分的錯誤訊息。

-R, --recursive:遞歸處理所有的檔案及子目錄。

-v, --verbose:處理任何檔案都會顯示資訊。

4.說明

chown 將指定檔案的擁有者改為指定的使用者或群組,使用者可以是使用者名稱或使用者ID;群組可以是群組名稱或群組ID;檔案是以空格分開的要變更權限的檔案列表,支持通配符。系統管理員經常使用chown指令,在將檔案拷貝到另一個使用者的目錄下以後,讓使用者擁有使用該檔案的權限。

5.應用實例

1.把檔案shiyan.c的擁有者改為wan

$ chown wan shiyan.c

2.把目錄/hi及其下的所有文件和子目錄的屬主改成wan,屬組改成users。

$ chown - R wan.users /hi

chattr

#1.作用

修改ext2和ext3檔案系統屬性(attribute),使用權限超級用戶。

2.格式

chattr [-RV] [- =AacDdijsSu] ​​[-v version] 檔案或目錄

3.主要參數

#- R:遞歸處理所有的檔案及子目錄。

-V:詳細顯示修改內容,並列印輸出。

-:失效屬性。

+:激活屬性。

= :指定屬性。

A:Atime,告訴系統不要修改對這個檔案的最後存取時間。

S:Sync,一旦應用程式對這個檔案執行了寫入操作,使系統立刻把修改的結果寫到磁碟。

a:Append Only,系統只允許在這個檔案之後追加數據,不允許任何進程覆蓋或截斷這個檔案。如果目錄具有這個屬性,系統將只允許在這個目錄下建立和修改文件,而不允許刪除任何文件。

i:Immutable,系統不允許對這個檔案做任何的修改。如果目錄具有這個屬性,那麼任何的程序只能修改目錄之下的文件,不允許建立和刪除文件。

D:檢查壓縮檔案中的錯誤。

d:No dump,在進行檔案系統備份時,dump程式將忽略這個檔案。

C:Compress,系統以透明的方式壓縮這個檔案。從這個檔案讀取時,回傳的是解壓縮之後的資料;而寫入資料到這個檔案時,就先被壓縮之後才寫入磁碟。

s:Secure Delete,讓系統在刪除這個檔案時,使用0填滿檔案所在的區域。

u:Undelete,當一個應用程式請求刪除這個文件,系統會保留其資料塊以便以後能夠恢復刪除這個文件。

4.說明

chattr

#指令的作用很大,其中一些功能是由Linux核心版本來支援的,如果Linux核心版本低於2.2,那麼許多功能不能實現。同樣-D檢查壓縮檔案中的錯誤

的功能,需要2.5.19以上核心才能支援。另外,透過chattr指令修改屬性能夠提高系統的安全性,但是它並不適合所有的目錄。 chattr指令不能

保護/、/dev、/tmp、/var目錄。

5.應用實例

1.恢復/root目錄,即子目錄的所有檔案

# chattr -R u/root

2.用chattr指令來防止系統中某個關鍵檔被修改

在Linux下,有些設定檔(passwd ,fatab)是不允許任何人修改的,為了防止被誤刪除或修改,可以設定該檔案的“不可修改位元(immutable)”,指令如下:

# chattr i /etc/fstab

sudo

1.作用

##”是一種以限製設定檔中的命令為基礎,在有限時間內給使用者使用,並且記錄到日誌中的命令,權限是所有使用者。

2.格式

sudo [-bhHpV] [-s ] [-u ] [指令]

sudo [-klv]

3.主要參數

-b:在背景執行指令。

-h:顯示幫助。

-H:將HOME環境變數設為新身分的HOME環境變數。

-k:結束密碼的有效期,即下次將需要輸入密碼。

-l:列出目前使用者可以使用的命令。

-p:改變詢問密碼的提示符號。

-s :執行指定的Shell。

-u :以指定的使用者為新身份,不使用時預設為root。

-v:延長密碼有效期限5分鐘。

4.說明

sudo

命令的設定在/etc/sudoers檔案中。當使用者使用sudo時,需要輸入口令以驗證使用者身分。隨後的一段時間內可以使用定義好的指令,當使用設定

檔案中沒有的指令時,將會有警報的記錄。 sudo是系統管理員用來允許某些使用者以root身分執行部分/全部系統指令的程式。一個明顯的用途是增強了網站

的安全性,如果需要每天以超級用戶的身份做一些日常工作,經常執行一些固定的幾個只有超級用戶身份才能執行的命令,那麼用sudo是非常適合的。

ps

1.作用

ps顯示瞬間進程 (process) 的動態,使用權限是所有使用者。

2.格式

ps [options] [--help]

#3.主要參數

ps的參數非常多, 此出僅列出幾個常用的參數。

-A:列出所有的流程。

###-l:顯示長列表。 ######-m:顯示記憶體資訊。 ######-w:顯示加寬可以顯示較多的資訊。 ######-e:顯示所有進程。 ######a:顯示終端機上的所有進程,包括其它使用者的進程。 ######-au:顯示較詳細的資訊。 ###

-aux:顯示所有包含其它使用者的進程。

4.說明

對進程進行監控與控制,首先要了解目前進程的情況,也就是需要查看目前進程。 ps指令就是最基本、也是非常強大的進程檢視指令。使用該指令可以確定有哪些

進程正在運作、運行的狀態、行程是否結束、行程有沒有殭屍、哪些行程佔用了太多的資源等。圖2給出了ps-aux指令詳解。大部分資訊都可以透過執行該命

令得到。最常用的三個參數是u、a、x。以下就結合這三個參數詳細說明ps指令的作用:ps aux

圖2 ps-aux指令詳解

圖2第2行程式碼中,USER表示進程擁有者;PID表示進程標示符;%CPU表示佔用的CPU使用率;%MEM佔用的實體記憶體使用率;VSZ表示佔用的虛擬記憶體大小;RSS為進程佔用的實體記憶體值;TTY為終端機的次要裝置號碼。

STAT

表示進程的狀態,其中D為不可中斷的靜止(I/O動作);R正在執行中;S靜止狀態;T暫停執行;Z不存在,但暫時無法消除;W沒有足夠的記憶體分頁可分

配;高優先順序的進程;N低優先順序的進程;L有記憶體分頁分配並鎖在記憶體體內(即時系統或

I/O)。 START為進程開始時間。 TIME為執行的時間。 COMMAND是所執行的指令。

4.應用程式實例

在進行系統維護時,經常會出現記憶體使用量驚人,而又不知道是哪一個行程佔用了大量進程的情況。除了可以使用top指令查看記憶體使用情況之外,還可以使用下面的指令:

ps aux | sort 5n

who

1.作用

who顯示系統中有哪些使用者登陸系統,顯示的資料包含了使用者ID、使用的登陸終端、上線時間、呆滯時間、CPU佔用,以及做了些什麼。使用權限為所有使用者。

2.格式

who - [husfV] [user]

#3.主參數

-h:不要顯示標題列。

-u:不要顯示使用者的動作/工作。

-s:使用簡短的格式來顯示。

-f:不要顯示使用者的上線位置。

-V:顯示程式版本。

4.說明

指令主要用於查看目前在線上的使用者情況。如果用戶想要和其它用戶建立即時通信,例如使用talk命令,那麼首先要確定的就是該用戶確實在線上,不然

talk進程就無法建立起來。又如,系統管理員希望監視每個登入的使用者此時此刻的所作所為,也要使用who指令。 who指令應用起來非常簡單,可以比較準

確地掌握使用者的情況,所以使用非常廣泛。

動手練習

1.使用Linux指令偵測系統入侵者

安裝Mandrake Linux和Red Hat

Linux的使用者都會知道,Linux系統會內建三種不同等級(標準、高、更高)的防火牆,當進行了Linux伺服器的安裝和一些基本的設定後,伺服器應

該說是比較安全的,但是也會有駭客透過各種方法利用系統管理員的疏忽侵入系統。如何快速找到駭客非常重要。一般來說,可以使用指令查詢駭客是否入侵,請參閱表

1。

表1 查詢駭客入侵現象的命令對應表

舉例說明,如果駭客嗅探網絡,那麼它必須使網卡介面處於混雜模式,使用下面命令進行查詢:

#ifconfig -a

eth0 Link encap:Ethernet HWaddr 00:00:E8:A0:25:86

inet addr:192.168.1.7 Bcast:192.168.1.255 Mask:255. 255.0

UP BROADCAST RUNNING PROMISCUOUS MTU:1500 Metric:1

......

#這個指令的輸出中,可以看到上面講到的這些概念。第一行的00:00:E8:A0:25:86是mac位址,第二行的192.168.1.7是IP位址,

第四行講的是接收資料狀態,這時正在被黑客嗅探。一般而言,網路卡有幾種接收資料幀的狀態,如Broadcast、Multicast、

Promiscuous等。 Broadcast是指接收所有類型為廣播封包的資料訊框;Multicast是指接收特定的群播封包;Promiscuous

則是通常說的混雜模式,是指對封包中的目的硬體位址不加任何檢查、全部接收的工作模式。

2.限制su指令的濫用

們知道,超級使用者在Linux中有最大的權利,幾乎所有駭客都想得到這個目標。 Linux可以增加切換到超級使用者的限制。使用PAM

(Pluggable Authentication

Modules)可以禁止在wheel群組以外的任何人su成root,修改/etc/pam.d/su文件,除去屏蔽標識#。使用

/usr/sbin/usermod G10 bjecadm將bjecadm這個帳號加入gid為10的群組,就是wheel群組。指令如下:

/etc/pam.d/su # 使用密碼驗證#

auth sufficient /lib/security/pam_wheel.so debug

# 限制只有wheel群組使用者才可以切換到root#

auth required /lib/security/pam_wheel.so use_uid

chmod -G10 bjecadm

另外,每當使用者試圖使用su命令進入系統使用者時,命令將在/usr/adm/sulog檔案中寫一條訊息,若該檔案記錄了大量試圖用su進入root的無效操作訊息,則表明了可能有人企圖破解root口令。

Linux指令有著強大的功能。對Linux系統管理員來說,往往只需要通過各種安全指令技巧,組合構成安全防線。從電腦安全的角度來看,世界上沒有絕對安全的電腦系統,Linux系統也不例外。

Linux必學的60個命令(6)-其他命令

Linux必學的60個命令:其它命令

在前面幾講中,我們把Linux命令依照在系統中的作用分成幾個部分分別予以介紹。但是,還有一些命令不好劃分,然而學習它們同樣是比較重要的。

tar

1.作用

tar指令是Unix/Linux系統中備份檔案的可靠方法,幾乎可以工作在任何環境中,它的使用權限是所有用戶。

2.格式

tar [主選項子選項] 檔案或目錄

#3.主要參數

使用此指令時,主選項是必須要有的,它告訴tar要做什麼事情,輔選項是輔助使用的,可以選用。

主選項:

-c 建立新的檔案檔案。如果使用者想備份一個目錄或是一些文件,就要選擇這個選項。

-r 把要存檔的檔案追加到檔案檔案的未尾。例如使用者已經做好備份文件,又發現還有一個目錄或是一些文件忘記備份了,這時可以使用該選項,將忘記的目錄或文件追加到備份文件中。

-t 列出檔案檔案的內容,查看已經備份了哪些檔案。

-u 更新檔案。是說,用新增的文件取代原備份文件,如果在備份文件中找不到要更新的文件,則把它追加到備份文件的最後。

-x 從檔案檔案中釋放檔案。

輔助選項:

-b 此選項是為磁帶機設定的,其後跟一數字,用來說明區塊的大小,系統預設值為20(20×512 bytes)。

-f 使用檔案檔案或設備,這個選項通常是必選的。

-k 保存已經存在的檔案。例如把某個文件還原,在還原的過程中遇到相同的文件,不會進行覆蓋。

-m 在還原檔案時,把所有檔案的修改時間設定為現在。

-M 建立多磁碟區的檔案文件,以便在幾個磁碟中存放。

-v 詳細報告tar處理的檔案資訊。如無此選項,tar不報告文件資訊。

-w 每一步都要求確認。

-z 用gzip來壓縮/解壓縮文件,加上該選項後可以將檔案文件進行壓縮,但還原時也一定要使用該選項進行解壓縮。

4.應用說明

tar 是Tape Archive(磁帶歸檔)的縮寫,最初設計用於將檔案打包到磁帶上。如果下載過Linux的原始碼,或許已經碰到過tar檔

請注意,不要忘了Linux是區分大小寫的。例如,tar命令應該總是以小寫的形式執行。命令列開關可以是大寫、小寫或大小寫的混合。例如,-t和-T執行不同的功能。檔案或目錄名稱可以混合使用大小寫,而且就像命令和命令列開關一樣是區分大小寫的。

5.應用實例

tar是一個命令列的工具,沒有圖形介面。使用Konsole打開一個終端窗口,接下來是一個簡單的備份命令(在/temp目錄中創建一個back.tar的文件,/usr目錄中所有內容都包含在其中。):

$tar cvf - /usr > /temp/back.tar

外,tar指令支援前面第三講講過的crontab指令,可以用crontab工具設定成基於時間的有規律地運行。例如,每晚6點把/usr目錄備份到

hda—第一個IDE介面的主磁碟機(總是位於第一個硬碟)中,只要將下面語句加入到root的crontab中即可:

$00 06 * * * tar cvf /dev/hda1/usrfiles.tar - /usr

一般情況下,以下這些目錄是需要備份的:

◆/etc 包含所有核心設定文件,其中包括網路設定、系統名稱、防火牆規則、使用者、群組,以及其它全域系統項目。

◆ /var 包含系統守護程式(服務)所使用的資訊,包括DNS設定、DHCP租期、郵件緩衝檔案、HTTP伺服器檔案、dB2實例配置等。

◆/home 包含所有預設使用者的主目錄,包括個人設定、已下載的檔案和使用者不希望失去的其它資訊。

◆/root 根(root)使用者的主目錄。

◆/opt 是安裝許多非系統檔案的地方。 IBM軟體就安裝在這裡。 OpenOffice、JDK和其它軟體在預設情況下也安裝在這裡。

有些目錄是可以不備份的:

◆ /proc 永遠不要備份這個目錄。它不是一個真實的檔案系統,而是運行核心和環境的虛擬化視圖,包括諸如/proc/kcore這樣的文件,這個檔案是整個運行記憶體的虛擬視圖。備份這些文件只是在浪費資源。

◆/dev 包含硬體設備的檔案表示。如果計劃還原到空白的系統,就可以備份/dev。然而,如果計劃還原到已安裝的Linux 系統,那麼備份/dev是沒有必要的。

unzip

1.作用

unzip

指令位於/usr/bin目錄中,它們和MS DOS下的pkzip、pkunzip及MS

Windows中的Winzip軟體功能一樣,將檔案壓縮成.zip文件,以節省硬碟空間,當需要的時候再將壓縮檔案用unzip指令解開。此指令使用權

限是所有使用者。

2.格式

unzip [-cflptuvz][-agCjLMnoqsVX][-P ][.zip檔][檔案][-d ][-x ]

# 3.主要參數

-c:將解壓縮的結果顯示到螢幕上,並對字元做適當的轉換。

-f:更新現有的檔案。

-l:顯示壓縮檔案內所包含的檔案。

-p:與-c參數類似,會將解壓縮的結果顯示到螢幕上,但不會執行任何的轉換。

-t:檢查壓縮檔案是否正確。

-u:與-f參數類似,但除了更新現有的檔案外,也會將壓縮檔案中的其它檔案解壓縮到目錄中。

-v:執行是時顯示詳細的資訊。

-z:僅顯示壓縮檔案的備註文字。

-a:對文字檔案進行必要的字元轉換。

-b:不要對文字檔案進行字元轉換。

-C:壓縮檔案中的檔案名稱區分大小寫。

-j:不處理壓縮檔案中原有的目錄路徑。

-L:將壓縮檔案中的全部檔案名稱改為小寫。

-M:將輸出結果送到more程式處理。

-n:解壓縮時不要覆寫原有的檔案。

-o:不必先詢問用戶,unzip執行後會覆寫原有檔案。

-P:使用zip的密碼選項。

-q:執行時不顯示任何資訊。

-s:將檔案名稱中的空白字元轉換為底線字元。

-V:保留VMS的檔案版本資訊。

-X:解壓縮時同時回轉檔案原來的UID/GID。

[.zip檔]:指定.zip壓縮檔。

[檔案]:指定要處理.zip壓縮檔案中的哪些檔案。

-d:指定檔案解壓縮後要儲存的目錄。

-x:指定不要處理.zip壓縮檔案中的哪些檔案。

-Z unzip:-Z等於執行zipinfo指令。在Linux中,也提供了一個叫zipinfo的工具,能夠察看zip壓縮檔案的詳細資料。 unzip最新版本是5.50。

gunzip

1.作用

gunzip指令作用是解壓縮文件,使用權限是所有使用者。

2.格式

gunzip [-acfhlLnNqrtvV][-s ][檔案...]

gunzip [-acfhlLnNqrtvV][- s ][目錄]

3.主要參數

-a或--ascii:使用ASCII文字模式。

-c或--stdout或--to-stdout:把解壓縮後的檔案輸出到標準輸出裝置。

-f或-force:強行解開壓縮文件,不理會文件名稱或硬連接是否存在,以及該文件是否為符號連接。

-h或--help:線上幫助。

-l或--list:列出壓縮檔案的相關資訊。

-L或--license:顯示版本與版權資訊。

-n或--no-name:解壓縮時,若壓縮檔案內含有原來的檔案名稱及時間戳記,則忽略不予處理。

-N或--name:解壓縮時,若壓縮檔案內含有原來的檔案名稱及時間戳記,則將其回存到解開的檔案上。

-q或--quiet:不顯示警告訊息。

-r或--recursive:遞歸處理,將指定目錄下的所有檔案及子目錄一併處理。

-S或--suffix:更改壓縮字尾字串。

-t或--test:測試壓縮檔案是否正確無誤。

-v或--verbose:顯示指令執行程序。

-V或--version:顯示版本資訊。

4.說明

gunzip是個使用廣泛的解壓縮程序,它用於解開被gzip壓縮過的文件,這些壓縮文件預設最後的擴展名為“.gz” 。事實上,gunzip就是gzip的硬連接,因此不論是壓縮或解壓縮,都可透過gzip指令單獨完成。 gunzip最新版本是1.3.3 。

unarj

1.作用

unarj解壓縮格式為.arj格式的文件,使用權限為所有使用者。

2.格式

unarj [eltx][.arj壓縮檔案]

3.主要參數

e:解壓縮.arj檔案。

l:顯示壓縮檔案內所包含的檔案。

t:檢查壓縮檔案是否正確。

x:解壓縮時保留原有的路徑。

4.說明

帶有.arj副檔名的檔案是由用於MS DOS和Windows的ARJ實用程式所建立的。因為ARJ是一種不能免費獲得源代碼的共享件程序,所以在

mtools

#1.作用

mtools

實際上是一個指令集合,是DOS檔案系統的工具程序,它可以模擬許多DOS指令,使用起來非常方便。使用權限是所有使用者。 Linux系統提供了一組稱為

mtools的可移植工具,讓使用者可以輕鬆地從標準的DOS軟碟上讀取、寫入檔案和目錄。它們對DOS和Linux環境之間交換文件非常有用。 mtools的

使用非常簡單,如果想把軟碟裡所有的檔案都拷貝到硬碟上,那麼就可以執行以下指令:

mcopy a:*.*

也就是說,只需要在對應的DOS指令之前加上一個字母“m”,就可以完成對應的功能了。一般Linux發行版本都有這個軟體,可以用下面指令檢查一下。

rpm -qa|grep mtools

如果沒有安裝,也沒關係,可以從網路下載(http://mtools.linux.lu/)一個最新版本來安裝。目前可供下載的最新mtools版本是

2.包含的指令

mcd 目錄名稱:改變MS DOS下的目錄。

mcopy 原始檔 目標檔:在MS DOS和Unix之間複製檔案。

mdel 檔名:刪除MS DOS下的檔案。

mdir 目錄名稱:顯示MS DOS下的目錄。

mformat 磁碟機號碼:在低階格式化的磁碟機上建立MS DOS檔案系統。

rnlabel 磁碟機號碼:產生MS DOS下的磁碟區標。

mmd 目錄名稱:建立MS DOS下的目錄。

mrd 目錄名稱:刪除MS DOS下的目錄。

mren 原始檔 目標檔:重新命名已存在的MS DOS檔。

mtype 檔名:顯示MS DOS檔的內容。

請注意,這些指令和對應的MS DOS指令非常相似。在mtools指令中,「/」和「\」是可以混用的。因為文件清單的是DOS系統下的文檔,對大小寫並不敏感,所以「CDE」和「cde」在這裡是一樣的。

3.應用實例

(1)如果把軟碟進行快速格式化,可以使用指令mformat:

mformat A:

mtools

當初發展的目的是用來處理DOS檔案系統的,所以只能用在FAT檔案格式的分割區上。要注意的是,如果用mount指令來掛載了FAT16/32分區,那麼

麼就不能使用mtools的指令來處理這些分割區上的檔案。這是因為一旦FAT16/32分區掛到了Linux檔案目錄下,Linux就會將其視為檔案系統

本身的一部分,這時如果要對其操作就必須使用Linux本身所附帶的指令集。

(2)將DOS磁碟機上的檔案htca.c複製到目前目錄下,並用ls指令進行驗證。

$ mcopy a:\htca.c

$ ls -l htca.c

-rw-r- -r- - 1 xxq xxq 27136 Jan 1 01:80 htca .c

man

1.作用

man指令用來提供線上幫助,使用權限是所有使用者。在Linux系統中儲存著一部線上使用的手冊,以供使用者在終端機上尋找。使用man指令可以調閱其中的幫助訊息,非常方便和實用。

2.格式

man 指令名稱

man [-acdfhkKtwW] [-m system] [-p string] [-C config_file] [-M path] [ -P pager] [-S section_list] [section] name ...

3.參數

-C config_file:指定設定檔man.conf,預設值是/etc/ man.conf。

-M path:指定了連線手冊的搜尋路徑, 如果沒有指定則使用環境變數MANPATH的設定;如果沒有使用MANPATH, 則會使用/usr/lib/man.conf內的設定;如果MANPATH是空字串,則表示使用預設值。

-P pager:指定使用何種pager.man會優先使用此選項設定,然後是依環境變數MANPAGER設定,然後是環境變數PAGER;man缺省使用/usr/bin/less -is。

-S section_list man:所搜尋的章節清單(以冒號分隔),此選項會覆寫環境變數MANSECT的設定。

-a man:缺省情況是在顯示第一個找到的手冊之後,就會停止搜尋,使用此選項會強迫man繼續顯示所有符合name的線上手冊。

-c:即使有最新的cat page,也繼續對聯機手冊重新作排版,本選項在螢幕的行列數改變時或已排版的聯機手冊損壞時特別有意義。

-d:不要真的顯示線上手冊,只顯示除錯訊息。

-D:同時顯示線上手冊與除錯訊息。

-h:顯示求助訊息然後結束程式 。

-K:對所有的線上手冊搜尋所指定的字串。請注意,本功能回應速度可能很慢,如果指定section(區域)會對速度有幫助。

-m system:依指定的system名稱而指定另一組的線上手冊。

man:是manual(手冊)的縮寫。在輸入指令有困難時,可以立刻得到這個文件。例如, 如果使用ps指令時遇到困難,可以輸入man ps得到幫助訊息,此時會顯示出ps的手冊頁(man page)。

由於手冊頁man page是用less程式來看的(可以方便地使螢幕上翻和下翻), 所以在man page裡可以使用less的所有選項。

less中比較重要的功能鍵有:

[q] 退出;

[Enter] 一行行地下翻;

[Space] 一頁頁地下翻;

上翻一頁;

[/] 後面跟著一個字串和[Enter]來找出字串;

[n] 發現上一次尋找的下一個匹配。

4.閱讀手冊頁

手冊頁在很少的空間裡提供了很多的信息, 這裡簡單介紹一下大多數手冊頁中都有的部分內容。 Linux手冊頁主要有九個部分:使用者指令、系統呼叫、程式庫、設備說明、檔案格式、遊戲、雜項、系統指令、內核,手冊頁快照見圖1所示。

圖1 ps指令手冊頁快照

Linux手冊頁佈局請參考表1。

5.應用實例

Linux

指令中有一些基礎的、重要的指令,例如ps、find、cat和ls等。以下來舉一個綜合應用的例子,由此可以看出man的地位在Linux中可謂至關重

要。但是,man所顯示的訊息卻不是普通的文本,如果直接將這些文字重定向到一個文本文件,就會發現在man中高亮顯示的文字就變成了兩個,而且有不計其

數的製表符,使列印、編輯都變得非常不便。不過,使用下面這樣一條語句就能得到ps指令列印。

# man ps | col -b | lpr

這條指令同時運用了輸出重定向和管道兩種技巧,作用是將ps指令的幫助資訊可以直接列印出來。更多的Man檔案可以查看Linux Man

unencode

1。作用

unencode指令可以把一個二進位檔案表編碼為一個文字文件,使用權限是所有用戶。

2.格式

uuencode [-hv] [原始檔案] 目標檔案

3.主要參數

-h:列出指令使用格式(help) 。

-v:列出版本資訊。

4.應用說明

uuencode指令可以將二進位檔案轉換成可使用電子郵件傳送的ASCII編碼形式。 uuencode編碼後的資料都以 begin開始,以end作為結束,且通常其中的每一行的開始均為“M”,中間部分是編碼過的文件,編碼後的文件比源文件要大一些。

uudecode

1.作用

uudecode指令用來將uuencode編碼後的檔案還原,uudecode只會將begin與end標記之間的編碼資料還原,程式會跳過標記以外的資料。它的使用權限為所有使用者。

2.格式

uuencode [-hv] [file1 ...]

3.主要參數

-h:列出指令使用格式(help)。

-v:列出版本資訊。

4.應用實例

使用下面指令一次還原幾個檔案:

uuencode file1.uud file2.uud file3.uud

#動手練習

#1.在Linux命令列下發送郵件

雖然Linux桌面應用程式發展很快,但是命令列(Shell)在Linux中依然有很強的生命力。如果能確認電子郵件伺服器支援8bit的位元組,就可以直接使用下面指令:

cat <附件檔名> | mail <郵件地址>

cat(cat是concatenate的縮寫)命令是將幾個文件處理成一個文件,並將這種處理的結果保存到一個單獨的輸出文件,這裡我們用它來合併郵件的文字。

寫好郵件名稱,例如叫cjkmail,然後使用下面指令:

$uuencode <附件檔名> <附件檔名> >>cjkmail

這樣

這樣

就可以用vi編輯器寫cjkmail文件,並在前面寫上信的正文,然後寄出。

對方收到信後,把信中屬於cjkmail中的內容拷貝出來,存為themail.uue。如果對方是在Windows下,就可以用WinRAR或WinZip解壓,這樣就可以看到附件。

如果對方也使用Linux,可以用undecode指令還原:

$ uudencode -o<附件檔名> themail.uue

2.實作tar的分卷

筆者想把一個378MB的檔案壓縮成多個63MB的檔案(筆者的USB為64MB),使用下面命令:

$tar czvf - dir | split -d -b 63m

然後合併指令:

$cat x* > dir.tgz

#以上範例實際上是由三個指令組合完成的,即用tar打包,用split分割,用cat合併。 「tar czvf - dir」的意思是把dir目錄打包,並輸出到標準輸出(argv),這樣就可以直接用管道輸出給split。

3.連續執行一個指令

使用watch指令,可以重複執行指令。如果和ls配合,可以達到觀察某檔案大小變化的效果。

$watch ls -l file.name

4.用tar指令匯出一個檔案

有一個tar格式的DVD檔GLvPro6.4_linux.tar,因為該文件非常大(4.7GB),如果全部解壓縮比較麻煩,可以用下面指令先匯出readme.txt看看。

tar xvf GLvPro6.4_linux.tar readme.txt

這樣readme.txt就單獨被匯出了。

5.用tar打包一個目錄時只備份其中的幾個子目錄

###tar cf --exclude home/cjh home/cao######這樣home目錄下只有cjh和cao兩個子目錄備份。 ###

以上是linux必學的60個指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn