저는 쿠분투 14.04를 사용하고 있습니다. sudo apt-get install cron을 사용하여 cron을 설치한 다음 IDLE에 이 파일을 생성했습니다 openurl.py
.
#!/usr/bin/env python
import webbrowser
webbrowser.open('http://eample.com')
그런 다음 chmod +x openurl.py
터미널에 입력하여 .py 파일을 실행 가능하게 만들었습니다. ./openurl.py
터미널에 이것을 입력 하면 스크립트가 작동합니다.
그런 다음 Launcher Application Launcher를 사용하여 시스템 설정 > 작업 스케줄러 > 새 작업을 클릭한 다음 openurl.py 파일을 검색하고 실행하려는 시간을 선택했습니다.
crontab -e
터미널에 입력 하면 다음과 같이 표시됩니다.
#openurl
21 21 * * * /home/craig/openurl.py
# File generated by KCron the Thursday 29 Jan 2015 21:20.
그런 다음 기다리면 아무 일도 일어나지 않습니다. 내가 뭘 잘못했나요?
답변1
크론 구성이 올바른 것 같습니다. 나는 python webbrower.open() 함수에 대해 완전히 익숙하지는 않지만 Python 스크립트가 보이는 브라우저 창에서 페이지를 열길 원한다고 가정합니다.
내 생각에 여기서 일어나는 일은 명령줄에서 스크립트를 호출하면 그래픽 세션에서 실행되기 때문에 작동한다는 것입니다. cron에서 호출하면 현재 그래픽 환경에 연결되지 않고 새 세션에서 실행되므로 브라우저를 시작할 수 없습니다. 현재 타임스탬프가 포함된 파일을 생성하거나 현재 타임스탬프를 로그 어딘가에 기록하여 스크립트가 실행 중인지 확인할 수 있습니다.
최종 목표가 하루에 한 번 페이지를 새로 고치는 것이라면 이를 달성하기 위해 브라우저 플러그인을 사용하는 것이 좋습니다. 그렇지 않으면 환경 문제를 파악해야 합니다.
답변2
문제는 cron이 로그인 세션을 모른다는 것입니다.
시스템 콘솔( )에서 스크립트를 ctrl-alt-f1
실행할 수 없는 경우 반드시 cron에서 실행됩니다.
GUI 작업을 자동화하려면 cron 대신 GUI 기반 dscheduler를 사용할 수 있습니다.
답변3
Andrew가 말했듯이 작업이 실패할 수 있습니다.X 세션, 웹 브라우저를 열려고 하기 때문입니다. export DISPLAY=:0;
아래와 같이 cronjob의 일정 뒤에 넣어야 합니다.
21 21 * * * export DISPLAY=:0; /home/craig/openurl.py
그래도 작동하지 않으면 :0
그래픽 터미널에서 출력을 교체해 볼 수 있습니다.echo $DISPLAY