주기적으로 프로그램을 실행하고 싶을때?! - 리눅스 크론탭 사용법

in kr •  7 years ago  (edited)

리눅스를 사용하다보면 특정한 프로그램을 주기적으로 수행할 때가 있습니다.

예를 들면, mining 을 들 수 있겠네요.

저는 mining 할때, 50분은 mining을 수행하고, 10분은 resting 하도록 프로그램을 설계했습니다.

연속적으로 mining을 수행하기엔 하드웨어에 문제가 생길 수 있기 때문이죠.

이것을 수작업으로 하기엔... 너무 바보같은 일이죠.

이런 경우에 crontab은 자동으로 프로그램을 수행하고 잠자는 시간에도 coin을 mining해 달러를 벌어줍니다.
(참고로 저는 Monero를 mining하는데, 하루에 0.012XMR 정도를 mining합니다. 대체, 이 많은 coin들은 대체 누가 mining 했을까요?)

본론으로 넘어가서,

하나. crontab에서 cron은 무엇일까요?

하나 또는 여러개의 프로그램을 주기적으로 반복하고 싶을때 사용하는 리눅스 시스템으로 정의할 수 있습니다.

둘. cron을 수행하기 위해선 몇 가지 선행조건이 필요합니다.

먼저, cron daemon (crond) 가 수행되고 있어야 합니다.

crond 수행시키려면 아래 명령어를 싱행시키면 됩니다.

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

뒤에 start 부분에는 아래와 같이 다양한 명령어를 집어 넣을 수 있습니다.
start | stop | status | restart | condrestart | try-restart | reload | force-reload

crond가 정상적으로 작동하는지 확인을 해봅니다.
ps -aef | grep crond | grep -v grep

crond.png

위와 같이 출력되면 crond가 무사히 수행되는 중입니다.

셋. cron 계정설정

앞서 실행한 crond는 /etc/crontab을 읽어 cron을 수행합니다.

일반적으로 cron은 민감한 시스템이기 때문에,
dafalut 사용자는 root 계정으로 한정되어 있습니다.

만약 cron 사용자를 추가하고 싶다면,
/etc 디렉토리에서 cron.deny와 cron.allow 파일을 생성하여 cron의 사용자를 편집할 수 있습니다.
물론, 이 과정은 root 계정으로 수행해야합니다.

여기서 주의 할 점은,
cron.deny와 cron.allow 파일이 생성되면
allow 파일 안에 root가 없는 경우, root 계정도 cron을 실행할 수 없다는 것입니다.

넷. cron 작동하기

crontab -e 를 입력하여 원하는 작업을 아래처럼 넣으면 됩니다.

11 * * * * /full_path/program.csh
앞의 11 * * * * 의미는 간단한 구글 검색으로 찾아보셨으면 합니다.

이제 crontab을 수행하기 위한 모든 작업이 끝났습니다.

본인이 실행중인 cron 을 확인하길 원한다면,

crontab -l 을 사용하여 확인할 수 있습니다.


영어로 번역하고 싶지만, 너무 많은 시간이 소모가 되네요.

이번 포스팅은 한글로 마치도록 하겠습니다.

저를 포함한 crontab이 필요하신 분에게 도움이 됐으면 합니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @hkkim1030! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honnor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!