2014-11-24 161 views
0

我有一個python腳本,當我用我的用戶(不是root)手動運行它時,它的工作原理是當我使用root crontab安排它時沒有(沒有任何反應)?有誰知道這是什麼情況?爲什麼可以手動運行Python腳本,但不能使用crontab運行?

腳本從某個網頁下載文件,然後將其放入「文件夾1」,然後將其移動到「文件夾1」內的新文件夾「文件夾2」。許可:問題的

drwxr-sr-x folder 1 
drwxrwsr-x folder 2 
+0

定義「不起作用」。 – 2014-11-24 15:59:37

回答

2

很多原因腳本可能會爲你在本地運行,你的用戶ID下,在您的目錄,而不是一個守護下成功運行像cron。以下是主要的,在可能的順序(和緩解固定的):

  1. 位置的差異。cron從與您不同的位置運行腳本。通常類似/var/spool/cron,/var/spool/cron/crontabs,/etc/crontab/etc/cron.d。它通常運行非常多的變量以自動搜索可執行文件(有關更多信息,請參閱「環境差異」)。因此,最好在crontab條目中爲腳本提供一條非常明確的絕對路徑。如果你在你的腳本中使用了shebang行(例如#!python),那麼最好還是使用絕對路徑(例如#!/usr/bin/python或任何which python告訴你是正確的路徑)。這是「絕對的!」誡命延伸到腳本試圖打開或操縱的任何文件路徑。不要使用相對文件路徑,因爲從cron運行時,它們不會與您自己運行腳本時的相同位置相關。

  2. 環境差異。如果您的腳本或其任何支持模塊需要以某種方式(通常爲要執行的程序提供路徑,要運行的數據庫或其他服務的憑證或其他配置信息)設置某些environment variables,則這些變量是當你從cron運行時不太可能以相同的方式設置。您需要明確指出這些變量是什麼,並且要麼明確地設置它們(從crontab開始,在您編寫的「前端腳本」中,僅用於從cron運行主腳本,或者在腳本中)。

  3. 安全性差異。cron可以作爲根用戶,作爲特定的cron用戶運行,也可以作爲單個用戶(即您)運行,具體取決於您添加條目的crontab以及您的系統上如何設置cron。除非您使用「以用戶身份運行」選項,否則腳本在cron控件下執行時的安全環境和權限可能與您的腳本所期望的不同。

1

部分原因可能是,只有folder 1主人有寫權限。

+0

你的意思是因爲s?我怎麼能改變它?因爲我已經嘗試過sudo chmod g + x 但沒有任何更改 – UserYmY 2014-11-24 16:02:58

+0

嘗試'g + w'來更改(w)儀式權限。 – 2014-11-24 16:04:25

+0

(g)羣組權限不會執行它,除非cron作爲同一羣組中的用戶運行。 – 2014-11-24 16:05:31

0

腳本具有不同的環境,當您手動運行它時以及它由crontab啓動時。 也許你應該檢查環境變量。

相關問題