如何在每天的特定時間自動開啟 URL

如何在每天的特定時間自動開啟 URL

我使用的是 kubuntu 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

我認為你的 cron 配置是正確的。我並不完全熟悉 python webbrower.open() 函數,但我假設您希望 python 腳本在可見的瀏覽器視窗中開啟頁面。

我認為這裡發生的情況是,當您從命令列呼叫腳本時,它會起作用,因為它在圖形會話中運行。當從 cron 呼叫它時,它會在一個新會話中運行,而不會掛鉤到當前的圖形環境,因此它無法啟動瀏覽器。您可以透過讓腳本建立具有當前時間戳記的檔案或將當前時間戳寫入某處的日誌來驗證腳本是否正在執行。

如果您的最終目標是每天刷新一次頁面,您可以考慮使用瀏覽器外掛程式來實現這一目標,否則您需要找出環境問題。

答案2

問題是 cron 不知道您的登入工作階段。

如果腳本無法在系統控制台 ( ctrl-alt-f1) 上執行,那麼它肯定會在 cron 中執行。

如果你想要自動化 GUI 的東西,可能需要使用基於 GUI 的 dscheduler 而不是 cron。

答案3

正如安德魯所說,你的工作可能會失敗,因為它需要X 會話,因為您正在嘗試開啟網頁瀏覽器。您應該將其放在export DISPLAY=:0;cronjob 中的時間表之後,如下所示

21 21 * * * export DISPLAY=:0; /home/craig/openurl.py

如果這不起作用,您可以嘗試替換為圖形終端中:0的輸出。echo $DISPLAY

相關內容