linux指令学习
命令行操作及常用命令使用
命令行操作
Shell簡介
shell是用戶和Linux操作系統之間的接口,Linux中有多種shell,缺省使用的是bash。Linux系統的shell作為操作系統的外殼為用戶提供使用操作系統的接口,它是一個命令語言解釋器,有自己內建的shell命令集,shell也能被系統中其他應用程序所調用。用戶在提示符下輸入的命令都由shell先解釋然后傳給Linux核心。
Linux中的shell有多種類型,其中最常用的幾種是Bourneshell(sh)、Cshell(csh)和Kornshell(ksh)。三種shell各有優缺點。
Bourneshell是UNIX最初使用的shell,并且在每種UNIX上都可以使用。Bourneshell在shell編程方面相當優秀,但在處理與用戶的交互方面做得不如其他幾種shell。Linux操作系統缺省的shell是BourneAgainshell,它是Bourneshell的擴展,簡稱bash。與Bourneshell完全向后兼容,并且在Bourneshell的基礎上增加增強了很多特性。它還包含了很多Cshell和Kornshell中的優點,有靈活和強大的編程接口同時又有很友好的用戶界面。
Cshell是一種比Bourneshell更適于編程的shell,它的語法與C語言很相似。Linux為喜歡使用Cshell的人提供了Tcsh。Tcsh是Cshell的一個擴展版本。Tcsh包括命令行編輯可編程單詞補全、拼寫校正、歷史命令替換、作業控制和類似C語言的語法。它不僅和Bashshell是提示符兼容,而且還提供比Bashshell更多的提示符參數。Kornshell集合了Cshell和Bourneshell的優點并且和Bourneshell完全兼容Linux系統提供了pdksh(ksh)的擴展,它支持任務控制,可以在命令行上掛起、后臺執行、喚醒或終止程序。
SuseLinux系統默認的shell是bash,對普通用戶用>作提示符,對超級用戶root用#作提示符,一旦出現了shell提示符就可以鍵入命令名稱及命令所需要的參數。
用戶在登錄到Linux時由/etc/passwd文件來決定要使用哪個shell。例如該文件中含有類似如下一行:
zteiptv:x:1002:100::/home/zteiptv:/bin/bash
用戶使用的shell是該行末尾的(/bin/bash)。
Shell控制臺使用方法
首先介紹一個名詞“控制臺(console)”,它就是我們通常見到的使用字符操作界面的人機接口,我們說控制臺命令就是指通過字符界面輸入的可以操作系統的命令。我們現在要了解的是基于Linux操作系統的基本控制臺命令。
Linux是一個真正的多用戶操作系統,這表示它可以同時接受多個用戶登錄。Linux還允許一個用戶進行多次登錄,這是因為Linux和許多版本的UNIX一樣提供了“虛擬控制臺”的訪問方式,允許用戶在同一時間從控制臺(系統的控制臺是與系統直接相連的監視器和鍵盤)進行多次登錄。
虛擬控制臺的選擇可以通過按下Alt鍵和一個功能鍵來實現,通常使用F1-F6。例如用戶登錄后按一下Alt-F2鍵,用戶又可以看到“login:”提示符,說明用戶看到了第二個虛擬控制臺;然后只需按Alt-F1鍵就可以回到第一個虛擬控制臺。一個新安裝的Linux系統允許用戶使用Alt-F1到Alt-F6鍵來訪問前六個虛擬控制臺。
常用命令使用
登錄和退出Linux系統
用戶登錄系統時為了使系統能夠識別自己,必須輸入用戶名和密碼,經系驗證無誤后方能進入系統。
在系統安裝過程中可以創建兩種帳號:超級用戶帳號和普通用戶帳號。Linux使用者一般為普通用戶,而系統管理員一般使用超級用戶帳號完成一些系統管理的工作,如果只需要完成一些由普通用戶帳號就能完成的任務,建議不要使用超級用戶帳號,以免無意中破壞系統。
用戶登錄分兩步進行,第一步輸入用戶的登錄名,系統根據該登錄名來識別用戶;第二步輸入用戶的口令,該口令是用戶自己選擇的一個字符串,對其他用戶是保密的,是在登錄時系統用來辨別真假用戶的關鍵字。
1.啟動和登錄系統
超級用戶的用戶名為root,密碼在安裝系統時需要設定。當用戶正確地輸入用戶名和口令后就能合法地進入系統。
[root@loclhost/root]#
此時說明用戶已經登錄到系統中可以進行操作了。這里“#”是超級用戶的系統提示符普通用戶在建立了普通用戶帳號以后就可以進行登錄了。
不論是超級用戶還是普通用戶需要退出系統時,在shell提示符下鍵入exit命令即可。還有其他退出系統的方法但上面一種是最安全的。
2.重新啟動系統
以root用戶登錄Linux操作系統后執行reboot命令可以重新啟動linux系統:
[root@loclhost/root]#reboot
3.關閉系統
shutdown命令可以安全地關閉或重啟Linux系統,它在系統關閉之前給系統上的所有登錄用戶提示一條警告信息。該命令還允許用戶指定一個時間參數,可以是一個精確的時間,也可以是從現在開始的一個時間段,精確時間的格式是“hh:mm”,表示小時和分鐘,時間段由“+”和分鐘數表示。系統執行該命令后會自動進行數據同步的工作。該命令的一般格式:
shutdown[選項][時間][警告信息]
命令中各選項的含義為:
-k并不真正關機而只是發出警告信息給所有用戶;
-r關機后立即重新啟動;
-h關機后不重新啟動;
-f快速關機重啟動時跳過fsck;
-n快速關機不經過init程序;
-c取消一個已經運行的shutdown;
需要特別說明的是該命令只能由超級用戶使用。
例1:系統在十分鐘后關機并且馬上重新啟動:
#shutdown–r+10
例2:系統馬上關機并且不重新啟動:
#shutdown–hnow
文件和目錄操作命令
1.ls命令
這個命令就相當于dos下的dir命令一樣,也是Linux控制臺命令中最為重要幾個命令之一。ls最常用的參數有三個:-a、-l和–F。
ls-a
Linux系統上的文件以.開頭的文件被系統視為隱藏文件,僅用ls命令是看不到他們的。而用ls–a,除了顯示一般文件名外,連隱藏文件也會顯示出來。
ls–l這個參數是字母L的小寫不是數字1
這個命令可以使用長格式顯示文件內容,如果需要察看更詳細的文件資料就要用到ls-l這個指令。
ls–F
在列出的文件(目錄)名稱后加一符號,例如可執行文件加“*”,目錄則加“/”。
2.cd命令
cd這個命令是用來進出目錄的,Linux的目錄對大小寫是敏感的,如果大小寫拼寫有誤,你的cd操作是成功不了的。另外cd如果直接輸入,cd后面不加任何東西會回到使用者自己的Home目錄。假設用戶是root那就是回到/root目錄。
3.Mkdir、rmdir
mkdir命令用來建立新的目錄,如輸入如下命令:
mkdirwork
將在當前目錄下新建一個work目錄。
rmdir用來刪除已建立的目錄,如輸入如下命令:
rmdirwork
將刪除已存在的空目錄work。
4.cp
cp這個命令是copy命令,具體用法是:
cp–r源文件(source)目的文件(target)
參數r是指連同源文件中的子目錄一同拷貝。
5.rm
rm這個命令是用來刪除文件的,rm命令常用的參數有三個-i、-r、-f。
比如我現在要刪除一個名字為text的一個文件,輸入如下命令:
rm–itest
系統會詢問我們是否要刪除test文件敲了“y/n”確認是否要刪除test文件;
rm–r目錄名
這個操作可以連同這個目錄下面的子目錄都刪除,功能比上面講到的rmdir更強大,不僅可能刪除指定的目錄,而且可以刪除該目錄下所有文件和子目錄;
rm–f文件名
這個操作可以不經確認強制刪除文件。
6.mv
mv這個命令的功能是移動目錄或文件,引申的功能是給目錄或文件重命名,比如:
mv/tmp/xxx.tar/root
該命令將/tmp目錄下的xxx.tar文件移動到/root目錄下,而:
mvaaa.tarbbb.tar
則是將當前目錄下的文件aaa.tar更名為bbb.tar。
7.cat
cat這個命令是linux中非常重要的一個命令,它的功能是顯示或連結一般的ascii文本文件,它的用法如下:
cattext
該命令顯示text這個文件的內容:
catfile1file2
該命令依順序顯示file1、file2的內容:
catfile1file2>file3
該命令把file1、file2的內容結合起來再重定向到file3文件中。
8.more
more是顯示一般文本文件的指令,如果一個文本文件太長了超過一個屏幕的畫面,用cat來看實在是不理想,就可以試試more用法如下:
morefile1
9.pwd
pwd這個命令的作用是顯示用戶當前的工作路徑,直接輸入pwd即可。
用戶及用戶組管理命令
1.useradd
useradd命令可以創建一個新的用戶帳號,其最基本用法為:
useradd用戶名
如輸入以下命令:
useraddnewuser
系統將創建一個新用戶newuser該用戶的Home目錄為/home/newuser。
useradd命令的參數較多,常用的組合為:
useradd用戶名-g組名–G組名-dHome目錄名-p密碼
其中:
-g指定該用戶的首要組;
-G指定該用戶的次要組;
-d指定該用戶的Home目錄;
-p指定該用戶的密碼。
如輸入以下命令:
useraddoracle–goinstall–Gdba–d/home/oracle–pora123
系統將創建一個用戶oracle,oracle用戶的首要組為oinstall,次要組為dba,Home目錄為/home/oracle,密碼為ora123。
2.userdel
userdel命令用于刪除一個已存在的帳號,其用法為:
userdel用戶名
3.groupadd
groupadd命令可以創建一個新的用戶組,其最基本用法為:
groupadd組名
如輸入以下命令:
groupaddnewgroup
系統將創建一個新的用戶組newgroup。
4.groupdel
groupdel命令用于刪除一個已存在的用戶組,其用法為:
groupdel組名
5.passwd
出于系統安全考慮,Linux系統中的每一個用戶除了有其用戶名外還有其對應的用戶口令,用戶可以隨時用passwd命令改變自己的口令。該命令的一般格式為:
Passwd
輸入該命令后,按系統提示依次輸入密碼和密碼確認后,即可完成對超級用戶密碼的修改。此外超級用戶還可以修改其他用戶的口令,命令如下:
passwd用戶名
6.su
su命令這個命令非常重要,它可以讓一個普通用戶擁有超級用戶或其他用戶的權限,也可以讓超級用戶以普通用戶的身份做一些事情。普通用戶使用這個命令時必須有超級用戶或其他用戶的口令,如要離開當前用戶的身份可以鍵入exit命令。su命令的一般形式為:
su-用戶名
7.chmod
chmod命令是非常重要的,用于改變文件或目錄的訪問權限,該命令有兩種用法。一種是包含字母和操作符表達式的文字設定法,另一種是包含數字的數字設定法。文字設定法的用法如下:
chmod[who][+|-|=][mode]文件名
命令中各選項的含義為:
1操作對象who可以是下述字母中的任一個或者它們的組合:
u表示用戶(user)即文件或目錄的所有者;
g表示同組(group)用戶即與文件屬主有相同組ID的所有用戶;
o表示其他(others)用戶;
a表示所有(all)用戶它是系統默認值;
2操作符號可以是:
+添加某個權限;
-取消某個權限;
=賦予給定權限,并取消其他所有權限;
3mode表示權限常用的參數有:
r可讀;
w可寫;
x可執行;
舉例:
1.將文件script的權限設為可執行,命令如下:
chmod=rxtext
執行成功后,用ls-lscript命令查看文件屬性的結果如下:
-r-xr-xr-x1usergroup0Feb1009:42script
2.將文件text的權限設為文件屬主可讀、可寫、可執行,與文件屬主同組的用戶可讀而其他用戶不可讀,命令如下:
chmodu=rwx,g=r,o=text注意,后無空格o=后有空格
執行成功后,用ls-ltext命令查看文件屬性的結果如下:
-rwxr-----1usergroup0Feb1009:42text
8.chown
chown用于更改某個文件或目錄的屬主和屬組,這個命令也很常用。例如root用戶把自己的一個文件拷貝給用戶oracle,為了讓用戶oracle能夠存取這個文件。root用戶應該把這個文件的屬主設為oracle,否則用戶oracle無法存取這個文件。chown的基本用法為:
chown[用戶:組]文件
舉例:
chownoracle:dbatext
該命令將text文件的屬主和屬組分別改為oracle和dba。
進程及任務管理命令
Linux系統上所有運行的東西都可以稱之為一個進程。每個用戶任務、每個系統管理守護進程都可以稱之為進程。Linux用分時管理方法使所有的任務共同分享系統資源。以下將介紹一些常用的查看和控制進程的命令:
1.ps
ps命令是最基本同時也是非常強大的進程查看命令,使用該命令可以查看有哪些進程正在運行以及運行的狀態、進程是否結束、進程有沒有僵死,哪些進程占用了過多的資源等等。
該命令的基本用法如下:
ps[選項]
其中常用的選項有:
-e顯示所有進程;
-f全格式;
-l長格式;
舉例:
(1) 在控制臺輸入ps命令得到類似如下的輸出:
PIDTTYTIMECMD
12039pts/000:00:00bash
18710pts/000:00:00ps
該命令顯示當前登錄用戶的執行進程,顯示的項目共分為四項,依次為:PID(進程ID)、TTY(終端名稱)、TIME(進程執行時間)、CMD(該進程的命令行輸入)。
(2) 在控制臺輸入以下命令:
ps–ef
UIDPIDPPIDCSTIMETTYTIMECMD
root100Jan14?00:00:05init
root210Jan14?00:00:00[keventd]
root310Jan14?00:00:00[kapmd]
…………………..
該命令將顯示所有執行進程的信息,顯示的項目依次為:UID執行進程的用戶ID、PID(進程ID)、PPID(父進程ID)、TTY(終端名稱)、STIME(進程啟動時間)、TIME(進程執行時間)、CMD(該進程的命令行輸入)。
該命令的輸出較多,可以使用grep命令進行過慮,以方便查看,如:
ps–ef|greporacle
將只顯示出包含oracle的輸出行,可以查詢執行進程的用戶為oracle的所有進程。
2.top
top命令和ps命令的基本作用是相同的,即顯示系統當前的進程和其他狀況。但是top是一個動態顯示過程,即可以通過用戶按交互來不斷刷新當前狀態。
top的命令參數并不重要,簡單的輸入top命令即可查看系統運行狀態,top命令執行過程中可以使用交互命令。從使用角度來看,熟練的掌握這些命令比掌握選項還重要一些,這些命令都是單字母的常用的命令有:
<空格>立即刷新顯示;
h或者?顯示幫助畫面給出一些簡短的命令總結說明;
m切換顯示內存信息;
t切換顯示進程和CPU狀態信息;
c切換顯示命令名稱和完整命令行;
M根據駐留內存大小進行排序;
P根據CPU使用百分比大小進行排序;
q退出。
3.kill
kill命令可以用于終止后臺進程,kill命令是通過向進程發送指定的信號來結束進程的。kill命令的語法格式很簡單,大致有以下兩種方式:
kill[-s信號]進程號
其中發出的信號既可以是信號名也可以對應數字,如kill-91234命令將終止PID(進程號)為1234的進程。
kill-l
該命令顯示信號列表。
4.cron
cron命令用來實現定時任務的完成,如每日執行一次的任務進程。cron命令是不應該手工啟動的,一般情況下cron命令在系統啟動時就由一個shell腳本自動啟動,啟動后cron命令會搜索/var/spool/cron目錄尋找以/etc/passwd文件中的用戶名命名的crontab文件,被找到的這種文件將載入內存。例如一個用戶名為user的用戶它所對應的crontab文件就應該是/var/spool/cron/user。也就是說以該用戶命名的crontab文件存放在/var/spool/cron目錄下面。cron命令還將搜索/etc/crontab文件,這個文件是用不同的格式寫成的,cron啟動以后它將首先檢查是否有用戶設置了crontab文件,如果沒有就轉入休眠狀態,釋放系統資源。它每分鐘醒過來一次查看當前是否有需要運行的命令可以使用crontab–l命令查看目前已經存在的cron任務。
磁盤及文件系統管理命令
管理文件系統其實是相當復雜的工作,這里主要介紹掛裝和卸載硬盤分區等命令。
1.df
df命令可以顯示目前磁盤剩余的磁盤空間,常用的參數為-k,如:
df–k
該語句將顯示各分區的磁盤空間使用情況。
2.mount和umount
mount命令有很多參數,其中大多數都不會在日常工作中用到mount命令,最常見的用法如下所示:
mount[選項]設備目錄
其中最常用的選項是-a,把/etc/fstab文件中列出的文件系統都掛裝上。
掛裝軟驅和光驅的命令比較簡單,直接輸入以下命令即可:
Mount?/mnt/cdrom
Mount?/mnt/floppy
umount命令用于卸載一個文件系統,命令的格式如下:
umount?[-f]?directory
其中directory是準備卸載的目錄名,umount命令有一個不足之處,如果文件系統正在使用中,也就是說有人在那個分區上打開了文件,就無法把這個文件系統卸載下來。這時可以使用和-f參數強制執行卸載操作。當然,這種操作可能會造成用戶數據的丟失如:
Umount?–f?/mnt/cdrom
該命令將強制卸載掛裝在/mnt/cdrom目錄下的文件系統。
軟件安裝命令
1.tar
tar命令用于把多個文件合并于一個檔案文件中,并提供分解的合并后的檔案文件的功能。它獨立于壓縮工具,因此可以選擇在合并前是否壓縮。tar命令的基本用法為:
tar [選項] 文件名
常用的選項包括:
-c創建一個新的檔案文件;
-t查看檔案文件的內容;
-x分解檔案文件的內容;
-f指定檔案文件的名稱;
-v顯示過程信息;
-z采用壓縮方式。
舉例:
Tar?–czf?oracle.tar.gz/u01/app/oracle/etc/oratab/home/oracle
該命令將/u01/app/oracle目錄下的所有文件/etc/oratab文件和/home/oracl目錄下的所有文件合并到oracle.tar文件中,并采用壓縮方式。
Tar?–tzf?oracle.tar.gz
該命令列出歸檔文件oracle.tar中的所有文件列表。
Tar?–xzvf?oracle.tar.gz
該命令將歸檔文件分解并解壓縮到原有文件的路徑中
2.rpm
rpm命令的功能有很多,在這里我們只介紹如何利用rpm安裝、升級、查詢、卸載的軟件。
rpm安裝軟件包的基本語法如下:
rpm –I?rpm包名
例如:
Rpm?–I?tomcat4.rpm
該命令將安裝Tomcat軟件并進行相關系統配置;
rpm升級軟件包的基本語法如下:
rpm –U rpm包名
例如:
Rpm?–U?tomcat4.rpm
該命令將升級Tomcat軟件并進行相關系統配置;
查看已安裝的軟件,要想列出已經安裝的全部軟件包,可以通過以下命令:
Rpm?–qa
可以使用grep命令指定軟件包的名稱,或者部分名稱,如下所示:
Rpm?-qa|grep?'tomcat'
該命令將列出包名中包含tomcat的軟件包;
此外要想找出某個特定的文件到底是屬于哪個軟件包的,可以輸入:
Rpm?–qf?filename
其中filename是準備要查找其歸屬的文件名稱。要想查出某個已經安裝的軟件包的功能,可以用如下命令:
Rpm?–qi?packagename
其中packagename是要查找其用途的軟件包名稱;
使用RPM刪除軟件包就像安裝它們一樣簡單,大多數情況下用戶只需要輸入命令:
Rpm?–e?packagename
其中packagename是要查刪除的軟件包名稱。
文件查看/編輯方法介紹
cat命令介紹
cat命令的原含義為連接concatenate,用于連接多個文件內容并輸出到標準輸出流中,標準輸出流默認為屏幕。實際運用過程中我們常使用它來顯示文件內容,cat命令的常用示例如下:
catfile1.txt顯示file1.txt文件的內容
catfile1.txtfile2.txt顯示file1.txt和file2.txt文件的內容
cat-nfile1.txt顯示file1.txt文件的內容同時顯示行號
vi命令介紹
vi是VisualInterface的簡稱它可以執行輸出、刪除、查找、替換、塊操作等眾多文本操作。而且用戶可以根據自己的需要對其進行定制,這是其他編輯程序所沒有的。vi不是一個排版程序,不象Word或WPS那樣可以對字體、格式、段落等其他屬性進行編排,它只是一個文本編輯程序。vi沒有菜單,只有命令,且命令繁多。
Vi有三種基本工作模式:命令行模式、文本輸入模式和末行模式。
命令行模式:
任何時候不管用戶處于何種模式,只要按一下ESC鍵即可使vi進入命令行模式,當在shell環境下輸入vi命令啟動vi編輯器時,也是處于該模式下。在該模式下用戶可以輸入各種合法的vi命令,用于管理自己的文檔,此時從鍵盤上輸入的任何字符都被當作編輯命令來解釋。若輸入的字符是合法的,vi命令在接受用戶命令之后完成相應的動作。但需注意的是所輸入的命令并不在屏幕上顯示出來,若輸入的字符不是vi的合法命令vi會有報警提示。
文本輸入模式:
在命令模式下輸入插入命令i、附加命令a、打開命令o、修改命令c、取代命令r或替換命令s,都可以進入文本輸入模式。在該模式下,用戶輸入的任何字符都被vi當做文件內容保存起來,并將其顯示在屏幕上,在文本輸入過程中若想回到命令模式下。按ESC鍵即可;
末行模式:
在命令模式下用戶按:鍵即可進入末行模式下。此時Vi會在顯示窗口的最后一行。通常也是屏幕的最后一行。顯示一個:作為末行模式的提示符,等待用戶輸入命令。多數文件管理命令都是在此模式下執行的,如把編輯緩沖區的內容寫到文件中等。末行命令執行完后vi自動回到命令模式。若在末行模式下輸入命令過程中改變了主意,可按ESC鍵或用退格鍵將輸入的命令全部刪除之后再按一下退格鍵,即可使vi回到命令模式下。
vi的進入與退出
在shell模式下鍵入vi及需要編輯的文件名,即可進入vi。例如:
viexample.txt
即可編輯example.txt文件,如果該文件存在,則編輯界面中會顯示該文件的內容,并將光標定位在文件的第一行。如果文件不存在,則編輯界面中無任何內容,如果需要在進入vi編輯界面后將光標置于文件的第n行,則在vi命令后面加上+n參數即可。例如需要從example.txt文件的第5行開始顯示,則使用如下命令:
vi+5example.txt
退出v時,需要在末行模式中輸入退出命令q,如果在文本輸入模式下首先按ESC鍵進入命令模式,然后輸入:進入末行模式。在末行模式下可使用如下退出命令:
:q直接退出。如果在文本輸入模式下修改了文檔內容,則不能退出;
:wq保存后退出;
:x和wq一樣;
:q!不保存內容,強制退出。
vi中顯示行號
在末行模式下,輸入如下命令:
setnumber
可使vi在編輯界面中顯示行號。此外在末行模式下可使用如下‘nu’命令(number的簡寫)來顯示光標所在行的行號及該行的內容。
光標移動操作
全屏幕文本編輯器中光標的移動操作無疑是最經常使用的操作了。用戶只有熟練地使用移動光標的這些命令才能迅速準確地到達所期望的位置處進行編輯。
vi中的光標移動既可以在命令模式下也可以在文本輸入模式下,但操作的方法不盡相同,在文本輸入模式下可直接使用鍵盤上的四個方向鍵移動光標。在命令模式下有很多移動光標的方法,不但可以使用四個方向鍵來移動光標,還可以用hjkl這四個鍵代替四個方向鍵來移動光標。這樣可以避免由于不同機器上的不同鍵盤定義所帶來的矛盾,而且使用熟練后可以手不離開字母鍵盤位置就能完成所有操作,從而提高工作效率。以下命令均在命令行模式下完成光標移動:
h光標左移,如果在按h命令前輸入數字n,則光標左移n個字符;
l光標右移,如果在按l命令前輸入數字n,則光標右移n個字符;
j光標上移,如果在按j命令前輸入數字n,則光標上移n個字符;
k光標下移,如果在按k命令前輸入數字n,則光標下移n個字符;
0光標移到行首;
$光標移到行尾;
H光標移到屏幕上顯示的第一行,并不一定是文件頭;
L光標移到屏幕上顯示的最后一行,并不一定是文件尾;
M光標移到屏幕的中間一行;
nG光標移到第n行;
w或W將光標右移至下一個單詞的詞首;
e或E如果光標起始位置處于單詞內,即非單詞尾處,則該命令將把光標移到本單詞詞尾,如果光標起始位置處于單詞尾。則該命令將把光標移動到下一個單詞的詞尾;
b或B如果光標處于所在單詞內,即非單詞首,則該命令將把光標移至本單詞詞首,如果光標處于所在單詞的詞首,則該命令將把光標移到上一個單詞的詞首;
Ctrl+G狀態命令,顯示當前編輯文檔的狀態,包括正在編輯的文件名是否修改過、當前行號、文件的行數以及光標之前的行占整個文件的百分比。此外,也可以通過以下末行模式下的命令完成光標在整個文件中的移動操作。
:n光標移到文件的第n行;
:$光標移到文件的最后一行。
文本插入操作
在命令模式下,用戶輸入的任何字符都被vi當作命令加以解釋執行。如果用戶要將輸入的字符當作是文本內容時,則首先應將vi的工作模式從命令模式切換到文本輸入模式。切換的方式是使用下面的命令:
1.vi提供了兩個插入Insert命令i和I:
i命令,插入文本從光標所在位置前開始并且插入過程中可以使用;
<Backspace>鍵刪除錯誤的輸入,此時vi處于插入狀態,屏幕最下行顯示:
--INSERT--插入字樣
I命令,該命令是將光標移到當前行的行首,然后在其前插入文本;
2.附加append命令:
vi提供了兩個附加插入命令a和A:
a命令,該命令用于在光標當前所在位置之后追加新文本,新輸入的文本放在光標之后在光標后的原文本將相應地向后移動光標可在一行的任何位置;
A命令,該命令與a命令不同的是A命令將把光標挪到所在行的行尾,從那里開始插入新文本,當輸入A命令后光標自動移到該行的行尾;
a和A命令是把文本插入到行尾的唯一方法。
3.打開open命令:
不論是Insert命令也好還是append命令也好,所插入的內容都是從當前行中的某個位置開始的,若我們希望在某行之前或某行之后插入一些新行則應使用open命令。
vi提供了兩個打開命令o和O:
1.o命令,該命令將在光標所在行的下面新開一行并將光標置于該行的行首,等待輸入文本,要注意當使用<Backspace>刪除字符時只能刪除從插入模式開始的位置以后的字符,對于以前的字符不起作用;
2.O命令,和o命令相反O命令是在光標所在行的上面插入一行并將光標置于該行的行首等待輸入文本。
文本修改操作
在命令模式下可以使用vi提供的各種有關命令對文本進行修改,包括對文本內容的刪除、復制、取代和替換等。
1.文本刪除/移動:
在編輯文本時經常需要刪除一些不需要的文本,我們可以用<Backspace>鍵將輸錯或不需要的文本刪除。但此時有一個限制就是當刪到行頭之后再想刪上面那行的內容是不可能的。在命令模式下vi提供了許多刪除命令,這些命令大多是以d開頭的。
常用的有:
1.刪除單個字符:
x刪除光標處的字符,若在x之前加上一個數字n則刪除從光標所在位置開始向右的n個字符;
X刪除光標前面的那個字符,若在X之前加上一個數字n則刪除從光標前面那個字符開始向左的n個字符;
顯然這兩個命令是刪除少量字符的快捷方法。
2.刪除多個字符:
dd刪除光標所在的整行,在dd前可加上一個數字n表示刪除當前行及其后n-1行的內容;
D或d$兩命令功能一樣,都是刪除從光標所在處開始到行尾的內容;
d0刪除從光標前一個字符開始到行首的內容;
dw刪除一個單詞,若光標處在某個詞的中間,則從光標所在位置開始刪至詞尾同dd命令一樣,可在dw之前加一個數字n表示刪除n個指定的單詞。
如果用戶不小心進行了誤刪除操作也不要緊,vi提供了恢復誤操作的命令,并且可以將恢復的內容移動放在文本的任何地方恢復命令用np,其中n為需要恢復的次數。例如使用dd命令刪除了一行內容,然后使用2p命令,則被刪除的內容會被重新插入兩遍,通過dd命令及p命令的結合使用可以很方便的實現文本行的移動操作。
2.文本復制命令
yy復制光標所在的整行,在yy前可加上一個數字n表示復制當前行及其后n-1行的內容,文本行復制后通過使用上面介紹的p命令可以將文本行粘貼到任何地方。
3.取消上一命令Undo
Undo也稱復原命令,是非常有用的命令。它可以取消前一次的誤操作或不合適的操作對文件造成的影響,使之回復到這種誤操作或不合適操作被執行之前的狀態。取消上一命令有兩種形式在命令模式下鍵入字符u和U,它們的功能都是取消剛才輸入的命令恢復到原來的情況。小寫u和大寫U在具體細節上有所不同,二者的區別在于大寫U命令的功能是恢復到誤操作命令前的情況,即如果插入命令后使用U命令就刪除剛剛插入的內容,如果刪除命令后使用U命令就相當于在光標處又插入剛剛刪除的內容。這里把所有修改文本的命令都視為插入命令,也就是說U命令只能取消前一步操作。如果用U命令撤消了前一步操作,當再按U鍵時并不是撤消再前一步的操作而是撤消了剛才U命令執行的操作,也就是又恢復到第一次使用U命令之前的狀態,結果是什么都沒做。而小寫u命令的功能是把當前行恢復成被編輯前的狀態而不管此行被編輯了多少次。
4.重復命令Redo
重復命令也是一個非常常用的命令,在文本編輯中經常會碰到需要機械地重復一些操作,這時就需要用到重復命令它可以讓用戶方便地再執行一次前面剛完成的某個復雜的命令。重復命令只能在命令模式下工作在該模式下按’.’鍵既可執行一個重復命令,其結果是依賴于光標當前位置的。
文本搜索與替換操作
在進行文本編輯的時候可以需要搜索或定位特定的單詞或單詞的一部分,vi編輯器有向前或向后搜索指定模式的功能。/是vi編輯器的模式搜索命令,鍵入/后屏幕的底部會出現一行同時一個斜扛會出現在底行的行首上,且光標被放置在斜扛之后。此時可以在光標位置鍵入需要搜索的模式,輸入完成并按下ENTER鍵后編輯器將開始從光標所在的位置起向文件尾部搜索你鍵入的模式。如果輸入的模式被找到,光標將停留在找到的模式上,在找到一個匹配的模式后如果您還需要搜索下一個匹配的模式使用命令n即可,如果需要找到上一個匹配的模式則使用N命令即可。
此外?命令也是模式搜索命令,與/的區別在于/是從光標當前所在位置向文件尾部搜索,而?命令則是由光標當前所在位置向文件頭部搜索。
文本替換操作需要使用末行模式進行操作即所有文本替換操作命令均以:開頭。
文本替換命令的格式為:
:s/text1/text2
用于將光標所在段落搜索到的第一個text1替換為text2;
:s/text1/text2/g
用于將光標所在段落的所有text1替換為text2;
:m,ns/text1/text2/g
用于將從m行開始至n行結束的所有搜索到的text1替換為text2,其中可以使用$表示末行即1,$表示替換文檔中的所有符合條件的字符。
head及tail命令介紹
當需要查看一個文本文件的頭部或尾部時,head命令及tail命令可以非常方便的完成該操作。head命令用于查看一個文本文件的開頭部分,而tail命令則用于顯示文本文件的末尾幾行。這兩個命令舉例如下:
Head example.txt 顯示文件example.txt的前十行內容;
Head -n20 example.txt 顯示文件example.txt的前二十行內容;
Tail example.txt 顯示文件example.txt的后十行內容;
Tail -n20 example.txt 顯示文件example.txt的后二十行內容;
Tail –f example.txt 顯示文件example.txt的后十行內容并在文件內容增加后自動顯示新增的文件內容。
最后一條命令非常有用,尤其在監控日志文件時可以在屏幕上一直顯示新增的日志信息。
網絡配置及操作
網絡配置命令
Linux系統中最常用的網絡配置命令包括ifconfig和route,其中ifconfig用來查看和配置網絡接口,通常是網卡信息,包括網絡接口設備的IP地址、掩碼等。route用來管理Linux系統內核中的路由表,它最大的用途就是用來設定靜態的路由表項,通常是在系統用ifconfig配置網絡接口后,用它來設定主機或者一網段的IP地址應該通過什么接口發送。
ifconfig
ifconfig的語法為:
ifconfig[-a][-V][-s]<interface>[[<AF>]<address>]
[[-]broadcast[<address>]]
[netmask<address>]
[up|down]
其中interface為網卡名,address為IP地址,broadcast表示設置廣播地址,其后的address為廣播地址的IP,netmask表示設置子網掩碼,其后的address為子網掩碼的IP。Up、down設置當前網卡的狀態up,表示啟用當前網卡,down表示關閉當前網卡。
Ifconfig的常用參數說明如下:
-a 查看所有網卡狀態;
-V 查看ifconfig命令的版本信息;
-s 查看統計信息;
示例:
1.將第一塊網卡的IP地址設置為192.168.0.1:
Ifconfig eth0 192.168.0.1 (格式:ifconfig 網絡設備名 IP地址)
2.暫時關閉或啟用網卡:
關閉第一塊網卡:ifconfig eth0 down
啟用第一塊網卡:ifconfig eth0 up
3.將第一塊網卡的子網掩碼設置為255.255.255.0:
ifconfig eth0 netmask 255.255.255.0(格式:ifconfig 網絡設備名 netmask子網掩碼)
我們也可以同時設置IP地址和子網掩碼:
ifconfigeth0192.168.0.1netmask255.255.255.0
4.查看第一塊網卡的狀態:
ifconfig?eth0
如果要查看所有的網卡狀態,則直接使用不帶參數的ifconfig命令即可。ifconfig輸出的幾個狀態比較重要:
UP/DOWN:網卡是否啟動了,如果是DOWN的話,那肯定無法用的;
RXpackets中的errors包的數量如果過大說明網卡在接收時有問題;
TXpackets中的errors包的數量如果過大說明網卡在發送時有問題。
route
route命令的語法為:
route[-CFvnee]
route[-v][-Afamily]add[-net|-host]target[netmaskNm][gwGw]
[metricN][mod][reinstate][[dev]If]
route[-v][-Afamily]del[-net|-host]target[gwGw][netmaskNm][metric
N][[dev]If]
route[-V][--version][-h][--help]
route的常用參數說明如下:
-v 使用冗余輸出模式;
-A family 指定特定的地址族(例如"inet"、"inet6");
-n 使用數字顯示的地址(例如:202.38.75.75)而不是去解釋域名;
-e 使用與netstat相同的輸出格式;
-ee 參數會產生很長的輸出,包括內核路由表的幾乎所有信息;
-net 目標target是一個網段;
-host 目標target是一個單獨的主機;
-F 顯示內核FIB路由表,結果可能被-e和-ee參數改變;
-C 顯示內核中路由緩存信息;
del?刪除一個路由表項;
add?增加一個路由表項;
Target 配置的目的網段或者主機,可以是IP或者是網絡或主機名;
netmask?Nm 用來指明要添加的路由表項的網絡掩碼;
gw?Gw 任何通往目的target的IP分組都要通過這個網關
metric M 設置路由表中該項的尺度域(metric field)為M。
示例:
1.添加一條路由表項網段192.168.0.x應該從接口"eth0"走:
route?add?–net?192.168.0.0?netmask?255.255.255.0?dev?eth0
2.添加一條缺省路由:
route add 0.0.0.0 gw 網關地址
如果沒有其他匹配的路由項,就使用這個路由規則;
3.刪除缺省路由:
route del 0.0.0.0 gw 網關地址
4.route命令的輸出有以下幾欄:
Destination 目標網段或者主機;
Gateway 網關地址如果沒有設置則是"*"表示;
Genmask 網絡掩碼;
Flags一些可能的標記如下:
U (路由是活動的);
H (目標是一個主機);
G (使用網關gateway);
R (reinstate route動態路由產生的表項);
D?(dynamically?installed?by?daemon?or?redirect);
M?(modified?from?routing?daemon?or?redirect);
!??(reject?route);
Metric 路由距離;
Ref 路由項引用次數;
Use 查找路由項的次數;
Iface 該路由表項對應的輸出接口。
網絡操作命令
Linux系統常用的網絡操作命令包括netstat、nslookup、host、finger和ping。
netstat命令的功能是顯示網絡連接、路由表和網絡接口信息,可以讓用戶得知目前都有哪些網絡連接正在運作。nslookup命令的功能是查詢一臺機器的IP地址和其對應的域名。它通常需要一臺域名服務器來提供域名服務。如果用戶已經設置好域名服務器,就可以用這個命令查看不同主機的IP地址對應的域名。host命令可根據主機名查詢主機的IP地址或根據主機IP地址查詢主機名。finger命令的功能是查詢用戶的信息,通常會顯示系統中某個用戶的用戶名、主目錄、停滯時間、登錄時間、登錄shell等信息。ping命令用于查看網絡上的主機是否在工作。
netstat
netstat命令的語法為:
netstat [選項]
netstat的常用參數說明如下:
-a 顯示所有socket包括正在監聽的;
-c 每隔1秒就重新顯示一遍直到用戶中斷它;
-I?顯示所有網絡接口的信息格式同“ifconfig–e”;
-n 以網絡IP地址代替名稱顯示出網絡連接情形;
-r 顯示核心路由表格式同“route–e”;
-t 顯示TCP協議的連接情況;
-u 顯示UDP協議的連接情況;
-v 顯示正在進行的工作。
示例:
在本機使用netstat命令,其輸出為如下:
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address ??????????Foreign Address ????????State ????
tcp ???????0 ???256 10.153.89.66:ssh ???????10.153.21.168:1054 ?????ESTABLISHED ?
tcp ???????0 ?????0 10.153.89.66:ssh ???????10.153.21.166:1222 ?????ESTABLISHED ?
tcp ???????0 ?????0 10.153.89.66:1521 ??????10.153.21.166:2625 ?????ESTABLISHED ?
tcp ???????0 ?????0 10.153.89.66:1521 ??????10.153.21.166:2623 ?????ESTABLISHED ?
……?
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags ??????Type ??????State ????????I-Node Path
unix ?9 ?????[ ] ????????DGRAM ???????????????????919 ???/dev/log
unix ?2 ?????[ ] ????????STREAM ????CONNECTED ????50246124 ?
unix ?3 ?????[ ] ????????STREAM ????CONNECTED ????3914245
/tmp/.ICE-unix/dcop18694-1074144356
unix ?3 ?????[ ] ????????STREAM ????CONNECTED ????3914244 ?
unix ?3 ?????[ ] ????????STREAM ????CONNECTED ????3914127 /tmp/.X11-unix/X0
nslookup
nslookup命令的功能是查詢一臺機器的IP地址和其對應的域名。它通常需要一臺域名服務器來提供域名服務。如果用戶已經設置好域名服務器,就可以用這個命令查看不同主機的IP地址對應的域名。命令的語法為:
nslookup [IP地址/域名]
示例:
在本機執行nslookup命令:
Default?Server:name.tlc.com.cn
Address:192.168.1.99
>
在符號”>”后面輸入要查詢的IP地址或域名并回車即可。如果要退出該命令輸入exit并回車即可。
host
host命令的功能基本與nslookup相同。命令的語法為:
host [選項][IP地址/域名/主機名]
host 的常用參數如下:
-a 顯示所查域名或IP地址、域名或主機名的相關信息。
示例:
[root]#host?zte.com.cn
zte.com.cn?has?address172.16.1.1
finger
finger命令的功能是查詢用戶的信息,通常會顯示系統中某個用戶的用戶名、主目錄、停滯時間、登錄時間、登錄shell等信息。如果要查詢遠程機上的用戶信息,需要在用戶名后面接“@主機名”,采用[用戶名@主機名]的格式,不過要查詢的網絡主機需要運行finger守護進程。該命令的一般格式為:
finger [選項] [使用者] [用戶@主機]
finger的常用參數如下:
-s 顯示用戶的注冊名、實際姓名、終端名稱、寫狀態、停滯時間、登錄時間等信息;
-l 除了用-s選項顯示的信息外,還顯示用戶主目錄、登錄shell、郵件狀態等信息,以及用戶主目錄下的.plan、.project和.forward文件的內容;
-p 除了不顯示.plan文件和.project文件以外與-l選項相同。
示例:
1.顯示用戶orcale的信息:
finger?oracle
其顯示結果為:
Login: oracle ??????????????????????????Name: (null)
Directory: /home/oracle ????????????????Shell: /bin/bash
On since Fri Feb ?6 16:26 (CST) on pts/1 from 10.153.21.166 ?33 seconds
idle
On since Wed Feb ?4 20:10 (CST) on pts/2 from 10.153.21.166 ??1 second
idle
No mail.
No Plan.
Ping命令
ping命令用于查看網絡上的主機是否在工作,它向該主機發送ICMPECHO_REQUEST包。有時我們想從網絡上的某臺主機上下載文件,可是又不知道那臺主機是否開著,就需要使用ping命令查看。該命令的一般格式為:
ping [選項] [主機名/IP地址]
ping的常用參數如下:
-c 數目 在發送指定數目的包后停止;
-d 設定SO_DEBUG的選項;
-f 大量且快速地送網絡封包給一臺機器看它的回應;
-I 秒數 設定間隔幾秒送一個網絡封包給一臺機器預設值是一秒送一次;
-l 次數 在指定次數內以最快的方式送封包數據到指定機器只有超級用戶可以使用此選項;
-q 不顯示任何傳送封包的信息只顯示最后的結果;
-r 不經由網關而直接送封包到一臺機器,通常是查看本機的網絡接口是否有問題;
-s 字節數 指定發送的數據字節數,預設值是56,加上8字節的ICMP頭,一共是64ICMP數據字節。
常用網絡配置文件介紹
在Linux系統中,TCP/IP網絡是通過若干個文本文件進行配置的,需要編輯這些文件來完成聯網工作。系統中重要的有關網絡配置文件為:
/etc/sysconfig/network
/etc/hosts
/etc/services
/etc/host.conf
/etc/nsswitch.conf
/etc/resolv.conf
/etc/xinetd.conf
/etc/modules.conf
/etc/sysconfig/network-scripts/ifcfg-ethN
這些文件都可以在系統運行時進行修改,不用啟動或者停止任何守護程序,更改會立刻生效(除了/etc/sysconfig/network)。另外這些文件都支持由"#"開頭的注釋,每一個文
件都可以用man命令來獲取它們。
該文件用來指定服務器上的網絡配置信息,包含了控制和網絡有關的文件和守護程序的行為的參數。下面是一個例子文件:
NETWORKING=yes
HOSTNAME=machine1
GATEWAY=210.34.6.2
FORWARD_IPV4=yes
GATEWAYDEV=
其中NETWORK=yes/no表示網絡是否被配置;
HOSTNAME=hostname?hostname表示服務器的主機名;
GATEWAY=gw-ip?gw-ip表示網絡網關的IP地址;
FORWARD_IPV4=yes/no是否開啟IP轉發功能;
GAREWAYDEV=gw-dev?gw-dw表示網關的設備名,如eth0等。
/etc/hosts中包含了IP地址和主機名之間的映射,還包括主機名的別名,IP地址的設計使計算機容易識別,但對于人卻很難記住它們,為了解決這個問題,創建了/etc/hosts這個文件。下面是一個例子文件:
127.0.0.1 machine1 localhost.localdomain localhost
192.168.1.100 machine7
192.168.1.101 otherpc otheralias
在這個例子中,本機名是machine1,otherpc還有別名otheralias,它可以指向otheralias。一旦配置完機器的網絡配置文件,應該重新啟動網絡以使修改生效使用下面的命令來重新啟動網絡:
service?network?restart
/etc/hosts文件通常含有主機名、localhost和系統管理員經常使用的系統別名,有時候telnet到Linux機器要等待很長時間,可以通過在"/etc/hosts"加入客戶的機器的IP地址和主機名的匹配項,就可以減少登錄等待時間。在沒有域名服務器情況下,系統上的所有網絡程序都通過查詢該文件來解析對應于某個主機名的IP地址,否則,其他的主機名通常使用DNS來解決,DNS客戶部分的配置在文件/etc/resolv.conf中。
/etc/services中包含了服務名和端口號之間的映射,不少的系統程序要使用這個文件,下面是缺省的/etc/services中的前幾行:
tcpmux 1/tcp ??????????????????????# TCP port service multiplexer
echo 7/tcp ?
echo 7/udp ?
discard 9/tcp sink null ?
discard 9/udp sink null ?
systat 11/tcp users ?
最左邊一列是主機服務名,中間一列是端口號,“/”后面是端口類型,可以是TCP也可以是UDP。任何后面的列都是前面服務的別名。在這個文件中也存在著別名,它們出現在端口號后面,在上述例子中sink和null都是discard服務的別名。
/etc/host.conf文件指定如何解析主機名,Linux通過解析器庫來獲得主機名對應的IP地址。下面是安裝后缺省的"/etc/host.conf"內容:
order?hosts.bind
multi?on
"order" 指定主機名查詢順序,其參數為用逗號隔開的查找方法,支持的查找方法為bind、hosts和nis,分別代表DNS、/etc/hosts和NIS。這里規定先查詢"/etc/hosts"文件然后再使用DNS來解析域名。
"trim" 表明當通過DNS進行地址到主機名的轉換時,域名將從主機名中被裁剪掉,trim可以被多個域包含多次,對/etc/hosts和NIS查詢方法不起作用,注意在/etc/hosts和NIS表中主機名是被適當地(有或沒有全域名)列出的。
"multi" 指定是否"/etc/hosts"文件中指定的主機可以有多個地址,值為on表示允許,擁有多個IP地址的主機一般稱為具有多個網絡界面;
"nospoof" 指是否允許對該服務器進行IP地址欺騙值,為on表示不允許,IP欺騙是一種攻擊系統安全的手段,通過把IP地址偽裝成別的計算機來取得其它計算機的信任;
"alert" 當nospoof指令為on時,alert控制欺騙的企圖是否用syslog工具進行記錄,值為on表示使用,缺省值為off;
rccorder" 如果被設置為on,所有的查詢將被重新排序所以在同一子網中的主機將首選被返回,缺省值為off。
/etc/nsswitch.conf文件是由Sun公司開發并用于管理系統中多個配置文件查找的順序,它比/etc/host.conf文件提供了更多的功能。/etc/nsswitch.conf中的每一行或者是注釋(以#號開頭)或者是一個關鍵字后跟冒號和一系列要試用的有順序的方法。每一個關鍵字是在/etc/目錄可以被/etc/nsswitch.conf控制的/etc文件的名字。下面是可以被包含的關鍵字:
aliases 郵件別名;
passwd 系統用戶;
group 用戶組;
shadow 隱蔽口令;
hosts 主機名和IP地址;
networks 網絡名和號;
protocols 網絡協議;
services 端口號和服務名稱;
ethers 以太網號;
rpc 遠程進程調用的名稱和號;
netgroup 網內組。
文件/etc/resolv.conf配置DNS客戶,它包含了主機的域名搜索順序和DNS服務器的地址,每一行應包含一個關鍵字和一個或多個的由空格隔開的參數。
下面是一個例子文件:
nameserver?192.168.0.36
nameserve?r192.168.0.37
search?zte.com.cn
合法的參數及其意義如下:
nameserver表明DNS服務器的IP地址??梢杂泻芏嘈械膎ameserver,每一個帶一個IP地址。在查詢時就按nameserver在本文件中的順序進行,且只有當第一個nameserver沒有反應時才查詢下面的nameserver。
domain聲明主機的域名,很多程序用到它,如郵件系統。當為沒有域名的主機進行DNS查詢時,也要用到。如果沒有域名,主機名將被使用,刪除所有在第一個點(.)前面的內容。
search它的多個參數指明域名查詢順序,當要查詢沒有域名的主機,主機將在由search聲明的域中分別查找。domain和search不能共存,如果同時存在后面出現的將會被使用。
sortlist允許將得到域名結果進行特定的排序。它的參數為網絡/掩碼對,允許任意的排列順序。
xinetd的默認配置文件是/etc/xinetd.conf。配置文件格式為
serviceservice-name
{
disabled=yes/no; //是否禁用
socket_type=xxx;?//TCP/IPsockettype,suchasstream,dgram,raw,....
protocol=xxx; //服務使用的協議
server=xxx; //服務daemon的完整路徑
server_args=xxx; //服務的參數
port=xxx; //指定服務的端口號
wait=xxx; //是否阻塞服務即單線程或多線程
user=xxx; //服務進程的uid
group=xxx;?//gid
REUSE=xxx; //可重用標志
......
}
示例:
1.配置ftp服務
在/etc/xinetd.d目錄下編輯vsftpd:
#default:on
#description:Thewu-ftpdFTPserverservesFTPconnections.Ituses
\
#normal,unencryptedusernamesandpasswordsforauthentication.
service?ftp
{
disable=no
socket_type=stream
wait=no
user=root
server=/usr/sbin/in.ftpd
server_args=-l-a
log_on_success+=DURATION
nice=10
}
2配置telnet服務
在/etc/xinetd.d目錄下編輯telnet:
#default:on
service?telnet
{
disable=no
flags=REUSE
socket_type=stream
wait=no
user=root
server=/usr/sbin/in.telnetd
log_on_failure+=USERID
}
配置完成后,重新啟動服務:
#/etc/rc.d/init.d/xinetd?restart
該配置文件定義了各種需要在啟動時加載的模塊的參數信息,文件格式如下:
alias?eth0?tg3
alias?eth13?c905
系統網絡設備的配置文件保存在“/etc/sysconfig/network-scripts”目錄下,ifcfg-eth0包含第一塊網卡的配置信息,ifcfg-eth1包含第二塊網卡的配置信息。
下面是“/etc/sysconfig/network-scripts/ifcfg-eth0”文件的示例:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.66
NETMASK=255.255.255.0
GATEWAY=192.168.0.65
若希望手工修改網絡地址或在新的接口上增加新的網絡界面,可以通過修改對應的文件(ifcfg-ethN)或創建新的文件來實現。
常用網絡操作方法
Linux提供了一組強有力的網絡命令來為用戶服務,這些工具能夠幫助用戶登錄到遠程計算機上、傳輸文件和執行遠程命令等。本節介紹下列幾個常用的有關網絡操作的命令ftp、telnet、r-等。
ftp遠程文件傳輸
ftp命令是標準的文件傳輸協議的用戶接口。ftp是在TCP/IP網絡上的計算機之間傳輸文件的簡單有效的方法。它允許用戶傳輸ASCII文件和二進制文件。在ftp會話過程中,用戶可以通過使用ftp客戶程序連接到另一臺計算機上。從此用戶可以在目錄中上下移動、列出目錄內容、把文件從遠程機拷貝到本地機上、把文件從本地機傳輸到遠程系統中。需要注意的是,如果用戶沒有那個文件的存取權限,就不能從遠程系統中獲得文件或向遠程系統傳輸文件。為了使用ftp來傳輸文件,用戶必須知道遠程計算機上的合法用戶名和口令,這個用戶名/口令的組合用來確認ftp會話,并用來確定用戶對要傳輸的文件可以進行什么樣的訪問。
ftp命令的一般格式如下:
$ftp 主機名/IP,如果沒有指定主機名ftp將給出提示符等待用戶輸入命令;
$ftp
ftp>
此時在ftp>提示符后面輸入open命令加主機名或IP地址,將試圖連接指定的主機。不管使用哪一種方法,如果連接成功,需要在遠程機上登錄。用戶如果在遠程機上有帳號,就可以通過ftp使用這一帳號并需要提供口令。在遠程機上的用戶帳號的讀寫權限決定該用戶在遠程機上能下載什么文件和將上載文件放到哪個目錄中。
一旦用戶使用ftp在遠程站點上登錄成功將,得到“ftp>“提示符。現在可以自由使用ftp提供的命令,可以用help命令取得可供使用的命令清單,也可以在help命令后面指定具體的命令名稱,獲得這條命令的說明。
最常用的命令有:
ls 列出遠程機的當前目錄;
cd 在遠程機上改變工作目錄;
lcd 在本地機上改變工作目錄;
ascii 設置文件傳輸方式為ASCII模式,默認情況下,ftp按ASCII模式傳輸文件用戶也可以指定其他模式。ascii和brinary命令的功能是設置傳輸的模式。用ASCII模式傳輸文件對純文本是非常好的,但為避免對二進制文件的破壞,用戶可以以二進制模式傳輸文件;
binary 設置文件傳輸方式為二進制模式;
close 終止當前的ftp會話;
hash 每次傳輸完數據緩沖區中的數據后就顯示一個#號;
get(mget) 從遠程機傳送指定文件到本地機,get命令的一般格式為:
get 文件名
mget 命令一次獲取多個遠程文件,mget命令的一般格式為:
mget 文件名列表;
使用用空格分隔的或帶通配符的文件名列表來指定要獲取的文件,對其中的每個文件都要求用戶確認是否傳送;
put(mput) 從本地機傳送指定文件到遠程機,put命令的一般格式為:
put 文件名
mput 命令一次發送多個本地文件mput命令的一般格式為:
mput 文件名列表;
使用用空格分隔的或帶通配符的文件名列表來指定要發送的文件,對其中的每個文件都要求用戶確認是否發送;
open 連接遠程ftp站點;
quit 斷開與遠程機的連接并退出ftp;
? 顯示本地幫助信息;
! 轉到Shell中;
示例:
使用ftp傳輸文件過程如下:
[root@localhost root]# ftp 192.168.1.66
Connected to 192.168.1.66 (192.168.1.66).
220 localhost.localdomain FTP server (Version wu-2.6.2-5) ready.
Name (192.168.1.66:root): test
331 Password required for test.
Password:
230 User oracle logged in. ?Access restrictions apply.
telnet
用戶使用telnet命令進行遠程登錄,該命令允許用戶使用telnet協議在遠程計算機之間進行通信,用戶可以通過網絡在遠程計算機上登錄,就像登錄到本地機上執行命令一樣。為了通過telnet登錄到遠程計算機上,必須知道遠程機上的合法用戶名和口令。雖然有些系統確實為遠程用戶提供登錄功能,但出于對安全的考慮,要限制來賓的操作權限,因此這種情況下能使用的功能是很少的。當允許遠程用戶登錄時,系統通常把這些用戶放在一個受限制的shell中,以防系統被懷有惡意的或不小心的用戶破壞。用戶還可以使用telnet從遠程站點登錄到自己的計算機上,檢查電子郵件、編輯文件和運行程序,就像在本地登錄一樣。但是用戶只能使用基于終端的環境而不是XWndows環境,telnet只為普通終端提供終端仿真,而不支持XWndow等圖形環境。
telnet命令的一般形式為:
telnet 主機名/IP
其中“主機名/IP”是要連接的遠程機的主機名或IP地址。如果這一命令執行成功將從遠程機上得到login:提示符。
使用telnet命令登錄的過程如下:
$telnet 主機名/IP
一旦telnet成功地連接到遠程系統上,就顯示登錄信息并提示用戶輸人用戶名和口令。如果用戶名和口令輸入正確,就能成功登錄并在遠程系統上工作。在telnet提示符后面可以輸入很多命令,用來控制telnet會話過程,在telnet聯機幫助手冊中對這些命令有詳細的說明。
示例:
#telnet?192.168.1.66
Trying?192.168.1.66...
Connected?to?192.168.1.66.
Escapecharacteris'^]'.
login:?test
Password:
Last?login:?Mon?Feb?9?15:03:56?from?10.153.21.166
r-系列命令
除ftp和telnet以外,還可以使用r-系列命令訪問遠程計算機和在網絡上交換文件。使用r-系列命令需要特別注意,因為如果用戶不小心就會造成嚴重的安全漏洞。用戶發出一個r-系列命令后,遠程系統檢查名為/etc/hosts.equiv的文件,以查看用戶的主機是否列在這個文件中。如果它沒有找到用戶的主機就檢查遠程機上同名用戶的主目錄中名為.rhosts的文件,看是否包括該用戶的主機如果該用戶的主機包括在這兩個文件中的任何一個之中,該用戶執行r-系列命令就不用提供口令。
rlogin命令:
rlogin是“remote login”(遠程登錄)的縮寫。該命令與telnet命令很相似,允許用戶啟動遠程系統上的交互命令會話。rlogin的一般格式是:
rlogin [ -8EKLdx ] [ -e char ] [-k realm ] [ - l username ] host ?
一般最常用的格式是:
rlogin?host
rsh命令:
rsh是“remote shell”(遠程shell)的縮寫。該命令在指定的遠程主機上啟動一個shell并執行用戶在rsh命令行中指定的命令。如果用戶沒有給出要執行的命令,rsh就用rlogin命令使用戶登錄到遠程機上,rsh命令的一般格式是:
rsh [-Kdnx] [-k realm] [-l username] host [command] ?
一般常用的格式是:
rsh?host?[command]
command可以是從shell提示符下鍵入的任何Linux命令。
常用使用技巧
Linux下軟件包的安裝及卸載
在Linux操作系統下,幾乎所有的軟件均通過RPM進行安裝卸載及管理等操作。RPM的全稱為Redhat Package Manager,是由Redhat公司提出的用于管理Linux下軟件包的軟件。Linux安裝時,除了幾個核心模塊以外,其余幾乎所有的模塊均通過RPM完成安裝。RPM有五種操作模式分別為安裝、卸載、升級、查詢和驗證。
RPM安裝操作
命令:
rpm –I?需要安裝的包文件名
舉例如下:
rpm-I?example.rpm 安裝example.rpm包;
rpm -iv example.rpm 安裝example.rpm包并在安裝過程中顯示正在安裝的文件信息;
rpm –ivh example.rpm 安裝example.rpm包并在安裝過程中顯示正在安裝的文件信息及安裝進度。
RPM查詢操作
命令:
rpm?–q xxx
附加查詢命令:
a 查詢所有已經安裝的包。
以下兩個附加命令用于查詢安裝包的信息:
i 顯示安裝包的信息;
l 顯示安裝包中的所有文件被安裝到哪些目錄下;
s 顯示安裝版中的所有文件狀態及被安裝到哪些目錄下。
以下兩個附加命令用于指定需要查詢的是安裝包還是已安裝后的文件:
p 查詢的是安裝包的信息;
f 查詢的是已安裝的某文件信息。
舉例如下:
rpm -qa|grep tomcat4 查看tomcat4是否被安裝;
rpm –qip example.rpm 查看example.rpm安裝包的信息;
rpm -qif /bin/df 查看/bin/df文件所在安裝包的信息;
rpm –qlf /bin/df 查看/bin/df文件所在安裝包中的各個文件分別被安裝到哪個目錄下;
RPM卸載操作
命令:
rpm –e 需要卸載的安裝包;
在卸載之前通常需要使用”rpm –q xx”命令查出需要卸載的安裝包名稱。
舉例如下:
rpm –et omcat4 卸載tomcat4軟件包
RPM升級操作
命令:
rpm –U 需要升級的包
舉例如下:
rpm –Uvh example.rpm 升級example.rpm軟件包
RPM驗證操作
命令:
rpm –V 需要驗證的包
舉例如下
rpm?–Vf?/etc/tomcat4/tomcat4.conf
輸出信息類似如下:
S.5?....T?c?/etc/tomcat4/tomcat4.conf
其中,S表示文件大小修改過,T表示文件日期修改過。
RPM的其他附加命令
--force 強制操作如強制安裝刪除等;
--requires 顯示該包的依賴關系;
--nodeps 忽略依賴關系并繼續操作。
Linux操作系統的時鐘系統
時鐘系統介紹
對于Linux操作系統,主要有兩種時鐘系統:
1.硬件時鐘系統:該時鐘系統的運行獨立于任何系統控制程序,在CPU內部運行,既使系統斷電,該時鐘系統仍然保持運行。此時鐘系統常常被稱為實時時鐘系統RTC、BIOS時鐘系統或CMOS時鐘系統。
2.系統時間:該時間為Linux內核的時鐘系統所維護,并且被定時中斷程序所驅動。該時間僅當Linux系統運行過程中有意義,該系統時間表示為以UTC(通用協調時間 Universal Time Coordinated)計算。自1970年1月1日0時0分0秒起至當前時刻所經過的秒數(該數字不是整數以小數方式表示精度)。
在Linux系統中,真正起作用的是系統時間。硬件時鐘系統的唯一作用是在Linux系統沒有運行時,保持時間的運行。當Linux操作系統啟動時系統會自動將硬件時鐘系統的時間同步到Linux系統時間,并且在之后的整個Linux運行過程中不再使用該硬件時鐘系統。而在Linux操作系統關閉時,系統會自動將當前的Linux系統時間同步到硬件時鐘系統所維護的時間。
硬件時鐘系統與系統時間的同步
/sbin/hwclock用于同步硬件時鐘系統的時間與Linux操作系統時間。
查看當前硬件時鐘系統時間的命令為:
/sbin/hwclock?--show
將硬件時鐘系統時間同步到Linux操作系統時間的命令為:
/sbin/hwclock?--hctosys
將Linux操作系統時間同步到硬件時鐘系統時間的命令為:
/sbin/hwclock?--systohc
如果觀察系統啟動/關閉時執行的初始化腳本”/etc/rc.d/rc.sysinit”,可以發現系統啟動過程中,自動調用“/sbin/hwclock –hctosys”將硬件時鐘系統時間同步到操作系統時間;而在系統關閉過程中,自動調用“/sbin/hwclock –systohc”將操作系統時間同步到硬件時鐘系統時間。
系統信息及運行狀態監控
Linux的文件系統中,有一個特殊目錄“/proc”,該目錄下列出的文件并非保存在磁盤上,而是內存中的一個映像。在該目錄下可以找到許多有意思的東西,例如:
/proc/cpuinfo 本機CPU的相關信息
/proc/meminfo 本機內存及交換分區的使用信息
/proc/modules 本機已安裝的硬件模塊信息
/proc/mounts 本機已掛載mount上的設備信息
此外,該目錄下有一些以數字為名稱的子目錄,每個子目錄用于維護一個正在運行的進程,而目錄名即為相應的進程ID。例如進入名稱為“1”的子目錄:
cd?/proc/1
該目錄下,文件cmdline中的內容為該進程運行時執行的命令行,environ文件中的內容為該進程運行時的環境變量信息,stat文件中存放的時該進程運行的狀態信息等。
通過查看/proc目錄下的文件,可以獲取幾乎所有的系統信息及系統的運行狀態信息。事實上,Linux下的諸多查詢系統狀態信息的命令,也是通過讀取該目錄下的文件而獲取的。
以下是一些用于查看系統狀態信息的命令。
df命令
用于查看Linux文件系統的狀態信息,顯示各個分區的容量、已使用量、未使用量及掛載點等信息。如:
df –k 以千字節KB為單位顯示各分區的信息;
df –a 顯示所有分區包括大小為0的分區;
df –T 顯示分區類型;
du命令
用于查看文件或文件夾的大小,如:
du –b /home 以字節為單位顯示/home文件夾下各個子文件夾的大小;
du –ks /home以千字節KB為單位顯示/home文件夾的總大小
top命令
用于實時查看系統狀態信息。運行該命令后屏幕上會顯示如下信息:
CPU狀態(CPU states):包括用戶進程占用比率、系統進程占用比率、用戶的nice優先級進程占用比率及空閑CPU資源比率等;
內存狀態(Mem);包括內存總量、使用量、空閑量等;
交換分區狀態(Swap);包括交換分區總量、使用量、空閑量等;
每個進程的狀態:包括進程ID、用戶名、優先級、CPU和內存使用量,以及運行該進程時執行的命令行;
執行top命令后,每隔5秒,系統會自動刷新一次狀態信息。如果要指定刷新間隔,在啟動時加入-d參數即可。例如:
top –d 1 啟動top并且每隔1秒刷新一次
進入top,后按下如下按鈕會有相應功能:
空格 立即刷新顯示信息;
M 按內存使用量排序;
N 按進程ID排序;
P 按CPU使用量排序;
c 擴展命令行信息,顯示完整的命令行;
? 顯示幫助信息;
q 退出top程序。
iostat命令
統計并輸出CPU使用信息及特定設備或分區的IO信息。
iostat –c 僅顯示CPU使用情況統計信息;
iostat –d 僅顯示設備/分區使用情況統計信息;
iostat –d 2 統計設備/分區使用情況并每隔2秒刷新一次;
顯示的IO統計信息中各部分說明如下:
tps 設備每秒收到的IO傳送請求數;
Blk_read/s 設備每秒讀入的塊數量;
Blk_wrtn/s 設備每秒寫入的塊數量;
Blk_read 設備讀入的總塊數量;
Blk_wrtn 設備寫入的總塊數量;
顯示的CPU統計信息,各部分的含義同top。
打包/壓縮工具tar
tar是Linux下最常用的打包、壓縮工具,它在Linux中扮演類似于WinZip或
WinRAR在Windows下的角色。下面是該工具的常用命令參數及運用舉例。
主要命令:
-c 創建包;
-x 解包‘
-t 列出包中的內容;
-r 增加文件到指定包中;
-u 更新包中的文件。
可選命令:
-j 創建或解開包時使用bzip2進行壓縮或解壓;
-z 創建或解開包時使用gzip進行壓縮或解壓;
-Z 創建或解開包時使用compress進行壓縮或解壓;
-f 后面跟指定的包文件名;
-v 顯示打包/解包過程;
-C 指定解包后的路徑。
例如:
tar –czf tmp.tar.gz /tmp 將/tmp目錄壓縮打包,存放為tmp.tar.gz;
tar –xzf tmp.tar.gz -C /home將tmp.tar.gz包解到/home目錄下;
tar –t tmp.tar.gz 查看tmp.tar.gz包中的文件信息;
文件及文件內容的查找
Linux下提供完善的文件及文件內容查找命令,分別介紹如下。
文件查找命令find
find命令用于查找文件系統中的指定文件,其命令格式為:
find 要查找的路徑 表達式
例如
find . -name1.txt 在當前目錄及其子目錄下查找文件1.txt;
find /tmp -name1.txt 在/tmp目錄及其子目錄下查找文件1.txt;
文件內容查找命令grep
grep命令用于查找指定的模式匹配,格式為:
grep [命令選項] 要查找的匹配模式 [要查找的文件]
例如:
grep cams test.txt 在test.txt文件中查找cams字符串;
grep –r cams /root/cams 在/root/cams目錄及其子目錄下的所有文件中查找cams字符串;
grep命令除了能夠查找文件外,還能夠將任意輸出流重定向到grep進行查找:
ps- ef|grep ora 查找進程名中包含ora的所有進程信息;
Linux的系統服務及其配置
服務簡介
Linux系統服務是在Linux啟動時自動加載,并在Linux退出時自動停止的系統任務。在Linux啟動過程中,我們可以看得很多“starting…”提示信息,該信息表示正在啟動系統服務。而在Linux退出時我們也能夠看到相應的“Stopping…”信息,表示系統服務正在停止。Linux自身有許多系統任務,如network服務用于支持網絡連接等。
啟動和停止服務
service命令用于啟動及停止某個服務,例如:
service zte stop 停止zte服務
service oracle?start 啟動oracled服務
service tomcat4 start 啟動tomcat4服務
CAMS引入的三個服務間有依賴關系,即zte服務和tomcat4服務依賴與oracled服務,在oracled服務啟動前不能啟動zte服務和tomcat4服務,而在oracled服務停止前必須先停止zte服務和tomcat4服務。
服務的添加刪除自動運行及狀態
CAMS在安裝過程中會自動添加相關的服務,在安裝的最后過程中會提示用戶是否啟動服務使服務生效。需要注意的是一個服務被添加后并不表示該服務在系統啟動過程中會自動運行,僅表示可以使用service命令來啟動、停止服務:
添加服務的步驟為:
chkconfig --add zte
將服務添加以后,該服務即可以使用service來啟動/停止了。
刪除服務:
如果要刪除某項服務將上述命令的add改為del即可:
chkconfig --del zte
3.設置服務自動運行
Linux運行有7種運行級別,分別使用0-6來表示,控制臺界面運行級別為3,圖形界面運行級別為5。要使某服務在系統啟動時自動運行,使用chkconfig將該服務添加到相應級別的自啟動服務列表中即可:
chkconfig --evel 35 zte on
上面的命令將zte服務添加到級別為3、5的自啟動服務列表中,而下面的命令則將服務zte從級別為3、5的自啟動服務列表中刪除:
chkconfig –level 35 zte off
如果需要查看某項服務的自啟動狀態信息,使用如下命令即可:
chkconfig –list zte
總結