linux
  • bash
  • shell
  • 2011-12-16 103 views 0 likes 
    0

    你能讓我知道你對這個腳本的想法嗎?如果你認爲它可以通過任何方法改進?shell清理腳本建議

    我正在嘗試創建一個清理腳本,該腳本每週由我們的Linux服務器上的root用戶執行cron作業。

    在腳本的一部分中,我調用一個文本文件,該文件將包含可從中刪除的用戶名列表,該文件的包含可能每週更改一次。

    #!/bin/bash 
    DAY=$(date +"%d%b%Y") 
    HOME='/home/user' 
    DOCS='/var/program/alpha/top/is' 
    SCRATCH='/var/program/beta/top/_temp/' 
    USER='/home/user/deleteuserdata.txt' 
    DELUSER=$USER 
    cd $SCRATCH 
    rm -rf _temp-*/ 
    cd $DOCS 
    while read DELUSER; do 
    find $DOCS/"$DELUSER"_info* -name "*.pdf" -size +1000k -exec rm {} \; 
    done < $USER > $HOME/"$DAY"dellogs.txt 
    

    回答

    1

    你應該引用變量幾乎無處不在。更喜歡push/popd over cd(更容易記住前面的路徑)。可能想要更喜歡find -delete而不是產卵 - 一些-exec rm。添加錯誤檢查(bash -e)和-x以查看它在何處退出。

    #!/bin/bash -ex 
    
    DELUSER="$USER" # setting this is useless because it's overriden in the while loop 
    pushd "$SCRATCH" 
    rm -Rf _temp-*/ || : 
    pushd "$DOCS" 
    while read DELUSER; do 
        find "$DOCS/$DELUSER"_info* -name "*.pdf" -size +1000k -print -delete 
    done <"$USER" >"$HOME/${DAY}dellogs.txt" 
    popd 
    popd 
    
    相關問題