학습자료/리눅스 2015. 3. 24. 11:43

크론탭이 작동하지 않는 세가지 이유.


1. 잘못된 크론탭 표기법

2. 권한 문제

3. 환경변수


이중 대부분의 문제는 3. 환경변수 문제일듯 하다


환경변수 

SHELL

등록된 프로그램을 실행시킬 쉘프로그램을 지정한다. 정의 하지 않을 경우 /bin/sh이 쉘 프로그램으로 지정된다.

PATH

cron은 별도로 쉘을 띄우귀 때문에, 쉘에서 프로그램을 찾기 위한 PATH도 지정해줄 필요가 있다. 왜냐하면 로그인을 해서 shell을 실행시키지 않으므로, 로그인과정에서의 PATH변수를 사용할 수 없기 때문이다.

MAILTO

cron이 수행한 작업의 결과를 mail로 보낼 수 있다. 위의 경우 root유저에게 메일을 전송한다. 만약 MAILTO를 설정하지 않으면 crontab의 실행유저에게 메일이 전송된다.

HOME

cront의 home 디렉토리(:12)경로를 설정한다. 기본적으로는 crontab의 실행유저의 홈디렉토리로 /etc/passwd에 설정된 경로를 따른다. 


환경변수 등록방법 예

SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ * * * * * env > /tmp/env.output


해결법

예를 들어 파이썬모듈을 동작시키는데 동작하지 않았다.


import sys

print sys.path


구동시키려는 스크립트에서 위의 구문으로 사용자의 모듈경로를 모두 읽어서,

crontab -e 를 실행하여


PATH=  <-- 이곳에 모두 기입하자. 그러니 파이썬 모듈이 크론탭에서 제대로 구동하였다.

HOME= <-- 이곳을 작업path로 설정하지 않을 시, 매우 삽질을 할수 있음. 파일관리를 한다던지..하는


ex)

PATH=/home/min/workspace/test:/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/dist-packages;/usr/lib/python2.7/dist-packages;/usr/lib/python2.7/dist-packages/PILcompat;/usr/lib/python2.7/dist-packages/gtk-2.0:/usr/lib/python2.7/dist-packages/ubuntu-sso-client

HOME=/home/min/workspace/test

* * * * * /usr/bin/python /home/min/workpace/test/tt.py



참고.

크론탭이 작동하지 않는 세가지 이유.

http://askubuntu.com/questions/23009/reasons-why-crontab-does-not-work

crontab은 유저의 환경 변수를 가져오지 않는다

http://ohgyun.com/227  

crontab이 작동 안하는 이유는 뭘까

https://kldp.org/node/59859  

파이썬 스크립트 crontab으로 오픈시 모듈 경로 미설정 문제 해결하기.

http://makekr.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-crontab%EC%9C%BC%EB%A1%9C-%EC%98%A4%ED%94%88%EC%8B%9C-%EB%AA%A8%EB%93%88-%EA%B2%BD%EB%A1%9C-%EB%AF%B8%EC%84%A4%EC%A0%95-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0






posted by cozyboy
: