[英]Unable to run python script with cron
我試圖用cron運行一個簡單的python腳本,但我終生無法正常工作。 我正在運行Ubuntu 18.04。
我知道對此有很多疑問(和答案)。 我看過其中的一些,但仍然無法正常工作。
我的python腳本是:
#!/usr/bin/env python
from tkinter import messagebox
messagebox.showinfo('MessageBox','Hello world!')
我關注了“ 無法在Cron中運行Python腳本 ”並按如下所示更改了權限:
chmod +x /home/brb/bugs/projects/cron/hello.py
我可以從命令行成功運行此代碼,如下所示:
brb@bishop:~$ /home/brb/bugs/projects/cron/hello.py
在crontab內,我嘗試按照以下兩種不同方式執行腳本(每2或3分鍾嘗試確定一個有效的腳本...)
*/2 * * * * /home/brb/bugs/projects/cron/hello.py
*/3 * * * * /usr/bin/env python /home/brb/bugs/projects/cron/hello.py
什么都沒發生。
我遵循了http://www.jessicayung.com/automate-running-a-script-using-crontab/並嘗試檢查錯誤文件,如下所示:
cd ../..
cd var/mail
nano $brb
我在nano中觀察到一條消息
[ Directory '.' is not writable ]
我不確定哪個目錄是“。” 是,也許是var / mail。 無論如何,不確定如何使其可寫。 我會在chmod上添加更多Google chmod,以使它可寫,但是當我看到所有示例時,cron仍無法解決為什么cron無法正常工作...
編輯:
我按照如何從X會話外部(例如從控制台或SSH)在X會話外部運行X程序,按照三元組的注釋進行操作,並且由於不知道自己在做什么,因此嘗試更改顯示權限,如下所示:
brb@bishop:~$ export XAUTHORITY=/home/brb/.Xauthority
brb@bishop:~$ export DISPLAY=':0'
我的Cron工作仍然無法正常工作。
您的問題是雙重的:
cronjob具有不知道它可能在哪里顯示圖形應用程序(要使用哪個X服務器或DISPLAY
。
通過確保在腳本環境中設置了DISPLAY
可以解決此問題。 在X會話中運行的終端中運行echo $DISPLAY
。 :0
很有可能。
即使知道正確的DISPLAY
,它也(應該)沒有訪問權限。 如果您在與運行目標X會話的用戶相同的用戶下運行cronjob。 如果它是另一個用戶,並且可以訪問用戶的家,則可以通過將XAUTHORITY
設置為指向它的權限文件來重用它的權限文件。
您還可以從正在運行的會話中導出必要的信息(隨每個會話更新),將其輸入到該終端中: xauth list $DISPLAY
並將其添加給您的cron運行用戶: xauth add displayname protocolname hexkey
(使用以下三個值返回) xauth list
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.