簡體   English   中英

來自Cron的Python腳本

[英]Python script from Cron

hours. 我已經完成了Python程序,我打算每隔小時從我的RPi運行一次。 這將是我第一次以這種方式運行這樣的程序/腳本,我想知道在將它添加到我的crontab之前是否有任何我應該知道/寫入腳本的內容?

我也不確定crontab中的這樣一個條目是什么樣的。 我寫的東西是這樣的:

* 2 * * * pi `python /home/pi/Desktop/myProg.py`

在命令周圍使用反向標記,或者我將從我將從crontab調用的shell腳本中啟動myProg.py?

* 2 * * * pi /home/pi/Desktop/launchMyProg.sh

另外,我在程序中有一些print語句我注釋掉了,因為它們主要用於編寫它時的調試,但是我想再次將它們用於調試信息但是指向/var/log/messages是有用的。或者我可以使用tail -f /var/log/messages命令監視的其他日志文件。

我該怎么做? 謝謝。

你走在正確的軌道上。 要每n小時觸發一次python腳本,請執行以下操作:

* */n * * * python /home/pi/Desktop/myProg.py

而已。 確保您正在編輯sudo level crontab,它可以通過sudo crontab -e訪問。

你的代碼實際上每天凌晨2點運行腳本 - 技術上說“只要小時等於2 ”。 * */n * * *表示“每當小時可被n整除時運行”。 可以在此處找到crontab上的GREAT資源: 使用crontab在Linux上安排任務

記錄輸出也很容易。 如果桌面上有一個名為myLog.log的日志文件,則將>> /home/pi/Desktop/myLog.log添加到crontab條目的末尾。 這將使條目看起來像這樣:

* */2 * * * python /home/pi/Desktop/myProg.py >> /home/pi/Desktop/myLog.log

編輯 (感謝@Iamreck):輸出到文件的另一個選項是sys.stdout。 這將實現相同的目標。 為此,請將以下內容添加到Python腳本中:

import sys
sys.stdout = open("myLog.log","w")    
sys.stderr = open("myLogErr.log","w")   
print "stdout test"

在執行此操作時,您還必須將工作目錄更改為桌面,這可以通過此SO帖子的最佳答案來完成

你的第二段代碼確實是正確的。

您有兩個選項可以重定向程序的輸出。

  1. 標准Linux IO重定向 - http://www.tuxfiles.org/linuxhelp/iodirection.html

     * 2 * * * python /home/pi/Desktop/myProg.py &>> /home/<user>/myProg.log 

    這將重定向stdout和stderr,附加到該日志文件。

  2. 更改Python腳本中的sys.stdout文件對象(也可能是stderr)

     import sys sys.stdout = open("myLog.log", "w") sys.stderr = open("myLogErr.log", "w") print 'testing new stdout' 

您也可能希望以另一個用戶身份運行它,您可以使用su來完成它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM