매일 특정 시간에 자동으로 URL을 여는 방법

매일 특정 시간에 자동으로 URL을 여는 방법

쿠분투 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터미널에 입력하면 스크립트가 작동합니다.

그런 다음 킥오프 애플리케이션 실행기를 사용하여 시스템 설정 > 작업 스케줄러 > 새 작업 >을 클릭한 다음 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

관련 정보