您能告诉我您对此脚本的看法吗?如果您认为可以通过任何方法进行改进?
我正在尝试创建一个清理脚本,该脚本将由root用户在我们的Linux服务器上由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
答案 0 :(得分:1)
你应该几乎到处引用变量。喜欢pushd / popd over cd(更容易记住过去的路径)。可能希望更喜欢find -delete
而不是spawn-some -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