中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 回收站功能在 Linux 中的實(shí)現(xiàn)

        回收站功能在 Linux 中的實(shí)現(xiàn)

        作者: 時(shí)間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

        調(diào)用 logTrashDir 腳本,將中的新文件名、原文件名、刪除時(shí)間、原文件絕對路徑記錄到隱藏文件中

        將文件通過 mv 命令移動(dòng)到 Trash 目錄下。詳細(xì)代碼如下所示:

        清單 6.移動(dòng)文件到并做記錄

        now=`date +%Y%m%d_%H_%M_%S`

        filename=${file##*/}

        newfilename=${file##*/}_${now}

        mark1=.

        mark2=/

        if [ $file = ${file/$mark2} ]

        then

        fullpath=$(pwd)/$file

        elif [ $file != ${file/$mark1} ]

        then

        fullpath=$(pwd)${file/$mark1}

        else

        fullpath=$file

        fi

        echo the full path of this file is :$fullpath

        if mv -f $file ~/trash/$newfilename

        then

        $(/logTrashDir $newfilename $filename $now $fullpath)

        echo files: $file is deleted

        else

        echo the operation is failed

        fi

        logTrashDir 腳本

        該腳本較簡單,僅是一個(gè)簡單的文件寫入操作,之所以單獨(dú)作為一個(gè)腳本,是為了以后擴(kuò)展的方便,具體代碼如下:

        清單 7.logTrashDir 代碼

        if [ ! -f ~/trash/.log ]

        then

        touch ~/trash/.log

        chmod 700~/trash/.log

        fi

        echo $1 $2 $3 $4>> ~/trash/.log

        該腳本先建立.log 隱藏文件,然后往里添加刪除文件的記錄。

        restoreTrash 腳本

        該腳本主要完成以下功能:

        從.log 文件中找到用戶想要恢復(fù)的文件對應(yīng)的記錄。此處依然使用 awk,通過正表達(dá)式匹配找到包含被刪除文件名的一行

        從記錄中找到記錄原文件名的字段,以給用戶提示

        中的文件移動(dòng)到原來的位置,在這里運(yùn)用了 mv –b 移動(dòng)文件,之所以加入-b 選項(xiàng)是為了防止原位置有同名文件的情況。

        將.log 文件中與被恢復(fù)文件相對應(yīng)的記錄刪除

        清單 8.獲取相應(yīng)記錄

        1originalPath=$(awk /$filename/'{print $4}' $HOME/trash/.log)

        清單 9.查找原文件名及現(xiàn)文件名字段

        filenameNow=$(awk /$filename/'{print $1}' ~/trash/.log)

        filenamebefore=$(awk /$filename/'{print $2}' ~/trash/.log)

        echo you are about to restore $filenameNow,original name is $filenamebefore

        echo original path is $originalPath

        清單 10.恢復(fù)文件到原來位置并刪除相應(yīng)記錄

        echo Are you sure to do that?[Y/N]

        read reply

        if [ $reply = y ] || [ $reply = Y ]

        then

        $(mv -b $HOME/trash/$filename $originalPath)

        $(sed -i /$filename/'d' $HOME/trash/.log)

        else

        echo no files restored

        fi

        自動(dòng)定期清理 trash 目錄

        因?yàn)?delete 操作并不是真正刪除文件,而是移動(dòng)操作,經(jīng)過一段時(shí)間的積累,trash 目錄可能會(huì)占用大量的硬盤空間,造成資源浪費(fèi),所以定期自動(dòng)清理 trash 目錄下的文件是必須得。本文的清理規(guī)則是:在回收站中存在 7 天以上的文件及目錄將會(huì)被自動(dòng)從硬盤中刪除。運(yùn)用的工具是 自帶的 crontab。

        Crontab 是 用來定期執(zhí)行程序的命令。當(dāng)安裝完成操作系統(tǒng)之后,默認(rèn)便會(huì)啟動(dòng)此任務(wù)調(diào)度命令。Crontab 命令會(huì)定期檢查是否有要執(zhí)行的工作,如果有要執(zhí)行的工作便會(huì)自動(dòng)執(zhí)行該工作。而 任務(wù)調(diào)度的工作主要分為以下兩類:

        1、系統(tǒng)執(zhí)行的工作:系統(tǒng)周期性所要執(zhí)行的工作,如備份系統(tǒng)數(shù)據(jù)、清理緩存

        2、個(gè)人執(zhí)行的工作:某個(gè)用戶定期要做的工作,例如每隔 10 分鐘檢查郵件服務(wù)器是否有新信,這些工作可由每個(gè)用戶自行設(shè)置。

        首先編寫 crontab 執(zhí)行時(shí)要調(diào)用的腳本 cleanTrashCan.如清單 10 所示,該腳本主要完成兩項(xiàng)功能:

        判斷回收站中的文件存放時(shí)間是否已超過 7 天,如果超過則從回收站中刪除。

        將刪除文件在.log 文件中相應(yīng)的記錄刪除,保持其中數(shù)據(jù)的有效性,提高查找效率。

        清單 11.刪除存在回收站超過 7 天的文件并刪除.log 中相應(yīng)記錄

        arrayA=($(find ~/trash/* -mtime +7 | awk '{print $1}'))

        for file in ${arrayA[@]}

        do

        $(rm -rf ${file})

        filename=${file##*/}

        echo $filename

        $(sed -i /$filename/'d' $HOME/trash/.log)

        done

        腳本編寫完成后通過 chmod 命令賦予其執(zhí)行權(quán)限,然后運(yùn)過 crontab –e 命令添加一條新的任務(wù)調(diào)度:

        110 18 * * * /bin/ cleanTrashCan

        該語句的含義為,在每天的下午 6 點(diǎn) 10 分執(zhí)行 cleanTrashCan 腳本

        通過這條任務(wù)調(diào)度,trash 的大小會(huì)得到有效的控制,不會(huì)持續(xù)增大以致影響用戶的正常操作。

        實(shí)際應(yīng)用

        首先要將 delete 腳本,logTrashDir 腳本,restoreTrash 腳本和 cleanTrashCan 放到/bin 目錄下,然后用 chmod +x delete restoreTrash logTrashDir cleanTrashCan 命令賦予這三個(gè)腳本可執(zhí)行權(quán)限。

        運(yùn)用 delete 腳本刪除文件,例如要?jiǎng)h除在/usr 目錄下的 useless 文件。根據(jù)用戶目前所在的位置,可以用相對路徑或絕對路徑來指定參數(shù),如:delete useless,delete ./useless 或者 delete /usr/useless。執(zhí)行過程如圖 1 所示:

        圖 1.delete 腳本執(zhí)行過程

        image003

        執(zhí)行之后,useless 文件會(huì)從原目錄中刪除,被移動(dòng)到$HOME/trash 下,并被重命名,如圖 2.所示:



        關(guān)鍵詞: 回收站 Linux

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉