一些極度危險的linux命令
在linux中有些命令可能功能強大,方便快捷,但是這些命令在測試環境中有些可以用,但別在生產上挑戰。有些命令一敲,可能你的職業生涯由此轉折。
rm -rf *
[ora11g@rac1 test]$ ll
total 4
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_1.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_2.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_3.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_4.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:34 a_55.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_5.dmp
-rw-r--r-- 1 ora11g dba 15 May 19 07:39 a.lst
-rw-r--r-- 1 ora11g dba 0 May 2 17:45 a.lst.bak
-rw-r--r-- 1 ora11g dba 0 May 2 17:44 b.log
-rw-r--r-- 1 ora11g dba 0 May 2 17:44 c.lst
-rw-r--r-- 1 ora11g dba 0 May 2 17:44 d.log
-rw-r--r-- 1 ora11g dba 0 May 2 17:44 e.lst
-rw-r--r-- 1 ora11g dba 0 May 2 17:44 f.log
來比較看看透過ll得到的檔案個數
[ora11g@rac1 test]$ ll *|wc -l
13
如果使用rm * 但是不小心多敲了一個點,來看看會刪除多少檔案,它會嘗試刪除使用者目錄下所有的檔案。
[ora11g@rac1 test]$ ll .*|wc -l
63
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_5.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_3.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_2.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_1.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_4.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:34 a_55.dmp
[ora11g@rac1 test]$ ^dmp^bak
ls -lrt *bak
-rw-r--r-- 1 ora11g dba 0 May 2 17:45 a.lst.bak
很快捷吧,但是兩面性就出來了,如果你執行的是一個rm之類的操作,你都不知道倒底有多大的危害。
但是如果你沒有指定搜尋路徑,結果不小心刪除了很多不期望刪除的檔案,這種情況我們碰見過,程式碼都開發完了,結果為了刪除一些臨時檔案,很多額外的檔案都刪除了。
ora11g 18111 1 0 18:56 ? 00:00:00 ora_w000_TEST01
ora11g 18555 18365 0 19:16 pts/0 00:00:00 grep ora_
ora11g 24706 1 0 Jul27 ? 00:00:14 ora_pmon_TEST01
ora11g 24709 1 0 Jul27 ? 00:00:02 ora_psp0_TEST01
ora11g 24714 1 0 Jul27 ? 00:00:44 ora_vktm_TEST01
ora11g 24721 1 0 Jul27 ? 00:00:00 ora_gen0_TEST01
ora11g 24739 1 0 Jul27 ? 00:00:00 ora_diag_TEST01
ora11g 24741 1 0 Jul27 ? 00:00:00 ora_dbrm_TEST01
ora11g 24743 1 0 Jul27 ? 00:03:25 ora_dia0_TEST01
ora11g 24745 1 0 Jul27 ? 00:00:00 ora_mman_TEST01
ora11g 24747 1 0 Jul27 ? 00:00:19 ora_dbw0_TEST01
ora11g 24749 1 0 Jul27 ? 00:00:10 ora_lgwr_TEST01
ora11g 24751 1 0 Jul27 ? 00:01:33 ora_ckpt_TEST01
ora11g 24753 1 0 Jul27 ? 00:00:18 ora_smon_TEST01
ora11g 24755 1 0 Jul27 ? 00:00:00 ora_reco_TEST01
ora11g 24757 1 0 Jul27 ? 00:00:13 ora_mmon_TEST01
ora11g 24759 1 0 Jul27 ? 00:00:55 ora_mmnl_TEST01
ora11g 24778 1 0 Jul27 ? 00:00:01 ora_arc0_TEST01
ora11g 24780 1 0 Jul27 ? 00:00:11 ora_arc1_TEST01
ora11g 24782 1 0 Jul27 ? 00:00:03 ora_arc2_TEST01
ora11g 24784 1 0 Jul27 ? 00:00:03 ora_arc3_TEST01
ora11g 24789 1 0 Jul27 ? 00:00:00 ora_qmnc_TEST01
ora11g 24808 1 0 Jul27 ? 00:00:00 ora_q001_TEST01
ora11g 24925 1 0 Jul27 ? 00:00:00 ora_smco_TEST01
ora11g 29644 1 0 01:51 ? 00:00:00 ora_q000_TEST01
[ora11g@rac1 test]$
[ora11g@rac1 test]$ ps -ef|grep ora_|grep -v grep |cut -c 9-15
18111
24706
24709
24714
24721
24739
24741
24743
24745
24747
24749
24751
24753
24755
24757
24759
24778
24780
24782
24784
24789
24808
24925
29644
但是話說回來,你能保證有些程式一定不含有ora_,如果清掉了,也是很要命的問題。
-
關於rm -rf
- 對於這個命令真沒什麼好說的,最好的挽救措施就是備份,可能在有些環境中這類命令都是禁用的,但是不管怎麼樣,注意備份。
rm -rf *
- 關於 rm .*
這個命令比較容易犯錯誤,但是大家都比較容易忽視。簡單舉個例子。
列出當前目錄下的檔案,考慮刪除[ora11g@rac1 test]$ ll
total 4
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_1.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_2.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_3.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_4.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:34 a_55.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_5.dmp
-rw-r--r-- 1 ora11g dba 15 May 19 07:39 a.lst
-rw-r--r-- 1 ora11g dba 0 May 2 17:45 a.lst.bak
-rw-r--r-- 1 ora11g dba 0 May 2 17:44 b.log
-rw-r--r-- 1 ora11g dba 0 May 2 17:44 c.lst
-rw-r--r-- 1 ora11g dba 0 May 2 17:44 d.log
-rw-r--r-- 1 ora11g dba 0 May 2 17:44 e.lst
-rw-r--r-- 1 ora11g dba 0 May 2 17:44 f.log
來比較看看透過ll得到的檔案個數
[ora11g@rac1 test]$ ll *|wc -l
13
如果使用rm * 但是不小心多敲了一個點,來看看會刪除多少檔案,它會嘗試刪除使用者目錄下所有的檔案。
[ora11g@rac1 test]$ ll .*|wc -l
63
- 關於快捷命令^
先來看看這個命令的方便性。如果想檢視檔名還有dmp的,然後又想查詢檔名含有bak的
[ora11g@rac1 test]$ ls -lrt *dmp-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_5.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_3.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_2.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_1.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:20 a_4.dmp
-rw-r--r-- 1 ora11g dba 0 Jun 19 08:34 a_55.dmp
[ora11g@rac1 test]$ ^dmp^bak
ls -lrt *bak
-rw-r--r-- 1 ora11g dba 0 May 2 17:45 a.lst.bak
很快捷吧,但是兩面性就出來了,如果你執行的是一個rm之類的操作,你都不知道倒底有多大的危害。
- find rm
大家經常結合多個命令來使用,但是有些命令結合就是容易出問題。 如果想查詢檔名還有.bak的檔案,然後直接rm,可以參考如下的命令
find / -type f -name "*.bak" |xargs rm -rf {}\但是如果你沒有指定搜尋路徑,結果不小心刪除了很多不期望刪除的檔案,這種情況我們碰見過,程式碼都開發完了,結果為了刪除一些臨時檔案,很多額外的檔案都刪除了。
- ps kill
rm攻擊力很強,kill也是,如果想刪除oracle的一些程式,可以考慮如下的方式。
[ora11g@rac1 test]$ ps -ef|grep ora_ora11g 18111 1 0 18:56 ? 00:00:00 ora_w000_TEST01
ora11g 18555 18365 0 19:16 pts/0 00:00:00 grep ora_
ora11g 24706 1 0 Jul27 ? 00:00:14 ora_pmon_TEST01
ora11g 24709 1 0 Jul27 ? 00:00:02 ora_psp0_TEST01
ora11g 24714 1 0 Jul27 ? 00:00:44 ora_vktm_TEST01
ora11g 24721 1 0 Jul27 ? 00:00:00 ora_gen0_TEST01
ora11g 24739 1 0 Jul27 ? 00:00:00 ora_diag_TEST01
ora11g 24741 1 0 Jul27 ? 00:00:00 ora_dbrm_TEST01
ora11g 24743 1 0 Jul27 ? 00:03:25 ora_dia0_TEST01
ora11g 24745 1 0 Jul27 ? 00:00:00 ora_mman_TEST01
ora11g 24747 1 0 Jul27 ? 00:00:19 ora_dbw0_TEST01
ora11g 24749 1 0 Jul27 ? 00:00:10 ora_lgwr_TEST01
ora11g 24751 1 0 Jul27 ? 00:01:33 ora_ckpt_TEST01
ora11g 24753 1 0 Jul27 ? 00:00:18 ora_smon_TEST01
ora11g 24755 1 0 Jul27 ? 00:00:00 ora_reco_TEST01
ora11g 24757 1 0 Jul27 ? 00:00:13 ora_mmon_TEST01
ora11g 24759 1 0 Jul27 ? 00:00:55 ora_mmnl_TEST01
ora11g 24778 1 0 Jul27 ? 00:00:01 ora_arc0_TEST01
ora11g 24780 1 0 Jul27 ? 00:00:11 ora_arc1_TEST01
ora11g 24782 1 0 Jul27 ? 00:00:03 ora_arc2_TEST01
ora11g 24784 1 0 Jul27 ? 00:00:03 ora_arc3_TEST01
ora11g 24789 1 0 Jul27 ? 00:00:00 ora_qmnc_TEST01
ora11g 24808 1 0 Jul27 ? 00:00:00 ora_q001_TEST01
ora11g 24925 1 0 Jul27 ? 00:00:00 ora_smco_TEST01
ora11g 29644 1 0 01:51 ? 00:00:00 ora_q000_TEST01
[ora11g@rac1 test]$
[ora11g@rac1 test]$ ps -ef|grep ora_|grep -v grep |cut -c 9-15
18111
24706
24709
24714
24721
24739
24741
24743
24745
24747
24749
24751
24753
24755
24757
24759
24778
24780
24782
24784
24789
24808
24925
29644
但是話說回來,你能保證有些程式一定不含有ora_,如果清掉了,也是很要命的問題。
- tr
這個命令一般視為sed的簡化版,但是有些功能可能並不是你想要的。
比如我們建立一個檔案,只有一行內容。
[ora11g@rac1 ~]$ cat a
this is a test for tr command, abc
然後我們想把abc替換為xyz
[ora11g@rac1 ~]$ cat a|tr "abc" "xyz"
this is x test for tr zommxnd, xyz
結果發生了不期望發生的結果。
比如我們建立一個檔案,只有一行內容。
[ora11g@rac1 ~]$ cat a
this is a test for tr command, abc
然後我們想把abc替換為xyz
[ora11g@rac1 ~]$ cat a|tr "abc" "xyz"
this is x test for tr zommxnd, xyz
結果發生了不期望發生的結果。
- cat
cat這個命令本身沒有什麼問題,有一些快捷方式想快速建立檔案,有些人使用如下的方式,可以直接使用重定向。
首先輸出檔案內容,有兩行
[ora11g@rac1 ~]$ cat a
this is a test for tr command, abc
this a a test
然後快速建立檔案
[ora11g@rac1 ~]$ cat > a
this is not a test
^C
[ora11g@rac1 ~]$ cat a
this is not a test
可以看到如果檔案已經存在,會直接覆蓋掉,這種類似的操作在寫shell指令碼中尤其要注意。
首先輸出檔案內容,有兩行
[ora11g@rac1 ~]$ cat a
this is a test for tr command, abc
this a a test
然後快速建立檔案
[ora11g@rac1 ~]$ cat > a
this is not a test
^C
[ora11g@rac1 ~]$ cat a
this is not a test
可以看到如果檔案已經存在,會直接覆蓋掉,這種類似的操作在寫shell指令碼中尤其要注意。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1347076/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux的10個最危險命令Linux
- Linux的10個最危險的命令Linux
- 9個“非常危險”的Linux命令,千萬不要隨意執行!Linux
- Linux 下 10 個最“危險”的命令,運維必知必防!Linux運維
- Redis禁用或重新命名危險命令Redis
- 學Linux雲端計算,Linux的十條危險指令Linux
- 11月29日雲棲精選夜讀|Linux裡10個最危險的命令Linux
- Linux的10個風險命令Linux
- php 的 危 險 參 數PHP
- Rust for Linux 專案為何處於危險之中?RustLinux
- 小米危險了
- Linux的一些常用命令Linux
- Linux一些基礎命令Linux
- linux一些命令(常更新)Linux
- 棕櫚油挺危險的
- EDM營銷退信的危險
- 危險的 target=”_blank” 與 “opener”
- 危險的 target="_blank" 與 “opener”
- LINUX rpm -e --nodeps危險命令之解除安裝elfutils-libelf導致rpm工具不可用Linux
- 檢視Linux硬體的一些命令Linux
- 一些常用的linux命令(基於centos)LinuxCentOS
- php常見的危險函式PHP函式
- Android 中的危險許可權Android
- Linux學習教程-Linux下命令的一些異常情況Linux
- 微信方便也危險
- 一些Linux shell命令 - 持續更新Linux
- 13 種危險的網路攻擊
- PyLint 的優點、缺點和危險
- Linux中一些 Sed命令技巧介紹Linux
- 危險!水很深,讓叔來 —— 談談命令查詢權責分離模式(CQRS)模式
- 危險就是一封郵件
- linux學習筆記---一些命令學習Linux筆記
- 危險係數排名前5的注入攻擊
- 使用WiFi真的有那麼危險嗎?WiFi
- 洛谷 P2074 危險區域
- 深入SQLite,一網打盡“危險操作”SQLite
- 【分享篇】運維人員常用的一些Linux命令盤點!運維Linux
- elasticsearch啟動加一些linux切換使用者的命令ElasticsearchLinux
- 教你一些Linux中隱藏bash歷史命令的小技巧Linux