linux - shell 清理脚本建议

标签 linux bash 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

最佳答案

几乎所有地方都应该引用变量。比 cd 更喜欢 pushd/popd(更容易记住之前的路径)。可能更喜欢 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

关于linux - shell 清理脚本建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8535537/

相关文章:

linux - ssh 连接,known_hosts 为空,但我收到警告 "REMOTE HOST IDENTIFICATION HAS CHANGED"并询问密码

linux - 不使用 ; 执行多个命令和 &?

linux - Pentaho + MongoDB输入步骤错误: com. mongodb.MongoException$CursorNotFound

linux - 了解标志设置

linux - Xubuntu LTS 16.0.4 无法识别 bash 脚本

linux - 如何使用 printf 将部分输入传递给 shell 脚本以自动运行它?

c++ - 来自 C++ 的 Linux 执行程序

linux - awk + ​​运行 awk 命令而不从管道输出

python - Bash 正在等待 python 子进程

php - 创建一个 shell 脚本以在 ubuntu 中从 php 运行 sqlite 命令