2011-09-15 4 views
1

평소와 같이 사용자 지정 관리 명령을 py 파일로 생성했습니다.django-chronograph 스크립트가 cron 작업에서 실행되지 않거나 사용 권한 문제로 인해 수동으로 실행되지 않습니다.

크로노 그래프가 올바른 위치에 설치되어 있고 동기화되어 있습니다.

나는 또한 내가 그것을 옳은 것 같아요, 다음을 시도하지만 무슨 내가했습니다

* * * * * /home/shofty/virtualenvs/webbricks/bin/chronograph -e /home/shofty/virtualenvs/webbricks/bin/activate_this.py -p /home/shofty/virtualenvs/webbricks/website/manage.py cron 

문서에 다음과 같은

* * * * * /home/shofty/virtualenvs/webbricks/bin/chronograph -e /home/shofty/virtualenvs/webbricks/bin/activate_this.py -p /home/shofty/virtualenvs/webbricks/website 

필자으로 cron 작업을 만들었습니다 는 manage.py cron을 추가했는데 크로노 그래프 기능을 실행해야하는 작업을 찾기 위해 실행하기 때문입니다. 내 가상 환경에서 메신저 내가 manage.py cron을 실행하면 작동하고 작업이 실행됩니다.

두 작업이 모두 실행되지 않지만 수동으로 실행하려고하면 su 또는 내 사용자로 권한이 거부되어 실패합니다. 그들이 어떤 권한을 말하는지 확실하지 않습니다. 누구도 전에 이걸 보았 니?

+0

줄 중 하나의 끝 부분에 &/>> /tmp/chrono.log를 추가하고 해당 파일을 tail -f하십시오. 그건 좀 더 많은 정보를 줄거야. –

+0

에는 앰퍼샌드가 필요하지 않습니다. 또한 -l을 추가하여 cron 줄에 스크립트에 의해 자세한 출력을 얻으려면 ... – bytejunkie

답변

1

이에 대한 대답은 chronograph.sh가 스톱워치로 대체되었습니다.이것은 아마도 env를 활성화 할 수 있음에도 불구하고 argparse를 가져 오기 위해 일찍 처리하지 못했습니다. argparse는 파이썬 2.5에는 포함되어 있지 않지만 2.6에 있습니다. 그런 다음 크로노 그래프 스크립트에 대한 올바른 조합의 인수를 얻습니다. 참조 용으로 -p와 -e는 있지만 -s는 아닙니다.

또한 root로 스크립트를 실행해야하지만 사용자 virtualenv 내에서 스크립트를 타겟팅해야했습니다.

마침내 나는 패키지 디렉토리 디렉토리를 크로노 그래프 스크립트에 추가해야했다. 그 때까지는 argparse를 찾을 수 없었다.

0

파일 권한과 관련된 문제가있을 때 유용 할 수 있습니다. File permission basics

cron 작업을 적절한 사용자/서비스로 실행 해 보았습니까?

다른 Linux 사용자의 crontab 항목을 편집하려면 root로 로그인하고 아래에 표시된 것처럼 -u {username} -e를 사용하십시오.

가상 환경을 사용하고있는 것처럼
[email protected]# crontab -u otheruser -e 
@monthly /home/otheruser/fedora/bin/monthly-backup 
00 09-18 * * * /home/otheruser/ubuntu/bin/check-db-status 
0

: 포함 된 chronograph.sh라는 스크립트입니다. 이 파일 을 프로젝트 디렉토리에 복사하십시오.

cp chronograph.sh ~/virtualenvs/webbricks/chronograph.sh 

는이 스크립트를 열고 경로를 수정해야하는 가상 환경의 activate 스크립트 ::

$PROJECT_PATH"/home/shofty/virtualenvs/webbricks/bin/activate" 

하면이 파일이 실행되어 있는지 확인하고 을 실행하기 위해 crontab를 업데이트 스크립트. 그런 다음

chmod a-x chronograph.sh 

: 의 crontab -e

* * * * * /home/shofty/virtualenvs/webbricks/chronograph.sh /home/shofty/virtualenvs/webbricks/website 

당신이 첫 번째 인수로 스크립트에 /path/to/your/project을 통과 있는지 확인합니다. 이렇게하면 cron에 프로젝트 디렉토리를 찾는 데 문제가 없어야합니다.

+0

activate 문에 대한 경로에 파일 접미어가 없습니다. 그게 맞습니까? – bytejunkie

+0

chronograph.sh는 스톱워치로 대체되었습니다. 이것은 아마도 env를 활성화 할 수 있음에도 불구하고 argparse를 가져 오기 위해 일찍 처리하지 못했습니다. argparse는 파이썬 2.5에는 포함되어 있지 않지만 2.6에 있습니다. 그런 다음 크로노 그래프 스크립트에 대한 올바른 조합의 인수를 얻습니다. 참조 용으로 -p와 -e는 있지만 -s는 아닙니다. – bytejunkie

0

os 권한이 거부 되었습니까? 아니면 403을 받고 있습니까? 이것이 403이라면 장고의 CSRF 보호가 원인 일 가능성이 큽니다. 스크립트가 특정보기에 게시하는 경우 csrf_exempt

권한이 거부되면 파일 시스템/운영 체제 수준에있는 것이므로 실제로 알지 못합니다.

관련 문제