删除按日期滚动的旧文件,在Cronjob中保留一定数量的文件不起作用

时间:2017-01-03 20:24:02

标签: linux bash cron crontab rm

我需要一些bash脚本的帮助。 脚本“backup.sh”如下所示:

  rm -f $(ls -t /backups/mongo/ | awk 'NR>14')
  rsync -pvztr  --progress /backups/*...........

我想删除/ backups / mongo /文件夹中的旧文件,保留不超过15个文件。如果我运行./backup.sh,该脚本工作正常,但如果我使它作为cronjob运行,删除部分(rm)不起作用,休息工作。

有人能帮助我发现问题吗?

2 个答案:

答案 0 :(得分:0)

看起来你必须加载bash配置文件。从crontab调用bash脚本时,默认情况下不加载它。只需添加

source /etc/profile

到脚本的开头

答案 1 :(得分:0)

1 ls生成要删除的文件的完整路径。如果当前目录不是rm,则/backups/mongo/可能会失败或删除错误目录中的文件 2 您使用bash特定语法。使用sheebang让脚本使用bash。

#!/bin/bash
rm -f $(ls -t /backups/mongo/* | awk 'NR>14')
....