Linux自定義防誤刪指令碼的思路與測試

2022-09-26 11:54:26 字數 1876 閱讀 4610

目錄

俗話說的真好,常在河邊走,怎能不濕鞋,本想刪除伺服器上臨時的系統掃瞄檔案如下圖:

由於是在root的家目錄,本想這/tmp/下有很多系統掃瞄檔案,系統性的tab了一下,由於是自己的監控測試伺服器也沒多想,tab了一下應該是有多個檔案,之後直接跟*然後刪除全部掃瞄檔案,但發現回車的一瞬間,發現/tmp只有乙個掃瞄檔案,瞬間頭皮發麻,雖然只是自己的測試伺服器,但下面也有很多指令碼和資料檔案,心裡又氣又恨。檢視了下測試伺服器只有乙個根也沒其他磁碟,此時ext3grep/extundelete這類工具就沒辦法了,想想也是有其他辦法,但比較麻煩,算了就當買個教訓吧,裡面寫個自定義rm命令指令碼,來避免此類事情的發生。

由於是過度自信,操作執行rm -rf手速感人,也沒多看,因此自定義rm命令即可

因此寫了一下指令碼來實現,與其說放勿刪,不如說是延遲刪除更為確切

git位址

#!/bin/bash

# auth:kaliarch

# function:自定義rm命令,每天晚上定時清理

# 定義rm刪除命令替換指令碼

cmd_scripts=$home/.rm_scripts.sh

# 定義**站目錄

trash_dir=$home/.trash_dir

cron_file=/var/spool/cron/root

bashrc=$home/.bashrc

[ ! -d $ ] && mkdir -p $

cat > $cmd_scripts <> $cron_file

echo "刪除目錄:$trash_dir"

程式設計客棧echo "刪除指令碼:$cmd_scripts"

echo "請執行:source $bashrc 來載入檔案或退出當前shell重新登入"

執行指令碼替換rm命令

之後推出重新登入,或按提示source檔案載入生效

指令碼生成檔案

可以看到在指令碼執行使用者的家目錄,會生成**站目錄和檔案刪除指令碼,會建立定時任務定時清理**站,可以根據後期磁碟情況,自定義週期清理,

測試檔案刪除

對檔案或目錄進行rm命令操作,可以發現是已經成功移www.cppcns.com動到**站,定時任務會定時清理該目錄下的東西,延遲我們日常rm -rf 誤操作命令

我們都知道,linux是個很強大的系統。每個檔案都有一定的許可權,有的使用者可以處理,有的只有root使用者可以刪除。但人總會有失誤的時候,比如我們在root使用者裡用命令「sudo rm -fr 『資料夾名' 」,這會使得我們很沮喪。有時候,我們把乙個重要的資料夾放在主資料夾裡,有時一不小心,我們就會把它誤刪了。

哈哈,linux裡有乙個十分有用的命令「chattr」, 它會很好的解決我們的問題。

linux中鍵入「man chattr」,其描述為「chattr changes the file attributes on a linux file system.」從這我們很容易得出:在linux檔案系統裡,chattr是可以改變檔案的屬性。

chattr [ -rvf ] [ -v version ] [ mode ] files...[1]

注:中括號是程式設計客棧可選選項,而 files 表明其為引數,必須要有。如果您加上版本號(-v),您必須 鍵入版本號。如:chattr -v 1.8 files

接下來我們分析,一些對我們有用的選項

1)mode 選項

就是[1]中,[mode] 選項,而此選項格式為 「+檔案屬性」或「-檔案屬性」或「=檔案屬性」

2)程式設計客棧檔案屬性

注:c,s,u不能在ext2,ext3,ext4檔案系統

如果你的檔案系統是其中之一,你就使用a屬性,可以避免你的檔案被刪除。

如:sudo chattr -v +a file

解除鎖定:

sudo chattr -v -a file

PowerDesigner 自定義指令碼

原文 code 表名 tname 生成後的效果預覽 表名 tname if not exists select 1 from sysobjects where id object id qualifier table and type u begin create table qualifier t...

monkey自定義指令碼

1 啟動activity launchactivity 包名,activity名 通過adb shell dumpsys window findstr mcurrentfocus 來獲取包名和activity 2 點選 tap tap x,y,time x座標和y座標,time為點選時間,單位ms ...

Linux上如何暴露自定義指令碼

在一台linux機器上寫好乙個指令碼以後,希望這個指令碼讓這台機器上其他使用者使用,但是不可能會讓別人記住這個指令碼的路徑,這個時候該怎麼辦呢?在回答上面的問題之前,我們首先思考下面這個問題 為什麼我們用的很多指令都不需要絕對路徑的檔名呢?我以最常用的ls指令為例子。首先要檢視指令的執行檔案位置 w...