'프로그래밍/리눅스'에 해당되는 글 17건

  1. 2015.07.08 nohup 명령어 활용하기
  2. 2014.10.31 IOPS (Input/Output Operation Per Second)에 대하여~
  3. 2014.03.01 SSH 암호 없이 로그인 하기
  4. 2014.02.11 SSH 세션을 계속 유지하기 위한 설정
  5. 2014.01.19 리눅스에서 at을 활용한 예약 작업 처리하기
  6. 2012.08.07 자동 배치 처리를 위한 crontab 사용법
  7. 2012.08.06 리눅스에서 date 명령어 알아보기~
  8. 2012.07.20 우분투에서 apt-get으로 JDK(Java Development Kit) 설치하기
  9. 2012.06.04 리눅스에서 현재 접속하고 있는 사용자 수 확인하기
  10. 2012.02.03 아파치 로그를 쉽게 필터링 할 수 있는 프로그램 cronolog~

nohup 명령어 활용하기

|



터미널로 접속해서 명령어를 실행한 후, 해당 터미널을 종료해도 계속 명령어가 실행되도록 유지하고 싶을 때 nohup 명령어를 사용한다. 



만약 mini.sh을 nohup으로 실행할 경우 다음과 같이 사용하면 된다. 

> nohup ./mini.sh &

nohup: ignoring input and appending output to ‘nohup.out’


&는 백그라운드로 명령어를 실행하라는 것이다. 

만약 &를 빼고 해서 실행했을 경우, Ctrl+Z를 눌러 백그라운드로 돌릴 수 있다. 


그리고 nohup으로 실행할 경우, 화면에 출력될 내용이 기본적으로 nohup.out 파일로 리다이렉트 된다. 

다음 명령어로 쉘 프로그래밍이 제대로 진행되는지 결과를 확인할 수 있다. 

> cat nohup.out


참고로 실행중인 백그라운드 명령어나 실행중인 작업은 다음 명령어로 확인하면 된다. 

> bg

[1]+ nohup ./mini.sh &

> jobs

[1]+  Running                 nohup ./mini.sh &





Trackback 0 And Comment 0

IOPS (Input/Output Operation Per Second)에 대하여~

|



IOPS는 단위 시간(1초) 동안 디스크로부터 Input/Output을 수행한 수치를 의미한다. 

즉, 초당 입출력 횟수라 볼 수 있다. 


기본적으로 HDD, SSD, SAN 같은 컴퓨터 저장장치를 벤치마크 하는 데 사용하는 성능 측정 단위이기도 하다. 

IOPS는 Iometer, IOzone, FIO 등 응용프로그램으로 측정할 수 있다고 한다.


IOPS를 구할 수 있는 기본 수식은 다음과 같다. 

IOPS = 1000 / (Average Read Seek Time + (Maximum Rotational Latency / 2))


디스크를 읽고 쓰기 위해서 "탐색 시간 + 회전 대기 시간"이 필요하다.  

이런 평균 탐색 시간을 구하고, 회전 대기 시간은 최대 값을 구해서 2로 나누는 방식으로 평균 회전 대기시간을 구한 것이다. 



7200 rpm의 하드 디스크를 가지고 계산을 한번 해 보자. 

rpm은 분당 회전수를 나타내므로 1분에 7200번 회전을 한다는 것이다. 

그러면 1번 회전하는데 최대 걸리는 시간은 어떻게 될까? 

이것이 바로 회전 대기 시간(Rotational Latency)이 된다. 

1분:7200번 = x:1번

7200x = 1분

x = 1분 / 7200 = 60초 / 7200 = 60000ms / 7200

x = 8.3 ms (최대 회전 대기 시간)


만약 평균 탐색 시간이 8ms라고 가정하면 

7200 rpm의 하드디스크의 IOPS는 다음과 같다. 

IOPS = 1000 / (8ms + (8.3ms/2)) = 82,3


그러나 실제 IOPS의 구체적인 숫자는 프로그램에 입력한 변수에 따라 달라진다고 한다. 

예를 들어, Bus의 대역폭, 사용 가능한 메모리 양, 메모리 캐시의 데이터 보유량, Utilization 고려 등도 영향을 줄 수 있기 때문이다. 

IOPS를 줄이면, 단위 시간 동안 많은 양의 데이터를 한번에 전송할 수 있으므로 시스템의 응답시간을 줄일 수 있다고 한다. 





Trackback 0 And Comment 0

SSH 암호 없이 로그인 하기

|



리눅스에서 SSH 사용시 암호 없이 로그인해서 처리해야 할 필요가 있을 때가 있다. 

Hadoop 설치에서도 각 서버들이 서로 접속할 수 있도록 SSH 설정을 해야 한다고 설명한 적이 있다. 

그래서 암호 없이 ssh 로그인하는 부분을 간략하게 정리해 보려고 한다. 


먼저 클라이언트에서 ssh-keygen으로 키를 생성해야 한다. 

# ssh-keygen -t rsa


그리고 .ssh/ 디렉토리에 생성된 id_rsa.pub 파일을 서버로 복사한다. 

서버에서 파일명을 authorized_keys로 변경하고 퍼미션을 600으로 설정한다. 

# mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

# chmod 600 authorized_keys


이렇게 서버에 파일을 복사하고 authorized_keys에 추가하는 것을 한번에 처리해 주는 명령어도 있다. 

ssh-copy-id 라는 명령어로서 이를 활용하면 다음과 같이 처리할 수 있다. 


# ssh-keygen -t rsa

# ssh-copy-id mini@192.168.0.2


만약 ssh에 별도의 포트를 지정했다면 ""로 묶어주면 된다. 


# ssh-keygen -t rsa

# ssh-copy-id "mini@192.168.0.2 -p0000"







Trackback 0 And Comment 0

SSH 세션을 계속 유지하기 위한 설정

|



SSH를 사용하다보면 접속이 끊겨서 다시 연결해야 하는 경우가 종종 있다. 

보안상의 이유로 계속 사용하지 않으면 접속 종료하기 때문이다. 


개발 중 잠시 자리를 비우고 돌아왔을 때, SSH가 종료되어 있으면 귀찮기 마련이다. 

리눅스에서 SSH 접속을 계속 유지하기 위한 설정에 대해서 한번 정리해 보기로 한다. 


원격 서버 설정

SSH로 접속하는 원격 서버에서 설정을 하면 접속하는 클라이언트에 동일하게 적용할 수 있다. 

원격 서버 설정은 SSH 데몬의 config 파일을 수정하면 된다. 


1. /etc/ssh/sshd_config 파일을 연다. 

# vi /etc/ssh/sshd_config


2. sshd_config 파일에 다음과 같이 추가한다. 

ClientAliveInterval 30

ClientAliveCountMax 5

ClientAliveInterval은 데이터가 수신되지 않으면 지정된 주기에 따라 데이터 전송하도록 클라이언트에 요청한다. 

여기에서는 30으로 되어 있으므로 30초마다 요청한다. 

만약 이 값이 0으로 되어 있으면 데이터 전송을 하지 않는다. 


무제한으로 요청하는 것은 문제가 있으므로 ClientAliveCountMax값을 통해 최대 요청 횟수를 지정하기도 한다. 

그러므로 작업을 안하고 있으면 최대 150초(30초 X 5회)까지는  연결이 유지된다. 


3. 파일을 저장하고 SSH 데몬을 재시작한다. 

# /etc/init.d/ssh restart

또는

# service sshd restart

하지만 원격 서버 설정은 보안상의 이슈가 더 커질 수 있기 때문에 다음 로컬 설정을 활용하는 것이 좋을 듯 하다. 


로컬 서버 설정

로컬 서버에서 설정도 비슷한 방식으로 수행한다. 

로컬의 모든 사용자가 사용하려면 /etc/ssh/ssh_config을 편집하고, 

현재 사용자만 할 경우 ~/.ssh/config 파일을 편집한다. 


# vi ~/.ssh/config

ServerAliveInterval 15

ServerAliveCountMax 3


원격 서버와 마찬가지로 데이터 전송 주기와 회수를 지정해서 연결을 유지한다. 

위 예제는 15초 마다 최대 3번까지 서버로 데이터를 전송하게 된다. 


TMOUT 설정

SSH 설정을 해놓더라도 비활성화되었을 때 자동으로 로그아웃이 될 수도 있다. 

이것은 원격 서버에 Time out 설정이 되어 있기 때문이다.  


# vi ~/.bashrc

export TMOUT=120

....


위와 같이 설정되어 있으면 TMOUT 부분을 삭제하거나 0으로 변경하면 된다. 


윈도우 Putty 설정

윈도우 환경에서 Putty를 사용할 경우 [PuTTY Configuration] - [Connection]에서 설정 가능하다.


 





Trackback 0 And Comment 0

리눅스에서 at을 활용한 예약 작업 처리하기

|



리눅스에서 미리 만들어진 스크립트를 예약된 시간에 실행하는 기능이 필요해서 at 명령어를 사용해 봤습니다. 

at 명령어와 작업 시간을 지정하고 난 후, 실행할 명령을 입력한 다음 Ctrl + D로 저장하면 됩니다. 

예약된 작업의 확인은 atq로 할 수 있습니다. 


at을 실행하는 데몬은 atd로 /etc/init.d/atd 가 있습니다. 

만약 실행되어 있지 않다면 다음과 같이 데몬을 실행할 수 있겠죠. 


# /etc/init.d/atd start


간략하게 정리해 봤습니다. 






Trackback 0 And Comment 0

자동 배치 처리를 위한 crontab 사용법

|



리눅스와 같은 유닉스 계열에서는 주기적으로 자동 배치 처리를 하기 위해서 쉘 스크립트와 crontab을 사용합니다.

즉, 쉘 프로그램을 crontab에 등록된 시간에 자동으로 실행하도록 하는 것으로 서버 로그 정리, 통계/정산 등 배치 작업에 많이 사용하고 있습니다. 


그럼 crontab에 등록하고 사용하는 방법에 대해서 한번 살펴보도록 하지요. 

먼저 crontab의 도움말은 다음 그림과 같습니다. 

생각보다 많은 옵션이 존재하지 않습니다. -l 이나 -e 정도의 옵션을 알고 시간 설정하는 방법을 이해하면 될 것 같습니다. 



crontab 리스트 확인하기

현재 서버에서 동작하고 있는 crontab을 확인하기 위해서는  -l 옵션을 사용합니다. 


> crontab -l
30 0 * * * /usr/local/mini.sh


crontab을 이해하기 위해서는 앞부분에 나오는 5자리의 값들을 알고 있어야 합니다. 

첫번째 인수: 0 ~ 59까지의 분 (minute)

두번째 인수: 0 ~ 23까지의 시간 (hour)

세번째 인수: 1 ~ 31까지의 날짜 (day of month)

네번째 인수: 1 ~ 12까지의 월 (month)

다섯번째 인수: 0 ~ 6까지의 요일 (day of week, 0-일요일)


*로 표시를 할 경우 매번의 의미를 갖습니다. 즉 세번째 인수가 *이면 매일이 되겠죠.. 

그렇다면 위 내용은 매일 새벽 0시 30분에 /usr/local/mini.sh를 실행하라는 명령어에 해당하는 것입니다. 


crontab 등록하기 

crontab에 등록하기 위해서는 다음과 같이 -e 옵션을 사용하면 됩니다. 

처음 실행할 경우, 원하는 에디터를 설정하는 화면이 나타납니다. 일반적으로 vi를 주로 사용하겠죠. 

이후에는 해당 에디터가 바로 나타나서 편집할 수 있게 됩니다. 


> crontab -e


그럼 몇가지 crontab 예를 한번 들어보도록 하죠.. 

모두 지정된 /usr/local/mini.sh를 실행하는 것으로 하겠습니다. 


0 3 * * * /usr/local/mini.sh        // 매일 새벽 3시에 실행

0 0 10 * * /usr/local/mini.sh     // 매월 10일 0시에 실행

0 5 * * 1 /usr/local/mini.sh         // 매주 월요일 5시에 실행

0 5 * * 0,3  /usr/local/mini.sh     // 매주 일요일, 수요일 5시에 실행

0-59/1 * * * * /usr/local/mini.sh   // 매분마다 실행, 0-59분 동안 매 1분마다 실행 의미

* * * * * /usr/local/mini.sh     // 매분마다 실행행


crontab 실행하기

우분투를 기준으로 crontab 실행을 정리해 보도록 하죠. 

먼저 crontab이 실행되어 있는지 확인해야 겠지요. 


> ps -ef | grep cron


만약 시작이 안되어 있다면 다음과 같이 시작할 수 있습니다. 


> /etc/init.d/crond start


재시작이나 중지 명령어는 당연해 restart / stop이겠죠.. ^^


> /etc/init.d/crond restart
> /etc/init.d/crond stop


cron이 잘 진행되고 있는지 로그를 확인하려면 다음과 같이 하세요. 


> tail -100f /var/log/cron


마지막으로 사용자에게 crontab 명령어를 허가 하거나 제한하려면 다음 파일들에 추가하면 된다고 합니다. 

/etc/cron.allow         // 허가할 사용자 ID 등록

/etc/cron.deny         // 제한할 사용자 ID 등록






Trackback 0 And Comment 0

리눅스에서 date 명령어 알아보기~

|



리눅스에서 사용할 수 있는 date 명령어를 정리해 보도록 하겠습니다. 

date 명령어는 날짜와 관련된 처리를 할 수 있는데요. 날짜 출력이나 날짜 설정 등의 작업을 할 수 있습니다. 

로그 파일 등을 처리하는 쉘 프로그래밍에서도 유용하게 사용할 수 있습니다. 


날짜 포맷에 따라 출력하기

먼저 날짜 포맷으로 출력하는 부분을 살펴보도록 하지요. 

date라는 명령어를 입력해 보면 다음과 같이 나타납니다. 

> date
Mon Aug 6 12:51:42 KST 2012


여기에 날짜 포맷으로 출력하기 위해 + 기호를 사용해봤습니다. 

> date +%Y-%m-%d
2012-08-06


년도-월-일의 순서대로 출력하도록 포맷을 지정한 것입니다. 

이와 같이 지정할 수 있는 것은 다음과 같습니다. 



내용을 살펴보면 왠만한 날짜 표현은 모두 가능합니다. 

다만, java에서 날짜 형식 변경을 위한 SimpleDateFormat에 대한 간략한 정리~ 글과 비교해 보면 

표현식이 조금 다르다는 것도 알 수 있습니다.


자 위 내용은 오늘 날짜를 지정한 것이구요. 

만약 어제 날짜를 기준으로 표시한다면 어떻게 할까요? 

-d 옵션을 사용해서 다음과 같이 문자열로 지정하면 됩니다. 


> date -d yesterday +%Y-%m-%d
2012-08-05


만약 특정 날짜를 지정하고 싶으면 문자열로 다음과 같이 사용할 수 있습니다. 

7월 10일이 1년 중 몇 주에 해당하는지 출력하는 문장이 되겠죠. 


> date -d 2012-07-10 +%V
28


날짜 설정하기

date 명령어로 날짜를 설정할 수도 있습니다. 


> date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]


설정할 날짜를 MMDDhhmm[[cc]YY][.ss] 형태로 지정할 수 있습니다. 

즉, 2012년 7월 10일로 날짜를 설정할 경우 다음과 같이 지정할 수 있습니다. 


> date 0710000012
Tue Jul 10 00:00:00 KST 2012


그러나 보통은 이렇게 바꾸지 않고 표준시로 설정하는 경우가 대부분일 것 같습니다. 

표준시로 맞추기 위해서는 rdate라는 명령어를 사용하는데요. 

먼저 다음과 같이 설치할 수 있습니다. 


> apt-get install rdate


마지막으로 표준시와 시간을 맞춥니다. 


> rdate -s time.bora.net
> date
Mon Aug 6 13:10:24 KST 2012





Trackback 0 And Comment 0

우분투에서 apt-get으로 JDK(Java Development Kit) 설치하기

|



리눅스에서 Java를 설치하기 위한 방법들은 예전 글에서도 한번 정리한 적이 있는데요. 

이때는 Redhat 계열의 CentOS에서 세팅하는 것이어서 RPM 명령어로 설치하는 것을 설명했었습니다. 

이번에는 Debian 계열인 우분투(Ubuntu)에서 APT 명령어로 설치하는 것을 정리해 보도록 하지요. 


APT-GET 사용법


우분투는 데비안을 기반으로 하고 있기 때문에 RPM이 아닌 apt-get으로 프로그램을 설치하게 됩니다. 

한글입력기로 유명한 nabi 패키지를 가지고 apt-get 명령어에 대해서 한번 살펴보도록 하죠.. 


nabi 설치 : apt-get install nabi

제거하기 : apt-get --purge remove nabi

검색하기 : apt-cache search nabi

패키지 정보보기 : apt-cache show nabi

소스리스트 업데이트 : apt-get update

설치된 패키지들 업데이트 : apt-get upgrade


deb파일 설치 : dpkg -i nabi_0.15-2_i386.deb

제거하기 : dpkg -P nabi

설치 deb파일들의 리스트 : dpkg -l

설치된 패키지에 포함된 파일들 보기 : dpkg -L nabi

deb파일 패키지에 포함된 파일들 보기 : dpkg -c nabi_0.15-2_i386.deb

deb파일의 정보보기 : dpkg -I nabi_0.15-2_i386.deb

파일의 패키지명 알아내기 : dpkg -S /usr/bin/nabi


apt는 최신 패키지를 다운로드 하여 설치하게 되는데 upgrade 하기전에 update 해서 source.list 를 갱신해야 한다고 합니다.


1. 패키지 캐쉬 갱신 및 자동 업그레이드

# apt-get update

# apt-get upgrade


2. 개별 패키지 설치

# apt-get install <패키지명>


3. 원하는 패키지 찾기 

# apt-cache  serach <패키지명>


4. 원하는 패키지 찾은 다음 정보 출력

# apt-cache show <패키지명>


5. 의존성 검사 수행하면서 업그레이드

# apt-get -s dist-upgrade


6. 설치한 패키지에 이상이 있어 다시 설치시

# apt-get --reinstall install <패키지명>


7. 패키지 삭제

# apt-get remove <패키지명>

또는 # dpkg -P <패키지명>


8. 삭제하는 패키지의 설정파일까지 모두 삭제시

# apt-get --purge remove <패키지명>


9. dselect에서 선택한 패키지의 설치 및 삭제

# apt-get dselect-upgrade


10. 설치된 패키지를 볼때

# dpkg -l


위 내용은 우분투 서버 apt-get 사용법 을 참고했습니다.


APT-GET으로 JDK 설치하기 

그러면 apt-get을 활용해서 Sun의 Java 패키지를 설치하는 부분을 정리하도록 하죠. 

1. /etc/apt/sources.list 확인

apt-get이 참조할 소스 리스트 파일입니다. 

기본으로 http://kr.archive.ubuntu.com/ubuntu/로 접속하도록 되어 있을텐데요. 

경우에 따라서 http://ftp.daum.net/ubuntu/로 경로를 변경해도 됩니다. 


2. apt-get repository 설정

add-apt-repository를 사용하기 위해서 먼저 python-software-properties를 설치합니다.

# sudo apt-get install python-software-properties


이제 repository에 sun-java6 저장소를 추가합니다. # sudo add-apt-repository ppa:sun-java-community-team/sun-java6

여기까지 하면 sources.list가 수정되지 않고 sources.list.d 디렉토리에 추가로 리스트 파일이 생긴 것을 확인할 수 있을 것입니다. 


3. 저장소 목록 업데이트

apt-get 사용법에서 설명한 대로 update를 통해서 sources.list를 갱신합니다. 


# sudo apt-get update


실행해 보면 중간에 다음과 같은 에러 메시지를 확인할 수 있습니다. 

Err http://ppa.launchpad.net natty/main Sources  404  Not Found

Err http://ppa.launchpad.net natty/main i386 Packages  404  Not Found


http://ppa.launchpad.net에 보면 natty 버전이 없고 maverick 버전만 존재해서 나타나는 오류입니다. 

sources.list.d 디렉토리의 sun-java-community-team의 list 파일에서 natty를 maverick으로 변경하면 됩니다. 


# vi /etc/apt/sources.list.d/sun-java-community-team-sun-java6-natty.list


다시 저장소 목록 업데이트를 하면 에러 없이 진행됩니다. 


# sudo apt-get update


마지막으로 목록에서 sun-java가 나타나는지 확인해 봅니다. 


# apt-cache search java


4. 자바 설치하기 

먼저 Java가 설치되어 있는지 확인해 보죠. 

# java -version

The program 'java' can be found in the following packages:

 * gcj-4.4-jre-headless

 * gcj-4.5-jre-headless

 * openjdk-6-jre-headless

Try: apt-get install <selected package>


아직 설치되어 있지 않은 것을 확인하면 다음과 같이 명령어를 실행해서 java를 설치합니다. 

# sudo apt-get install sun-java6-bin sun-java6-fonts sun-java6-jdk sun-java6-jre sun-java6-plugin

위 명령어는 jre, jdk 뿐만 아니라 fonts나 plug-in까지 모두 설치하는 것입니다. 

만약 jdk만 설치하려면 다음과 같이 합니다. 


# sudo apt-get install sun-java6-jdk


중간에 라이센스 동의 등을 물어보면 "OK"를 선택하면 설치가 완료됩니다. 


5. 환경변수 설정하기 

위와 같은 과정으로 설치하면 java는 /usr/lib/jvm/java-6-sun 디렉토리에 설치됩니다. 

JAVA_HOME과 PATH를 다음과 같이 설정합니다. 


#vi /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-6-sun

export PATH=$PATH:$JAVA_HOME/bin


변경된 profile을 적용하고 환경변수를 확인합니다. 

# source /etc/profile

# env


우분투에서 apt-get을 활용해서 java를 설치하는 과정을 한번 정리해 봤습니다. 

하둡(Hadoop) 설치부터 테스트까지 정리~를 여러 환경에서 테스트 해보려고 하니 필요하게 되었네요. ^^





Trackback 0 And Comment 0

리눅스에서 현재 접속하고 있는 사용자 수 확인하기

|



실제 접속한 사용자가 있을 때, 웹서버를 재시작하는 경우가 종종 있어서 

현재 접속한 사용자가 있는지 확인하는 리눅스 명령어가 필요해 정리해 봤습니다. 

결과부터 이야기 하면 명령어는 다음과 같습니다. 


netstat -an | grep :80 | grep ESTB | wc -l

이 명령어를 alias를 적용해서 사용하면 바로 체크할 수 있습니다.

그럼 각각의 명령어를 한번 정리해보도록 하죠. 


netstat

현재 시스템의 네트워크 상태를 알려주는 명령어 입니다. 

프로토콜, Local Address, Foreign Address, 상태 등의 정보를 제공해 주는데요. 

다양한 옵션으로 더 많은 정보를 볼 수도 있습니다. 

-a
모든 소켓 정보를 출력합니다.
-n
호스트명 대신 숫자로 출력합니다.
-p
PID와 프로그램 이름을 출력합니다.
-t
TCP 프로토콜만 출력합니다.
-u
UDP 프로토콜만 출력합니다.

예를 들어 "LISTEN" 상태로 서비스중인 목록을 보고 싶을 경우 다음과 같이 하면 됩니다. 

> netstat -nat | grep LISTEN

netstat 명령어 실행 결과


grep

grep 명령어는 너무나 잘 알고 있을 거라고 생각합니다. 

정규식 형태로 매칭되는 부분을 찾아주는 리눅스 명령어 인데요. 

여기에서는 ":80"이라는 문자열과 "ESTB" (상태가 ESTABLISHED)인 경우를 추출했습니다.


wc

문서가 몇 줄이나 몇 단어로 되어 있는지 세어서 보여주는 명령어 입니다. 

옵션은 다음과 같네요. 

-c
문자 수를 보여줍니다.
-l
라인(줄) 수를 보여줍니다.
-w
단어 수를 보여줍니다.
-L
가장 긴 라인(줄) 하나만 보여줍니다.


자주 사용하는 명령어인데 할때마다 찾아봐야 해서 한번 정리해 봅니다. 






Trackback 0 And Comment 0

아파치 로그를 쉽게 필터링 할 수 있는 프로그램 cronolog~

|



아파치 로그를 분석하는 awstats에 대해서는 지난번에 블로깅을 한 적이 있습니다. 
2011/08/20 - [프로그래밍/리눅스] - 웹로그 분석 프로그램 AWStats 활용 

그런데 최근 로그 파일을 분석하려고 해보니 2달 정도 쌓이 로그가 6G 정도 되더라구요. 
(월별로 쌓도록 구성했어야 했는데.. 설정을 변경해야 겠네요. ㅠㅠ)
awstats가 분석하다가 결국 out of memory라는 말을 남기고 그대로 종료해 버렸습니다. 

그래서 로그 파일을 분할하는 프로그램을 찾아봤는데요. 
cronolog(http://cronolog.org/)라고 하는 프로그램이 있더군요. 


원래는 아파치 로그가 쌓일때 월별, 날짜별로 저장하도록 필터를 쉽게 설정할 수 있는 프로그램이라고 합니다.
그런데 여기 실행파일을 보면 cronosplit 이라는 파일이 있습니다. 
바로 이 파일을 활용해서 지정된 형태로 기존 파일을 분할 할 수 있었습니다.

그럼 cronolog의 설치와 사용에 대해서 살펴보도록 하죠.
wget을 이용해서 소스 파일을 받습니다. (아 우분투에서 테스트했습니다.)

> wget http://cronolog.org/download/cronolog-1.6.2.tar.gz 

압축을 풀고 소유권을 조정한 후 /usr/local 폴더로 옮겼습니다.

> tar xvfpz cronolog-1.6.2.tar.gz
> chown -R root:root cronolog-1.6.2/
> cp -R cronolog-1.6.2/ /usr/local/

이제 컴파일을 진행했습니다.

> cd /usr/local/cronolog-1.6.2
> ./configure
> make && make install 
 
컴파일 후 살펴보니 cronosplit 프로그램은 src 폴더에 있었네요. 
파일에 실행 권한이 없어서 실행 권한을 부여했습니다. 

> cd /etc/usr/local/cronolog-1.6.2/src
> chmod 755 ./cronosplit 

자 이제 파일 분할을 시작해 보겠습니다.
template를 통해서 파일 분할해서 저장할 형태를 지정할 수 있는데요.
첫번째는 일별로, 두번째는 월별로 저장하는 겁니다. 

> ./cronosplit access_log --template=%Y%m%d_access_log
> ./cronosplit access_log --template=%Y%m_access_log 
 



Trackback 0 And Comment 0
prev | 1 | 2 | next