脚本删除星号中的旧文件夹

时间:2018-04-13 15:57:21

标签: linux bash shell scripting

我需要一个shell脚本来删除文件和文件夹。 例如,星号创建一个目录" / var / spool / asteisk / monitor / $ year / $ month / $ day"

当磁盘已满(或95%)我想运行脚本时:

#!bin/bash

limite="75"
dir="/var/spool/asterisk/monitor"
mes_actual=`date +%m`
anyo_actual=`date +%Y`
ref="2";
# espacio en disco #
df -h | grep /dev/xvdb1 | sed s/%//g | awk '{print $5}' >> temp.log

temp=$( cat temp.log)

if [ $limite -le $temp ];
then
        A_BORRAR=$((10#$mes_actual-$ref))
        rm -rf "$dir"/"$anyo_actual"/"$A_BORRAR"
        echo "borrado" "$A_BORRAR"

else
        echo "nada para borrar"

fi

echo "all OK"
rm -Rf temp.log
df -h | grep /dev/xvdb1 | sed s/%//g | awk '{print $5}'

我不知道为什么,但我的脚本没有删除该文件夹。 脚本进入bucle"如果"但是没有删除文件夹。

我使用centOS 7。

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试删除受保护的目录。尝试使用X.shape删除目录。

要执行此操作,请更改此行: sudo

收件人: rm -rf "$dir"/"$anyo_actual"/"$A_BORRAR"

所以你的sript最终看起来像这样:

sudo rm -rf "$dir"/"$anyo_actual"/"$A_BORRAR"

但是有一个问题:每次运行脚本时都必须输入sudo密码。

一个不那么优雅且不那么安全的解决方案是编辑sudoers文件。

为此,请运行#!bin/bash limite="75" dir="/var/spool/asterisk/monitor" mes_actual=`date +%m` anyo_actual=`date +%Y` ref="2"; # espacio en disco # df -h | grep /dev/xvdb1 | sed s/%//g | awk '{print $5}' >> temp.log temp=$( cat temp.log) if [ $limite -le $temp ]; then A_BORRAR=$((10#$mes_actual-$ref)) sudo rm -rf "$dir"/"$anyo_actual"/"$A_BORRAR" echo "borrado" "$A_BORRAR" else echo "nada para borrar" fi echo "all OK" rm -Rf temp.log df -h | grep /dev/xvdb1 | sed s/%//g | awk '{print $5}' 并输入您的用户名和脚本路径。

sudo visudo

答案 1 :(得分:0)

问题是在进行数学运算时,例如:“04-2”(4月 - 参考月)结果是应该删除的2月(2月)月,但结果是“2”而不是“02”,我找不到要删除的文件夹,脚本无效。

脚本保持这样:

#!bin/bash

limit="80"
dir="/var/spool/asterisk/monitor"
mes=`date +%m`
anyo=`date +%Y`
ref="02";

# espacio en disco #
df -h | grep /dev/xvdb1 | sed s/%//g | awk '{print $5}' >> temp.log

temp=$( cat temp.log)

if [ $limit -le $temp ]; then
        BORRAR=0;
       BORRAR=$((10#$mes-$ref))

                case $BORRAR in
                1) rm -rf "$dir"/"$anyo"/0"$BORRAR"/
                ;;
                2) rm -rf "$dir"/"$anyo"/0"$BORRAR"/
                ;;
                3) rm -rf "$dir"/"$anyo"/0"$BORRAR"/
                ;;
                4) rm -rf "$dir"/"$anyo"/0"$BORRAR"/
                ;;
                5) rm -rf "$dir"/"$anyo"/0"$BORRAR"/
                ;;
                6) rm -rf "$dir"/"$anyo"/0"$BORRAR"/
                ;;
                7) rm -rf "$dir"/"$anyo"/0"$BORRAR"/
                ;;
                8) rm -rf "$dir"/"$anyo"/0"$BORRAR"/
                ;;
                9) rm -rf "$dir"/"$anyo"/0"$BORRAR"/
                ;;
                10) rm -rf "$dir"/"$anyo"/"$BORRAR"/
                ;;
                11) rm -rf "$dir"/"$anyo"/"$BORRAR"/
                ;;
                12) rm -rf "$dir"/"$anyo"/"$BORRAR"/
                ;;
                esac
else
        echo "NADA PARA BORRAR"

fi
rm -Rf temp.log