OS Unix [IBM aix]/scripts

nmon 적재하는 system_log 삭제 스크립트

infra 2022. 4. 16. 16:03

일정 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이라는 두번째인자이다.