먼저 이 내용은 cent os를 기반으로 하는 내용임을 알려드립니다.


리눅스에서 특정 시각마다 원하는 작업이 있다면 cron을 사용해봅시다. 웹 서버로 사용될 경우에는 cron을 이용해서 특정 시각에 DB값을 업데이트 한다든지 등의 유용한 작업을 수행할 수 있습니다.

 

1.Cron이 실행 중인지 확인하는 명령어

ps –ef | grep crond

위의 명령어를 이용하면 현재 서버에서 cron이 실행 중인지 아닌지 확인할 수 있습니다.

 

2.cron 실행/중지/재시작

Cron 실행

/etc/rc.d/init.d/crond start

Cron 중지

/etc/rc.d/init.d/crond stop

Cron 재시작

/etc/rc.d/init.d/crond restart

위의 명령을 이용하면 cron을 실행하거나 중지, 재시작 할 수 있습니다. 물론 그러려면 충분한 권한이 있어야 할 것입니다.

 

3.시스템 cron

시스템 크론은 시스템에 기본적으로 설정되어 있는 cron으로서 거의 대부분의 시스템에서 root에게만 권한이 주어져 있습니다.

/etc/crontab은 시스템에서 주기적으로 실행되는 파일들이 저장된 파일입니다.

위의 스크린 샷은 /etc/crontab 파일을 열어본 모습입니다. 여기에는 4개의 자동 실행에 관련된 내용이 있습니다.

 

01 * * * * root run-parts /etc/cron.hourly

매년 매월 매일 매시 01분에 /etc/cron.hourly에 있는 파일이 실행됩니다.

 

02 4 * * * root run-parts /etc/cron.daily

매년 매월 매일 4시 02분에 /etc/cron.daily에 있는 파일이 실행됩니다.

 

22 4 * * * root run-parts /etc/cron.weekly

매년 매월 매일 4시 22분에 /etc/cron.weekly에 있는 파일이 실행됩니다.

 

42 4 1 * * root run-parts /etc/cron.monthly

매년 매월 1일 4시 42분에 /etc/cron.monthly에 있는 파일이 실행됩니다.

 

눈치가 빠른 사람이라면 벌써 이해했을 것입니다. 위의 실행 내용을 보면 5개의 숫자가 있는데 앞에서부터 차례대로 "분,시,일,월,요일" 을 의미합니다.

즉, 원하는 시각에 실행하고 싶다면 이 5개의 숫자를 잘 설정하면 됩니다.

 

4.사용자 cron

사용자 cron은 root와 일반 사용자가 개별적으로 설정할 수 있는 cron 입니다.

크론 설정 보기

crontab –l

크론 설정 편집

crontab – e

크론 설정 삭제

crontab -r

 

crontabl –l 명령을 수행하면 아래와 같이 현재 사용자가 등록한 크론 설정의 리스트를 볼 수 있습니다.

 

 

그리고 crontab –e를 수행하면 어래와 같이 현재 사용자가 등록한 크론 설정을 수정할 수 있습니다.

 

 

5.매일 0시0분에 test.php수행하기

마지막으로 이 글을 쓴 궁극적인 목적인 php파일을 매일 수행하도록 해보도록 하겠습니다. test.php파일은 DB에 접속해서 날짜를 비교한 다음에 오늘 날짜와 같으면 완료 속성을 1로 바꾸는 기능을 하는 php 파일입니다. 이를 매일 수행하기 위해서는 아래와 같이 입력해주면 됩니다.

0 0 * * * lynx http://donxu.untoc.com/DB/test.php

여기에서 중요한 것은 1)lynx라고 써주는 것과 2)php파일의 위치를 /usr/local/디렉토리/test.php와 같이 입력할 수 없다는 것입니다.

처음에 잘 몰라서 상대주소로도 입력해보고 폴더 명과 같이 절대 경로로도 입력해봤는데 다 소용이 없었습니다.

그래서 열심히 구글링을 한 결과 lynx를 붙여야 하고 도메인 + 파일 위치로 해야 한다는 것을 알았습니다.

참고로 숫자 5개 뒤에 lynx말고 다른 옵션도 붙일 수 있습니니다.

lynx는 텍스트 기반의 웹브라우저라고 합니다. 기본적으로 lynx가 설치되어 있지 않다면 lynx 대신에 /usr/bin/curl 을 이용하거나, /usr/bin/wget 을 사용하는 방법도 있습니다. 그냥 lynx 자리 대신에 채워 넣으시면 됩니다.

여기에서 lynx나 curl, wget을 사용하신다면 반드시 전체 url주소를 사용하셔야 된다는 점! 잊지 마세요~


Tip. 만약 url이 아니라 특정 경로에 있는 php파일을 실행시키고 싶으시다면 lynx대신 /usr/local/bin/php 를 넣으시고, url대신에 /home/donxu/DB/test.php 와 같이 입력해주시면 됩니다.

신고

'프로그래밍 > Linux' 카테고리의 다른 글

Cron을 이용해서 특정 시점에 작업 수행하기  (9) 2010.07.01
Vi에디터 단축 키  (0) 2010.01.04
리눅스 shell에서 mySQL의 instance가져오기  (0) 2010.01.04
Vi설정하기  (0) 2010.01.04
Posted by Code-Moon

댓글을 달아 주세요

  1. BlogIcon pooha302 2010.07.01 21:42 신고 Address Modify/Delete Reply

    아.. cron이 DB에 붙어있는 별도의 프로그램인지 알았는데
    그게 아니었군.. ㅎㅎ cron 말만 너무 들어봐서 ㅋㅋ
    좋은 정보 감솨

  2. 토들러 2010.08.26 13:36 신고 Address Modify/Delete Reply

    감사합니다.. 제 블로그에 좀 퍼갈께요...^^

    • BlogIcon Code-Moon 2010.08.29 13:54 신고 Address Modify/Delete

      블로그 주소를 남겨주시지..;;
      링크를 거시겠다는 뜻이라면 괜찮지만. 복사해서 붙여넣는 식의 퍼가시는 건 좀 별로인 것 같네요:)

  3. BlogIcon seojey 2010.08.27 11:10 신고 Address Modify/Delete Reply

    전 UNIX 서버 계열의 시스템 프로그래밍을 주로해서 cron을 자주 쓰고 있습니다만 php를 호출하는 것은 처음 봤네요 ^^. cron은 UNIX 계열의 거의 모든 OS에서 기본으로 제공하는 라이브러리 명령어입니다.
    적 같은 경우엔 '>'나 '>>' 을 이용해서 파일로 결과를 남기는 경우가 대부분입니다.
    근데 저 호스트는 리눅스 내부에서 구동중인 서버상의 URL인가요??

    • BlogIcon Code-Moon 2010.08.29 13:57 신고 Address Modify/Delete

      php파일의 경로를 말씀하시는 건가요?? 그렇다면 리눅스 서버 내에 있는 경로가 맞습니다^^
      문득 든 생각인데. 외부서버의 php파일도 수행이 가능할까요?;;ㅎ

  4. 지나가다가 2010.11.14 15:16 신고 Address Modify/Delete Reply

    cron으로루 php파일 잘 돌아갑니다. lynx같은거로 실행시키지 않아도 문제없이 작동되죠.

  5. 나그네 2011.01.20 14:04 신고 Address Modify/Delete Reply

    리눅스 크론에 대해 잘 몰라서 이리저리 알아보다가 잠시 궁금한 것이 있는데, 크론 주기 설정 부분에서 "분,시,일,월,년"이 아니라 "분,시,일,월,요일" 이 아닌가 해서요.
    확인 부탁드립니다.

    분 0-59
    시 0-23
    일 0-31
    월 1-12
    요일 0-7(0 또는 7=일요일, 1=월요일, ...)

Vi는 처음 사용하는 유저에게는 상당히 불편한 툴이지만 익숙해지면 그 어떤 GUI 툴보다 빠른 편집 속도를 자랑하는 에디터이다.

오늘은 vi에디터를 빠르게 사용할 수 있는 단축 키에 대해 알아보자.

 

1.커서 이동 관련

h

왼쪽으로 한 칸 이동

j

한 줄 아래로 이동

k

한 줄 위로 이동

l

오른쪽으로 한 칸 이동

w

한 단어 오른쪽으로 이동

b

한 단어 왼쪽으로 이동

엔터

한 줄 아래로 이동

백 스페이스(←)

한 칸 왼쪽으로 이동

스페이스 바

한 칸 오른쪽으로 이동

H

화면의 맨 위로 이동

M

화면의 중간으로 이동

L

화면의 맨 아래로 이동

:$

마지막 줄로 이동

 

2.삽입 명령

a

커서 오른쪽에 문자 삽입

i

커서 왼쪽에 문자 삽입

A

커서가 있는 행 오른쪽 마지막에 문자 삽입

I

커서가 있는 행 왼쪽 처음에 문자 삽입

o

커서 아래에 행 삽입

O

커서 위에 행 삽입

ESC

편집 모드에서 빠져나감

 

3.텍스트 변경

cw

단어 변경

cc

줄 전체 변경

C

커서가 있는 행의 오른쪽 변경

s

커서가 위치한 문자열 대체

r

커서가 위치한 문자를 대체

r – 엔터

줄 나눔

J

현재 행과 아래 행 결합

u

명령 취소

U

행 변경 사항 취소

 

4.텍스트 삭제

x

커서가 위치한 문자 삭제

dw

단어 삭제

dd

커서가 위치한 줄 삭제

D

커서의 오른쪽 전체 삭제

dl

커서의 오른쪽 문자 삭제

dh

커서의 왼쪽 문자 삭제

dj

커서가 위치한 줄과 그 아랫줄 삭제

dk

커서가 위치한 줄과 그 윗줄 삭제

:5,10d

5~10행 삭제

 

5.텍스트 복사/이동

yh

커서의 왼쪽 문자 복사

yl

커서에 위치한 문자 복사

yj

커서가 위치한 줄과 그 아랫줄 복사

yk

커서가 위치한 줄 과 그 윗줄 복사

yy

커서가 위치한 줄 복사

Y

커서가 위치한 줄 복사

p

커서의 아래에 붙여 넣기

P

커서의 위에 붙여 넣기

 

6.탐색/대체

/string

string이라는 문자열을 검색

?string

string이라는 문자열을 역방향으로 검색

n

다음 검색

N

이전 검색

:s/string/rep

현재 줄의 string을 rep로 대체

:1,.s/string/rep

1부터 현재 줄의 string을 rep로 대체

:%s/string/rep/g

파일 전체의 string을 rep으로 대체

 

7.파일 저장/종료

:w

파일 저장

:w filename

filename으로 저장

:wq

저장한 후 vi 닫기

ZZ

변경 사항 저장 후 vi종료

:q!

변경 사항을 저장하지 않고 vi종료

 

신고

'프로그래밍 > Linux' 카테고리의 다른 글

Cron을 이용해서 특정 시점에 작업 수행하기  (9) 2010.07.01
Vi에디터 단축 키  (0) 2010.01.04
리눅스 shell에서 mySQL의 instance가져오기  (0) 2010.01.04
Vi설정하기  (0) 2010.01.04
Posted by Code-Moon

댓글을 달아 주세요

MySQL에 있는 DB 인스턴스를 파일로 저장하고 싶은 경우가 있을 것이다. 그럴 경우에는 다음의 명령을 사용해 보자.

 

echo "select * from 테이블 이름" | mysql –u 아이디 –h 호스트 주소 –p 디비 이름 > 출력 파일명;

 

리눅스 쉘에서 위와 같이 입력을 하면 파일에 DB의 인스턴스가 저장된다.

예를 들어 mysql의 아이디가 donxu이고 DB이름도 donxu, 테이블 이름은 donxu_board, 출력 파일을 board.txt로 한다고 하면 명령어는 다음과 같이 될 것이다.

 

echo "select * from donxu_board" | mysql –u donxu –h localhost –p donxu > board.txt;

 

이걸 해보고 나서 알게 된 사실인데 굳이 리눅스 쉘에서 위의 명령을 실행하지 않더라도 MySQL을 사용한다면 웹 브라우저에서 MySQL로 접속하여 내보내기(Export)를 누르면 원하는 형식의 파일로 저장할 수 있다.-_-;;;;

신고

'프로그래밍 > Linux' 카테고리의 다른 글

Cron을 이용해서 특정 시점에 작업 수행하기  (9) 2010.07.01
Vi에디터 단축 키  (0) 2010.01.04
리눅스 shell에서 mySQL의 instance가져오기  (0) 2010.01.04
Vi설정하기  (0) 2010.01.04
Posted by Code-Moon

댓글을 달아 주세요

오늘은 리눅스에서 vi 에디터를 좀 더 편하고 이쁘게 쓰기 위한 방법을 알아보자.

set autoindent

자동으로 들여쓰기를 한다.

set cindent

c 프로그래밍을 할 때 자동으로 들여쓰기를 한다.

set smartindent

자동으로 들여쓰기를 한다.

set shiftwidth=4

들여쓰기 간격을 4로한다.

set tabstop=4

탭 간격을 4로 한다.

set visualbell

잘 못 눌렀을 때 경고음 대신 번쩍이게 한다.

set novisualbell

비주얼 벨 기능을 사용하지 않음

set nu

라인의 번호를 보여준다.

set nonu

라인의 번호를 보여주지 않는다.

syntax on

자동으로 파일을 인식하여 색을 입혀주는 기능이 활성화 된다.

set ruler

우측하단에 현재 커서의 위치를 표시하게 된다.(줄, 칸)

set nowrapscan

찾기에서 파일의 맨 끝에 이르면 계속해서 찾지 않음

set nobackup

백업 파일을 만들지 않음

set showmatch

매치되는 괄호의 반대쪽을 보여줌

set title

타이틀 바에 현재 작업 중인 파일명을 표시

set ic

패턴을 찾을 때에 대소문자를 구별하지 않는다. (Ignore Case)

set noic

패턴을 찾을 때에 대소문자를 구별한다.(NO Ignore Case)

set background=light

글자를 밝게(dark) 또는 어둡게(light) 한다.

 

신고

'프로그래밍 > Linux' 카테고리의 다른 글

Cron을 이용해서 특정 시점에 작업 수행하기  (9) 2010.07.01
Vi에디터 단축 키  (0) 2010.01.04
리눅스 shell에서 mySQL의 instance가져오기  (0) 2010.01.04
Vi설정하기  (0) 2010.01.04
Posted by Code-Moon

댓글을 달아 주세요

티스토리 툴바