블로그 이미지
윤영식
Frontend Application Architecter, Full Stacker, KnowHow Dispenser and Bike Rider

Publication

Statistics Graph

Recent Comment

2013.02.20 17:36 Middleware, Cloud/Linux

로그 백업을 위하여 crontab에 등록할 Bash Shell를 작업하려 한다. 익혀간 과정을 적어보자 


1) Backup 가정

  - 3일전 로그를 압축한다.

  - 여러개의 로그파일이 다양한 위치에 존재한다

  - 압축된 로그파일은 년/월 별도 디렉토리로 이동하여 관리한다

  - 작은 업무 시스템별로 로그의 위치가 틀리다 (단, 작은 업무 시스템안에 디렉토리는 고정임)


2) 3일전 로그찾기 

  - 몇일전 날짜를 찾는 문법 (참조)

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

# 1) output is 3 days ago 

# backup directory name : backup_YYYY-MM in log files

# 3일전 파일을 찾는다 

YYYYMMDD=`date +%Y%m%d --date '3 days ago'`

DATE="${YYYYMMDD:0:4}-${YYYYMMDD:4:2}-${YYYYMMDD:6:2}"

BK_DIR="backup_${YYYYMMDD:0:4}-${YYYYMMDD:4:2}"

GZIP_CNT="0"


echo ""

echo "===============================[Backup Start]============================="

echo "<< Start Time: "`date '+%F  %r'`" >>"

echo "-- Backup File Date : $DATE, Backup Dir : $BK_DIR"


3) 여러개의 로그파일이 다양한 위치에 존재함

  - 지정한 디렉토리에 파일이 있으면 gzip으로 압축한다

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

# 2) run gzip for log files

# ${1} : directory full path

# ${2} : file name

function mkdir_function()

{

  if [ ! -d ${1} ]; then

    echo "  make dir : ${1}"

    mkdir ${1}

  fi

}


# backup_YYYY-MM 디렉토리가 없으면 만들고 .gz  압축파일을 월별로 관리한다 

function mv_file_function()

{

  mkdir_function "${1}/$BK_DIR"


  echo "  move : ${1}/${2}.gz to ${1}/$BK_DIR"

  mv ${1}/${2}.gz ${1}/$BK_DIR/

}


# ${1} : directory full path

# ${2} : file name

# 지정된 파일만 압축 

function gzip_function() 

{

  if [ -e ${1}/${2} ]; then

    cd "${1}"    

    echo "  gzip : ${1}/${2}"


    gzip ${1}/${2}


    mv_file_function "${1}" "${2}"  


    GZIP_CNT=`expr $GZIP_CNT + 1` 

  fi

}


# for time loop gzip

# 3일 이전의 모든 파일들 

function gzip_loop_function()

{

  cd "${1}"

  for file in `find -type f -mtime +3`; do

     local FNAME="${file:2}"

     local EXT="${FNAME##*.}"

     if [ "$EXT" != "" ] && [ "$EXT" != "gz" ] && [ "$EXT" != "sh" ]; then

        gzip_function "${1}" "${FNAME}"

     fi

  done

}


4) 업무 단위 시스템별로 로그의 위치 지정 : 로그 지정하여 압축 수행함 

  echo "-- [START] ${JDOMAIN} backup : TX.xml & Error.xml log"

  gzip_function "/tmp/logs" "Transactions.log.$DATE"

  gzip_function "/tmp/logs" "Error.log.$DATE"


  # gc old log

  echo "-- [START] ${JDOMAIN} backup : old gclog log"

  gzip_loop_function "/tmp/logs/$JDOMAIN/old/gclog"

 

  # nohup old log

  echo "-- [START] ${JDOMAIN} backup : old nohup log"

  gzip_loop_function "/tmp/logs/$JDOMAIN/old/nohup"


5) 전체 Shell Script


<참조>

  - 백업받을 디렉토리를 만들어야 하는 경우 : 하기 내용은 function을 이용한 참조 내역임 (다른 유사 참조)

  - Bash Shell 문법을 익혀보자 (참조)

  - Bash Shell 문법 : 옵션 잘 설명됨 (참조)

저작자 표시 비영리 변경 금지
신고
posted by peter yun 윤영식
2013.02.07 13:51 Middleware, Cloud/Linux

Linux의 CPU 갯수를 알아내는 명령어


  - 명령어 : grep processor /proc/cpuinfo | wc -l

  - 결과 : cpu core 8개

[jboss]$ grep processor /proc/cpuinfo | wc -l

8

[jboss]$ grep processor /proc/cpuinfo

processor       : 0

processor       : 1

processor       : 2

processor       : 3

processor       : 4

processor       : 5

processor       : 6

processor       : 7


저작자 표시 비영리 변경 금지
신고
posted by peter yun 윤영식
TAG Linux
2013.01.11 09:20 Middleware, Cloud/Linux

제목과 같은 경우 w 명령어가 있다. 


1) w - show who is logged on and what they are doing  : 로그인 사용자가 지금 수행중인 명령어를 볼 수 있다.

  - 예로 상대가 NFS(Network File System)를 마운트하고 있는데, 정확한 위치의 File을 상대가 마운트했는지 알려면 w 하라

  - w를 치면 누가 접속을 했고, 어떤 명령을 수행했는지 알 수 있다.

[jboss@host01 ~]$ w

 09:15:34 up 113 days,  6:32,  3 users,  load average: 0.05, 0.11, 0.10

USER     TTY         FROM           LOGIN@  IDLE   JCPU   PCPU   WHAT

jboss    pts/1        10.222.111.2     07:19     32:33    0.90s  0.83s    tail -100f xxxDomain.out

comc01 pts/0        10.222.111.2     Thu17   15:58m  0.11s  0.10s     vim company-log.log

jboss    pts/2        10.222.111.2     09:15     0.00s    0.01s  0.00s     w


<참조>

http://linux.about.com/library/cmd/blcmdl1_w.htm

저작자 표시 비영리 변경 금지
신고
posted by peter yun 윤영식
TAG linux w
2012.12.07 13:59 Middleware, Cloud/Linux

운영중에 Free Memory size가 부족하다고 하여 top 명령어로 살펴보았다. 


top - 13:52:48 up 60 days,  4:05,  2 users,  load average: 0.09, 0.34, 0.46

Tasks: 186 total,   1 running, 185 sleeping,   0 stopped,   0 zombie

Cpu(s):  1.8%us,  0.2%sy,  0.0%ni, 97.8%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:  47185920k total, 47125908k used,    60012k free,  1250664k buffers

Swap: 10485752k total,      120k used, 10485632k free, 30877100k cached


  - Mem: 60,012 free 로 나온 것을 보아 헉 현재 60Mbytes 밖에 여유가 없다니! 과연 그럴까?

  - Linux의 경우 real free = free + cached of Swap 로 봐야 한다. 


free -gt 명령을 수행해 보면, 여유 메모리는 30G가 됩니다. 따라서 free 0 로 나오지만 buffers + cached 30G 의 free memory 여유가 있다고 보면 됩니다. 

[jboss@hostname ~]$ free -gt
                 total       used     free     shared   buffers  cached
Mem:            45         44          0          0          1         29
-/+ buffers/cache:     14         30
Swap:            9          0          9
Total:            54        44         10

cashed는 여유메모리로 보시면 됩니다.

리눅스 시스템은 파일형태로 관리되는 운영체제이기때문에 여유메모리를 캐쉬파일로 표현되고 있습니다.

또한 스왑이란 실제 메모리 캐쉬메모리까지 모두 사용해서, 부족할때 하드 일부분을 메모리 처럼 가져다 쓸때 사용되는 메모리를 말합니다.

free -gt로 보시면 사용되는 스왑메모리는 거의없습니다.

현재 메모리 여유가 있다고 보시면됩니다.


<참고>

  - 리눅스 메모리 관리

저작자 표시 비영리 변경 금지
신고
posted by peter yun 윤영식
2012.11.23 10:00 Middleware, Cloud/Linux

jboss source build를 위하여 ubuntu에 maven을 설치해 보자 


1) maven2 설치 하기

2) maven 설치 와 실행 파일 위치

root@ip-10-146-81-140:/etc/maven2# cd /usr/share/maven2   <-- 설치 위치
root@ip-10-146-81-140:/usr/share/maven2# ls
bin  boot  conf  lib
root@ip-10-146-81-140:/usr/share/maven2# cd /etc/maven2    <-- 환경 파일 저장 위치
root@ip-10-146-81-140:/etc/maven2# ls
m2.conf  settings.xml
root@ip-10-146-81-140:/etc/maven2# ls -alrt /etc/bin/mvn     <-- 실행 파일 symbolic link
ls: cannot access /etc/bin/mvn: No such file or directory
root@ip-10-146-81-140:/etc/maven2# ls -alrt /usr/bin/mvn
-rwxr-xr-x 1 root root 6331 Oct 24  2011 /usr/bin/mvn
root@ip-10-146-81-140:/etc/maven2# cd bin
bash: cd: bin: No such file or directory
root@ip-10-146-81-140:/etc/maven2# cd /usr/share/maven2/bin
root@ip-10-146-81-140:/usr/share/maven2/bin# ls -alrt
total 8
lrwxrwxrwx 1 root root   21 Oct 24  2011 mvnDebug -> ../../../bin/mvnDebug
lrwxrwxrwx 1 root root   16 Oct 24  2011 mvn -> ../../../bin/mvn
lrwxrwxrwx 1 root root   15 Oct 24  2011 m2.conf -> ../conf/m2.conf
drwxr-xr-x 5 root root 4096 Nov 23 00:26 ..
drwxr-xr-x 2 root root 4096 Nov 23 00:26 .
root@ip-10-146-81-140:/usr/share/maven2/bin#


설치하면 현재(2012.11)기준 Maven version 2.2.1 이다. 그러나 최신 버전은 3.0.4 이다 


  - 아파치 메이븐 사이트


Ubuntu에 최신버전을 설치하려면 apt-get으론 안되고 별도의 과정을 거친다.

  - wget http://apache.mirror.cdnetworks.com/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.zip

  - 압축을 풀고 환경변수 : export M2_HOME=<install dir path> 그리고 export M2=$M2_HOME/bin

  - PATH 환경변수 : export PATH=$M2:$PATH

  - 버전확인 : mvn -version 

dev@ip-10-146-81-140:~/deploy$ wget http://apache.mirror.cdnetworks.com/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.zip

--2012-11-23 00:55:59--  http://apache.mirror.cdnetworks.com/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.zip

Resolving apache.mirror.cdnetworks.com (apache.mirror.cdnetworks.com)... 61.110.198.174

Connecting to apache.mirror.cdnetworks.com (apache.mirror.cdnetworks.com)|61.110.198.174|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 4889768 (4.7M) [application/zip]

Saving to: `apache-maven-3.0.4-bin.zip'


100%[============================================================================>] 4,889,768   1.46M/s   in 3.2s


2012-11-23 00:56:02 (1.46 MB/s) - `apache-maven-3.0.4-bin.zip' saved [4889768/4889768]


dev@ip-10-146-81-140:~/deploy$ ll

total 4784

drwxrwxr-x 2 dev dev    4096 Nov 23 00:55 ./

drwxr-xr-x 7 dev dev    4096 Nov 23 00:53 ../

-rw-rw-r-- 1 dev dev 4889768 Sep  5 07:01 apache-maven-3.0.4-bin.zip

dev@ip-10-146-81-140:~/deploy$ unzip apache-maven-3.0.4-bin.zip

Archive:  apache-maven-3.0.4-bin.zip

   creating: apache-maven-3.0.4/

   creating: apache-maven-3.0.4/boot/

  inflating: apache-maven-3.0.4/boot/plexus-classworlds-2.4.jar

   -- 중략 --

   creating: apache-maven-3.0.4/lib/ext/

  inflating: apache-maven-3.0.4/lib/ext/README.txt

dev@ip-10-146-81-140:~/deploy$vi .bashrc 


<.bashrc 삽입 내역> 

export M2_HOME=/home/dev/deploy/apache-maven-3.0.4

export M2=$M2_HOME/bin

export PATH=$M2:$PATH



dev@ip-10-146-81-140:~$ . .bashrc

dev@ip-10-146-81-140:~$ mvn -version

Apache Maven 3.0.4 (r1232337; 2012-01-17 08:44:56+0000)

Maven home: /home/dev/deploy/apache-maven-3.0.4

Java version: 1.7.0_09, vendor: Oracle Corporation

Java home: /usr/lib/jvm/java-7-oracle/jre

Default locale: en_US, platform encoding: UTF-8

OS name: "linux", version: "3.2.0-31-virtual", arch: "amd64", family: "unix"


저작자 표시 비영리 변경 금지
신고
posted by peter yun 윤영식
TAG Maven2
2012.11.21 09:53 Middleware, Cloud/Linux

AWS의 Ubuntu 시스템에 ftpd를 설치하는 방법. 구글링하면 너무 많은 정보가 있으므로 좋은 사이트 몇개 링크함


1) 설치 기본 : sudo 설치 방법. https://help.ubuntu.com/10.04/serverguide/ftp-server.html

2) 설정 상세 : 설정에 대한 한글 상세 설명. http://community.365managed.com/10759


JBoss를 curl로 받으려고 하는데 마땅한 곳이 없다. 어디 없을까?

저작자 표시 비영리 변경 금지
신고
posted by peter yun 윤영식
prev 1 next