簡體   English   中英

使用Crontab運行簡單的Python文件

[英]using Crontab to run simple Python file

我正在嘗試使用crontab運行一個簡單的Python腳本,但無法使其正常工作。 當不使用Python時,我可以在crontab中運行一個簡單的程序。 這是我的Crontab文件中有效的行:

* * * * * echo “cron test” >> /home/ftpuser/dev/mod_high_lows/hello.txt

我也可以直接從命令行運行此python腳本testit.py。 這是我的testit.py文件,它輸出一個csv文件。

#!/usr/bin/env python

import f_file_handling
_data = [(12,15,17)]
f_file_handling.csv_out('my_file_test',_data)

上面的文件具有我做的功能,但是我知道它可以正常工作,因為它可以像從命令行那樣運行testit.py時達到預期的效果:

python testit.py

因此,我讓Crontab自己處理,並讓testit.py文件自己處理,然后嘗試使用Crontab運行testit.py文件。 我確實使用以下命令使testit.py文件可執行:

chmod +x testit.py 

而且我看到了它的可執行文件,因為當我位於正確的目錄中時,該文件在我的linux命令窗口中以綠色顯示。 現在,在用於運行早期Crontab測試的同一Crontab文件中,添加了以下行:

* * * * * /home/ftpuser/dev/mod_high_lows/testit.py

是的,我想讓它每分鍾執行一次,只是想嘗試運行最簡單的測試以使Crontab和Python一起工作。

這是我正在使用的:

  • Ubuntu 14.04.2 LTS(GNU / Linux 3.13.0-52-通用x86_64)

  • Python 2.7

上面是我設置的Linux服務器上。

您會在我的testit.py文件頂部看到shebang行,從我的研究中可以看到。
至於我的testit.py python文件,我在Windows機器上編寫了該文件,然后將其傳輸到服務器,但是當crontab和python不能一起工作時,我還使用Nano文本編輯器從Linux命令窗口中對該文件進行了編碼,但是嘗試通過Crontab運行testit.py文件時,這沒有區別。 因此,即使我直接在Linux服務器上編寫testit.py代碼,它也無法運行(以防Windows在文件中創建隱藏字符的情況)。

  • cron在有限的環境中運行命令。 僅會自動設置一些環境變量。 它加載/etc/environment/etc/security/pam_env.conf指定的/etc/environment ,但不加載您可能在.bashrc.profile設置的環境變量。

    設置crontab條目

     * * * * * /usr/bin/env > /tmp/out 

    看一下實際設置了哪些環境變量。 一旦擁有/ tmp / out,別忘了刪除crontab條目。

  • 運行Python腳本時,您可能需要設置的一個重要環境變量是PYTHONPATH。 因此,在crontab的頂部添加PYTHONPATH設置,例如:

     PYTHONPATH=/home/ftpuser/dev/mod_high_lows 

    確保添加包含f_file_handling模塊的目錄,以便Python在運行語句時將找到該模塊

     import f_file_handling 
  • 最后,還要注意cron默認情況下在您的主目錄中運行命令 但是最好是顯式的,並在腳本中指定文件時提供完整路徑:

     f_file_handling.csv_out('/path/to/my_file_test',_data) 

我不確定這是否會有所幫助,但是通過將以下行添加到crontab文件的末尾,我一直成功地設法使python腳本從cron成功運行:

@reboot python /home/ftpuser/dev/mod_high_lows/testit.py &

在行的末尾必須加上& 如果這是您所需要的,並且您希望此腳本每分鍾執行一次,則可以將整個腳本置於一個循環中,然后在每個循環的迭代結束時讓其休眠一分鍾。

您可能還需要在python之前放置一個sudo ,盡管crontabs無論如何都應該以root身份運行,所以這可能不是必需的。 不過,這種方法在啟動Raspberry Pi時可以運行腳本。

總是讓我着迷的一件事:您必須在crontab文件的末尾留空行。 Cron不會運行crontab的最后一行!

暫無
暫無

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

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