[김성민]님이 남기신 글:
>안녕하세요.
>
>rm -rf 를 주석처리 하고 말씀하신 대로 echo 를 먼저 해보면
>"03-04-29 를 삭제 합니다." 라는 문구는 출력 됩니다.
>
>03-04-28
>03-04-29
>03-04-30
>03-05-01
>03-05-02
>03-05-03
>03-05-04
>
>실제 7개의 디랙토리가 생성되어 있는 상태에서 스크립트를 직접 실행 하였을 경우에는 03-05-05 (8일차)가 생기면서 03-04-28 이 삭제 됩니다.
>이러면 정상인데, cron 에 의해서 실행되면 삭제되지 않고 있습니다.
>
>지금 이렇게 되어 있습니다.
>
>#!/bin/bash
>
>export Today="`date '+%y-%m-%d'`"
>LOGdir="/usr/local/apache/logs"
>
>#cd /backup/data
>#rm -f *.tar.gz
>
>backup_dir="/backup/data"
>mkdir -p ${backup_dir}/$Today
>
>tar cfpz ${backup_dir}/${Today}/$Today-usr.local.mysql.tar.gz /usr/local/mysql
>tar cfpz ${backup_dir}/${Today}/$Today-usr.local.apache.tar.gz /usr/local/apache
>tar cfpz ${backup_dir}/${Today}/$Today-home.tar.gz /home
>tar cfpz ${backup_dir}/${Today}/$Today-etc.tar.gz /etc
>
>rm -f ${LOGdir}/*_log
>/usr/bin/killall -HUP httpd
>
>dirlists=`/bin/ls -t $backup_dir 2>/dev/null`
>
>i=1
>for dir in $dirlists ; do
> if [ "$i" -gt 7 ] ; then
> rm -Rf $dir
> #echo -n "$dir 을 삭제 합니다."
> fi
> i=$(($i+1))
>done
>
>exit 0
>
>임의로 생성하면 안될듯 하여 저절로 쌓일때 까지 기다렸다가 해보는데 이러는 군요....
========================================
우선 /var/log/cron 로그를 살펴보세요..
그리고 PATH 문제도 있을 수 있습니다.
위의 스크립트 상단에..
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
를 한줄 집어넣으세요..
그래도 안되면 모든 명령어를 절대경로로 지정하세요.
예를들어,
killall 이나 ls 처럼
mkdir 은 /bin/mkdir
tar 는 /bin/tar
rm 는 /bin/rm
이와 같이.
대부분 cron 이 잘 작동하지 않는 이유는 PATH 문제입니다. |