리눅스를 사용하다보면 특정한 프로그램을 주기적으로 수행할 때가 있습니다.
예를 들면, 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가 무사히 수행되는 중입니다.
셋. 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이 필요하신 분에게 도움이 됐으면 합니다.