Shell清理脚本通知



你能让我知道你对这个脚本的想法,如果你认为它可以通过任何方法改进吗?

我试图创建一个清理脚本,将运行每周一次的cron作业由root在我们的linux服务器上。

在脚本的一部分,我调用了一个文本文件,其中包含可以删除的用户名列表,该文件的内容可能每周都在变化。

#!/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

几乎在任何地方都应该引用变量。首选pushd/popd而不是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

最新更新