試驗(yàn)6:文件系統(tǒng)_第1頁(yè)
試驗(yàn)6:文件系統(tǒng)_第2頁(yè)
試驗(yàn)6:文件系統(tǒng)_第3頁(yè)
試驗(yàn)6:文件系統(tǒng)_第4頁(yè)
試驗(yàn)6:文件系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、、一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)LINUX系統(tǒng)下對(duì)文件進(jìn)行操作的各種命令和圖形化界面的使用方法。.深入學(xué)習(xí)和掌握文件管理系統(tǒng)的基本原理和LINUX等操作系統(tǒng)下常用的系統(tǒng)調(diào)用,編寫一個(gè)使用系統(tǒng)調(diào)用的例程。二、實(shí)驗(yàn)指導(dǎo)1.目錄/proc下與系統(tǒng)相關(guān)的文件和目錄/proc/$pid/fd :這是一個(gè)目錄,該進(jìn)程($PID號(hào)碼進(jìn)程)每個(gè)打開的文件在該目錄下 有一個(gè)對(duì)應(yīng)的文件。例如:#ls /proc/851/fd012255這表示,851號(hào)進(jìn)程目前正在使用(已經(jīng)打開的)文件有 4個(gè),它們的描述符分別是0、1、2、255。其中,0、1、2依次分別是進(jìn)程的標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出設(shè)備。(2)/proc/fil

2、esystems:該文件記錄了可用的文件系統(tǒng)類型。rootsoftembed-desktop: - c xFile Edit 里iav/ Terminal Tabs Help-desktop :cat /proc/filesystems nodev sysfs nodev rootfs nodev bdev nodev proc nodev cgroup nodev cpuset nodev debugfs nodev securityfs nodev sockfs nodev pipefs nodev anoninodefs nodev tmpfs nodev inotifyfs nodev

3、 devpts cramfs nodev ramfs nodev hugetlbfs nodev inqueue nodev fuse fuseblk nodev fusectl nodev usbfs(3)/proc/mounts:該記錄了當(dāng)前被安裝的文件系統(tǒng)信息例如:#cat /proc/mount(4)/proc/$pid/maps: 該文件記錄了進(jìn)程的映射內(nèi)存區(qū)信息。例如:#cat /proc/851/maps2.常用命令講解ls命令用來(lái)查看用戶有執(zhí)行權(quán)限的任意目錄中的文件列表,該命令有許多有趣的選項(xiàng)。例如:$ ls -liah *22684 -rw-r-r- 1 bluher use

4、rs 952 Dec 28 18:43 .profile19942 -rw-r-r- 1 scalish users 30 Jan 3 20:00 test2.out925 -rwxr-xr-x 1 scalish users 378 Sep 2 2002 test.sh上面的列表顯示8歹I:第1列指示文件的inode ,因?yàn)槲覀兪褂昧?-i選項(xiàng)。剩下的列通過-l選項(xiàng)來(lái)進(jìn) 行正常顯示。第2列顯示文件類型和文件訪問權(quán)限。第3列顯示鏈接數(shù),包括目錄。第4和第5列顯示文件的所有者和組所有者。這里,所有者,bluher 屬于組users。第6列顯示文件大?。▎挝粸樗@示的單位,而不是默認(rèn)的字節(jié)數(shù),因?yàn)?/p>

5、我們使用了 -h選項(xiàng)。第7列顯示日期(它看起來(lái)像是三列),包括月、日和年,以及當(dāng)天的時(shí)間。第8列顯示文件名。在選項(xiàng)列表中使用-a將使列表中包含隱藏文件(如.pro巾le)的列表。處理文件可以移動(dòng)(mv)、復(fù)制(cp)或刪除(rm)文件和目錄。明智地使用-i選項(xiàng),以獲 得確認(rèn)通常是個(gè)不錯(cuò)的主意。$ cp -i ls.out ls2.outcp:overwrite ls2.out?mv命令允許使用-b選項(xiàng),這將在移動(dòng)文件之前作一個(gè)備份拷貝。rm和cp接受功 能強(qiáng)大但卻危險(xiǎn)的-r選項(xiàng),它將在一個(gè)目錄和它的文件上遞歸執(zhí)行。$ rm -ir Testrm:descend into directory T

6、est? y可以用mkdir來(lái)創(chuàng)建目錄,用rmdir來(lái)刪除目錄。不過,因?yàn)椴荒苡胷mdir來(lái)刪除包含文件的目錄,所以使用rm加-r選項(xiàng)通常要更方便些。出于安全的原因,所有的文件都有所有權(quán)和保護(hù)。文件訪問權(quán)限(或文件模式)包含之前提到的相同的10個(gè)字符:第一個(gè)字符指示文件類型。最常見的是 -代表文件,d代表目錄,而l代表鏈接。接下來(lái)的9個(gè)字符是三種用戶類別的訪問權(quán)限:文件所有者(字符 2-4 ),用戶組 (5-7)和其它(8-10),其中r表示讀權(quán)限,w表示寫權(quán)限,x指示一個(gè)文件上的執(zhí)行權(quán) 限。破折號(hào)-如果出現(xiàn)在這九個(gè)位置的任意一個(gè),則指示這個(gè)操作對(duì)該類別的用戶禁止??梢允褂胏hmod命令通過字

7、符符號(hào)或二進(jìn)制掩碼來(lái)設(shè)置訪問權(quán)限。要使用二進(jìn)制掩碼,必須將三個(gè)權(quán)限組的字符表示轉(zhuǎn)換成二進(jìn)制格式,然后轉(zhuǎn)換成八進(jìn)制格式:用戶類別:所有者用戶組其它字符表示: rwx r-x r-二進(jìn)制表示:111 101 100八進(jìn)制表示:7 5 4將寫權(quán)限賦予用戶組,可以使用:chmod g+w test.sh or chmod 774 test.sh用umask命令,在/etc/init.dev文件中進(jìn)行系統(tǒng)范圍內(nèi)的、或在.pro巾le文件中進(jìn)行的本地的文件權(quán)限默認(rèn)設(shè)置。這個(gè)命令指示用777減去這個(gè)數(shù)字來(lái)獲取默認(rèn)的權(quán)限:$ umask 022這將為用戶創(chuàng)建的所有新文件生成一個(gè)默認(rèn)的文件權(quán)限755 o可以用c

8、hown來(lái)修改文件的所有權(quán):$ chown bluher Is.out這里,bluher是新的文件所有者。類似地,組成員資格將按以下方式修改:$ chgrp devgrp ls.out這里,devgrp是新的用戶組。Is不提供哪些文件是文本的,哪些文件是二進(jìn)制的的信息。要了解這個(gè)信息,可以 使用file * 命令。重命名文件賦予一個(gè)文件多個(gè)名字的兩種流行的方法是利用鏈接和alias 命令。Alias可以用 來(lái)為一個(gè)更長(zhǎng)的命令重新起一個(gè)更方便的名字:$ alias ll=ls -l$ ll注意單引號(hào)的使用,這使得 BASH將該項(xiàng)目傳遞給別名,而不是自己估計(jì)它。別名還 可用作較長(zhǎng)的路徑名的縮寫:$

9、 alias jdev9i=/jdev9i/jdev/bin/jdev cat、more 和 less命令讓能夠從命令行查看一個(gè)文本文件的內(nèi)容,而無(wú)需調(diào)用編輯器。Cat是 concatenate 的縮寫,它將默認(rèn)地在標(biāo)準(zhǔn)輸出(顯示屏)上顯示文件內(nèi)容。和 cat 一 起提供的最有趣的選項(xiàng)之一是-n選項(xiàng),它用編號(hào)的輸出行來(lái)顯示文件內(nèi)容。$ cat -n test.out1 This is a test.因?yàn)閏at 一次性輸出文件中的所有行,所以可能更喜歡用 more和less ,因?yàn)樗鼈?都一次輸出一屏的文件內(nèi)容。Less是more的一個(gè)增強(qiáng)的版本,它允許用來(lái)自 vi文本 編輯器的關(guān)鍵命令來(lái)增強(qiáng)文

10、件查看。例如, d向前翻滾、b向后翻滾N行(如果N是在 d或b之前指定的)。為N輸入的值成為隨后的d命令的默認(rèn)值。man頁(yè)面實(shí)用工具使 用less來(lái)顯示使用說明的內(nèi)容。重定向和管道重定向允許將命令輸出重定向到文件中,而不是標(biāo)準(zhǔn)輸出,或者類似地,也可重定向 輸入。重定向的標(biāo)準(zhǔn)符號(hào)創(chuàng)建一個(gè)新的文件。 符號(hào)將輸出添加到一個(gè)現(xiàn)有的文件中:$ more test2.outAnother test.$ cat test.out test2.out$ cat test2.outAnother test.This is a test.到文件的標(biāo)準(zhǔn)輸入可以用符號(hào)來(lái)重定向:$ cat test2.out錯(cuò)誤消息用

11、2和2來(lái)重定向和添加,格式如下:$ command 2name_of_error_file重定向在一個(gè)命令和文件之間、或文件和文件之間工作。重定向語(yǔ)句的一項(xiàng)必須是一 個(gè)文件。管道使用|符號(hào),并且在命令之間工作。例如,可以用以下方式將一個(gè)命令的輸出直 接發(fā)送到打印機(jī)上:$ ls -l * | lpr可以用以下方式快速地找到歷史列表中的一個(gè)命令:$ history | grep cat查找文件find命令的GNU版本非常強(qiáng)大、靈活并且比 UNIX系統(tǒng)上存在的經(jīng)典版本更具包容 性。它對(duì)于涉及到目錄結(jié)構(gòu)的任務(wù)非常有用,包括在文件上查找和執(zhí)行命令。find命令的基本格式是:$ find startdir

12、ectory options matchcriteria actionoptions如果知道文件的名稱、或者甚至名稱的一部分,但不知道它所處的目錄,可以這么做: $ find .-name test*./test./jdevhome/mywork/EmpWS/EmpBC4J/test與經(jīng)典的UNIX系統(tǒng)不同,在Linux中不需要在末尾添加-print 操作,因?yàn)槿绻?沒有指定其它的操作選項(xiàng),就將假定執(zhí)行這個(gè)操作。在目錄起始位置上的一個(gè)點(diǎn)(.)將使find 在的工作目錄中開始搜索。兩個(gè)點(diǎn),.,在父目錄中開始搜索??梢栽谌我饽夸浵麻_始搜索。注意,可以使用通配符作為搜索準(zhǔn)則的一部分(只要用單引號(hào)將整

13、個(gè)項(xiàng)目括起來(lái))。$ find .-name test* -print ./test.out./test2.out顯示擁有.out擴(kuò)展名的一系列文件:$ find /home -name *.out不過記住,除非是作為超級(jí)用戶運(yùn)行這個(gè)命令,否則將可能得到許多的Permissiondenied錯(cuò)誤消息。3.Linux常用文件系統(tǒng)調(diào)用open系統(tǒng)調(diào)用格式:#include #inckude #include int open(char *path,int flags,mode_t mode);其中:參數(shù)path是指向所要打開的文件的路徑名指針。參數(shù)falgs規(guī)定如何打開該文件它必須包含以下三個(gè)值之一

14、O_RDONLY只讀打開O_WRONLY只寫打開O_RDWR讀/寫打開參數(shù)mode規(guī)定對(duì)該文件的訪問權(quán)限,定義在 中read系統(tǒng)調(diào)用格式:#include #include int read(int fd,void *buf,size_t nbytes)該系統(tǒng)調(diào)用從文件描述符fd所代表的文件中讀取nbytes個(gè)字節(jié),buf指定的緩沖區(qū)內(nèi)。 所讀取的內(nèi)容從當(dāng)前的讀/寫指針?biāo)甘镜奈恢瞄_始,這個(gè)位置由相應(yīng)的打開文件描述中 的偏移值(off_set )給出,調(diào)用成功后文件讀寫指針增加實(shí)際讀取的字節(jié)數(shù)。使用read系統(tǒng)調(diào)用時(shí),應(yīng)注意設(shè)置的數(shù)據(jù)緩沖區(qū)充分大,能夠存放所要求的數(shù)據(jù)字節(jié), 因?yàn)閮?nèi)核只復(fù)制數(shù)據(jù)

15、,不進(jìn)行檢查。返回: -1:錯(cuò)誤0:文件偏移值是在文件結(jié)束處整數(shù):從該文件復(fù)制到規(guī)定的緩沖區(qū)中的字節(jié)數(shù)。通常這個(gè)字節(jié)數(shù)與所請(qǐng)求的字節(jié)數(shù)相同。除非請(qǐng)求的字節(jié)數(shù)超過剩余的字節(jié)數(shù),這時(shí)將返回一個(gè)小于請(qǐng)求的字節(jié)數(shù)的數(shù)字。(3)write 系統(tǒng)調(diào)用格式: #include #include int write(int fd,void *buf,size_t nbytes)該調(diào)用從buf所指的緩沖區(qū)中將nbytes個(gè)字節(jié)寫到描述符fd所指的文件中。(4)close系統(tǒng)調(diào)用格式: #include int close(int fd)每打開一個(gè)文件,系統(tǒng)就給文件分配一個(gè)文件描述符,同時(shí)為打開文件描述符的引用計(jì)

16、數(shù)加1。Linux文件系統(tǒng)最多可以分配2 5 5個(gè)文件描述符。當(dāng)調(diào)用 close()時(shí),打開文件描述符的引用計(jì)數(shù)值減1 ,最后一次對(duì) close()的調(diào)用將使應(yīng)用計(jì)數(shù)值為零。雖然當(dāng)一個(gè)進(jìn)程結(jié)束時(shí),任何打開的文件將自動(dòng)關(guān)閉,明顯地關(guān)閉任何打開的文件是良好 的程序設(shè)計(jì)習(xí)慣。三、實(shí)驗(yàn)步驟(附程序原碼)$ man 2 write參數(shù)2代表我們要去看 Linux Programmers Manual ,可以看到:NAMEwrite - write to a file descriptorSYNOPSIS#include ssize_t write(int fd, const void *buf, size_t count);/ syscalltestC.c#include int main()char string5 = s,u,c,k,n;write(1,string, 5);return 0; 四、

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論