일정 cron에 script를 등록하는 방법은 다음과 같다.
crontab -l //cron일정을 보려면 root로 접속 후 해당명령어를 사용하라.
시간은 안겹치게 해주는게 좋다.
crontab -e //edit 옵션으로 수정해서 추가해서 넣는다.
30 06 * * * /usr/systemlog/log_delete.sh /system_log 80
:wq!로 저장
>df -k
Filesystem 1024-blocks Free %Used lused %lused Mounted on
/dev/hd4 8912707 7993598 11% 19872 2% /
/dev/hd2 8388502 4486420 47% 55432 6% /usr
/dev/hd9var 6291453 4043802 36% 13414 2% /var
/dev/hd3 생략 27% /tmp
/dev/hd1 생략 71% /home
/dev/hd10opt 생략 14% /opt
/dev/livedump 생략 1% /var/adm/ras/livedump
/dev/hd11admin 생략 1% /admin
/proc - -- - - - /proc
...
/dev/lv_syslog 5242880 5073900 4% 145 1% /system_log
aixsesrver[root]:/tmp>df -k
Filesystem 1024-blocks Free %Used lused %lused Mounted on
/dev/hd4 8912707 7993598 11% 19872 2% /
/dev/hd2 8388502 4486420 47% 55432 6% /usr
/dev/hd9var 6291453 4043802 36% 13414 2% /var
/dev/hd3 생략 27% /tmp
/dev/hd1 생략 71% /home
/dev/hd10opt 생략 14% /opt
/dev/livedump 생략 1% /var/adm/ras/livedump
/dev/hd11admin 생략 1% /admin
/proc - -- - - - /proc
...
/dev/lv_syslog 5242880 5073900 4% 145 1% /system_log
aixsesrver[root]:/tmp>df -k|grep system_log
/dev/lv_syslog 5242880 5073900 4% 145 1% /system_log
aixsesrver[root]:/tmp>df -k|grep system_log|awk '{print $4}'
4%
aixsesrver[root]:/tmp>df -k|grep system_log|awk '{print $4}'|cut -f 1 -d%
4
vi /usr/systemlog/log_delete.sh
vi /usr/systemlog/log_delete.sh
#!/usr/bin/ksh
LOG_FS=$1
PCT_USE=$2
PCT_FSNUM='df -k|grep ${LOG_FS}|awk 'print $4}'|cut -f 1 -d %'
OLD_FILE_TOTAL='find ${LOG_FS} -mtime +30 -type f|wc -l'
REMOVE_LOG=/system_log/remove_log/'hostname_remove_log_'date +"%Y%m%d'.log
remove_file()
{
rm -f $1
}
chk_remove()
{
if [ ${OLD_FILE_TOTAL} > 0 ]
then
find ${LOG_FS} -mtime +30 -type f| \
while read FILE2REM
do
remove_file $FILE2REM
echo $FILE2REM >> $REMOVE_LOG
done
fi
if [ ${PCT_USE} > ${PCT_FSNUM}]
then
find ${LOG_FS} -mtime +3 -type f|head -10 | \
while read FILE2REM
do
remove_file $FILE2REM
echo $FILE2REM >> $REMOVE_LOG
done
fi
}
chk_remove
exit 0
첫번째 if then while do~ done~fi 문부터 확인해보자 30일 지난 File(f)파일을 while ~do로 반복문을 활용해서 FILE2REM을 읽어서 remove_file을 FILE2REM 으로 정의한다.
FILE2REM은 기존의 $REMOVE_LOG에 덧붙여서 추가해서 넣는내용이다.
두번째 if then while do~ done~fi 문부터 확인해보자 3일 지난 File(f)파일을 앞줄의 10번째까지 찾은 후
while ~do로 반복문을 활용해서 FILE2REM을 읽어서 remove_file을 FILE2REM 으로 정의한다.
FILE2REM은 기존의 $REMOVE_LOG에 덧붙여서 추가해서 넣는내용이다.
---------------------------2022-04-24 renewal-----------------
vi /usr/systemlog/log_delete-02.sh
#!/usr/bin/ksh
LOG_FS=$1
PCT_USAGE=$2
PCT_FS=`df -k|grep ${LOG_FS}|awk '{print $4}'|cut -f 1 -d %`
OLD_FILE_NUM=`find ${LOG_FS} -mtime +30 -type f -name "*.nmon"|grep -v sh |wc -l`
REMOVE_LOG=/system_log/remove_log/`hostname_remove_log_'date +"%Y%m%d"`.log
remove_file()
{
rm -f $1
}
chk_remove()
{
if [ ${OLD_FILE_NUM} > 0 ]
then
find ${LOG_FS} -mtime +30 -type f|grep -v sh| \
while read FILE2REM
do
remove_file $FILE2REM
echo $FILE2REM >> $REMOVE_LOG
done
fi
if [ ${PCT_FS} > ${PCT_USAGE} ]
then
echo test "PCT_FS" ${PCT_FS} "PCT_USAGE" ${PCT_USAGE}
find ${LOG_FS} -mtime +3 -type f|grep -ve sh -ve \.Z|head -10 | \
while read FILE2REM
do
compress $FILE2REM
echo $FILE2REM >> $REMOVE_LOG
done
fi
}
chk_remove
exit 0
LOG_FS=$1 는 crontab 에 등록했던 /system_log 첫번째 인자이며,
PCT_USAGE=$2 80이라는 두번째인자이다.