我有一個python腳本,當我用我的用戶(不是root)手動運行它時,它的工作原理是當我使用root crontab安排它時沒有(沒有任何反應)?有誰知道這是什麼情況?爲什麼可以手動運行Python腳本,但不能使用crontab運行?
腳本從某個網頁下載文件,然後將其放入「文件夾1」,然後將其移動到「文件夾1」內的新文件夾「文件夾2」。許可:問題的
drwxr-sr-x folder 1
drwxrwsr-x folder 2
我有一個python腳本,當我用我的用戶(不是root)手動運行它時,它的工作原理是當我使用root crontab安排它時沒有(沒有任何反應)?有誰知道這是什麼情況?爲什麼可以手動運行Python腳本,但不能使用crontab運行?
腳本從某個網頁下載文件,然後將其放入「文件夾1」,然後將其移動到「文件夾1」內的新文件夾「文件夾2」。許可:問題的
drwxr-sr-x folder 1
drwxrwsr-x folder 2
有很多原因腳本可能會爲你在本地運行,你的用戶ID下,在您的目錄,而不是一個守護下成功運行像cron
。以下是主要的,在可能的順序(和緩解固定的):
位置的差異。cron
從與您不同的位置運行腳本。通常類似/var/spool/cron
,/var/spool/cron/crontabs
,/etc/crontab
或/etc/cron.d
。它通常運行非常多的變量以自動搜索可執行文件(有關更多信息,請參閱「環境差異」)。因此,最好在crontab
條目中爲腳本提供一條非常明確的絕對路徑。如果你在你的腳本中使用了shebang行(例如#!python
),那麼最好還是使用絕對路徑(例如#!/usr/bin/python
或任何which python
告訴你是正確的路徑)。這是「絕對的!」誡命延伸到腳本試圖打開或操縱的任何文件路徑。不要使用相對文件路徑,因爲從cron
運行時,它們不會與您自己運行腳本時的相同位置相關。
環境差異。如果您的腳本或其任何支持模塊需要以某種方式(通常爲要執行的程序提供路徑,要運行的數據庫或其他服務的憑證或其他配置信息)設置某些environment variables,則這些變量是當你從cron
運行時不太可能以相同的方式設置。您需要明確指出這些變量是什麼,並且要麼明確地設置它們(從crontab
開始,在您編寫的「前端腳本」中,僅用於從cron
運行主腳本,或者在腳本中)。
安全性差異。cron
可以作爲根用戶,作爲特定的cron
用戶運行,也可以作爲單個用戶(即您)運行,具體取決於您添加條目的crontab
以及您的系統上如何設置cron
。除非您使用「以用戶身份運行」選項,否則腳本在cron
控件下執行時的安全環境和權限可能與您的腳本所期望的不同。
部分原因可能是,只有folder 1
主人有寫權限。
你的意思是因爲s?我怎麼能改變它?因爲我已經嘗試過sudo chmod g + x
嘗試'g + w'來更改(w)儀式權限。 – 2014-11-24 16:04:25
(g)羣組權限不會執行它,除非cron作爲同一羣組中的用戶運行。 – 2014-11-24 16:05:31
腳本具有不同的環境,當您手動運行它時以及它由crontab啓動時。 也許你應該檢查環境變量。
定義「不起作用」。 – 2014-11-24 15:59:37