728x90

쉘스크립트에서 명령 수행결과를 변수 값에 저장한 후, 변수 값을 출력할 때 개행문자가 사라지는 경우가 있습니다.

아래와 같은 단순히 df 결과를 변수 값에 저장한 후 출력하는 쉘 스크립트 입니다.

기본 df의 출력 결과는 아래와 같습니다.


Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on

/dev/hd4          5242880    301996   95%    11523    13% /

/dev/hd2         10485760   5480656   48%    83421     7% /usr

/dev/hd9var       5242880   4765576   10%     3980     1% /var

/dev/hd3         10485760   6717992   36%     5338     1% /tmp

/dev/fwdump        786432    785984    1%        4     1% /var/adm/ras/platform

/dev/hd1         10485760   1381160   87%    31150     9% /home

/dev/hd11admin    20971520   6628444   69%     3349     1% /admin

/proc                   -         -    -         -     -  /proc

/dev/hd10opt     10485760    528340   95%    52455    27% /opt

/dev/livedump      262144    261776    1%        4     1% /var/adm/ras/livedump

/dev/work1lv    131072000  74206256   44%    93462     1% /work1

/dev/work2lv    131072000  37407272   72%   234216     3% /work2

/dev/testkim      5242880   5241752    1%        4     1% /testkim

/dev/fslv00       5242880   5227048    1%       30     1% /nmon


쉘 스크립트를 실행하면 위의 내용이 한줄로 나타납니다.


#!/bin/bash

a=`df`

echo $a


<실행결과>

Filesystem 512-blocks Free %Used Iused %Iused Mounted on /dev/hd4 10485760 603992 95% 11523 13% / /dev/hd2 20971520 10961312 48% 83421 7% /usr /dev/hd9var 10485760 9531136 10% 3980 1% /var /dev/hd3 20971520 13435984 36% 5338 1% /tmp /dev/fwdump 1572864 1571968 1% 4 1% /var/adm/ras/platform /dev/hd1 20971520 2762312 87% 31150 9% /home /dev/hd11admin 41943040 13256888 69% 3349 1% /admin /proc - - - - - /proc /dev/hd10opt 20971520 1056680 95% 52455 27% /opt /dev/livedump 524288 523552 1% 4 1% /var/adm/ras/livedump /dev/work1lv 262144000 148412512 44% 93462 1% /work1 /dev/work2lv 262144000 74814544 72% 234216 3% /work2 /dev/testkim 10485760 10483504 1% 4 1% /testkim /dev/fslv00 10485760 10454096 1% 30 1% /nmon


이렇게 되면 출력물을 가공하기 어려워집니다.

이런 경우에는 echo에서 변수값을 쌍따옴표(")로 묶어줍니다.


#!/bin/bash

a=`df`

echo "$a"


<실행결과>

Filesystem    512-blocks      Free %Used    Iused %Iused Mounted on

/dev/hd4        10485760    603976   95%    11523    13% /

/dev/hd2        20971520  10961312   48%    83421     7% /usr

/dev/hd9var     10485760   9531072   10%     3980     1% /var

/dev/hd3        20971520  13435984   36%     5338     1% /tmp

/dev/fwdump      1572864   1571968    1%        4     1% /var/adm/ras/platform

/dev/hd1        20971520   2362280   89%    31150    11% /home

/dev/hd11admin   41943040  13256888   69%     3349     1% /admin

/proc                  -         -    -         -     -  /proc

/dev/hd10opt    20971520   1056680   95%    52455    27% /opt

/dev/livedump     524288    523552    1%        4     1% /var/adm/ras/livedump

/dev/work1lv   262144000 148412496   44%    93462     1% /work1

/dev/work2lv   262144000  74814544   72%   234216     3% /work2

/dev/testkim    10485760  10483504    1%        4     1% /testkim

/dev/fslv00     10485760  10454096    1%       30     1% /nmon



728x90

'*nix' 카테고리의 다른 글

How to List Files Opened By a Process  (0) 2022.12.12
wget vs curl  (0) 2017.02.28
Updating to a new Technology Level or Service Pack  (0) 2014.09.02
Tape Device Names for Specific UNIX Platforms  (0) 2013.12.23
Reducing Paging Space %Used  (0) 2013.06.19
728x90

오라클의 adump, bdump, udump, 리스너 로그, 아카이브 로그 등을 백업할 수 있으면 백업하는 것을 권장한다. 하지만 대부분의 경우 백업의 필요성이 절실하지 않기 때문에 삭제한다.

 

각종 로그의 자동관리를 위하여 첨부한 파일과 같이 CRONTAB에 등록하여 관리하면 편리하다.
각각의 로그관리에 대한 정책이 필요하다.

정책 예시)
1. alert 로그       : 월별로 로그를 관리. 영구 보관하는 것이 좋다.
                      compress 명령으로 압축하여 보관.
2. adump audit 파일 : 180일 정도 유지, 매일 180일이 지난 trc파일을 삭제
3. bdump trace 파일 : 90일 정도 유지, 매일 90일이 지난 trc파일을 삭제
4. udump trace 파일 : 90일 정도 유지, 매일 90일이 지난 trc파일을 삭제
5. 리스너 로그      : 리스너를 로깅하도록 설정했을 경우 월별로 로그를 관리.

                      180일이 지난 파일은 삭제.
                      compress 명령으로 압축하여 보관.
6. 아카이브로그 파일 : 기본적으로 1주일에 1번 이상 FULL BACKUP을 받을 경우
   백업 툴에서 아카이브로그를 관리해 주지 않을 경우 등록하여 사용
   7일전 아카이브로그 파일 삭제.

쉘 예시) 쉘 스크립트 작성 시 오타에 주의할 것
#######################################################
#### alert.log                                     ####
#######################################################
nDate=`date +%Y%m%d`
cp $ORACLE_BASE/admin/TESTDB/bdump/alert_TESTDB.log $ORACLE_BASE/TESTDB/bdump/alert_TESTDB.log.$nDate
cat /dev/null > $ORACLE_BASE/admin/TESTDB/bdump/alert_TESTDB.log
compress -vf $ORACLE_BASE/TESTDB/bdump/alert_TESTDB.log.$nDate

 

#######################################################
#### listener.log                                  ####
#######################################################
nDate=`date +%Y%m%d`
cp $ORACLE_HOME/network/admin/listener.log $ORACLE_HOME/network/admin/listener.log.$nDate
cat /dev/null > $ORACLE_HOME/network/admin/listener.log
compress -vf $ORACLE_HOME/network/admin/listener.log.$nDate

 

#######################################################
#### audit                                         ####

#######################################################
# 1주일이 지난 *.aud를 찾아 삭제
find $ORACLE_BASE/admin/TESTDB/adump \( -ctime +7 -name '*.aud' \) -exec rm -f {} \;

 

#######################################################
#### .trc                                          ####
# 30일이 지난 *.trc를 찾아 삭제                    ####
#######################################################
find $ORACLE_BASE/admin/TESTDB/bdump \( -ctime +30 -name '*.trc' \) -exec rm -f {} \;
find $ORACLE_BASE/admin/TESTDB/udump \( -ctime +30 -name '*.trc' \) -exec rm -f {} \;

 

#######################################################
#### archive log                                   ####
#######################################################
# 3일이 지난 *.arc를 찾아 삭제
find /archive_log \( -ctime +3 -name '*.arc' \) -exec rm -f {} \;

 

#########################################################
# 특정 디렉토리가 70%이상이면 3일지난 *.arc를 찾아 삭제 #
#########################################################
#!/usr/bin/ksh
A=`df -k /archive_log | grep -v "용량" | awk '{print $5}' | sed 's/%//'`
if [ $A > 70 ] ;
then
    find /archive_log \( -ctime +3 -name '*.arc' \) -exec rm -f {} \;
fi

728x90

+ Recent posts