반응형

리눅스 CRON 데몬 설정

# Crontab 형식
분 | 시간 | 날짜 | 달 | 요일 | 사용자 | 명령
1. 분: 10(10분)
2. 시간: 14(오후2시)
3. 날짜: 15(15일)
4. 달: *(매달)
5. 요일: 0~6 (일요일~금요일)
6. 명령: shell


# yum -y install rdate

##5분 마다 동기화 설정##


1. vi /etc/crontab 명령으로 파일을 연뒤,
0,5,10,15,20,25,30,35,40,45,50,55 * * * * root /usr/bin/rdate -s time.bora.net
 
위와 같이 입력한다.

혹은,
5 * * * * root /usr/bin/rdate -s time.bora.net

으로 해도 같은 의미이다.

2. crontab -e 를 타이핑한 후 엔터한후, 위의 내용을 동일하게 입력하면 된다.

단, 차이점은

vi /etc/crontab 을 열어 예약작업을 입력할땐,

반드시 root 권한으로 실행함을 명기하여야 한다. 그러나, crontab -e 명령으로 예약작업을 입력할땐,

root 표기를 넣지 않아도 된다.

즉,

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/rdate -s time.bora.net

or

5 * * * * /usr/bin/rdate -s time.bora.net

# 최종적으로 service crond restart 를 하여 Cron 데몬을 반드시 재시작해야 하며
crontab -e 로 입력한 명령이 정상적으로 예약작업으로 등록되어 있는지 확인하고자 할경우에는,
crontab -l  를 입력하면 예약된 작업들이 Display된다.

반응형



Posted by 궁극의 java개발자
,





반응형

서버를 운영할때 시간동기화는 굉장히 중요한 부분입니다.  프로그램들이 서버시간을 기준으로 사용되어지기 때문인데요.

실제시간과 서버내 시간과의 오차를 최대한 줄일 수 있도록 매일 시간동기화를 해줘야합니다.

 

1. 서버의 현재시간
 – date라는 명령어를 입력하면 서버의 현재시간을 확인할 수 있습니다.

선택 영역_649

 – 실제 시간과의 오차범위가 크다면 시간동기화가 필요합니다.

 

2. rdate설치
 – 먼저 yum으로 rdate를 설치해줍니다.

선택 영역_647

 

3. 시간동기화
 – 설치가 완료되었으면, 타임서버를 이용하여 동기화를 해봅니다.

선택 영역_648

위 URL로 동기화가 안될경우 다른 도메인으로 진행해봅니다.
 time2.kriss.re.kr
 time.bora.net
 ntp.kornet.net
 ntp.postech.ac.kr

 

4. 변경된 시간확인
– 동기화가 완료되었다면, 시간이 변경된것을 확인할 수 있습니다.

선택 영역_650

 

5. crontab 수정
 – 주기적으로 자동으로 동기화가 될 수 있게 cron을 수정하여 스케줄러에 추가해줍니다.

 

선택 영역_652
선택 영역_653

 # vi /etc/crontab으로 스케쥴러를 열어서 매일 스케쥴러가 돌 수 있게 설정합니다.

선택 영역_655

이렇게 설정해주고 cron데몬을 재구동해주면 (# /etc/init.d/crond restart) 매일 04시 02분에 시간동기화가 자동적으로 이루어지게 됩니다.

반응형



Posted by 궁극의 java개발자
,





반응형

예전에 포스팅 했던 [리눅스] 파일 개수 구하기(find, wc 이용) 글에서, find 명령어를 이용해 이름 기준으로 파일을 검색하는 방법을 알아보았다. 이번에는 파일 크기를 기준으로 검색하고, 그리고 검색된 결과를 바로 삭제하는 방법을 알아본다.


리눅스 콘솔에서 find --help 명령어를 쳐보면 아래와 같이 find에 대한 설명이 나온다. 아래 설명에서 굵게 처리한 부분을 보면, 힌트를 얻을 수 있다.


# find -- help


사용법 : find [경로...] [수식]


default path is the current directory; default expression is -print

expression may consist of: operators, options, tests, and actions:


operators (decreasing precedence; -and is implicit where no others are given):

( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2

EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2


positional options (always true): -daystart -follow -regextype


normal options (always true, specified before other expressions):

-depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf

--version -xdev -ignore_readdir_race -noignore_readdir_race


tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N

-cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME

-ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN

-links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE

-nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN

-wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N

-used N -user NAME -xtype [bcdpfls]

-context CONTEXT



actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print

-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit

-exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;

-execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;


find에서 -size 옵션을 주면 파일 크기를 기준으로 검색을 할 수 있고, -exec 옵션을 주면 검색 결과에 특정 액션을 할 수 있다. 그럼 케이스 별로 나누어 실제 사용 예시를 알아본다.



1. 파일 크기 기준으로 검색

# find ./* -size +N => N 이상 크기의 파일을 검색한다.

# find ./* -size -N => N 이하 크기의 파일을 검색한다.

# find ./* -size N => N 크기의 파일을 검색한다.


** 사이즈 단위

b : 블록단위

c : byte

k : kbyte

w : 2byte 워드


예를 들어 콘솔 현재 경로에서 512byte 이상, 1024byte 이내의 파일을 찾고자 한다면 아래와 같이 입력하면 된다.

# find ./* -size +512c -size 1024c



2. 파일 검색 후 삭제

# find ./* [옵션] -exec rm -rf {} \; => find 검색 결과를 모두 삭제한다.


예를 들어 콘솔 현재 경로 아래의 파일을 모두 삭제하고자 한다면 아래와 같이 입력하면 된다.

# find ./* -type -f -exec rm -rf {} \;



3. 복합

그럼 지난 포스팅의 내용과, 이번 포스팅의 내용을 복합하여 정리해보면 아래와 같은 명령어도 실행할 수 있다.

# find ./* -type -f -name '*.jpg' -size +512k -size -1024k -exec rm -rf {} \;

=> 현재 경로의 파일 중에 파일 확장자가 jpg이면서, 사이즈가 512kbyte 이상, 1024kbyte 이하인 것들을 모두 삭제한다.



 

반응형



Posted by 궁극의 java개발자
,





반응형

리눅스에서 다량의 파일들을 전송/수신하고, 데이터 증분치에 대한 반영을 할 수 있는 가장 좋은 방법은 rsync가 아닐까 생각한다.(혹시 더 좋은 방법이 있으면 추천 부탁드립니다.) rsync 서버 및 클라이언트 설정 방법을 정리해본다. 여기서는 192.168.123.10에 있는 데이터를 192.168.123.11로 가져가는 예시를 들어본다.



<rsync 서버 설정>


rsync 서버 설정 1) rsync 패키지 확인

# rpm -qa | grep rsync


** 설치가 안 되어있을 경우

# yum install rsync



rsync 서버 설정 2) xinetd 패키지 확인

# rpm -qa | grep xinetd


** 설치가 안 되어있을 경우

# yum install xinetd



rsync 서버 설정 3) rsnyc 사용 설정

# vi /etc/xinetd.d/rsync

'disable = yes' 라고 되어있는 부분을 'disable = no' 로 변경한다.


===================================================================

# default: off

# description: The rsync server is a good addition to an ftp server, as it \

# allows crc checksumming etc.

service rsync

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/bin/rsync

server_args = --daemon

log_on_failure += USERID

}

===================================================================



rsync 서버 설정 4) rsync 설정

# vi /etc/rsyncd.conf

/etc/rsyncd.conf의 경우 처음에는 없는 파일일 가능성이 높다. 편집기를 이용해 새로 작성해준다.


====================================================

[rsync_test] -> 사용할 rsync 서비스 이름

path=/data/rsync_test/ -> 데이터 원본 경로

comment = rsync_test -> 코멘트

uid = root -> 권한 사용자

gid = root -> 권한 그룹

use chroot = yes

read only = yes

hosts allow = 192.168.123.11 -> rsync 클라이언트 IP. localhost일 경우 입력하지 않아도 됨

max connections = 3

timeout=600

====================================================



rsync 서버 설정 5) xinetd 서비스 재시작 및 방화벽 확인

# /etc/init.d/xinetd restart


보통 iptables 에서 포트가 막혀있는 경우가 많다.

rsync는 873 포트를 사용하므로, 873 포트 허용해준다.




<rsync 클라이언트 설정>


rsync 클라이언트 설정 1) rsync 접속 여부 확인

# telnet [rsync 서버 IP] 873

ex) telnet 192.168.123.10 873

telnet을 이용하여 873 포트가 정상적으로 연결되는지 확인한다.




rsync 클라이언트 설정 2) rsync 실행

# rsync -avz [IP]::[서비스명] 저장디렉토리

ex) # rsync -avz 192.168.123.10::rsync_test /data/rsync_test


혹시 내역을 로그로 남기고 싶을 경우 아래와 같이 입력한다.

# rsync -avz 192.168.123.10::rsync_test /data/rsync_test > /data/rsync.log


반응형



Posted by 궁극의 java개발자
,