Skip to main content

유용한 Shell script

파일을 찾아서 변경하는 shell

  • if [ "${2}" = "" ]
    then
      echo Input 2 Arguments !!!
        exit
    fi
    
    DOMAIN_HOME=${PWD}
    DOMAIN_HOME=/weblogic/wls64/user_projects/domains/dcnpwas
    echo "DOMAIN_HOME : ${DOMAIN_HOME}"
    echo "AS-IS : ${1}"
    echo "TO-BE : ${2}"
    echo "Start Step 1"
    find ./ -type f -name "*.sh" -exec perl -pi -e "s/${1}/${2}/g" {} \;
    echo "Start Step 2"
    find ./ -type f -name "*.xml" -exec perl -pi -e "s/${1}/${2}/g" {} \;
    echo "Start Step 3"
    find ./ -type f -name "*.properties" -exec perl -pi -e "s/${1}/${2}/g" {} \;
    echo "Start Step 4"
    find ./ -type f -name "*.py" -exec perl -pi -e "s/${1}/${2}/g" {} \;
    echo "Done"
    혹시 61번 서버에서 테스트한 소스를 4.2나 4.3dp 옮기시려면 
    [2014-02-17 오후 5:49:42] 김태우님의 말:
    scp -P 38 -rp * weblogic@172.19.4.2:/weblogic/wls64/user_projects/domains/bidwas1/project/web_kogas 
    예) server1 의 /data를 s01wasp2 의 /data로 복사 
    양쪽 서버 간에 rsh 로그인이 되도록 설정후  실행 
    s01wasp2서버는 rsh 설정이 되어있음 
     
    gtar 명령어예제 
    server1 에서 다음을 수행 
     
    server1:[/] cd /data 
     
    server1:[/data] gtar -cvf - * | (rsh s01wasp2 "cd /data ; gtar -xvf -" ) 
     
     
    rsync 명령어예제 
    server1 에서 다음을 수행 
    rsync -artv --rsh=rsh /data s01wasp2:/ 

 

조회한 파일리스트를 잘라내서 저장 - 전체 class 와 java 파일을 비교(diff)하기 위해서 사용함

  • find ./temp -name "*.java" | awk -F ".java" '{printf $1"\n"}' | awk -F/temp/src/ '{print $2}'
    find ./webapps -name "*.class" | awk -F/webapps/WEB-INF/classes/ '{print $2}' | awk -F ".class" '{printf $1"\n"}'

 

jeus WAS 배포 - 전체 배포

  • #!/bin/sh
    
    echo
    echo '##### START DEPLOY #####'
    echo
    
    if [[ $# -eq 0 ]];then
       echo "ERROR 255: Must provide the following 1 system name parameters:"
        exit 255
    fi
    
    echo '#Actually system name = ' $1
    echo
    
    #### JAVA ENV ####
    export JAVA_HOME=/usr/java7_64
    export PATH=$JAVA_HOME/bin:$PATH:.
    
    #### JEUS ENV ####
    export JEUS_HOME=/sw/jeusadm/jeus7
    export PATH="$JEUS_HOME/bin:$JEUS_HOME/lib/system:$JEUS_HOME/webserver/bin:${PATH}"
    export JEUS_LOG_HOME=/swlog/jeus
    
    
    echo
    echo '1. Backup & Stop' 
    export NOW=`date +%Y%m%d`
    export OLDDAY=$((NOW -2)) 
    export NOWTIME=`date +%H%m`
    export NUMOFSERVER=`uname -n | cut -f2 -d"0"`
    export SERVER=$1"_server"$NUMOFSERVER
    export DOMAIN=lp$1"_domain"
    export PORT
    
    if [ $1 = "sis" ]
    then
            PORT=10100
    else 
            if [ $1 = "pis" ]
            then
                    PORT=10200
            else
                    if [ $1 = "scm" ]
                    then
                            PORT=10500
                    else
                            echo " ###  ERROR SERVIER NOT EXIST only sis, pis, scm ###"
                            exit 1
                            
                    fi
            fi
    fi
    echo ' > Deploy  Server['$SERVER'], PORT['$PORT'], Domain['$DOMAIN'], Number of server NO['$NUMOFSERVER']'      
     
    echo ' > Today = ' $NOW$NOWTIME
    cd /app/ldsp/$1
    find /app/ldsp/$1 -xdev | grep -v 'nas' > /app/ldsp/$1/flist
    tar -cf /app/ldsp/backup/$1-$NOW$NOWTIME.tar -L /app/ldsp/$1/flist
    echo ' > Backup file : ' $1-$NOW$NOWTIME.tar
    rm /app/ldsp/$1/flist
    
    echo
    echo '2. Shutdown ' $DOMAIN 
    jeusadmin -domain $DOMAIN -host 10.7.17.29:$PORT -f /sw/jeusadm/jeus7/bin/scripts/jeusEncode local-shutdown
    
    echo '3. Delete 20 day ago ' 
    find /app/ldsp/backup -mtime +20 -print | xargs rm -f
    
    echo
    echo '4. Delete web root '
    echo '  > Delete ' $1
    cd /app/ldsp/$1
    ls /app/ldsp/$1 | grep -v nas | grep -v export | grep -v import | xargs rm -rf
    echo '  > Clear check ' $1
    ls /app/ldsp/$1
    
    echo
    echo '5. Copy WAR to ' $1
    echo '  > Copy War to ' $1
    cp /app/ldsp/publishing/emdv3.war /app/ldsp/$1
    
    echo
    echo '6. Decompress WAR'
    echo '  > Decompress ' $1
    cd /app/ldsp/$1
    jar -xf /app/ldsp/$1/emdv3.war
    
    echo
    echo '7. Deploy Report'
    echo '  > Deploy report ' $1 ' --> /app/ldsp/rpt/ReportingServer/mrd'
    cd /app/ldsp/$1
    cp -fR  /app/ldsp/$1/report /app/ldsp/rpt/ReportingServer/mrd/
    
    echo
    echo '8. Deploy Configurations'
    echo '  > Deploy ldsp.xml'
    cp /app/ldsp/publishing/config/context-ldsp.xml /app/ldsp/$1/WEB-INF/classes/spring
    echo '  > Deploy logback.xml'
    cp /app/ldsp/publishing/config/logback.xml /app/ldsp/$1/WEB-INF/classes
    echo '  > Deploy ldsp.properties'
    cp /app/ldsp/publishing/config/resources/properties/ldsp.properties /app/ldsp/$1/WEB-INF/classes/properties
    
    
    
    echo
    echo '9. Startup  ' $1
    startDomainAdminServerNM -host 10.7.17.29 -port 7730 -domain $DOMAIN -server $SERVER -filename $JEUS_HOME/bin/scripts/jeusEncode
    
    echo 
    echo '##### FINISH DEPLOY #####' 
    echo 
    echo '10. Finish deploy'
    echo 'Bye'

 

Jeus WAS 개별 배포

  • #!/bin/sh
    
    echo
    echo '##### START DEPLOY #####'
    echo
    
    if [[ $# -eq 0 ]];then
       echo "ERROR 255: Must provide the following 1 system name parameters:"
        exit 255
    fi
    
    echo '#Actually system name = ' $1
    echo
    
    #### JAVA ENV ####
    export JAVA_HOME=/usr/java7_64
    export PATH=$JAVA_HOME/bin:$PATH:.
    
    #### JEUS ENV ####
    export JEUS_HOME=/sw/jeusadm/jeus7
    export PATH="$JEUS_HOME/bin:$JEUS_HOME/lib/system:$JEUS_HOME/webserver/bin:${PATH}"
    export JEUS_LOG_HOME=/swlog/jeus
    
    
    echo
    echo '1. Backup & Stop' 
    export NOW=`date +%Y%m%d`
    export OLDDAY=$((NOW -2)) 
    export NOWTIME=`date +%H%m`
    export NUMOFSERVER=`uname -n | cut -f2 -d"0"`
    export SERVER=$1"_server"$NUMOFSERVER
    export DOMAIN=lp$1"_domain"
    export PORT
    
    if [ $1 = "sis" ]
    then
            PORT=10100
    else 
            if [ $1 = "pis" ]
            then
                    PORT=10200
            else
                    if [ $1 = "scm" ]
                    then
                            PORT=10500
                    else
                            echo " ###  ERROR SERVIER NOT EXIST only sis, pis, scm ###"
                            exit 1
                            
                    fi
            fi
    fi
    echo ' > Deploy  Server['$SERVER'], PORT['$PORT'], Domain['$DOMAIN'], Number of server NO['$NUMOFSERVER']'      
     
    echo ' > Today = ' $NOW$NOWTIME
    cd /app/ldsp/$1
    find /app/ldsp/$1 -xdev | grep -v 'nas' > /app/ldsp/$1/flist
    tar -cf /app/ldsp/backup/$1-IND-$NOW$NOWTIME.tar -L /app/ldsp/$1/flist
    echo ' > Backup file : ' $1-IND-$NOW$NOWTIME.tar
    rm /app/ldsp/$1/flist
    
    echo '3. Delete 20 day ago ' 
    find /app/ldsp/backup -mtime +20 -print | xargs rm -f
    
    echo
    echo '3. Make temp folder for decompress : ' $1
    mkdir /app/ldsp/publishing/temp-$1-$NOW$NOWTIME
    ls -l /app/ldsp/publishing
    
    echo
    echo '4. Copy JAR to tmp for ' $1
    echo '  > Copy JAR to tmp for ' $1
    cp /app/ldsp/publishing/emdv3-ind-was.jar /app/ldsp/publishing/temp-$1-$NOW$NOWTIME
    
    
    echo
    echo '5. Decompress JAR'
    echo '  > Decompress ' $1
    cd /app/ldsp/publishing/temp-$1-$NOW$NOWTIME
    jar -xf /app/ldsp/publishing/temp-$1-$NOW$NOWTIME/emdv3-ind-was.jar
    ls -lR /app/ldsp/publishing/temp-$1-$NOW$NOWTIME
    export TOTALCLASSFILES=`find /app/ldsp/publishing/temp-$1-$NOW$NOWTIME -name '*.class' | wc -l`
    export TOTALXMLFILES=`find /app/ldsp/publishing/temp-$1-$NOW$NOWTIME -name '*.xml' | wc -l`
    export TOTALMRDFILES=`find /app/ldsp/publishing/temp-$1-$NOW$NOWTIME -name '*.mrd' | wc -l`
    export TOTALFILES=`expr $TOTALCLASSFILES + $TOTALXMLFILES + $TOTALMRDFILES`
    echo ' Total classes=' $TOTALCLASSFILES ' , xml=' $TOTALXMLFILES ' , mrd=' $TOTALMRDFILES
    echo ' Total files = ' $TOTALFILES
    
    
    if [ $TOTALFILES = 0 ]
    then
            echo ' !!!!! ###  No file ' $1 ' ### !!!!!'
    else
            echo
            echo '2. Shutdown ' $DOMAIN 
            jeusadmin -domain $DOMAIN -host 10.7.17.29:$PORT -f /sw/jeusadm/jeus7/bin/scripts/jeusEncode local-shutdown
    
            echo
            echo '7. Copy class, mrd, xml to ' $1
            cd /app/ldsp/publishing/temp-$1-$NOW$NOWTIME
            cp -fR /app/ldsp/publishing/temp-$1-$NOW$NOWTIME/java/WEB-INF/classes/com /app/ldsp/$1/WEB-INF/classes
            cp -fR /app/ldsp/publishing/temp-$1-$NOW$NOWTIME/mrd/report /app/ldsp/rpt/ReportingServer/mrd/
            cp -fR /app/ldsp/publishing/temp-$1-$NOW$NOWTIME/xml/WEB-INF/classes/sqlmapper /app/ldsp/$1/WEB-INF/classes
            
            echo '  > Deploy ldsp.properties'
            cp /app/ldsp/publishing/config/resources/properties/ldsp.properties /app/ldsp/$1/WEB-INF/classes/properties
    
            echo
            echo '8. Startup  ' $1
            startDomainAdminServerNM -host 10.7.17.29 -port 7730 -domain $DOMAIN -server $SERVER -filename $JEUS_HOME/bin/scripts/jeusEncode
    fi
    
    echo 
    echo '9 Clear delete files  war & jar '
    cd /app/ldsp/publishing/
    rm -rf /app/ldsp/publishing/temp-$1-$NOW$NOWTIME
    
    echo 
    echo '##### FINISH DEPLOY #####' 
    echo 
    echo '10. Finish deploy'
    echo 'Bye'

 

Webtob 전체 배포

  • #!/bin/sh
    
    echo
    echo '##### START DEPLOY #####'
    echo
    
    if [[ $# -eq 0 ]];then
       echo "ERROR 255: Must provide the following 1 system name parameters:"
        exit 255
    fi
    
    if [ $1 = "sis" ]
    then
            echo '#Actually system name = ' $1
    else 
            if [ $1 = "pis" ]
            then
                    echo '#Actually system name = ' $1
            else
                    if [ $1 = "scm" ]
                    then
                            echo '#Actually system name = ' $1
                    else
                            echo " ###  ERROR SERVIER NOT EXIST only sis, pis, scm ###"
                            exit 1
                    fi
            fi
    fi
    
    echo '#Actually system name = ' $1
    echo
    echo
    echo '1. Backup & Stop' 
    export NOW=`date +%Y%m%d`
    export OLDDAY=$((NOW -2)) 
    export NOWTIME=`date +%H%m`
    
    echo ' > Today = ' $NOW$NOWTIME
    cd /app/ldsp/$1
    find /app/ldsp/$1 -xdev | grep -v 'nas' > /app/ldsp/$1/flist
    tar -cf /app/ldsp/backup/$1-$NOW$NOWTIME.tar -L /app/ldsp/$1/flist
    echo ' > Backup file : ' $1-$NOW$NOWTIME.tar
    rm /app/ldsp/$1/flist 
    
    echo '2. Delete two day ago = ' $1-$OLDDAY*
    rm -rf /app/ldsp/backup/$1-$OLDDAY*.tar
    
    echo
    echo '3. Delete web root '
    echo '  > Delete ' $1
    cd /app/ldsp/$1
    ls /app/ldsp/$1 | grep -v nas | grep -v export | grep -v import | xargs rm -rf
    echo '  > Clear check ' $1
    ls /app/ldsp/$1
    
    echo
    echo '4. Copy JAR to ' $1
    echo '  > Copy JAR to ' $1
    cp /app/ldsp/publishing/emdv3-web.jar /app/ldsp/$1
    
    echo
    echo '5. Decompress JAR'
    echo '  > Decompress ' $1
    cd /app/ldsp/$1
    jar -xf /app/ldsp/$1/emdv3-web.jar
    
    echo
    echo '6. Copy config files'
    echo '  > Deploy editor hp_SE2M_AttachQuickPhoto.js'
    cp /app/ldsp/publishing/config/webapp/EMDV3/editor/photo_uploader/plugin/hp_SE2M_AttachQuickPhoto.js /app/ldsp/$1/EMDV3/editor/photo_uploader/plugin
    echo '  > Deploy editor attach_photo.js'
    cp /app/ldsp/publishing/config/webapp/EMDV3/editor/photo_uploader/popup/attach_photo.js /app/ldsp/$1/EMDV3/editor/photo_uploader/popup
    echo '  > Deploy editor_portal hp_SE2M_AttachQuickPhoto.js'
    cp /app/ldsp/publishing/config/webapp/EMDV3/editor_portal/photo_uploader/plugin/hp_SE2M_AttachQuickPhoto.js /app/ldsp/$1/EMDV3/editor_portal/photo_uploader/plugin/
    echo '  > Deploy editor_portal attach_photo.js'
    cp /app/ldsp/publishing/config/webapp/EMDV3/editor_portal/photo_uploader/popup/attach_photo.js /app/ldsp/$1/EMDV3/editor_portal/photo_uploader/popup
    echo '  > Deploy TopFrame.xfdl.js'
    cp /app/ldsp/publishing/config/webapp/EMDV3/Frame/TopFrame.xfdl.js /app/ldsp/$1/EMDV3/Frame
    
    
    
    echo 
    echo '7. Clear delete files  war & jar '
    rm /app/ldsp/$1/emdv3-web.jar
    
    echo
    echo '##### FINISH DEPLOY #####' 
    echo 
    echo '8. Finish deploy'
    echo 'Bye'
    

 

Webtob 개별 배포

  • #!/bin/sh
    
    echo
    echo '##### START DEPLOY #####'
    echo
    
    if [[ $# -eq 0 ]];then
       echo "ERROR 255: Must provide the following 1 system name parameters:"
        exit 255
    fi
    
    if [ $1 = "sis" ]
    then
            echo " ###  Ind EMDVSIS ###"
    else 
            if [ $1 = "pis" ]
            then
                    echo " ###  Ind EMDVPIS ###"
            else
                    if [ $1 = "scm" ]
                    then
                            echo " ###  Ind EMDVSCM ###"
                    else
                            echo " ###  ERROR SERVIER NOT EXIST only sis, pis, scm ###"
                            exit 1
                    fi
            fi
    fi
    
    echo '#Actually system name = ' $1 ' Attention : JS file Only !!!!!'
    echo
    echo
    echo '1. Backup & Stop' 
    export NOW=`date +%Y%m%d`
    export OLDDAY=$((NOW -2)) 
    export NOWTIME=`date +%H%m`
    
    echo ' > Today = ' $NOW$NOWTIME
    cd /app/ldsp/$1
    find /app/ldsp/$1 -xdev | grep -v 'nas' > /app/ldsp/$1/flist
    tar -cf /app/ldsp/backup/$1-IND-$NOW$NOWTIME.tar -L /app/ldsp/$1/flist
    echo ' > Backup file : ' $1-IND-$NOW$NOWTIME.tar
    rm /app/ldsp/$1/flist
    
    echo '2. Delete two day ago = ' $1-IND-$OLDDAY
    rm -rf /app/ldsp/backup/$1-IND-$OLDDAY*.tar
    
    echo
    echo '3. Make temp folder for decompress : ' $1
    mkdir /app/ldsp/publishing/temp-$1-$NOW$NOWTIME
    ls -l /app/ldsp/publishing
    
    
    echo
    echo '4. Copy JAR to tmp for ' $1
    echo '  > Copy JAR to tmp for ' $1
    cp /app/ldsp/publishing/emdv3-ind-web.jar /app/ldsp/publishing/temp-$1-$NOW$NOWTIME
    
    
    echo
    echo '5. Decompress JAR'
    echo '  > Decompress ' $1
    cd /app/ldsp/publishing/temp-$1-$NOW$NOWTIME
    jar -xf /app/ldsp/publishing/temp-$1-$NOW$NOWTIME/emdv3-ind-web.jar
    ls -lR /app/ldsp/publishing/temp-$1-$NOW$NOWTIME/xfdl/EMDV3
    find /app/ldsp/publishing/temp-$1-$NOW$NOWTIME/xfdl/EMDV3 -name '*.js' | wc -l | xargs printf "###### Total JS file Count = \"%s\" files \n\n"
    export TOTALFILES=`find /app/ldsp/publishing/temp-$1-$NOW$NOWTIME/xfdl/EMDV3 -name '*.js' | wc -l`
    if [ $TOTALFILES = 0 ]
    then
            echo ' !!!!! ###  No file ' $1 ' ### !!!!!'
    else
            echo
            echo '6. Copy xfdl to ' $1
            cd /app/ldsp/publishing/temp-$1-$NOW$NOWTIME/xfdl
            cp -fR /app/ldsp/publishing/temp-$1-$NOW$NOWTIME/xfdl/EMDV3 /app/ldsp/$1
    
            echo
            echo '7. Copy config files'
            echo '  > Deploy editor hp_SE2M_AttachQuickPhoto.js'
            cp /app/ldsp/publishing/config/webapp/EMDV3/editor/photo_uploader/plugin/hp_SE2M_AttachQuickPhoto.js /app/ldsp/$1/EMDV3/editor/photo_uploader/plugin
            echo '  > Deploy editor attach_photo.js'
            cp /app/ldsp/publishing/config/webapp/EMDV3/editor/photo_uploader/popup/attach_photo.js /app/ldsp/$1/EMDV3/editor/photo_uploader/popup
            echo '  > Deploy editor_portal hp_SE2M_AttachQuickPhoto.js'
            cp /app/ldsp/publishing/config/webapp/EMDV3/editor_portal/photo_uploader/plugin/hp_SE2M_AttachQuickPhoto.js /app/ldsp/$1/EMDV3/editor_portal/photo_uploader/plugin/
            echo '  > Deploy editor_portal attach_photo.js'
            cp /app/ldsp/publishing/config/webapp/EMDV3/editor_portal/photo_uploader/popup/attach_photo.js /app/ldsp/$1/EMDV3/editor_portal/photo_uploader/popup
            echo '  > Deploy TopFrame.xfdl.js'
            cp /app/ldsp/publishing/config/webapp/EMDV3/Frame/TopFrame.xfdl.js /app/ldsp/$1/EMDV3/Frame
    fi
    
    
    echo 
    echo '8 Clear delete files  war & jar '
    cd /app/ldsp/publishing
    rm -rf /app/ldsp/publishing/temp-$1-$NOW$NOWTIME
    
    echo
    echo '##### FINISH DEPLOY #####' 
    echo 
    echo '9. Finish deploy'
    echo 'Bye'

 

port check

  • #!/bin/bash
    
    CHECKREMOTESERVERSLIST=checkServerPortList.txt
    TIMEOUT=2
    
    OLDIFS=$CHECKREMOTESERVERSLIST
    IFS=,
    
    while read -a line;
    do
        r=$(timeout 2 bash -c 'exec 3<> /dev/tcp/'${line[0]}'/'${line[1]}';echo $?' 2>/dev/null)
         #l_TELNET=`echo "quit" | telnet ${line[0]} ${line[1]} | grep "Escape character is"`
         if [ "$r" = "0" ]
         then
              echo "Success !"
        else
             if [ "$r" = "1" ]
             then
                  echo "Checked"
              else
                   echo "Failed"
              fi
        fi
    done <$CHECKREMOTESERVERSLIST
    IFS=$OLDIFS

 

HomePlus

  • #!/bin/sh
    
    # /data/scm/homeplus-club-admin/homeplus-club-admin-web
    echo
    echo '##### START DEPLOY #####'
    echo
    
    
    echo '##### Set Env #####'
    ##### JAVA #####
    export JAVA_HOME=/app/java/java8
    export PATH=$PATH:$JAVA_HOME/bin/
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar
    export Finalbackupfiles=5
    export DeleteDate=3
    PATH=$PATH:$HOME/bin
    export PATH
    echo " > JAVA_HOME=" $JAVA_HOME
    echo " > Final Backup File count=" $Finalbackupfiles
    echo " > DeleteDate=" $DeleteDate "day before"
    echo
    echo '1. Backup & Stop' 
    export NOW=`date +%Y%m%d`
    export OLDDAY=$((NOW -$DeleteDate)) 
    export NOWTIME=`date +%H%M`
    echo ' > Today = ' $NOW$NOWTIME
    
    cd /data/tmpsadm
    find /data/tmpsadm -xdev | grep -v 'nas' > /data/tmpsadm/achiving.list
    tar -cf /data/homeplus/backup/homeplus-club-admin/homeplus-club-admin-web/$NOW$NOWTIME.tar -T /data/tmpsadm/achiving.list
    echo ' > Backup file : ' /data/homeplus/backup/homeplus-club-admin/homeplus-club-admin-web/$NOW$NOWTIME.tar
    echo '2. Delete ' $DeleteDate ' day ago = ' $OLDDAY ', but must remain ' $Finalbackupfiles ' files on the backup folder'
    Totalbackupfiles=`find /data/homeplus/backup/homeplus-club-admin/homeplus-club-admin-web/ -name "*.tar" | wc -l`
    echo ' > Total backupfiles(all files) = ' $Totalbackupfiles
    echo ' > Final backup files count = ' $Finalbackupfiles
    Targetdeletebackupfiles=`expr $Totalbackupfiles - $Finalbackupfiles`
    echo ' > Total backup files - Final backup files =' $Targetdeletebackupfiles
    BackupAllFiles=(`find /data/homeplus/backup/homeplus-club-admin/homeplus-club-admin-web/ -name "*.tar" -mtime +$DeleteDate -printf "%f\n" | sort -n`)
    cnt=1
    echo ' > ' $DeleteDate ' day before delete target file list'
    for i in "${BackupAllFiles[@]}"
    do
            if [ $Targetdeletebackupfiles -ge $cnt ]
            then
                    echo "  " $i " , " $cnt " DELETEed !"
            else
                    echo "  " $i " , " $cnt " SKIPed !"
            fi
            let cnt=cnt+1
    done
    
    echo '3. Delete Web ROOT'
    cd /data/tmpsadm
    ls /data/tmpsadm | grep -v nas | grep -v export | grep -v somethingspecial | xargs rm -rf 
    echo ' > Check Web ROOT = /data/tmpsadm'
    echo ' > list ' `ls /data/tmpsadm`
    
    echo '4. Copy tar to /data/tmpsadm'
    echo ' > cp OOT-jar.tar.gz to /data/tmpsadm'
    cp /data/scm/homeplus-club-admin/homeplus-club-admin-web/target/ROOT-jar.tar.gz /data/tmpsadm
    
    echo '5. Decompress TAR.GZ'
    echo ' > tar -zxvf /data/tmpsadm/ROOT-jar.tar.gz'
    cd /data/tmpsadm
    tar -zxf /data/tmpsadm/ROOT-jar.tar.gz -C /data/tmpsadm/ --strip-components=1
    
    echo '6. Clear '
    echo ' > Delete ROOT-jar.tar.gz and achiving.list in Web ROOT'
    cd /data/tmpsadm
    rm -rf /data/tmpsadm/ROOT-jar.tar.gz
    rm -rf /data/tmpsadm/achiving.list
    echo 
    
    echo '##### FINISH DEPLOY #####'
    echo 'Bye'

 


CategoryHomepage

 

Linux Core 수 확인

grep -c processor /proc/cpuinfo 코어 수 확인

 

Linux Memory 확인

cat /proc/meminfo | grep MemTotal 메모리 확인

 

Tomcat instance 운용 shell

  • #!/bin/bash
    
    
    #################################################
    
    ##### TOMCAT #####
    INSTID=$2
    ARGV=$3
    INSTNAME=$1
    JAVA_HOME=${JAVA_HOME}
    CATALINA_HOME=/app/tomcat8/tomcat-engine
    CATALINA_BASE=/app/tomcat8/instance/$INSTNAME
    TOMCAT_USER=alan
    TPATH=/app/tomcat8/tomcat-engine/bin/bootstrap.jar
    TLOG=$CATALINA_BASE/logs
    #LOGNAME=catalina.out
    
    
    ##### JAVA #####
    ### jvm option
    JAVA_OPTS="$JAVA_OPTS -Dinstance_name=$INSTID"
    JAVA_OPTS="$JAVA_OPTS -Dserver.type=prd"
    JAVA_OPTS="$JAVA_OPTS -Dconnection.type=jndi"
    JAVA_OPTS="$JAVA_OPTS -server"
    JAVA_OPTS="$JAVA_OPTS -Dcomponent.name=$INSTNAME"
    JAVA_OPTS="$JAVA_OPTS -Dlogs.dir=$TLOG"
    #JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
    JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=EUC-KR -Dfile.client.encoding=EUC-KR -Dclient.encoding.override=EUC-KR"
    JAVA_OPTS="$JAVA_OPTS -Dinstance.no=$INSTNAME"
    JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom"
    
    ### performance option
    JAVA_OPTS="$JAVA_OPTS -Xmx4096m -Xms4096m"
    #JAVA_OPTS="$JAVA_OPTS -XX:PermSize=256m -XX:MaxPermSize=512m"
    #JAVA_OPTS="$JAVA_OPTS -XX:NewRatio=3 -XX:SurvivorRatio=2"
    
    ### behavior option
    JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+UseParNewGC"
    
    ### debugging option
    JAVA_OPTS="$JAVA_OPTS -verbose:gc -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"
    JAVA_OPTS="$JAVA_OPTS -XX:+TraceClassUnloading -XX:+TraceClassLoading"
    JAVA_OPTS="$JAVA_OPTS -Xloggc:$TLOG/gc.log_$(date +%Y%m%d-%H%M%S)"
    JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError"
    JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=$TLOG/java_pid_$(date +%Y%m%d-%H%M%S).hprof"
    
    
    ### external CLASSPATH ###
    ### APM properties
    #JAVA_OPTS="$JAVA_OPTS -agentpath:/app/dynatrace/dynatrace-7.1/agent/lib64/libdtagent.so=name=[HOSTNAME]_[INSTNAME],server=10.10.27.27:9998"
    #JAVA_OPTS="$JAVA_OPTS -javaagent:/app/scouter/agent.java/scouter.agent.jar"
    #JAVA_OPTS="$JAVA_OPTS -Dscouter.config=/app/scouter/agent.java/conf/scouter_$INSTNAME.conf"
    
    ### RKM OPTION
    #CLASSPATH="$CLASSPATH:/app/rkm/src/RKM_APP"
    #CLASSPATH="$CLASSPATH:/app/rkm/src/RKM_APP/lib/commons-codec-1.10.jar"
    #CLASSPATH="$CLASSPATH:/app/rkm/src/RKM_APP/lib/commons-lang-2.4.jar"
    #CLASSPATH="$CLASSPATH:/app/rkm/src/RKM_APP/lib/commons-logging-1.1.jar"
    
    
    export JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE CLASSPATH
    export CATALINA_OPTS=${JMX_OPTS}
    #################################################
    
    case $ARGV in
    
    start)
      runinst=$(ps -ef | grep java | grep -v grep | grep $INSTID | awk {'print $2 $16'})
        
        UNAME=`id -u -n`
        if [ e$UNAME != "e$TOMCAT_USER" ]
        then 
                  echo "[ Use by only user Account [ $TOMCAT_USER ] Start Fail Tomcat Instance ]"
                  exit;
        fi
    
        if [ -z "$runinst" ]; then
            echo " Starting Tomcat Instance [ $1 ] "
            echo $runinst
            mv $TLOG/catalina.$(date +%Y-%m-%d).out $TLOG/catalina.$(date +%Y-%m-%d_%H%M%S).out
            $CATALINA_HOME/bin/catalina.sh $3
        else
            echo " Already Running Tomcat Instance [ $1 ][ $INSTID ] !!! "
            ERROR=$?
        fi
        ;;
    
    stop)
      $CATALINA_HOME/bin/catalina.sh $3
      ;;
    
    status)
        instcount=$(ps -ef | grep java | grep -v grep | grep $TPATH | wc -l)
        echo " instance Running Count = "$instcount
        ps -ef | grep java | grep -v grep | grep $TPATH | awk '{printf(" Tomcat Instance = "$16"[ PID:"$3" ]\n", $1); }'
        echo -e $inststatus
        ;;
    
    kill)
        ps -ef | grep $TPATH | grep -v grep | grep $INSTID | awk '{ printf(" Tomcat Instance = "$16" [ Process ID : %s ] Terminated.\n", $
    2); }'    ps -ef | grep $TPATH | grep -v grep | grep $INSTID | awk '{ printf("kill -9 %s\n", $3); }' > tmp.$$
        sh tmp.$$
        rm -f tmp.$$
        ;;
    
    
    thread)
        threadPID=$(ps -ef | grep $TPATH | grep -v grep | grep $INSTID | awk {'print $3'})
        threadCount=$(ps uH $threadPID | wc -l )
        echo " Tomcat Instance ID "$INSTID" [ PID : "$threadPID" / Sub THREAD : "$threadCount" ]"
        ;;
    
    log)
      tail -100f $TLOG/$INSTNAME/catalina.out
      ;;
    
    *)
        echo "Invalid parameter [$ARGV]"
        echo "Usage) luncher.sh [instance name] [instance id] [ start|status|stop|kill|log|thread ]"
        echo "ex) luncher.sh inst1 inst11 start"
        echo "=============================================================="
        echo " Tomcat Instance List "
        echo "=============================================================="
        INSTLISTNUM=$(ls $CATALINA_BASE | wc -l )
        echo " Instance Count[ $INSTLISTNUM ] : " $(ls $CATALINA_BASE) 
        echo "=============================================================="
    
        ;;
    
    esac
    
    exit $ERROR

 

Backup Shell

  • 0 2 * * * /home/hyunsu/BackUpCenter/backUpPicture.sh >> /home/hyunsu/BackUpCenter/backupPictures.log

    #!/bin/sh
    
    BackUpFiles=5
    OrgDirectory=/home/hyunsu/Pictures
    BackUpDirectory=/data/ext/WD4TB/backup/Pictures
    
    FilesFound=$(find /home/hyunsu/Pictures/ -mtime -$BackUpFiles )
    
    
    
    checkFileExist()
    {
            filename=`echo $1 | cut -d'/' -f5-`
            echo ">> " $BackUpDirectory/$filename
            if [ -f $BackUpDirectory/$filename ]; then
                    echo "EXIST"
                    echo 
            else
                    echo "NOT EXIST --> Copy " $1 " --> " $BackUpDirectory/$filename
                    cp $1 $BackUpDirectory/$filename
            fi
    }
    
    checkDirectoryExist()
    {
            filename=`echo $1 | cut -d'/' -f5-`
            echo ">> " $BackUpDirectory/$filename
            if [ -d $BackUpDirectory/$filename ]; then
                    echo "EXIST"
                    echo
            else
                    echo "NOT EXIST --> Makedirectory " $BackUpDirectory/$filename
                    mkdir $BackUpDirectory/$filename
            fi
    }
    
    for file in $FilesFound
    do
        #echo "${counter}: ${file}"
            if [ -f "${file}" ]; then
                    echo "${file} file."
                    checkFileExist ${file}
            fi
            if [ -d "${file}" ]; then
                    echo "${file} directory."
                    checkDirectoryExist ${file}
            fi
    done
    
    

 

Crontab에 걸어서 실행 여부를 체크하고 실행하지 않았으면 실행 - ELK 적용 사례

  • */20 * * * * /app/checkELK.sh > /app/checkELK.log

    #!/bin/sh
    
    echo "\n\n"
    echo "#########################################"
    echo "########## CHECK ELK  START ! ###########"
    echo "#########################################"
    
    cd /app/elasticsearch-7.4.1/
    elasticsearchcheck=`ps -ef | grep  elasticsearch | awk '{print ($2)}' | wc -l`
    if [ $elasticsearchcheck -gt 1 ]
    then
       echo "Already Elasticsearch started !"
    else
       echo "Start ElasticSearch !"
       /app/elasticsearch-7.4.1/startup.sh
    fi
    
    cd /app/kibana-7.4.1-linux-x86_64/
    kibanacheck=`ps -ef | grep kibana | awk '{print ($2)}' | wc -l`
    if [ $kibanacheck -gt 1 ]
    then
       echo "Already Kibana started !"
    else
       echo "Start Kibana !"
       /app/kibana-7.4.1-linux-x86_64/startup.sh
    fi
    
    cd /app/logstash-7.4.1/
    logstashcheck=`ps -ef | grep logstash | awk '{print ($2)}' | wc -l`
    if [ $logstashcheck -gt 1 ]
    then
       echo "Already Logstash started !"
    else
       echo "Start Logstash !"
       /app/logstash-7.4.1/startup.sh
    fi
    
    cd /app/
    echo "#########################################"
    echo "############ CHECK ELK END ! ############"
    echo "#########################################"
    echo "\n\n"