欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux dev 常見(jiàn)特殊設(shè)備介紹與應(yīng)用(loop,null,zero,full,random)

 更新時(shí)間:2015年10月14日 21:25:13   投稿:mdxy-dxy  
這篇文章主要介紹了linux dev 常見(jiàn)特殊設(shè)備介紹與應(yīng)用(loop,null,zero,full,random),需要的朋友可以參考下

linux是文件型系統(tǒng),所有硬件如軟件都會(huì)在對(duì)于的目錄下面有相應(yīng)的文件表示。對(duì)于dev這個(gè)目錄,我們知道它下面的文件,表示的是linux的設(shè)備。在windows系統(tǒng)中,設(shè)備大家很好理解,象硬盤,磁盤指的是實(shí)實(shí)在在硬件。而在文件系統(tǒng)的linux下面,都有對(duì)于文件與這些設(shè)備關(guān)聯(lián)的。訪問(wèn)它們就可以放到實(shí)際硬件,想想還是linux靈活了。變成文件,操作該多簡(jiǎn)單了。不用調(diào)用以前com,prt等接口了。直接讀文件,寫文件就可以向設(shè)備發(fā)送讀或者寫操作了。 按照讀寫存儲(chǔ)數(shù)據(jù)方式,我們可以把設(shè)備分為以下幾種:字符型設(shè)備,塊設(shè)備,偽設(shè)備。

一、設(shè)備分類

字符型設(shè)備

字符設(shè)備是指每次與系統(tǒng)傳輸1個(gè)字符的設(shè)備。這些設(shè)備節(jié)點(diǎn)通常為傳真、虛擬終端和串口調(diào)制解調(diào)器、鍵盤之類設(shè)備提供流通信服務(wù),它通常不支持隨機(jī)存取數(shù)據(jù)。 字符設(shè)備在實(shí)現(xiàn)時(shí),大多不使用緩存器。系統(tǒng)直接從設(shè)備讀?。瘜懭朊恳粋€(gè)字符。例如,鍵盤這種設(shè)備提供的就是一個(gè)數(shù)據(jù)流,當(dāng)你敲入“cnblogs”這個(gè)字符串時(shí),鍵盤驅(qū)動(dòng)程序會(huì)按照和輸入完全相同的順序返回這個(gè)由七個(gè)字符組成的數(shù)據(jù)流。它們是順序的,先返回c,最后是s。

塊設(shè)備

塊設(shè)備是指與系統(tǒng)間用塊的方式移動(dòng)數(shù)據(jù)的設(shè)備。這些設(shè)備節(jié)點(diǎn)通常代表可尋址設(shè)備,如硬盤、CD-ROM和內(nèi)存區(qū)域。

塊設(shè)備通常支持隨機(jī)存取和尋址,并使用緩存器。操作系統(tǒng)為輸入輸出分配了緩存以存儲(chǔ)一塊數(shù)據(jù)。當(dāng)程序向設(shè)備發(fā)送了讀取或者寫入數(shù)據(jù)的請(qǐng)求時(shí),系統(tǒng)把數(shù)據(jù)中的每一個(gè)字符存儲(chǔ)在適當(dāng)?shù)木彺嬷?。?dāng)緩存被填滿時(shí),會(huì)采取適當(dāng)?shù)牟僮鳎ò褦?shù)據(jù)傳走),而后系統(tǒng)清空緩存。它與字符設(shè)備不同之處就是,是否支持隨機(jī)存儲(chǔ)。字符型是流形式,逐一存儲(chǔ)。

偽設(shè)備

在類Unix操作系統(tǒng)中,設(shè)備節(jié)點(diǎn)并不一定要對(duì)應(yīng)物理設(shè)備。沒(méi)有這種對(duì)應(yīng)關(guān)系的設(shè)備是偽設(shè)備。操作系統(tǒng)運(yùn)用了它們提供的多種功能。部份經(jīng)常使用到的偽設(shè)備包括: null,zero,full,loop,random,urandom

二、特殊設(shè)備及使用

這里說(shuō)到特殊設(shè)備除了硬盤主板等,只是它在linux shell命令里面,有特殊的作用,因此把它們單獨(dú)拿出來(lái)。這些設(shè)備分別是:

/dev/stdin
/dev/stdout
/dev/stderr
/dev/null
/dev/zero
/dev/full
/dev/random,urandom
/dev/fd
/dev/tcp|upd
/dev/loop

1、標(biāo)準(zhǔn)輸出輸入設(shè)備

還記得上次說(shuō)的,linux重定向嗎?可以看下:linux shell數(shù)據(jù)重定向(輸入重定向與輸出重定向)詳細(xì)分析 。它們就是與幾個(gè)特殊文件描述符對(duì)應(yīng),fd0,fd1,fd2 (stdin,stdout,stderr)

如:

[chengmo@centos5 shell]$ cat>teststdin</dev/stdin
test
#ctrl+D
#cat從/dev/stdin獲得數(shù)據(jù),然后將標(biāo)準(zhǔn)輸出,輸入的到teststdin文件
[chengmo@centos5 shell]$ cat teststdin 
test
 
[chengmo@centos5 shell]$ cat>teststdin
test
#ctrl+D
#不指定輸入,默認(rèn)輸入設(shè)備就是/dev/stdinn

/dev/stdin指的就是鍵盤設(shè)備

[chengmo@centos5 shell]$ cat test.sh >/dev/stdout |grep 'echo'
echo "very good!";
echo "good!";
echo "pass!";
echo "no pass!"
#/dev/stdout指向就是標(biāo)準(zhǔn)輸出,因此重定向給它的數(shù)據(jù),最終發(fā)送到屏幕上(fd1)
     
[chengmo@centos5 shell]$ cat test.sh  |grep 'echo'           
echo "very good!";
echo "good!";
echo "pass!";
echo "no pass!";
 
     
[chengmo@centos5 shell]$ cat test.sh >/dev/stderr |grep 'echo'  
#!/bin/sh
 
scores=40;
if [[ $scores -gt 90 ]]; then
    echo "very good!";
elif [[ $scores -gt 80 ]]; then
    echo "good!";
elif [[ $scores -gt 60 ]]; then
    echo "pass!";
else
    echo "no pass!";
fi;
#/dev/stderr 指是錯(cuò)誤輸出,默認(rèn)也是輸出到屏幕上面,但是它的內(nèi)容不能通過(guò)管道傳遞給grep,管道只能傳遞標(biāo)準(zhǔn)輸出

/dev/null設(shè)備

是個(gè)黑洞設(shè)備,它丟棄一切寫入其中數(shù)據(jù),空設(shè)備通常被用于丟棄不需要的輸出流。記得當(dāng)年用windows時(shí)候,有個(gè)類似的設(shè)備:NUL ,跟這個(gè)功能一樣。任何寫入該設(shè)備數(shù)據(jù)都會(huì)被丟棄掉。從這個(gè)里面讀取數(shù)據(jù)返回是空。將一些不用內(nèi)容經(jīng)常發(fā)送給這個(gè)設(shè)備,丟棄不需要的數(shù)據(jù)。

如:

[chengmo@centos5 shell]$ cat /dev/null
[chengmo@centos5 shell]$ cat test.sh >/dev/null
#讀該設(shè)備為空,寫入該設(shè)備數(shù)據(jù)都丟棄了

/dev/zero設(shè)備

在類UNIX 操作系統(tǒng)中, /dev/zero 是一個(gè)特殊的文件,當(dāng)你讀它的時(shí)候,它會(huì)提供無(wú)限的空字符(NULL, ASCII NUL, 0x00)。其中的一個(gè)典型用法是用它提供的字符流來(lái)覆蓋信息,另一個(gè)常見(jiàn)用法是產(chǎn)生一個(gè)特定大小的空白文件。

如:

[chengmo@centos5 shell]$ dd if=/dev/zero of=testzero count=1024 bs=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0107194 seconds, 97.8 MB/s
#創(chuàng)建一個(gè)大小為1M文件,該文件一個(gè)塊是1024字節(jié),一共是1024塊(剛好1M),用/dev/zero文件內(nèi)容填充它。輸出創(chuàng)建到:testzero文件
 
 
[chengmo@centos5 shell]$dd if=/dev/zero of=/dev/磁盤分區(qū)
#這個(gè)命令一定不要隨便用,有點(diǎn)象windows里面的粉碎文件工具。不過(guò)它是用\0x00填充整個(gè)分區(qū)。這樣做數(shù)據(jù)是不可以恢復(fù)的了。
 
[chengmo@centos5 shell]$cat /dev/zero>testinputzero
#這個(gè)命令也不能隨便使用咯,/dev/zero設(shè)備一個(gè)特效是,如果你讀取的話,是一個(gè)死循環(huán)會(huì)輸出無(wú)窮的\x00,這樣你將創(chuàng)建一個(gè)用\x00填充的文件。如果你沒(méi)有限制該用戶磁盤配額。它將耗盡整個(gè)磁盤空間。

在linux資源配額限制里面,如果沒(méi)有現(xiàn)在普通用戶的磁盤空間利用,或內(nèi)存使用。一個(gè)普通用戶就可以通過(guò)上面方法一會(huì)就塞滿整個(gè)磁盤。也可以通過(guò)while(true) {fork……}類程序,啟動(dòng)無(wú)限線程,耗盡整個(gè)系統(tǒng)內(nèi)存。

/dev/full設(shè)備

類Unix系統(tǒng)中,/dev/full(常滿設(shè)備)是一個(gè)特殊設(shè)備文件,總是在向其寫入時(shí)返回設(shè)備無(wú)剩余空間(錯(cuò)誤碼為ENOSPC),讀取時(shí)則與/dev/zero相似,返回?zé)o限的空字符(NULL, ASCII NUL, 0x00)。這個(gè)設(shè)備通常被用來(lái)測(cè)試程序在遇到磁盤無(wú)剩余空間錯(cuò)誤時(shí)的行為。

如:

[chengmo@centos5 shell]$ echo 'chengmo' >/dev/full
-bash: echo: write error: 設(shè)備上沒(méi)有空間
[chengmo@centos5 shell]$ echo $?
1
#命令執(zhí)行返回錯(cuò)誤

/dev/random[urandom]

在類UNIX操作系統(tǒng)中,/dev/random是一個(gè)特殊的設(shè)備文件,可以用作隨機(jī)數(shù)發(fā)生器或偽隨機(jī)數(shù)發(fā)生器。它允許程序訪問(wèn)來(lái)自設(shè)備驅(qū)動(dòng)程序或其它來(lái)源的背景噪聲。常用作隨機(jī)數(shù)發(fā)生器。具體參考:linux shell實(shí)現(xiàn)隨機(jī)數(shù)多種方法(date,random,uuid)

/dev/fd

記錄用戶打開(kāi)的文件描述符

[chengmo@centos5 shell]$ ls /dev/fd/
0 1 2 3

詳細(xì)參考:

linux shell數(shù)據(jù)重定向(輸入重定向與輸出重定向)詳細(xì)分析 文件描述符介紹。

/dev/tcp[udp]/host/port

讀取該類形式設(shè)備,將會(huì)創(chuàng)建一個(gè)連接host主機(jī)port端口的tcp[upd]連接。打開(kāi)一個(gè)socket通訊接口。

詳細(xì)使用可以參考:

linux shell 腳本實(shí)現(xiàn)tcp/upd協(xié)議通訊(重定向應(yīng)用)

/dev/loop

在類UNIX操作系統(tǒng)中,Loop設(shè)備 可以把loop 文件,作為塊設(shè)備掛載使用。

如:

[chengmo@centos5 shell]$mount -o loop example.img /home/chengmo/img

#將img鏡像文件掛載到/home/chengmo/img目錄下面,有了這個(gè)設(shè)備,我們不需要通過(guò)虛擬光驅(qū)就可以讀虛擬磁盤格式的文件。

說(shuō)了很多l(xiāng)inux 特殊設(shè)備,其它象cpu,內(nèi)存,磁盤,網(wǎng)絡(luò),鍵盤,終端設(shè)備。跟我們windows里面常見(jiàn)差不多。有什么問(wèn)題,歡迎交流!

相關(guān)文章

  • Linux下快速比較兩個(gè)目錄的不同(多種方法)

    Linux下快速比較兩個(gè)目錄的不同(多種方法)

    這篇文章主要介紹了Linux下快速比較兩個(gè)目錄的不同,本文給大家?guī)?lái)了多種方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • Shell交互批量更改主機(jī)名的方法

    Shell交互批量更改主機(jī)名的方法

    大家可能會(huì)遇到這種情況,需要批量修改主機(jī)名和同步hosts文件到多臺(tái)主機(jī),例如新購(gòu)置了一批云服務(wù)器等,可能主機(jī)名稱上并不能滿足你的命名規(guī)則或規(guī)范,但如果一臺(tái)臺(tái)去更改可能就太慢又無(wú)聊,所以shell腳本絕對(duì)是你的最佳選擇。下面看看Shell批量更改主機(jī)名的方法。
    2016-12-12
  • Shell腳本導(dǎo)入導(dǎo)出數(shù)據(jù)的項(xiàng)目示例

    Shell腳本導(dǎo)入導(dǎo)出數(shù)據(jù)的項(xiàng)目示例

    在工作中,很多場(chǎng)景都會(huì)涉及到數(shù)據(jù)的導(dǎo)入導(dǎo)出,本文就介紹一下使用Shell腳本導(dǎo)入導(dǎo)出數(shù)據(jù)的項(xiàng)目示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • linux命令詳解之chkconfig命令使用方法

    linux命令詳解之chkconfig命令使用方法

    chkconfig命令主要用來(lái)更新(啟動(dòng)或停止)和查詢系統(tǒng)服務(wù)的運(yùn)行級(jí)信息。謹(jǐn)記chkconfig不是立即自動(dòng)禁止或激活一個(gè)服務(wù),它只是簡(jiǎn)單的改變了符號(hào)連接,下面看一下它是如何使用的
    2014-01-01
  • 一個(gè)測(cè)試下載速度的shell腳本

    一個(gè)測(cè)試下載速度的shell腳本

    這篇文章主要介紹了一個(gè)測(cè)試下載速度的shell腳本,需要的朋友可以參考下
    2014-03-03
  • shell中的流編輯器awk工作原理

    shell中的流編輯器awk工作原理

    awk是一種處理文本文件的語(yǔ)言,是一個(gè)強(qiáng)大的文本分析工具, 用于在linux/unix下對(duì)文本和數(shù)據(jù)進(jìn)行處理 。這篇文章主要介紹了shell中的流編輯器awk命令及工作原理,需要的朋友可以參考下
    2022-01-01
  • 使用shell腳本判斷文件后綴的方法實(shí)例

    使用shell腳本判斷文件后綴的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于如何使用shell腳本判斷文件后綴的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • shell監(jiān)控linux系統(tǒng)進(jìn)程創(chuàng)建腳本分享

    shell監(jiān)控linux系統(tǒng)進(jìn)程創(chuàng)建腳本分享

    shell監(jiān)控linux系統(tǒng)進(jìn)程創(chuàng)建腳本,大家參考使用吧
    2013-12-12
  • shell 安全腳本的實(shí)現(xiàn)

    shell 安全腳本的實(shí)現(xiàn)

    本文主要介紹了shell 安全腳本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 用shell命令讀取與輸出數(shù)據(jù)的代碼

    用shell命令讀取與輸出數(shù)據(jù)的代碼

    本文為大家介紹使用shell命令進(jìn)行讀取與輸出數(shù)據(jù)的方法,其中涉及了文件輸出、重定向、管道等相關(guān)知識(shí),有興趣的朋友可以參考下
    2013-02-02

最新評(píng)論