我制作了一个名为purging.sh的脚本。我在该脚本中使用了cd命令,脚本多次更改目录,因此我为cd命令分配了一些变量,这反过来有助于更改目录。
cd /home/parthipan/test/wireshark/$a/$b要运行脚本,我必须使用source ./purging.sh或. ./purging.sh。
但我必须安排脚本,因为我正在使用crontab,
10 01 * * * . /home/parthipan/test/purging.sh开始我的脚本:
#!/bin/bash
a=$( date -d "`date` -60 days" "+%Y%m%d" | cut -b 1-4 )
b=$( date -d "`date` -60 days" "+%Y%m%d" | cut -b 5-6 )
c=$( date -d "`date` -60 days" "+%Y%m%d" | cut -b 7-8 )
cd /home/parthipan/test/wireshark/$a/$b
d=$( ll | awk -F " " '{print $9}' | awk -v value=$c '$1 < value' | sed "/^$/d" | xargs )
echo "The Days archiving are: $d"
e=$( ll | awk -F " " '{print $9}' | awk -v value=$c '$1 < value' | sed "/^$/d" | wc -l )
f=$( date -d "`date` - 61 days" "+%Y%m%d" | cut -b 5-8 )
if (( $e > 0 ))
then
tar --no-overwrite-dir -czvf backup_$f.tar.gz $d
mv backup_$f.tar.gz /home/parthipan/test/logs_backup
#rm -rf $d
logger Data has been purged上面的脚本将继续使用fi命令结束。它通常在cli上工作,但对crontab不起作用。我在最后一行中使用了记录器命令,以便在/var/log中打印消息。但信息打印是,
May 1 00:50:01 parthipan-nadar systemd: Started Session 24 of user root.在此之后,没有其他日志表单。但是所需的日志应该是Data has been purged。
发布于 2020-05-20 19:52:13
当您在shell中获取它时,它会工作,因为您似乎在脚本中使用了您的ll别名。从cron执行的脚本没有您的环境,因此您需要更明确地设置PATH (如果您调用的可执行文件位于/bin或/usr/bin之外),而不依赖于特定的别名或环境变量。如果您的ll别名是ls -l的别名,则改用ls -l (但请参阅下面的第一点)。
其他一些评论:
stat或find。-d "60 days ago"a b c .都是坏的。https://unix.stackexchange.com/questions/587890
复制相似问题