My clean docker log script like this(CentOS 7):
#!/usr/bin/env bash
set -uex
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/ -type f -name *.log -size +25M)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
logsrm=$(find /var/lib/docker/ -mtime +7 -name *.log -type f)
for logm in $logsrm
do
echo "delete logs : $logm"
cat /dev/null > $logm
done
echo "======== end clean docker containers logs ========"
and when I execute it using crontab:
*/1 * * * * root /data/scripts/docker-clean.sh >> $HOME/cron.log 2>&1
the output log like this:
[root@uat-k8s-01 ~]# tail -f cron.log
++ find /var/lib/docker/ -type f -name cron.log cront.log -size +25M
find: paths must precede expression: cront.log
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
+ logs=
+ echo '======== start clean docker containers logs ========'
======== start clean docker containers logs ========
++ find /var/lib/docker/ -type f -name cron.log cront.log -size +25M
find: paths must precede expression: cront.log
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
+ logs=
what should I do to make it work right?
cd
to a known location is a good general rule. – Kusalananda Apr 19 '20 at 12:42