這 10 種 Linux 命令線上操作,運維一定要謹記

高效運維
每一年,都會有刪庫跑路的新聞?,F(xiàn)實中,刪庫容易,跑路難,從業(yè)者充滿了淚水。這些動作里面,并不總是存在主觀的惡意,而是這些命令太危險了。線上操作時,一定要保持清醒的頭腦,切記馬虎大意。

11.jpg

每一年,都會有刪庫跑路的新聞?,F(xiàn)實中,刪庫容易,跑路難,從業(yè)者充滿了淚水。

這些動作里面,并不總是存在主觀的惡意,而是這些命令太危險了。線上操作時,一定要保持清醒的頭腦,切記馬虎大意。

你說你誤操作的,誰信呢?

切記:

嚴禁酒后登錄線上服務(wù)器操作

嚴禁吵架后情緒激動登錄線上服務(wù)器操作

嚴禁長時間加班后操作線上環(huán)境

禁止在線上試驗不熟悉的命令

重要系統(tǒng)先做備份

1.準備工作

在執(zhí)行危險命令時,請深呼吸。首先執(zhí)行ifconfig,或者ip addr命令,確認是在正確的服務(wù)器上。

1   $ip addr

 1:lo:<LOOPBACK,UP,LOWER_UP>mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

 inet 127.0.0.1/8 scope host lo

5   valid_lft forever preferred_lft forever

6   inet6::1/128 scope host

 valid_lft forever preferred_lft forever

8  2:eth0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc fq_codel state UP group default qlen 1000

9   link/ether 00:16:3e:34:e9:a9 brd ff:ff:ff:ff:ff:ff

10  inet 172.19.26.39/20 brd 172.19.31.255 scope global dynamic noprefixroute eth0

11   valid_lft 313267185sec preferred_lft 313267185sec

12  inet6 fe80::216:3eff:fe34:e9a9/64 scope link

1valid_lft forever preferred_lft forever

這時候,再次深呼吸,然后執(zhí)行pwd命令,確保自己是在正確的目錄下面。

$pwd

/etc/nginx

接下來,就可以看一下執(zhí)行的命令,是不是危險指令。

2.rm-rf命令

-rf參數(shù)將遞歸刪除文件,誤刪文件導(dǎo)致數(shù)據(jù)丟失,產(chǎn)生嚴重后果。如果多一個空格,或者/沒有補齊,或者文件有特殊符號,導(dǎo)致誤刪文件的誤操作居多。

rm-rf./*=>rm-rf/

rm-rf abc/=>rm-rf abc/

執(zhí)行rm命令,手速一定要慢。按補全,一定要等屏幕回顯后操作。

另外,在腳本中,rm的坑也不小,比如:

rm-rf$/*

如果p變量沒有設(shè)置,就會是災(zāi)難性的后果,命令等同于rm-rf/。所以rm還有另外一條謹言:在腳本中執(zhí)行rm的時候,請先判斷相關(guān)的變量是否為空。

3.chmod命令

chmod是更改目錄和文件權(quán)限用的,如果處理不當,會產(chǎn)生和rm一樣的后果。

這里介紹一種非常霸道的恢復(fù)方法。在執(zhí)行這個命令之前,先把所有文件的權(quán)限備份一下。這里用到getfacl這個命令。

getfacl-R/>chmod.txt

恢復(fù)的時候,執(zhí)行

setfacl--restore=chmod.txt

它將回放這個文件的權(quán)限,有時候是救命的。

4.cat命令

cat命令也能出錯?是的,而且還很嚴重,因為你掌握了高級技能:重定向符。

如果你想要向文件中追加內(nèi)容,會使用cat>>file的方式,如果你不小心少輸入了一個>,那么不好意思,你的文件內(nèi)容就丟失了。

類似的命令還有echo等,可以看到,問題不在cat,在重定向符,太容易寫錯。

在此,請你操作之前,確保每次深呼吸,數(shù)好箭頭的個數(shù)再操作。

5.dd命令

dd命令很酷,和xjjdog的jj遙相呼應(yīng)。命令如下:

dd if=/dev/zero of=/dev/sda bs=512 count=1

以上命令,用于格式化硬盤,如果你的剪貼板里面有這樣的命令,而且不小心粘到了命令行里,你的數(shù)據(jù)將會蒸發(fā)。

6.cp命令

cp命令會產(chǎn)生覆蓋,如果你后悔了,想找到原文件,將非常困難。

建議增加alias cp='cp-i',i參數(shù)表示會在拷貝時生成一個備份。大多數(shù)時候沒用,有時候很有用。

和我們買保險一個道理。

mv命令類似,也可以加上-i。

7.tar命令

不要覺得tar很安全,我就曾經(jīng)因為tar命令丟失過數(shù)據(jù)。

第一,tar-xf解壓的時候,如果解壓的文件已經(jīng)在當前目錄,覆蓋原有的文件夾及文件。覆蓋這兩個字,很多時候意味著不安全。

8.vim命令

vim容易在打開大文件的時候,造成系統(tǒng)內(nèi)存占用過高。如果觸發(fā)了操作系統(tǒng)的oom-killer,將會造成其他正常進程的死亡。

如果你手速過快,執(zhí)行了:wq,將會造成文件的不一致甚至損壞。

可是使用less或者more這樣的命令,來查看信息。更高效,也更安全。

如果你實在不得不用vim,請保持使用view命令,它是vim的只讀模式。

9.mkfs.*

類似于mkfs.ext4這種指令,將會格式化硬盤,一般用于線上環(huán)境初始化,否則不要執(zhí)行。

10.MySQL

(1)使用mysql-U

--safe-updates,--i-am-a-dummy,-U

使用mysql-U防止delete、update執(zhí)行沒帶where條件的操作。當發(fā)出沒有WHERE或LIMIT關(guān)鍵字的UPDATE或DELETE時,mysql程序拒絕執(zhí)行。

alias同樣是我們的好幫手,可以這么設(shè)置:

alias mysql='mysql-U'

(2)重要操作時,使用事務(wù)

start transaction

執(zhí)行

確認

commit

(3)DML誤操作回滾,可以使用binlog2sql

(4)小心DDL操作

DDL往往意味著巨大的坑,鎖表、誤刪、數(shù)據(jù)轉(zhuǎn)變,往往是災(zāi)難性的。DDL對整個表進行操作,或者是整個表所有的行、列,產(chǎn)生exclusive鎖,產(chǎn)生瘋狂io、嚴重影響生產(chǎn)。

這里面的任何一條,都是要命的。

仔細檢查DDL,盡量在業(yè)務(wù)低峰執(zhí)行,而且盡量采用inplace方式操作。

End

線上值萬金,執(zhí)行需謹慎。小心駛得萬年船,在危險的線上環(huán)境,做事追求的不是快,而是穩(wěn)。

畢竟,成熟的公司,光審批階段就耗了好幾天,你又為啥這么在乎這幾秒鐘呢?

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論