我需要一些bash
脚本的帮助。
脚本“backup.sh”如下所示:
rm -f $(ls -t /backups/mongo/ | awk 'NR>14')
rsync -pvztr --progress /backups/*...........
我想删除/ backups / mongo /文件夹中的旧文件,保留不超过15个文件。如果我运行./backup.sh,该脚本工作正常,但如果我使它作为cronjob运行,删除部分(rm)不起作用,休息工作。
有人能帮助我发现问题吗?
答案 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')
....