版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
遠(yuǎn)見(jiàn)<遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>“黑色經(jīng)典”系列之《嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解第2 Linux基礎(chǔ)命本章目LinuxLinux命令行環(huán)境)才能充分地體現(xiàn)出來(lái)。在本章將幫助讀者學(xué)會(huì)如下內(nèi)容掌握S 熟練使用Linux中用戶管理命令熟練使用Linux中系統(tǒng)相關(guān)命令熟練使用Linux中文 相關(guān)命熟練使用Linux中打包壓縮相關(guān)命令熟練使用Linux中文件比較合并相關(guān)命令熟練使用Linux中網(wǎng)絡(luò)相關(guān)命令了解Linux的啟動(dòng)過(guò)程深入了解INIT進(jìn)程及其配置文件能夠獨(dú)立完成在Linux中解壓軟學(xué)會(huì)添加環(huán)境變量能夠獨(dú)立定制Linux中系統(tǒng)服Linux常用操作命在安裝完Linux再次啟動(dòng)之后,就可以進(jìn)入到與Windows類似的圖形化界面了。這個(gè)界面就是Linux圖形化界面X窗口系統(tǒng)(簡(jiǎn)稱X)的一部分。要注意的是,X窗口系統(tǒng)僅僅是Linux上面的一個(gè)軟件(或者也可稱為服務(wù)),它不是Linux自身的一部分。雖然現(xiàn)在的X窗口系統(tǒng)已經(jīng)與Linux整合地相當(dāng)好了,但畢竟還不能保證可靠性。另外,X窗口系統(tǒng)是一個(gè)相Linux所帶來(lái)的高效及高穩(wěn)定性,建議讀者盡可能地使用Linux令行界面,也就是 環(huán)境 是一種Linux中令行解釋程序,就如是DOS下令解釋程序一樣,為用戶提供使用操作系統(tǒng)的接口。它們之的關(guān)系如圖2.1所示。用戶在提示符下輸入令都由S先解釋然后傳給Linux內(nèi)核 是命令語(yǔ)言、命令解釋程序及程序設(shè)計(jì)語(yǔ)言的統(tǒng)稱。它不僅擁有自己內(nèi)建的S 小知 程語(yǔ)言簡(jiǎn)單易學(xué),任何在提示符中能鍵 令都能放到一個(gè)可執(zhí)行的 程序中。關(guān)于 Linux中運(yùn)行S 環(huán)境。這時(shí)屏幕上顯示類似“[sunq@wwwhome]$”的信息,其中,sunq是指系統(tǒng)用戶,而home是指 由于Linux中令非常多,要全部介紹幾乎 同時(shí)列出同一類中的其令。由于同一類令都有很大的相似性,因此,讀者通過(guò)學(xué)習(xí)本中所列命令,可以很快地掌握其令。格式中帶[]的表明為可選項(xiàng),其他為必選項(xiàng)選項(xiàng)可以多個(gè)連帶寫(xiě)入
圖 本章后面選項(xiàng)參數(shù)列表中加粗的含義是:該選項(xiàng)是非常常用的選項(xiàng)用戶系統(tǒng)相關(guān)命Linux是一個(gè)多用戶的操作系統(tǒng),每個(gè)用戶又可以屬于不同的用戶組,下面,首先來(lái)熟悉一下Linux中的用戶切換和用戶管理的相關(guān)命令。Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linux用戶切換作變更為其它使用者的,主要用于將普通用戶轉(zhuǎn)變?yōu)槌?jí)用戶,而且需輸入相應(yīng)用戶。格su選項(xiàng)使用者其中的使用者為要變更的對(duì)應(yīng)使用者主要選項(xiàng)參主要選項(xiàng)參數(shù)2.1所示表 su命 為該使用者重新登錄,大部分環(huán)境變量(如HOME、 和USER等錄都是以該使用者(USER)USERsu常見(jiàn)參數(shù)列- USER的使用者,并執(zhí)行指令(command) su[root@www示例通過(guò)su命令將普通用戶變更為root用戶,并使用選項(xiàng)“-”攜帶root環(huán)境變量使用說(shuō)在將普通用戶變更為root用戶時(shí)建議使用”-”選項(xiàng),這樣可以將root的環(huán)境變量和 在轉(zhuǎn)變?yōu)閞oot權(quán)限后,提示符變?yōu)?小知
Lnux☆PATH☆HOME是系統(tǒng) ☆HISTSIZE☆LOGNAME☆HOSTNAME是指主機(jī)的名稱,若應(yīng)用程序要用到主機(jī)名的話,通常是從這個(gè)環(huán)境變量中來(lái) 是指當(dāng)前用戶用的是哪種 遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>培訓(xùn)遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>☆MAIL是指當(dāng)前用戶的郵件存放 etho顯示字符串(指定環(huán)境變量)exportenv通過(guò)set命令顯示所有本地定義的 變量unset讀者可以試著用“env”命令查看“suroot”和“suroot”用戶管理(useraddLinux中常見(jiàn)用戶管理命令如表2.2所示,本書(shū)僅以u(píng)seraddpasswd為例進(jìn)行詳細(xì)講解,其令類似,請(qǐng)讀者自行學(xué)習(xí)使用。Linux 令 添加用戶賬號(hào)useradd選項(xiàng)]usermod選項(xiàng)]userdel選項(xiàng)]groupadd選項(xiàng)]groupmod選項(xiàng)]groupdel選項(xiàng)]passwd對(duì)應(yīng)賬號(hào) 顯示用戶ID、組ID和用戶所屬的組列 id[用戶名作
groups組賬號(hào)]①useradd:添加用戶賬號(hào)②passwd:更改對(duì)應(yīng)用戶賬號(hào)格①useradd:useradd選項(xiàng)]用戶名②passwd:passwd選項(xiàng)用戶名]其中的用戶名為修改賬號(hào)的用戶,若不帶用戶名,缺省為更改當(dāng)前使用者賬號(hào)常用參①useradd主要選項(xiàng)參數(shù)見(jiàn)表2.3所示表 useradd命令常見(jiàn)參數(shù)列遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班> --Linux --- (4)使用實(shí)[root@wwwroot]#useradd[root@www(4)使用實(shí)[root@wwwroot]#useradd[root@wwwroot]#passwdNewRetypenewpasswd:allauthenticationtokensupdatedsuccessfully[root@wwwroot]#su-yul[yul@www[yul@wwwyul]$pwd(查看當(dāng) 實(shí)例中先添加了用戶名為yul的用戶,接著又為該用戶設(shè)置了賬號(hào)。并從su令 使用說(shuō)在使用添加用戶時(shí),這兩個(gè)命令是一起使用的,其中,useradd必須用root的權(quán)限。而且useradd指令所建立的賬號(hào),實(shí)際上是保存在“/etc/passwd”文本文件中,文件中每一行在缺省情況下,useradd所做的初始化操作包括在“/home” adduser只是useradd的符號(hào)(關(guān)于符號(hào)的概念在本節(jié)后面會(huì)有介紹),兩是相同的passwd還可用于普通用戶修改賬號(hào),Linux并不采用類似windows的回顯(顯示為*號(hào)),所以輸入的這些字符用戶是看不見(jiàn)的。最好包括字母、數(shù)字和特殊符號(hào),并且設(shè)成6位以上系統(tǒng)管理命令(psLinux ps選項(xiàng)動(dòng)態(tài)顯示系統(tǒng)中運(yùn)行的程序(Linux中常見(jiàn)的系統(tǒng)管理命令如Linux ps選項(xiàng)動(dòng)態(tài)顯示系統(tǒng)中運(yùn)行的程序( PID(進(jìn)程號(hào))的進(jìn)程kill選項(xiàng)]進(jìn)程號(hào)uname選項(xiàng)crontab選項(xiàng)Linuxshutdown選項(xiàng)時(shí)間作
①ps:顯示當(dāng)前系統(tǒng)中由該用戶運(yùn)行的進(jìn)程列表②kill:輸出特定的信號(hào)給指定 格①ps:ps選項(xiàng)]②kill:kill[選項(xiàng) 進(jìn)程號(hào)(PID)kill給該進(jìn)程①ps主要選①ps主要選參數(shù)見(jiàn)表2.5ps -查看所有進(jìn)程及其PID(進(jìn)程號(hào))、系統(tǒng)時(shí)間、命令詳 - 除可顯示-efCPU-②kill主要項(xiàng)參數(shù)見(jiàn)表2.6kill 參數(shù)含---[root@wwwroot]# PIDPPIDCSTIME TIME100200500:00:05210200500:00:00300200500:00:00遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>培訓(xùn) 0200500:00:00 0200500:00:0021787102005017:1600:00:00/usr/local/bin/ntpd-c00:00:00grep[root@wwwroot]#kill[root@wwwroot]#ps-ef|grep 2178921739017:16 00:00:00grep7421ntp有該進(jìn)程號(hào)的進(jìn)程使用說(shuō)ps在使用中通??梢耘c其他一些命令結(jié)合起來(lái)使用,主要作用是提高效率psw33顯示很長(zhǎng)令行了。例如:ps–auxwww管道是Linux中信息通信的重要方式。它是把一個(gè)程序的輸出直接連接到另一個(gè)程序的輸入,而不經(jīng)過(guò)任何中間文件。管道線是指連接二個(gè)或 程序管道的通路。在s 小知識(shí)示管道線。如前例子中的ps–ef|grepntp所示,ps–ef的結(jié)果直接輸入到grepntp的程序中(關(guān)grep命令在后面會(huì)有詳細(xì)的介紹)。grep、pr、sortwc都可以在上述管道線上工作。讀者磁盤相關(guān)命令Linux中與磁盤相 令如表2.7所示,本書(shū)僅以fdisk為例進(jìn)行講解Linux選項(xiàng) free選項(xiàng)df選項(xiàng)du選項(xiàng)(1)作
fdisk[-fdisk可以查看硬盤分區(qū)情況,并可對(duì)硬盤進(jìn)行分區(qū)管理,這里主要向讀者介紹查看硬習(xí)使用fdisk進(jìn)行硬盤分區(qū)格習(xí)使用fdisk進(jìn)行硬盤分區(qū)格fdisk[-使用實(shí)[root@sunq fdisk-Disk/dev/hda:40.0GB,40007761920240heads,63sectors/track,5168Units=cylindersof *512 遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>培訓(xùn)遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>Device*1+cW95FAT32fW95Ext'd+W95+W95 52208182Linux可以看出,使用”fdisk–l”列出了文件系統(tǒng)的分區(qū)情況使用說(shuō)使用fdisk必須擁有root權(quán)限IDE硬盤對(duì)應(yīng)的設(shè)備名稱分別為hda、hdb、hdchdd,SCSI硬盤對(duì)應(yīng)的設(shè)備名稱則sda、sdb、…此外,hda1代表hda的第一個(gè)硬盤分區(qū),hda2代表hda的第二個(gè)分區(qū),依此類推通過(guò)查看/var/log/messages文件,可以找到Linux系統(tǒng)已辨認(rèn)出來(lái)的設(shè)備代號(hào)磁盤掛載命令作掛載文件系統(tǒng),它的使用權(quán)限是超級(jí)用戶或/etc/fstab中允許的使用者。正如1.2.1節(jié)中所 對(duì)應(yīng)的過(guò)程,而掛載點(diǎn)是指掛載在文件樹(shù)中的位置。mount命令 下,并且由于Linux中把設(shè)備都當(dāng)作文件一樣使用,因此,mount命令也可以掛載不同的設(shè)備。通常,在Linux下“/mnt” 格mount選項(xiàng)類型設(shè)備文件名載點(diǎn)常見(jiàn)參mount -依照/etc/fstabmount -依照/etc/fstab--t種:vfat、ext3、ext2、iso9660、nfsmount幾- 會(huì)和-v
使用實(shí)使用mount命令主要通過(guò)以下幾個(gè)步驟認(rèn)是否為L(zhǎng)inux可以識(shí)別的文件系統(tǒng),Linux可識(shí)別的文件系統(tǒng)只要是以下幾種Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、LinuxWindows95/98常用的FAT32文件系統(tǒng):vfatWinNT/2000的文件系統(tǒng):ntfsOS/2用的文件系統(tǒng):hpfsLinux用的文件系統(tǒng):ext2、ext3、nfsCD-ROM光盤用的文件系統(tǒng):iso9660②確定設(shè)備的名稱,確定設(shè)備名稱可通過(guò)使用命令“fdisk-l”查看找掛接點(diǎn)必須確定掛載點(diǎn)已經(jīng)存在,也就是在“/mnt”下的相應(yīng) 已經(jīng)存在,一般建議在 ,現(xiàn)在有些新版本的Linux(如Linux中軟Linux、MandrakeLinux)都可自動(dòng)掛載文件系統(tǒng),RedHat僅可自動(dòng)掛載光驅(qū)④掛載文件系統(tǒng)如下所示[root@sunqmnt]#mount-tvfat/dev/hda1[root@sunqmnt]#cd24.s03e02.pdtv.xvid-sfm.rmvbsandSettingsProgram…C盤是原先筆者Windows系統(tǒng)的啟動(dòng)盤。可見(jiàn),在掛載了C盤之后,可直接下的C盤的內(nèi)容使用完該設(shè)備文件后可使用命令umount將其卸載[root@sunqmnt]#umount[root@sunq[root@sunqmnt]#cd[root@sunqc]#可見(jiàn),此 “/mnt/c”下為空。Windows下的C盤成功卸載LinuxU一般U盤為SCSI格式的硬盤,其格式為vfat格式,其設(shè)備號(hào)可通過(guò)“fdisk–l”進(jìn)行查看,假小知識(shí)若設(shè)備名為“/dev/sda1”mount-tvfat/dev/sda1文 相關(guān)命由于Linux中有關(guān)文件 作改變工 格遠(yuǎn)見(jiàn)<遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>cd路徑(3)使用實(shí)[root@wwwuclinux]#cd其中的路徑為要改變的工 ,(3)使用實(shí)[root@wwwuclinux]#cd[root@wwwsunq]#pwd[root@wwwsunq]#/home/sunq/該實(shí)例中變更工 為“/home/sunq/”,在后面的pwd(顯示當(dāng) )的結(jié)果中可以看出使用說(shuō) 該命令可以使用通配符可使用“cd–”可以回到前次工 “./”代表當(dāng) ,“../”代表上 作列 的內(nèi)容格式:ls選項(xiàng)文件 ls主要選ls主要選項(xiàng)參數(shù)見(jiàn)2.9所ls -列 ---
組 (4)使用實(shí)[yuling@www/]$ls-totaldrwxr-xr-24096Mar2005drwxr-xr- 3-rw-r--r- 14096Apr320050Apr242002drwxr-xr- 3-rw-r--r- 14096Apr320050Apr242002…Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linux顯示格式說(shuō)明如下文件類型與權(quán)限數(shù)文件屬主文件屬組文件大小修改的時(shí)間名使用說(shuō)ls的常見(jiàn)參數(shù)中,-l(長(zhǎng)文件名顯示格式)的選項(xiàng)是最為常見(jiàn)的??梢栽敿?xì)顯示出 若想顯示出所有“.”開(kāi)頭的文件,可以使用-a,這在嵌入式的開(kāi)發(fā)中很常用注意LinuxWindows一樣通過(guò)文件擴(kuò)展名來(lái)標(biāo)識(shí)的,而是通過(guò)設(shè)置文件相應(yīng)作創(chuàng)建一 格mkdir選項(xiàng)路常見(jiàn)參mkdir主要選項(xiàng)參數(shù)如表2.10所 --
mkdir對(duì)新 od命令(在本節(jié)后會(huì)有詳細(xì)說(shuō)明)設(shè) 使用實(shí)[root@wwwsunq]#mkdir-p./ [root@wwwmy]#pwd(查看當(dāng)前 o/my多級(jí) [root@wwwmy]#mkdir-m777./why[root@wwwmy]#ls-ltotal 2 4096Jan1409:24 使用說(shuō) 作遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>連接并顯示指定的一個(gè)和多個(gè)文件的有關(guān)信息格cat[選項(xiàng)]1文件其中的文件1、文件2為要顯示的多個(gè)文件常見(jiàn)參cat命令的常見(jiàn)參數(shù)如2.11所示表cat -- 和-n(4)使用實(shí)[yul@wwwyul]$cat-n 1#includevoid{printf("o!Thisismy56#includevoid{ o!Thisisyour10在該實(shí)例中,指定對(duì)o1.c和o2.c進(jìn)行輸出,并指定行號(hào)cp、mv作①cp:將給出的文件 到另一文件 中②mv:為文件 改名或?qū)⑽募梢?移入另一 中③rm:刪除一 中的一個(gè)或多個(gè)文件 格①cp:cp選項(xiàng)源文件目標(biāo)文件。②mv:mv選項(xiàng)源文件目標(biāo)文件。③rm:rm選項(xiàng)文件。常見(jiàn)參①主要選項(xiàng)參數(shù)見(jiàn)表2.12所示cp 參數(shù)含- 保留、文件屬性,并其 ,其作用等于dpr選項(xiàng)的組遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>---y----y-此時(shí)cp除源文件的內(nèi)容外,還將把其修改時(shí)間和權(quán)限也到新文件 文件,此時(shí)cp將遞歸 - ②mv主要選項(xiàng)參數(shù)如表2.13所示表 mv命令常見(jiàn)參數(shù)列 參數(shù)含- mvn mv操作要覆蓋某已有的目標(biāo)文件時(shí)不給任何指示,在指定此選項(xiàng)后,i③主要選項(xiàng)參數(shù)如表2.14所示 rm --(4)使用實(shí)①-(4)使用實(shí)① rm-該實(shí)例使用-a選該實(shí)例使用-a選項(xiàng)將下還有原有的文件②下的所有文到當(dāng)下。而此時(shí)在原 o]#mv-i./my/why/該實(shí)例中把該實(shí)例中把下的所有文件移至當(dāng),則下文件被自動(dòng)刪③。 –r-irm:descendintodirectory'./why'?yrm:remove'./why/my.c'?y遠(yuǎn)見(jiàn)<遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>rm:removedirectory'./why'?該實(shí)例使用“-r”選項(xiàng)刪除 下所有內(nèi)容,系統(tǒng)會(huì)進(jìn)行確認(rèn)是否刪除使用說(shuō)①cp:該命令把指定的源文件到目標(biāo)文件或把多個(gè)源文件到目 中② 當(dāng)?shù)诙€(gè)參數(shù)是已存在 名稱時(shí),mv命令將各參數(shù)指定的源文件均移至目 中在跨文件系統(tǒng)移動(dòng)文件時(shí),mv先,再將原有文件刪除,而鏈至該文件的也③如果沒(méi)有使用-r選項(xiàng),則rm不會(huì)刪 使用該命令時(shí)一旦文件被刪除,它是不能被恢復(fù)的,所以最好使用-i參數(shù)chown作①chown:修改文件所有者和組別②chgrp:改變文件的組 格①chown:chown選項(xiàng)]...文件所有者[所有者組名文件②chgrp:chgrp[選項(xiàng)]... 常見(jiàn)參chownchgrp chownchgrp的常見(jiàn)參數(shù)意義相同,其主chownchgrp 使用實(shí)
詳盡地描述每個(gè)file實(shí)際改變了哪些所 [root@wwwsunq]#ls--rwxr-xr-x 40966月42005uClinux-可以看出,這是一個(gè)文件,它的文件擁有者是 ,具有可讀寫(xiě)和執(zhí)行的權(quán)限,它屬的用戶組是也只有可讀和執(zhí)行的權(quán)限Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linux首首先使用chown將文件所有者改為root[root@wwwsunq]#chownrootuClinux-dist.tar[root@wwwsunq]#ls -rwxr-xr-x15 40966月42005uClinux-可以看出,此時(shí),該文件擁有者變?yōu)榱藃oot,它所屬文件用戶組不變接接著使用chgrp將文件用戶組變?yōu)閞oot[root@wwwsunq]#chgrprootuClinux-dist.tar[root@wwwsunq]#ls -rwxr-xr-x15 40966月42005uClinux-使用說(shuō)使用chownchgrp必須擁有root權(quán)限小技巧在進(jìn)行有關(guān)文件的操作時(shí),若想避免輸入冗長(zhǎng)的文件,在文件名沒(méi)有重復(fù)的情況下可以使用作改變文件的權(quán)限格od可使用符號(hào)標(biāo)記進(jìn)行更改和八進(jìn)制數(shù)指定更改兩種方式,因此它的格式也有兩種①符號(hào)標(biāo)記 od[選項(xiàng)]…符號(hào)權(quán)限[符號(hào)權(quán)限]…文間要用逗號(hào)分開(kāi)表示,若沒(méi)有顯 則表示不作更改②八進(jìn)制數(shù): od[選項(xiàng)] 選項(xiàng)參od主要選項(xiàng)參數(shù)如表2.16所示odod --使用實(shí)od涉及文件的權(quán)限,在此對(duì)相關(guān)的概念進(jìn)行簡(jiǎn)單的回顧在1.3.1節(jié)中已經(jīng)提到,文件的權(quán)限可表示成:- 的權(quán)限:讀(r)、寫(xiě)(w)和運(yùn)行(x)。三個(gè)不同的用戶級(jí)別:文件擁有者(u)、所屬的用戶組(g)和系統(tǒng)里的其他用戶(o)。在此,可增加一個(gè)用戶級(jí)別a(all)來(lái)表示所有這Mar242005oda+rx,u+w[root@www[root@wwwsunq]# 1 [root@wwwsunq]# .tgz,其權(quán)限如下所示例Mar242005oda+rx,u+w[root@www[root@wwwsunq]# 1 [root@wwwsunq]# .tgz,其權(quán)限如下所示例如原先筆者系統(tǒng)中有文件 1 Mar242005 可見(jiàn),在執(zhí)行了od之后,文件擁有者除擁有所有用戶都有的可讀和執(zhí)行的權(quán)限外,“1”,即“rw-”“rw-”和“r--”的八進(jìn)制表示為“110”、“110”、“100”,把這個(gè)2進(jìn)制串轉(zhuǎn)換成對(duì)應(yīng)的8 轉(zhuǎn)換 進(jìn)轉(zhuǎn)換 進(jìn)制 應(yīng)制制數(shù)就是6、6、4,也就是說(shuō)該文件的權(quán)限為664(三位八進(jìn)制數(shù))。這樣對(duì)于轉(zhuǎn)化 轉(zhuǎn)換 進(jìn)轉(zhuǎn)換 進(jìn)制 應(yīng)制限
3657同上例,原先筆者系統(tǒng)中有文件genromfs-0.5.1.tar.gz,其權(quán)限如下所示[root@wwwsunq]# 1sunq 20543Dec292004genromfs-0.5.1.tar.gz[root@wwwsunq]# od765genromfs-0.5.1.tar.gz[root@wwwsunq]#ls -rwxrw-r- 1 20543Dec292004genromfs-可見(jiàn),在執(zhí)行了od765之后,該文件的擁有者權(quán)限、文件組權(quán)限和其他用戶權(quán)限都使用使 od必須具有root權(quán)限想odo+x .tgz是什么意思?它所對(duì)應(yīng)的8進(jìn)制數(shù)指定更改應(yīng)如何表示遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>培訓(xùn)Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linux作在指定文件中搜索特定的內(nèi)容,并將含有這些內(nèi)容的行標(biāo)準(zhǔn)輸出格grep選項(xiàng)]格式[文件及路徑其中的格式是指要搜索的內(nèi)容格式,若缺省“文件及路徑”則默認(rèn)表示在當(dāng) 下搜索常見(jiàn)參grep主要選項(xiàng)參數(shù)如表2.18所示grep--grep-------使用實(shí)
[root@wwwsunq]#grep o"/-Binaryfile./iscit2005/備份/iscit2004.sql oworld$2=0…該本例中,“o”是要搜索的內(nèi)容,“/-r”是指定文件,表示搜索 下的所有文件使用說(shuō) 下形式列出:“grep:sound:Isadirectory”這會(huì)使“grep”的輸出難于閱讀。但有兩種解決的方法:①明確要求搜索 :grep–r(正如上例中所示②忽略 :grep-dskip當(dāng)預(yù)料到有許多輸出,可以通過(guò)管道將其轉(zhuǎn)到“l(fā)ess”(分頁(yè)器)上閱讀:如grep"h"-r|less分頁(yè)閱讀grep特殊用法greppattern1|pattern2files:顯示匹配pattern1pattern2的行g(shù)reppattern1files|greppattern2:顯示既匹配pattern1又匹配pattern2的行小知識(shí)在文件命令中經(jīng)常會(huì)使用pattern正則表達(dá)式,它是可以描述一類字符串的模式(Pattern),如 遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>培訓(xùn)遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>中用戶可以使用通配符“*”Linux系統(tǒng)上,正則表達(dá)式通常被用來(lái)查:?jiǎn)蝹€(gè)字符,如[A]A[-]:范圍,如[A-Z]A、B、CZ*0作在指 中搜索文件,它的使用權(quán)限是所有用戶格find[路徑][選項(xiàng)][描述 其中的描述是匹配表達(dá)式,是find命令接受的表達(dá)式常見(jiàn)參find -[選項(xiàng)]主find --
不在其他文件系統(tǒng)(Msdos、Vfat等)
[描述]主要參數(shù)如2.20所示find --(4)(4)使用實(shí)
用戶名:搜索文件屬主為用戶名(ID或名稱)的文件[root@wwwsunq]#find./-name在該實(shí)例中使用了-name的選項(xiàng)支持通配符Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linux使用說(shuō) find命令可以使用混合查找的方法,例如,想在/etc 中查找大于500000字節(jié),并且在24小時(shí)內(nèi)修改的某個(gè)文件,則可以使用-and(與)把兩個(gè)查找參數(shù)起來(lái)組合成一個(gè)混合的查找方式,如“find/etc-size c-and-mtime+1”。作尋找時(shí)就只需查詢這個(gè)數(shù)據(jù)庫(kù),而不必實(shí)際深入系統(tǒng)之中了。因此其速度比f(wàn)ind快很多格locate選項(xiàng)- (3)locate主(3)locate主選項(xiàng)參數(shù)如表2.21所示locate ---proc(4)(4)使用實(shí) [root@wwwsunq]#locateissue-U./[root@wwwsunq]#updatedb[root@wwwsunq]#locate-r… 找。通過(guò)運(yùn)行可以發(fā)現(xiàn)locate的運(yùn)行速度非???。(5)使用說(shuō)locate命令所查詢的數(shù)據(jù)庫(kù)由updatedb程序來(lái)更新的,而updatedb是由cron daemon周期性建立的,但若所找到的是最近才建立或剛更名的,可能會(huì)找不到,因?yàn)閡pdatedb默認(rèn)每天運(yùn)行一次,用戶可以由修改crontab(etc/crontab)來(lái)更新周期值。作為某一個(gè)文件在另外一個(gè)位置建立一個(gè)符號(hào)。當(dāng)需要在不同 用到相同的文時(shí),Linux允許用戶不用在每一個(gè)需要 下文件用ln命令即可,這樣就不必重復(fù)地占用磁盤空間格ln[選項(xiàng)]目常見(jiàn)參(4)使用實(shí)[root@wwwuclinux]#ln-s../genromfs-0.5.1.tar.gz./[root@wwwuclinux]#ls-los建立(4)使用實(shí)[root@wwwuclinux]#ln-s../genromfs-0.5.1.tar.gz./[root@wwwuclinux]#ls-lototallrwxrwxrwx1root 24Jan14 o->../genromfs-該實(shí)例建立了當(dāng) o文件與上 之間的符號(hào)連接,可以看見(jiàn), ols–l中的第一位為“l(fā)”,表示符 ,同時(shí)還顯示 的源文件(5)使用說(shuō)ln命令會(huì)保持每一 都會(huì)發(fā)生相同的變化ln 又 和 兩種 就是上面所說(shuō)的ln-s****,它只會(huì)在用戶選定的位置上生成一個(gè)文件的鏡像不會(huì)重復(fù)占用磁盤空間,平時(shí)使用較多的都是 硬是不帶參數(shù)的ln****,它會(huì)在用戶選定的位置上生成一個(gè)和源文件大小相同文件,無(wú)論是軟還是硬,文件都保持同步變化壓縮打包相關(guān)命Linux中打包壓縮的如表2.22所示,本書(shū)以gziptar為例進(jìn)行講解bzip2recoverbz2bzip2recoverbz2用來(lái)修復(fù)損壞的.bz2.bz2.bz2文件的壓縮(或解壓)
Linux
bunzip2[選項(xiàng)].bz2壓縮文件
.gz解壓被gzip壓縮過(guò)的文件winzip壓縮的.zip文件
gzip選項(xiàng)]壓縮(解壓縮)gunzip選項(xiàng).gzunzip選項(xiàng)zip 早期的壓縮或解壓程序(壓縮后文件名為.Z)compress[選項(xiàng) 文 對(duì)文 tar[選項(xiàng)][打包后文件名]文 列遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linux作對(duì)文件進(jìn)行壓縮和解壓縮,而且gzip根據(jù)文件類型可自動(dòng)識(shí)別壓縮或解壓格gzip[選項(xiàng)]壓縮(解壓縮)的文件名常見(jiàn)參(4)使用實(shí)[root@wwwmy]#[root@wwwmy]#lsgzip(4)使用實(shí)[root@wwwmy]#[root@wwwmy]#ls ------
gzip [root@www gzip- pressed 該實(shí)例 下的 o.c”文件進(jìn)行壓縮,選項(xiàng)“-l”列出了壓縮比使用說(shuō)使用gzip壓縮只能壓縮單個(gè)文件,而不能壓縮 作對(duì)文 進(jìn)行打包或解包在此需要對(duì)打包和壓縮這兩個(gè)概念進(jìn)行區(qū)分。打包是指將一些文件 變成一個(gè)總Liuxgzip)格tar[選項(xiàng)][打包后文件名]文 列表遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>培訓(xùn)tar可自動(dòng)根據(jù)文件名識(shí)別打包或解包動(dòng)作,其中打包后文件名為用戶自定義的打包后文件名 主要參tar主要選項(xiàng)參數(shù)如表2.24所示- bzip2來(lái)壓縮打包文件,與-xbzip2tar ---tar -------gzip來(lái)壓縮打包文件,與-xgzip(4)使用實(shí)[root@wwwhome]#tar-cvfyul.tar./yul/.bash_profile[root@wwwhome]#ls-l-rw-r--r- 1 10240Jan1415:01該實(shí)例將 下的文件加以打包,其中選項(xiàng)“-v”在屏幕上輸出了打包的具體過(guò)程[root@wwwsunq]#tar-zxvflinux-2.6.11.tar.gz 遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>培訓(xùn)Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linux…該實(shí)例用選項(xiàng)“-z”調(diào)用gzip,并-x聯(lián)用時(shí)完成解壓縮(5)使用說(shuō)tar命令除了用于常規(guī)的打包之外,使用更為頻繁的是用選項(xiàng)“-z”或“-j”調(diào)用gzipbzip2(Linux中另一種解壓工具)完成對(duì)各種不同文件的解壓。表2.25對(duì)Linux中常見(jiàn)類型的文件解壓命令做一總結(jié)。
Linux tartartar.deb(Debain中的文件格
安裝:dpkg解壓:dpkg-debfsys-
presso.Z gunzipo.gz tarxvZfo.tar.Z tarxvzfo.tar.gz tarjxvfo.tar.bz2 安裝:rpm-iorpm 解壓:rpm2cpioo.rpm 安裝:dpkg-io.deb安裝:rpmtartartar安裝:rpmtartartarunzip比較合并文件相關(guān)命作比較兩個(gè)不同的文件或不 下的兩個(gè)同名文件功能,并生成補(bǔ)丁文件格diff[選項(xiàng)文件1文件diff比較文件1和文件2的不同之處,并按照選項(xiàng)所指定的格式加以輸出。diff的格式分進(jìn)行進(jìn)行詳細(xì)地講解。選項(xiàng)缺省時(shí),diff默認(rèn)使用混合命令格式(3)主要參diff主要選項(xiàng)數(shù)如表2.26所示diff - - -
遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>培訓(xùn)-u,---以下有兩個(gè)文o1.c以下有兩個(gè)文o1.co2.c o!Thisisyour}以下實(shí)例主要講解了各種不同格式的比較和補(bǔ)丁文件的創(chuàng)建方法要格式比{#includevoid}#include<stdio.h>voidmain(){ o!Thisismy
compress來(lái)壓縮歸檔文件,與-xcompress 首先使用舊版上下文格式進(jìn)行比較[root@wwwyul]#diff-co1.c*** SatJan1416:24:51--- SatJan1416:54:41***1,5#includevoid{ printf("o!Thisismy}#include<stdio.h>voidmain(){ o!Thisisyour}遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>培訓(xùn)遠(yuǎn)見(jiàn)<遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linux接著使用新版的上下文格式進(jìn)行比較[root@wwwyul]#diff- SatJan1416:24:51 SatJan1416:54:41@@-1,5+1,5@@#include<stdio.h>voidmain(){- o!Thisismy+ o!Thisisyour接著使用新版的上下文格式進(jìn)行比較[root@wwwyul]#diff- SatJan1416:24:51 SatJan1416:54:41@@-1,5+1,5@@#include<stdio.h>voidmain(){- o!Thisismy+ o!Thisisyour}接下來(lái)使用命令格式進(jìn)行比較[root@wwwyul]#diff-e o!Thisisyour可以看出,命令符格式輸出時(shí)僅輸出了不同的行,其中命令符“4c”中的數(shù)字表示行數(shù)字母的含義為a——添加,b——?jiǎng)h除,c——更改。因此,-e選項(xiàng)令符表示:若要把o1.c變?yōu)閛2.c,就需要把o1.c的第四行改為顯示出的“printf(“o!Thisisyourhome!\n”);”[root@wwwyul]#diff-f o!Thisisyourdiff選項(xiàng)缺省的情況下,輸出結(jié)果如下所示[root@wwwyul]# o!Thisismy o!Thisisyour可以看出,diff缺省情況下的輸出格式充分顯示了如何將o1.c轉(zhuǎn)化為 o2.c的方法,相對(duì)應(yīng)的補(bǔ)丁文件。見(jiàn)下例[root@wwwyul]#[root@wwwyul]#vio2.c o!Thisismy相對(duì)應(yīng)的補(bǔ)丁文件。見(jiàn)下例[root@wwwyul]#[root@wwwyul]#vio2.c o!Thisismy o!Thisisyour可以看出,使用缺省選項(xiàng)創(chuàng)建補(bǔ)丁文件的內(nèi)容和前面使用缺省選項(xiàng)的輸出內(nèi)容是一樣的上例中所使用的”>“是輸出重定向。通常在Linux上執(zhí)行一個(gè)s 望再次使用這些數(shù)據(jù)時(shí)就不得不重新輸入。同樣,用戶對(duì)輸出信息不能做的處理,只能小知識(shí) 機(jī)制和管道(在1.3.1的小知識(shí)中已有介紹)。其中,輸入重定向是指把命令(或可執(zhí)行程序)述例子中所用到的把“diffo1.co2.c”的結(jié)果重定向到o.patch文件中。這就大大增作命令跟diff配合使用,把生成的補(bǔ)丁文件應(yīng)用到現(xiàn)有代碼上格patch選項(xiàng)patch的文件[patch文件]]常用的格式為:patchpnum[patch文件],其中的-pnum是選項(xiàng)參數(shù),在后面會(huì)詳細(xì)介紹常見(jiàn)參patch主要選項(xiàng)參數(shù)如表2.27所示patch -- dir遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>-把輸入的補(bǔ)丁文件看作是ed-剝離文件名中的前NUM-把輸入的補(bǔ)丁文件看作是ed-剝離文件名中的前NUM -- patch以下對(duì)-punm選項(xiàng)進(jìn)行說(shuō)明文件使用patch命令)首先查看以下示例(對(duì)分文件使用patch命令)diff-ruNaxc.orig/config/cf/Makefile以下是patch文件的頭標(biāo)記---以下是patch文件的頭標(biāo)記+++xc.new/config/cf/Imake.cfFriJan2113:48:44(4)使用實(shí)[root@wwwyul]#diff[root@wwwyul]#patch./o1.co2.cpatchingfile./ [root@wwwyul]]#(4)使用實(shí)[root@wwwyul]#diff[root@wwwyul]#patch./o1.co2.cpatchingfile./ [root@wwwyul]]#vi #include<stdio.h>void{如用戶源碼樹(shù)的 是缺省的xc而不是xc.orig,則除了可以把xc.orig移到xc處之外,patch嗎?NUM就是為此而設(shè)的:patch個(gè)“/”,也就是說(shuō),在此例中,-p1的結(jié)果是config/cf/Makefile,-p2的結(jié)果是cf/Makefile。因此,在此例中就可以用命令cdxc;patch_p1</pathname/xxx.patch完成操作。 o!Thisisyour}在該實(shí)例中,由于patch文件和源文件在同一 在應(yīng)用了patch之后,o1.c的內(nèi)容變?yōu)榱?o2.c的內(nèi)容。使用說(shuō)如果patch失敗,patch命令會(huì)把成功的patch行補(bǔ)上其差異,同時(shí)(無(wú)條件)生成備份文件和一個(gè).rej文件。.rej文件里是沒(méi)有成功提交的patch行,需要手工打上補(bǔ)丁。這種情在多數(shù)情況下,patch程序可以確定補(bǔ)丁文件的格式,當(dāng)它不能識(shí)別時(shí),可以使用-c-e、-n或者-u選項(xiàng)來(lái)指定輸入的補(bǔ)丁文件的格式。由于只有GNUpatch可以創(chuàng)建和新版上下文格式的patch文件,因此,除非能夠確定補(bǔ)丁所面向的只是那些使用GNU工具的用戶,為了使patch程序能夠正常工作,需要上下文的行數(shù)至少是2行(即至少是有一處差網(wǎng)絡(luò)相關(guān)命Linux下網(wǎng)絡(luò)相關(guān)的常見(jiàn)命令如下表2.28所示,本書(shū)僅以ifconfigftp為例進(jìn)行說(shuō)明Linux 令netstat[-查詢一臺(tái)機(jī)器的IP地址和其對(duì)應(yīng) Nslookup[IP地址 finger選項(xiàng)使用者用戶@主機(jī)[選項(xiàng)]主機(jī)名/IP地址ifconfig選項(xiàng)網(wǎng)絡(luò)接口作
利用ftp協(xié)議上傳 net協(xié)議瀏覽信息利用ssh登錄對(duì)方主機(jī)
ent[選項(xiàng)][IP地址/]ssh[選項(xiàng)][IP地址]用于查看和配置網(wǎng)絡(luò)接口的地址和參數(shù),包括IP地址、網(wǎng)絡(luò)掩碼、廣播地址,它的使用格ifconfig有兩種使用格式,分別用于查看和更改網(wǎng)絡(luò)接口①ifconfig選項(xiàng)網(wǎng)絡(luò)接口]:用來(lái)查看當(dāng)前系統(tǒng)的網(wǎng)絡(luò)配置情況② 網(wǎng)絡(luò)接口[選項(xiàng) 地址:用來(lái)配置指定接口(如eth0,eth1)IP地址、絡(luò)掩碼、廣播地址等(3)常見(jiàn)參ifconfig第二種格式常見(jiàn)項(xiàng)參數(shù)如表2.29所示ftp命令選項(xiàng)常見(jiàn)參數(shù)列 -eth0broadcastaddresspointopointnetmask使用實(shí)
IP地址遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>培訓(xùn)遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linux首先,在本例中使用ifconfig的第一種格式來(lái)查看網(wǎng)口配置情況[root@sunqworkplace]# Linkencap:EthernetHWaddrinetaddr:0Bcast:55inet6addr:fe80::208:2ff:fee0:c18a/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500RXpackets:26931errors:0dropped:0overruns:0TXpackets:3209errors:0dropped:0overruns:0collisions:0RXbytes: (6.3MiB)TXbytes:321302(313.7KiB) Linkencap:Localinetaddr:inet6addr:::1/128UPLOOPBACKRUNNINGMTU:16436RXpackets:2537errors:0dropped:0overruns:0TXpackets:2537errors:0dropped:0overruns:0collisions:0RX (1.9MiB)TX (1.9[root@sunqworkplace]#ifconfig Linkencap:EthernetHWaddrinetaddr:0Bcast:55inet6addr:fe80::208:2ff:fee0:c18a/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500RXpackets:27269errors:0dropped:0overruns:0TXpackets:3212errors:0[root@sunqworkplace]#ifconfig Linkencap:EthernetHWaddrinetaddr:0Bcast:55inet6addr:fe80::208:2ff:fee0:c18a/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500RXpackets:27269errors:0dropped:0overruns:0TXpackets:3212errors:0dropped:0overruns:0collisions:0RX (6.3MiB)TXbytes:322488(314.9“-a”來(lái)查看所有接口(包括非活躍接口)的信息接下來(lái)的示 了如何使用ifconfig的第二種格式來(lái)改變指定接口的網(wǎng)絡(luò)參數(shù)配置[root@sunq~]#ifconfigeth0down[root@sunq~]#ifconfig Linkencap:Localinetaddr:inet6addr:::1/128UPLOOPBACKRUNNINGMTU:16436RXpackets:1931errors:0dropped:0overruns:0TXpackets:1931errors:0dropped:0overruns:0collisions:0RX (2.4MiB)TX (2.4
在此例在此例中,通過(guò)將指定接口的狀態(tài)設(shè)置為DOWN,暫時(shí)暫停該接口的工作[root@sunqworkplace]#ifconfigeth042netmask[root@sunqworkplace]# Linkencap:EthernetHWaddrinetaddr:42Bcast:55inet6addr:fe80::208:2ff:fee0:c18a/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500RXpackets:1722errors:0dropped:0overruns:0TXpackets:5errors:0dropped:0overruns:0collisions:0RXbytes:147382(143.9KiB)TXbytes:398(398.0從上例可以看出,ifconfig改變了接口eth0IP地址、子網(wǎng)掩碼等,在之后的查看中可以看出確實(shí)發(fā)生了變化使用說(shuō)ifconfig失效作該命令允許用戶利用ftp協(xié)議上傳和文件格ftp選項(xiàng)主機(jī)名/IP]ftpftp服務(wù)器的過(guò)程中使用的。內(nèi)部命令是指成功登錄后進(jìn)行的一系列操作,下面會(huì)詳細(xì)列出。若用戶缺省“主機(jī)名/IP”,則可在轉(zhuǎn)入到ftp內(nèi)部命令后繼續(xù)選擇登錄。常見(jiàn)參ftp常見(jiàn)選項(xiàng)參數(shù)如表2.30所示表 ftp命令選項(xiàng)常見(jiàn)參數(shù)列遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班> -顯 -顯 -ftp-- ftp常見(jiàn)內(nèi)部命令如表2.31所示 bin/typebinarycdremote-odmodefile-deleteremote-file
ftp 使用ascii類型傳輸方式,為缺省傳輸模式退出ftp會(huì)話過(guò)程進(jìn) 主進(jìn) 主 的 主機(jī)文件file-name的存取方式設(shè)置為中斷與服務(wù)器的ftp會(huì)話(與open對(duì)應(yīng)) 刪除主機(jī)文件 設(shè)置調(diào)試方式,顯示發(fā)送至主機(jī)的每條命 getremote-file[local-
顯 主 ,并將結(jié)果存入本地文件local- 同 主機(jī)的文件remote-file傳至本地硬盤的local- 切換至 mgetremote-刪 mkdirdir-namemputlocal-fileopen在 ftp進(jìn) putlocal-file[remote- 將本地文件local-file傳送至主regetremote-file[local- getlocal-filesizefile-
顯示主機(jī)文件大顯 遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>首先,在本首先,在本例中使用ftp命令 ”站點(diǎn)[root@sunq~]#Connected 220FTP500'AUTHGSSAPI':commandnot500'AUTHKERBEROS_V4':commandnotKERBEROS_V4rejectedasanauthenticationName :root):331Anonymousaccessallowed,sendidentity(e-mailname)as230Anonymoususerloggedin.RemotesystemtypeisWindows_NT.e-mail227EnteringPassiveMode125Dataconnectionalreadye-mail227EnteringPassiveMode125Dataconnectionalreadyopen;Transfer11-20-05 12-04-05 01-07-06 11-22-05 01-04-06 226Transfer以上使用ftp內(nèi)部命令dir列出了在 下文件 的信息ftp>cd 257/Wrox/Wrox.Beginning.SQL.Feb.2005.eBook-DDU"iscurrent257/Wrox/Wrox.Beginning.SQL.Feb.2005.eBook-DDU"iscurrent以上實(shí)例通過(guò)cd命令進(jìn)入相應(yīng)ftp>lcd,可通過(guò)pwd命令進(jìn)行驗(yàn)證Localdirectorynowftp>getd-local:d-wbsq01.zipremote:d-200PORTcommand遠(yuǎn)見(jiàn)<遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linux150OpeningASCIImodedataconnectionford- WARNING!WARNING!5350barelinefeedsreceivedinASCIImodeFilemaynothavetransferredcorrectly.226226Transferbytesreceivedin1.7seconds(8.6e+02接下來(lái)通過(guò)lcd命令首先改變用戶的本地工作 ,也就是希望或上傳的工作 就著通過(guò)get命令進(jìn)行文件。由于ftp默認(rèn)使用ASCII模式,因此,若希望改為其他模式如如“bin”,直接輸入bin即可,如下所示200TypesettoI.ftp>bye最后用bye命令退出ftp程序使用說(shuō)若是需要登錄,則在“Name(**.**.**.**):”處鍵入anonymous,在處鍵入自己的E-mail地址即可若要傳送二進(jìn)制文件,務(wù)必要把模式改為binLinux啟動(dòng)過(guò)程詳在了解了Linux的常見(jiàn)命令之后,下面來(lái)詳細(xì)了解Linux的啟動(dòng)過(guò)程。Linux的啟Linux其原理及INIT進(jìn)程。希望讀者能認(rèn)真耐心閱讀,相信在真正掌握這一節(jié)的內(nèi)容之后對(duì)Linux C語(yǔ)言已有了一定的基礎(chǔ),因此對(duì)以上概用戶開(kāi)機(jī)啟動(dòng)Linux過(guò)程總體上是這樣的首先當(dāng)用戶打開(kāi)PC的電源時(shí),CPU將自動(dòng)進(jìn)入實(shí)模式,并從地址0xFFFF0開(kāi)始自動(dòng)執(zhí)行程序代碼,這個(gè)地址通常是ROM-BIOS中的地址。這時(shí)BIOS進(jìn)行開(kāi)機(jī)自檢,并按BIOS中設(shè)置的啟動(dòng)設(shè)備(通常是硬盤)進(jìn)行啟動(dòng),接著啟動(dòng)設(shè)備上安裝的引導(dǎo)程序lilogrub開(kāi)始引導(dǎo)Linux(也就是啟動(dòng)設(shè)備的第一個(gè)扇區(qū)),這時(shí)Linux才獲得了啟接下來(lái)的第二階段,Linux首先進(jìn)行內(nèi)核的引導(dǎo),主要完成磁盤引導(dǎo)、機(jī)器系統(tǒng)數(shù)第三階段執(zhí)行init程序(也就是系統(tǒng)初始化工作),init程序調(diào)用了rc.sysinitrc等程序,而rc.sysinit和rc在完成系統(tǒng)初始化和運(yùn)行服務(wù)的任務(wù)后,返回init。之后的第四階段,init啟動(dòng)mingetty,打開(kāi)終端供用戶登錄系統(tǒng),用戶登錄成功后進(jìn)入了Linux啟動(dòng)總體流程圖如圖2.2所示,其中的4個(gè)階段分別由同步棒隔開(kāi)。由于第一階段不涉及Linux自身的啟動(dòng)過(guò)程,因此,下面分別對(duì)第二和第三階段進(jìn)行詳細(xì)講解。內(nèi)核引導(dǎo)階
圖 Linux啟動(dòng)總體流程在grub或lilo等引導(dǎo)程序成功完成引導(dǎo)Linux系統(tǒng)的任務(wù)后,Linux就從它們手中接管了CPU的控制權(quán)。用戶可以從 以及compressed 下的head.S等。首先要介紹一下,Linux的內(nèi)核通常是壓縮過(guò)后的,包括如上述提到的那幾個(gè)重要的編程序,它們都是在壓縮內(nèi)核vmlinuz中的。因?yàn)長(zhǎng)inux中提供的內(nèi)核包含了眾多驅(qū)動(dòng)和功bootsect階grubvmlinuz后,會(huì)根據(jù)bootsect(正好512bytes)把它自身和setup程序段讀到不大于0x90000開(kāi)始的的內(nèi)存里(注意:在以往的引導(dǎo)協(xié)議里是放在0x90000,但現(xiàn)在有所變化),然后grub會(huì)跳過(guò)bootsect512bytes的程序段,直接運(yùn)行setup里的第一跳指令。就是說(shuō)bzImage里bootsect的程序沒(méi)有再被執(zhí)行了,而bootsect.S在完成了指令搬移以后就退出了。之后執(zhí)行權(quán)就轉(zhuǎn)到了setup.S的程序中。Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linuxsetup階setup.S的主要功能就是利用ROMBIOS中斷機(jī)器系統(tǒng)數(shù)據(jù),并將系統(tǒng)參數(shù)(包括內(nèi)存、磁盤等)保存到0x90000~0x901FF開(kāi)始的內(nèi)存中位置。此外,setup.S還 .S中的代碼包含進(jìn)來(lái),檢測(cè)和設(shè)置顯示器和顯示模式最后,它還會(huì)設(shè)置CPU的控制寄存器CR0(也稱機(jī)器狀態(tài)字),從而進(jìn)入32位保護(hù)式運(yùn)行,并跳轉(zhuǎn)到絕對(duì)地址為0x100000(虛擬地址 +0x100000)處。當(dāng)CPU0x100000時(shí),將執(zhí)行“arch/i386/kernel/head.S”中的startup_32head.S階head.Shead.S核解壓。就如本節(jié)前面提到的,內(nèi)核是通過(guò)壓縮的方式放在內(nèi)存中的,head.S通過(guò)調(diào)用中定義 press_kernel()函數(shù),將內(nèi)核vmlinuz解壓到0x100000的接下來(lái)head.S程序與完成解壓縮工作的head.S程序是不同的,它在源代碼中的位置是arch/i386/kernel/head.S。在完成了初始化之后,head.S就跳轉(zhuǎn)到start_kernel()函數(shù)中去了。main.c階 進(jìn)行內(nèi)核的初始化工作。要注意的是,在初始化之前系統(tǒng)中斷仍然是被的,另外內(nèi)核也處于被鎖定狀態(tài),以保證只有一個(gè)CPU用于Linux系統(tǒng)的啟動(dòng)。start_kernel()的最后,調(diào)用了init()函數(shù),也就是下面要講述的INIT階段init階在加載了內(nèi)核之后,由內(nèi)核執(zhí)行引導(dǎo)的第一個(gè)進(jìn)程就是INIT進(jìn)程,該進(jìn)程號(hào)始終是“1”。INIT進(jìn)程根據(jù)其配置文件“/etc/inittab”主要完成系統(tǒng)的一系列初始化的任務(wù)。由于該配置文件是INIT進(jìn)程執(zhí)行的惟一依據(jù),因此先對(duì)它的格式進(jìn)行統(tǒng)一講解。inittab文件中除了注釋行外,每一行都有如下格式id是配置記錄標(biāo)識(shí)符,由1~4個(gè)字符組成,對(duì)于gettymingetty等其他login程序項(xiàng),要求id與tty的編號(hào)相同,否則getty程序?qū)⒉荒苷9ぷ?。runlevels是運(yùn)行級(jí)別記錄符,一般使用0~6以及S和s。其中,0、1、6運(yùn)行級(jí)別為系統(tǒng)保留:0作為shutdown動(dòng)作,1作為重啟至單用戶模式,6為重啟;Ss意義相同,表示單用戶模式,且無(wú)需inittab文件,因此也不在inittab中出現(xiàn)。7~9級(jí)別也是可以使用的,傳統(tǒng)的UNIX系統(tǒng)沒(méi)有定義這幾個(gè)級(jí)別。runlevel可以是并列的多個(gè)值,對(duì)大多數(shù)action來(lái)說(shuō),僅當(dāng)runlevel與當(dāng)前運(yùn)行級(jí)別匹配action字段用于描述系統(tǒng)執(zhí)行的特定操作,它的常見(jiàn)設(shè)置有:initdefault、sysinit、boot遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>培訓(xùn)遠(yuǎn)見(jiàn)遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>bootwait、respawn等initdefault用于標(biāo)識(shí)系統(tǒng)缺省的啟動(dòng)級(jí)別。當(dāng)init由內(nèi)核激活以后,它將inittab中initdefaultrunlevelinittab中沒(méi)有initdefault項(xiàng),init將在控制臺(tái)上請(qǐng)求輸入runlevelsysinit、boot、bootwaitaction將在系統(tǒng)啟動(dòng)時(shí)無(wú)條件運(yùn)行,忽略其中的runlevel。respawn字段表示該類進(jìn)程在結(jié)束后會(huì)重新啟動(dòng)運(yùn)行。process字段設(shè)置啟動(dòng)進(jìn)程所執(zhí)行令以下結(jié)合筆者系統(tǒng)中的inittab配置文件詳細(xì)講解該配置文件完成的功能確定用戶登錄模式、文字界面多用戶模式、X-Windows多用戶模式等。其中的單人模式(runlevel為1)是類似于Windows中的“安全模式”,在這種情況下,系統(tǒng)不加載復(fù)雜的模式從而使系統(tǒng)能夠正常啟動(dòng)。在這些模式中最為常見(jiàn)的是35,其中本系統(tǒng)中默認(rèn)的為5,也就是X-#Defaultrunlevel.The#Defaultrunlevel.Therunlevelsusedby#0-halt(DoNOTsetinitdefaultto#1SingleuserMultiuser,withoutNFS(ThesameasFullmultiuserifyoudonothave#2-#3#4-#5-##6-reboot(DoNOTsetinitdefaultto執(zhí)行內(nèi)容在確定了登錄模式之后,就要開(kāi)始將Linux的主機(jī)信息讀入Linux系統(tǒng),其內(nèi)容就是文#System啟動(dòng)內(nèi)核的模塊及各運(yùn)行級(jí)的在此,主要是選擇模塊的型態(tài)以進(jìn)行驅(qū)動(dòng)程序的加載。接下來(lái)會(huì)根據(jù)不同的運(yùn)行級(jí)levellevel)加載不同的模塊,啟動(dòng)系統(tǒng)服務(wù)l0:0:wait:/etc/rc.d/rcl1:1:wait:/etc/rc.d/rc遠(yuǎn)見(jiàn)<遠(yuǎn)見(jiàn)<Linux應(yīng)用開(kāi)發(fā)班>l2:2:wait:/etc/rc.d/rcl3:3:wait:/etc/rc.d/rcl4:4:wait:/etc/rc.d/rcl5:5:wait:/etc/rc.d/rcl6:6:wait:/etc/rc.d/rcl2:2:wait:/etc/rc.d/rcl3:3:wait:/etc/rc.d/rcl4:4:wait:/etc/rc.d/rcl5:5:wait:/etc/rc.d/rcl6:6:wait:/etc/rc.d/rc#TrapCTRL-ALT-ca::ctrlael:/sbin/shutdown-t3-r#WhenourUPSlsuspowerhasfailed,assumewehaveafewminut#ofpowerleft.Scheduleashutdownfor2minutesfromnow.#Thisdoes,ofcourse,assumeyouhavepowerdinstalledand#UPSconnectedandworkingpf::powerfail:/sbin/shutdown-f-h+2"PowerFailure;System#Ifpowerwasrestoredbeforetheshutdownkickedin,cancelpr:12345:powerokwait:/sbin/shutdown-c"PowerRestored;Shutdown#Rungettysinstandard1:2345:respawn:/sbin/mingetty2:2345:respawn:/sbin/mingettytty23:2345:respawn:/sbin/mingetty4:2345:respawn:/sbin/mingetty5:2345:respawn:/sbin/mingetty6:2345:respawn:/sbin/mingetty#Runxdminrunlevelgx:5:respawn:/etc/X11/prefdm-Linux系統(tǒng)服INIT進(jìn)程的一個(gè)重要作用就是啟動(dòng)Linux系統(tǒng)服務(wù)(也就是運(yùn)行在的守護(hù)進(jìn)程)Linux的系統(tǒng)服務(wù)包括兩種,第一種是獨(dú)立運(yùn)行的系統(tǒng)服務(wù),它們常駐內(nèi)存中,自開(kāi)機(jī)后一直啟動(dòng)著(如httpd),具有很快的響應(yīng)速度;第二種是由xinet設(shè)定的服務(wù)。xinet能夠同時(shí)xinetd看作一個(gè)啟動(dòng)服務(wù)的管理服務(wù)器,它獨(dú)立運(yùn)行的服獨(dú)立運(yùn)行的系統(tǒng)服務(wù)的啟動(dòng)都放 “/etc/rc.d/init.d/”中。如筆者系統(tǒng)中的系服務(wù)的啟 有(關(guān)于Linux中服務(wù)的具體含義見(jiàn)附錄[root@sunq lsacpiddc_clientiptablesnamedpandrpcsvcgssdanacrondc_serverirdanetdumppcmciasaslauthdapmddiskdumpirqbalancenetfsportmapsendmailarptables_jfdovecotisdnnetplugdpsacctsinglewatchquaggaatddundkillallnetworkrawdevicessmartdwinbindautofsfirstbootkudzuNetworkManagerreadaheadsmb…為了為了指定特定運(yùn)行級(jí)別服務(wù)的開(kāi)啟或關(guān)閉,系統(tǒng)的各個(gè)不同運(yùn)行級(jí)別都有不同文件, 為.d”,其中的N分別對(duì)應(yīng)不用的運(yùn)行級(jí)別。讀者可以進(jìn)入到里查看相應(yīng)服務(wù)的開(kāi)啟或關(guān)閉狀態(tài),如進(jìn)入中的文[root@sunqls…K10psacctK50netdumpK99microcode_ctlS13portmapS55cupsK02NetworkManagerK35winbindK89netplugdS10networS28autofsS95anacK05saslauthdK36lisaK90bluetoothS12syslogS40smartdS95atdK10dc_serverK45namedK94diskdumpS13irqbalanceS44acpidS97messageb可以看到,每個(gè)對(duì)應(yīng)的服務(wù)都以“K”或“S”開(kāi)頭,其中的K代表關(guān)閉(kill),其中的S代表啟動(dòng)(start),用戶可以使用命令“+start|stop|status|restart”來(lái)對(duì)相應(yīng)的服務(wù)進(jìn)在執(zhí)行完相應(yīng)的rcN.d 下的文件后,INIT最后會(huì)執(zhí)行rc.local來(lái)啟動(dòng)本地服務(wù),因此,用戶若想把某些非系統(tǒng)服務(wù)設(shè)置為自啟動(dòng),可以編輯rc.local文件,加上相應(yīng)的執(zhí)如下所示[root@sunqxinetd.d]#servicexinetd停止 確定另外,讀者還可以使用命令如下所示[root@sunqxinetd.d]#servicexinetd停止 確定開(kāi)啟 確定xinetd設(shè)定的服xinetd管理系統(tǒng)中不經(jīng)常使用的服務(wù),這些服務(wù)程序只有在有請(qǐng)求時(shí)才由xinetd服務(wù)負(fù)責(zé)啟動(dòng),一旦運(yùn)行完畢服務(wù)自動(dòng)結(jié)束。xinetd的配置文件為“/etc/xinetd.conf”,它對(duì)xinet的Linux應(yīng)用程序開(kāi)發(fā)詳解》——2章、Linux##Simpl
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色生態(tài)苗木種植技術(shù)服務(wù)承包合同4篇
- 二零二五版農(nóng)業(yè)資源整合與開(kāi)發(fā)合同樣本4篇
- 2025年海外教育機(jī)構(gòu)外籍教師聘用合同參考文本
- 二零二五年度事業(yè)單位職工退休后健康服務(wù)保障合同4篇
- 2025年個(gè)人二手房交易全程代理服務(wù)合同4篇
- 2025年度安全門采購(gòu)與安裝工程合同2篇
- 二零二五年度2025版新能源汽車充電樁銷售合同范本4篇
- 二零二五年度教育培訓(xùn)講師專業(yè)能力評(píng)定合同模板4篇
- 2025年度住宅小區(qū)道路與照明設(shè)施維護(hù)合同4篇
- 2025年度金融數(shù)據(jù)分析派遣員工勞動(dòng)合同范本4篇
- 南安市第三次全國(guó)文物普查不可移動(dòng)文物-各鄉(xiāng)鎮(zhèn)、街道分布情況登記清單(表五)
- 選煤廠安全知識(shí)培訓(xùn)課件
- 項(xiàng)目前期選址分析報(bào)告
- 急性肺栓塞搶救流程
- 《統(tǒng)計(jì)學(xué)-基于Python》 課件全套 第1-11章 數(shù)據(jù)與Python語(yǔ)言-時(shí)間序列分析和預(yù)測(cè)
- 《形象價(jià)值百萬(wàn)》課件
- 紅色文化教育國(guó)內(nèi)外研究現(xiàn)狀范文十
- 中醫(yī)基礎(chǔ)理論-肝
- 小學(xué)外來(lái)人員出入校門登記表
- 《土地利用規(guī)劃學(xué)》完整課件
- GB/T 25283-2023礦產(chǎn)資源綜合勘查評(píng)價(jià)規(guī)范
評(píng)論
0/150
提交評(píng)論