반응형

HP DL380 등 시스템 대상으로 수행하는 모니터링 쉘

 

1. SystemCheck.sh

 

echo ""
RUN1=`grep "physical id" /proc/cpuinfo | sort -u | wc -l`
RUN2=`grep "cpu cores" /proc/cpuinfo | tail -1 | awk -F ':' {'print $2'}`
RUN3=`grep -c processor /proc/cpuinfo`

echo "1. CPU / Physical Core / Virtual Core  "
echo " $RUN1 / $RUN2 / $RUN3"
echo ""

echo "2. Physical Memory (MB) "
echo ""
dmidecode | grep 'Size.*MB' | grep -v 'Installed\|Maximum'
echo ""


echo "3. Hostname"
hostname
echo ""

echo "4. OS information "
cat /etc/centos-release
echo ""

echo "5. OS Bit "
getconf LONG_BIT
echo ""

echo "6. Disk Mount Information "
echo "Filesystem      Size  Used Avail Use% Mounted on"
df -h | grep '/dev/sd'
echo ""

echo "7. Firewall Information"
firewall-cmd --list-all
echo ""

 

2. Monitoring.sh

echo ""
echo "1. CPU TOP 10"
echo ""

ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,comm --sort -pcpu |head -11

echo ""
echo "2. Memory TOP 10"
echo ""

ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,comm --sort -rss | head -11

echo "※ 특정 프로세스 추적은 lsof -p [pid번호] 를 통해 가능합니다."
echo ""

echo ""
echo "3. System Performace Monitoring : sar command"
echo ""
sar -r

echo ""
echo "
kbmemfree : 사용가능한 총 메모리의 양(k/bytes)
kbmemused : 사용중인 총 메모리의 양(k/bytes), 커널에서 사용중인 메모리는 제외
%memused : 사용된 메모리의 %양
kbmemshrd : 시스템에서 공유메모리로 사용된 총 메모리의 양(k/bytes)
kbbuffers : 커널에서 buffer 메모리로 총 사용된 메모리의 양(k/bytes)
kbcached : 커널에서 cache data로 사용된 총 메모리의 양(k/bytes)
kbswpfree : 사용가능한 스왑 공간의 양(k/bytes)
kbswpused : 사용된 스왑 공간의 양(k/bytes)
%swpused : 사용된 스왑 공간의 %양
"
echo ""
echo "※ 지속적인 CPU 추적(mpstat -P ALL 1) / 지속적인 process top 조회 (pidstat 1) / 지속적인 IO 조회(iostat -xz 1)"
echo ""

#MEMORY 사용율
MEMORY_TOTAL=`free | grep ^Mem | awk '{print $2}'`
MEMORY_USED=`free | grep ^-/+ | awk '{print $3}'`
MEMORY_PERCENT=$((100*MEMORY_USED/MEMORY_TOTAL))

#CPU 사용율
CPU_PERCENT=`top -b -n 1 | grep -i cpu\(s\)| awk -F, '{print $4}' | tr -d "%id," | awk '{print 100-$1}'`

#DISK 사용율
DISK_TOTAL=`df -P | grep -v ^Filesystem | awk '{sum += $2} END { print sum; }'`
DISK_USED=`df -P | grep -v ^Filesystem | awk '{sum += $3} END { print sum; }'`
DISK_PERCENT=$((100*$DISK_USED/$DISK_TOTAL))

echo ""
echo "- CPU Use Percent    : $CPU_PERCENT"
echo "- Memory Use Percent : $MEMORY_PERCENT"
echo "- DISK Use Percent   : $DISK_PERCENT"
echo ""

 

3. DBMonitoring.sh

 

DBPWD='password!@#'
mysql -uroot -p${DBPWD} -e 'show processlist;'
echo ""
echo " 1초 단위 지속 모니터링 :  mysqladmin -u root -p'패스워드' -i1 processlist  "
echo ""

 

4. Raid_view.sh

DL 380 Raid 구성시 사용

Centos 7.7 64 bit

 

아래 추가 설치 필요

https://support.hpe.com/hpsc/swd/public/detail?swItemId=MTX-688838b13b194c7abe1aa98584

 

Drivers & Software - HPE Support Center.

Linux 64비트용 HPE 스마트 스토리지 관리자(HPE SSA) CLI By downloading, you agree to the terms and conditions of the Hewlett Packard Enterprise Software License Agreement. 참고:  일부 소프트웨어는 유효한 보증, 현재의 Hewlett Packard Enterprise 지원 계약 또는 라이센스 비용이 필요합니다. HPE 스마트 스토리지 관리자 CL

support.hpe.com

echo ""
echo "========================================"
echo " 1. View All Raid Status "
echo "========================================"
echo ""

ssacli ctrl all show detail

echo ""
echo "========================================"
echo ""

SLOT_NUM=`ssacli ctrl all show detail | grep 'Slot:' |  awk '{print $2}'`

echo ""
echo "========================================"
echo " 2. Deatil Raid Status "
echo "========================================"
echo ""

ssacli ctrl slot=$SLOT_NUM ld all show

echo ""
echo "========================================"
echo ""


echo ""
echo "========================================"
echo " 3. Detail Logical Disk Information "
echo "========================================"
echo ""

ssacli ctrl slot=$SLOT_NUM ld 1 show

echo ""
echo "========================================"
echo ""

 

 

반응형

'OS > Linux' 카테고리의 다른 글

centos 설치된 패키지 파일로 역변환 하기  (0) 2021.02.16
vimrc 공통 환경 설정  (1) 2019.12.03
Centos 7 SAMBA 설정  (1) 2019.09.05
vi 색상 표기  (0) 2019.05.08
CENTOS 7에 XRDP 설치하기  (0) 2017.08.26
반응형

 

KSH 용도 (Solaris)

 

 

 

콘솔(KSH)

https://linuxgazette.net/issue65/padala.html

 

So You Like Color !!! (The mysterious ^[[ characters) LG #65

#include #define RESET 0 #define BRIGHT 1 #define DIM 2 #define UNDERLINE 3 #define BLINK 4 #define REVERSE 7 #define HIDDEN 8 #define BLACK 0 #define RED 1 #define GREEN 2 #define YELLOW 3 #define BLUE 4 #define MAGENTA 5 #define CYAN 6 #define WHITE 7 #d

linuxgazette.net

 

 

 

^[ 부분은 CTRL+V 를 눌러서 입력함

 

 

배쉬쉘(BASH)

 

일반계정 : export PS1='\[\e[36;1m\]\u@\[\e[32;1m\]\h:\[\e[37;1m\][${PWD}]\[\e[0m\]$> '

root 계정 : export PS1='\[\e[31;1m\]\u@\[\e[31;1m\]\h:\[\e[32;1m\][${PWD}]\[\e[0m\]$> '

 

 

본쉘(sh)

 

cd()

{

    chdir $*;

    PS1="$LOGNAME@`hostname`:`pwd` $>"    

}

 

PS1="$LOGNAME@`hostname`:`pwd` $>"

반응형
반응형

systemctl 명령어를 통한 시작 방식은

 

root로만 접근해야 하는 것이라

 

WAS(tomcat)의 기동 및 중지 권한을 넘겨주고

 

재부팅시에도 자동으로 시작될수 있도록(tomcat 계정)

 

할려면 다음과 같다.

 

1. 퍼미션 부여

chmod 755 /etc/rc.d/rc.local

 

2. rc.local 실행 명령어 추가

아래는 tomcat 계정으로 서비스를 시작한다는 명령어

nohup su - tomcat -c /home/tomcat/apache-tomcat-8.5.40/bin/startup.sh &

 

3. rc.local 서비스 등록

위와 같이 해도 rc.local이 시작시에 시작되려고 하려면

아래와 같이 rc-local 서비스가 시작상태여야 함 (한번만 시작하면 계속 시작되어 있음)

#> systemctl start rc-local

 

 

반응형
반응형

기본적으로 systemctl 명령을 통한 방식 (CASE 1)과 Startup.sh 및 Shutdown.sh 2가지 방식(CASE 2)이 있습니다.

 

설정하는 환경에 따른 차이로

 

공통적으로 시작 및 종료를 하기 위해서는

 

정확하게 쉘을 수행하는 것이 좋습니다.

 

systemctl 명령을 통해 시작한 tomcat은 Shutdown.sh를 수행하여도

 

잠시뒤에 다시 시작하는 현상도 볼수 있습니다.

 

1. Tomcat 시작하는 쉘

- CASE 1 방식

# Systemctl 서비스 시작 방식

MYID=`whoami`

# CHECK WAS PORT
WASPORT=`lsof -i TCP:80 | grep -i java | wc -l`

if [ ${WASPORT} -gt 0 ]; then
        echo ""
        echo "====================================="
        echo " 이미 WAS(Tomcat)가 실행 중입니다."
        echo ""

        echo " 종료한 뒤 수행해 주세요."
        echo "===================================="
        echo ""

        exit 0

fi

if [ ${MYID} = "root" ]; then
        systemctl start tomcat
else

        echo " root 계정만 실행 가능합니다."
fi

- CASE 2 방식

# WAS 서비스 시작 방식
WASHOME='/apache-tomcat-8.5.40/bin'

MYID=`whoami`

# CHECK WAS PORT
WASPORT=`lsof -i TCP:80 | wc -l`

if [ ${WASPORT} -gt 0 ]; then
        echo ""
        echo "====================================="
        echo " 이미 WAS(Tomcat)가 실행 중입니다."
        echo ""

        echo " 종료한 뒤 수행해 주세요."
        echo "===================================="
        echo ""

        exit 0

fi

if [ ${MYID} = "root" ]; then
        cd ${WASHOME}
        ./startup.sh
else

        echo " root 계정만 실행 가능합니다."
fi

 

2. Tomcat 종료하는 쉘

- CASE 1

# Systemctl 서비스 종료 방식
MYID=`whoami`

# CHECK WAS PORT
WASPORT=`lsof -i TCP:80 | wc -l`

if [ ${WASPORT} -eq 0 ]; then
        echo ""
        echo "====================================="
        echo " WAS가 기동중인 상태가 아닙니다."
        echo ""

        echo " 종료한 뒤 수행해 주세요."
        echo "===================================="
        echo ""

        exit 0

fi

if [ ${MYID} = "root" ]; then
        systemctl stop tomcat
else

        echo " root 계정만 실행 가능합니다."
fi

- CASE 2

# WAS 서비스 종료 방식
WASHOME='/apache-tomcat-8.5.40/bin'

MYID=`whoami`

# CHECK WAS PORT
WASPORT=`lsof -i TCP:80 | wc -l`

if [ ${WASPORT} -eq 0 ]; then
        echo ""
        echo "====================================="
        echo " WAS가 기동중인 상태가 아닙니다."
        echo ""

        echo " 종료한 뒤 수행해 주세요."
        echo "===================================="
        echo ""

        exit 0

fi

if [ ${MYID} = "root" ]; then
        cd ${WASHOME}
        ./shutdown.sh
else

        echo " root 계정만 실행 가능합니다."
fi

 

3. 서비스 포트에 수행되는 PID 확인

# Tomcat 기준

echo ""
echo "==================================================="
echo ""
echo " Use Port : 80, 8005, 8009, 8443, 8080 "
echo ""
echo "==================================================="

echo ""
echo "***************************************************"
echo " 1. Search : 80 Port "
lsof -i TCP:80
echo "***************************************************"
echo ""

echo ""
echo "***************************************************"
echo " 2. Search : 8005 Port "
lsof -i TCP:8005
echo "***************************************************"

echo ""
echo "***************************************************"
echo " 3. Search : 8009 Port "
lsof -i TCP:8009
echo "***************************************************"

echo ""
echo "***************************************************"
echo " 4. Search : 8443 Port "
lsof -i TCP:8443
echo "***************************************************"

echo ""
echo "***************************************************"
echo " 5. Search : 8080 Port "
lsof -i TCP:8080
echo "***************************************************"

echo ""

 

4. tomcat 에 WAR 파일 Deploy 하는 쉘

echo ""
echo "===================================================================="
echo ""
echo " Deploy Shell "
echo ""
echo "===================================================================="

############################# Define Path ################################
BACKUP_ROOT="/home/tomcat/backup"
WAR_DIR="/apache-tomcat-8.5.40/webapps"
WAR_FILE="deploy.war"

##########################################################################


if [ $# -eq 1 ]; then


        echo ""
        echo " 1. Check Deploy File Exist....."
        echo ""

        if [ -f $1 ]; then

                echo ""
                echo " 2. Check WAR File Exist..... "

                if [ -f ${WAR_DIR}/${WAR_FILE} ]; then

                        echo ""
                        echo " 3. Exist deploy.war File Backup"
                        echo "    Backup Folder => $BACKUP_ROOT "
                        echo ""

                        BK_NAME=`date +%Y%m%d_%H%M%S`

                        echo " *  cp ${WAR_DIR}/${WAR_FILE} ${BACKUP_ROOT}/${WAR_FILE}_${BK_NAME}"
                        cp ${WAR_DIR}/${WAR_FILE} ${BACKUP_ROOT}/${WAR_FILE}_${BK_NAME}
                        echo ""

                else

                        echo " *  Don't Backup Run becase, War File Not Exist "
                fi

                # delete old deploy folder
###                rm -rf ${WAR_DIR}/factory

                # Deploy File
                echo " *  cp $1 ${WAR_DIR}/${WAR_FILE}"
                cp $1 ${WAR_DIR}/${WAR_FILE}
                echo ""
                echo " >>> Please Restart Tomcat Service"
                echo ""

        else
                echo ""
                echo " $1 File not Exist .... Please check!"
                echo ""
        fi

else

        echo ""
        echo " Usage : $0 ${WAR_FILE} "
        echo ""
fi

echo ""
echo "===================================================================="
echo ""

 

반응형
반응형

흠...


어느날 갑자기...

Jennifer으로 떨어진 profile.txt 파일에서

특정 구문만을 분석할 일이 발생했따...

즉,

많이 호출되는 PKG의 ARGUMENT의 내용을 검색하고 싶어졌다

후후... 한 시간동안 대충 만든거라 수정이 필요하지만.

기록상 남겨둔다

예를들면...

stringAnalyzer.sh PKG_NUM.ALL profile.txt D 5

profile.txt 파일에서  PKG_NUM.ALL을 호출한 패키지의 아래의 5줄 사이에 param으로 뿌려진 결과를 출력함.

#!/bin/ksh

##############################################################################################################
#
# 문자열 분석 쉘
#
# 용도 : 제니퍼 로그에서 특정 구문의 호출되는 인자값을 찾기 위한 용도 (반복 패턴 및 호출되는 형태 분석을 위해)
#
#
#
#
##############################################################################################################


if [ $# -eq 0 ]; then
        echo ""
        echo "문자열 분석 쉘"
        echo "=================================================="
        echo "$0 FindText TargetFile Position Number "
        echo "=> FindText   : 찾으려는 문구를 입력함"
        echo "=> TargetFile : 대상 파일"
        echo "=> Position   : D(아래쪽)"
        echo "=> Number     : 아래의 몇줄 안에 param 구문 모두 출력"
        echo ""

else
  

        # 1. 해당 Argument 별로 유효한지 먼저 체크 필요
        # echo abc | tr "[a-z]" "[A-Z]" (대문자 변경  출력)


        # 1. 검색하려는 문자가 들어있는 열을 출력함.
        FindTxt=`grep -n $1 $2 | awk '{print $1}' | sed 's/://g'`

        # 2. 상향인지 하향인지 구분 변수
        UpDown=`echo $3 | tr "[a-z]" "[A-Z]"`

        echo "$2 File"
        echo "==============================="
        echo "File Text : $1"
        echo "======================================================================"
        echo ""
        for i in $FindTxt
        do
                #       echo "i : " $i
                #echo $UpDown
                GetRow=$i
                if [ $UpDown = "U" ]; then
                        GetRow=`expr $i - $4`
                elif [ $UpDown = "D" ]; then
                        GetRow=`expr $i + $4`
                else
                        GetRow=`expr $i`
                fi;

                j=0
                while [ $j -le $4 ]
                do
                        GetRow=`expr $i + $j`
                        ExistRow=`head -$GetRow $2 | tail -1 | grep param2: | grep -v grep | wc -l`

                        if [ $ExistRow -ne 0 ]; then
                                ViewRow=`head -$GetRow $2 | tail -1`
                                echo "$ViewRow"
                        fi;

                        j=`expr $j + 1`
                done
        done
fi

반응형

'Language' 카테고리의 다른 글

npm node module 공통 관리하기  (0) 2020.10.28
Inter-process communication  (0) 2014.03.27
우리은행 웹 접근성 가이드 주소  (0) 2011.08.09
빠른 수식 계산법  (0) 2010.03.01
반응형


형태

오라클 계정 -> 5분 단위로 해서 -> 아래의 테이블 생성후 -> Crontab 으로 조회하여 입력하는 형태

자세한 것은 Shell, Crontab 정보를 찾으면서 하면됨

-- 임의로 실행하는 쿼리목록 조회하기
select      to_char(sysdate,'yyyymmdd'),
            to_char(sysdate, 'HH24'),
            to_char(sysdate, 'MI'),
            A.inst_id,
            A.SID,
            A.SERIAL#,
            A.USERNAME,
            A.TYPE,
            A.STATUS,
            A.STATE,
            A.EVENT,
            A.OSUSER,
            A.PROGRAM,
            A.MACHINE,
            A.SQL_ADDRESS,
            B.SQL_ID,
            B.sharable_mem,
            B.persistent_mem,
            B.runtime_mem,
            B.first_load_time,
            B.OPTIMIZER_MODE,
            B.OPTIMIZER_COST,
            B.MODULE,
            B.SQL_FULLTEXT
   from     GV$SESSION a, GV$SQL B
  WHERE     A.STATUS = 'ACTIVE'                       -- 현재 활성화된
    AND     B.ADDRESS=A.SQL_ADDRESS                   -- FULL SQL TEXT 를 얻기 위해
    AND     A.MACHINE NOT IN ('NewWas1','NewWas2')    -- 접속 Machine 이름이 NewWas1, NewWas2 는 아님
    AND     UPPER(B.SQL_FULLTEXT) NOT LIKE '%V$%';    -- V$ 로 시작하는 뷰를 보는 경우는 제외
   
   
CREATE TABLE MStorage.USER_SQL_LOG
(
      VIEW_YMD   VARCHAR2(8) DEFAULT to_char(sysdate,'yyyymmdd'),
      VIEW_HH    VARCHAR2(2) DEFAULT to_char(sysdate, 'HH24'),
      VIEW_MI    VARCHAR2(2) DEFAULT to_char(sysdate, 'MI'),
      INST_ID    NUMBER,
      SID      NUMBER,
      SERIAL#    NUMBER,
      USERNAME   VARCHAR2(30),
      TYPE     VARCHAR2(10),
      STATUS    VARCHAR2(8),
      STATE     VARCHAR2(19),
      EVENT     VARCHAR2(64),
      OSUSER    VARCHAR2(30),
      PROGRAM    VARCHAR2(48),
      MACHINE    VARCHAR2(64),
      SQL_ADDRESS RAW(8),
      SQL_ID   VARCHAR2(13),
      SHARABLE_MEM NUMBER,
      PERSISTENT_MEM NUMBER,
      RUNTIME_MEM NUMBER,
      FIRST_LOAD_TIME VARCHAR2(38),
      OPTIMIZER_MODE VARCHAR2(10),
      OPTIMIZER_COST NUMBER,
      MODULE     VARCHAR2(64),
      SQL_FULLTEXT  CLOB
) TABLESPACE MStorage;

COMMENT ON TABLE MStorage.USER_SQL_LOG IS '로그 모니터링 테이블(GV$SESSION) 참조';

 


-- 인덱스 생성
CREATE INDEX MStorage.IX_USER_SQL_LOG_01 ON MStorage.USER_SQL_LOG
(
  VIEW_YMD,VIEW_HH, VIEW_MI
)
TABLESPACE MStorage;

 


-- 실제 입력 구문

INSERT INTO MStorage.USER_SQL_LOG
       (
       inst_id,
            SID,
            SERIAL#,
            USERNAME,
            TYPE,
            STATUS,
            STATE,
            EVENT,
            OSUSER,
            PROGRAM,
            MACHINE,
            SQL_ADDRESS,
            SQL_ID,
            sharable_mem,
            persistent_mem,
            runtime_mem,
            first_load_time,
            OPTIMIZER_MODE,
            OPTIMIZER_COST,
            MODULE,
            SQL_FULLTEXT               
            )
select      A.inst_id,
            A.SID,
            A.SERIAL#,
            A.USERNAME,
            A.TYPE,
            A.STATUS,
            A.STATE,
            A.EVENT,
            A.OSUSER,
            A.PROGRAM,
            A.MACHINE,
            A.SQL_ADDRESS,
            B.SQL_ID,
            B.sharable_mem,
            B.persistent_mem,
            B.runtime_mem,
            B.first_load_time,
            B.OPTIMIZER_MODE,
            B.OPTIMIZER_COST,
            B.MODULE,
            B.SQL_FULLTEXT
   from     GV$SESSION a, GV$SQL B
  WHERE     1=1-- A.STATUS = 'ACTIVE'                       -- 현재 활성화된
    AND     B.ADDRESS=A.SQL_ADDRESS                   -- FULL SQL TEXT 를 얻기 위해
    AND     A.MACHINE NOT IN ('NewWas1','NewWas2')    -- 접속 Machine 이름이 NewWas1, NewWas2 는 아님
    AND     UPPER(B.SQL_FULLTEXT) NOT LIKE '%V$%';    -- V$ 로 시작하는 뷰를 보는 경우는 제외

반응형
반응형


다음의 내용들은 개인적인 권장하는 사항들이다.

오라클 10g의 경우 엔진 설치를 위한 디렉토리 공간을 20GB 이상 주는 것을 권장한다.

오라클의 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                                     ####
#### (매월 1일 실행할 수 있도록 cron job 등록 )    ####
#######################################################

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                                  ####
#### (매월 1일 실행할 수 있도록 cron job 등록 )    ####
#######################################################

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                                         ####

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

 

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

 

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


반응형
반응형

ps auxc와 ps aux를 비교해서 수상쩍은 프로세스를 감시할 수도 있다. 이 작업을 편하게 하기 위해 스크립트를 만들었다. 아래 내용을 복사해서 셸 스크립트를 작성한다.

#!/bin/bash
temp1=`mktemp`;
temp2=`mktemp`;

/bin/ps auxc |awk 'NR != 1{for (i = 11; i<=NF; i++) a=a" "$i; print $2,$1,a; a=""}'|sort -n > $temp1
/bin/ps aux |awk 'NR != 1{for (i = 11; i<=NF; i++) a=a" "$i; print $2,$1,a; a=""}'|sort -n > $temp2

echo -e "ps auxc\nps aux"
awk '
{
if (!a[$1]) {
for (i=2; i<=NF;i++){
p = p" "$i;
}
a[$1] = a[$1]" "p;
indexes[CNT++] = $1;
p = "";
} else {
len = length($1);
blank = " ";
for (i=0; i<len; i++){
blank = blank" ";
}
a[$1] = a[$1]"\n"blank;
for (i = 2; i<=NF;i++){
p = p" "$i
}
a[$1] = a[$1]" "p;
p = "";

}
} END {
for (i=0;i<CNT;i++) {
print indexes[i],a[indexes[i]];
}
}' $temp1 $temp2



rm $temp1 $temp2

출처 : http://rhdxmr.tistory.com/60
반응형

'OS > Linux' 카테고리의 다른 글

CENTOS 7에 XRDP 설치하기  (0) 2017.08.26
리눅스 백업 및 복구  (0) 2013.01.25
삼성 컴퓨터 유분투 설치기.  (0) 2012.02.06
rkhunter (리눅스 침입 탐지 사용하기)  (1) 2010.10.14
AWK & SED chunk_1  (0) 2010.01.21

+ Recent posts