我有一個shell腳本cron從同一個目錄調用python腳本,但是當這個cron正在執行時,我沒有從我的python腳本得到預期的輸出,當我手動執行它時,我的python腳本的輸出如預期的那樣。從shell腳本調用python腳本cron
我已經提供了Python腳本路徑像 在/ usr/bin中/ Python的room_wise.py
,並給出了shell腳本的所有外殼PARAMS以及但是我的Python腳本沒有使用shell腳本的cron調用。
任何人都可以幫助我嗎?
我有一個shell腳本cron從同一個目錄調用python腳本,但是當這個cron正在執行時,我沒有從我的python腳本得到預期的輸出,當我手動執行它時,我的python腳本的輸出如預期的那樣。從shell腳本調用python腳本cron
我已經提供了Python腳本路徑像 在/ usr/bin中/ Python的room_wise.py
,並給出了shell腳本的所有外殼PARAMS以及但是我的Python腳本沒有使用shell腳本的cron調用。
任何人都可以幫助我嗎?
cron作業中的大問題是絕對目錄位置和相對目錄位置。您需要首先將相對路徑分開,如圖所示。
#!/usr/bin/env bash
dirName=`dirname $0`
baseName=`basename $0`
arg1=$1
arg2=$2
cd ${dirName} && python ./room_wise.py arg1 arg2
然後用crontab -e將項目添加到您的用戶cron作業和添加以下內容:
PATH=/usr/bin:/bin:/sbin
30 00 * * * /my/directory/containing/room_wise_py.sh arg1 arg2 > /my/directory/containing/output.log 2>&1
你可以看到,我已經添加了路徑,因爲有時這可能是一個問題某些操作系統分配。此外,該腳本與bash腳本存在於相同的目錄中,或者如果修改bash腳本以將$ dirname包含爲$ 1,則可以將目錄位置作爲參數傳遞。
此外,您可以看到我已將所有輸出定向到日誌文件。這是一個非常好的主意,因爲如果出現問題,調試過程有時非常困難。
如果你還沒有這樣做,記得在你的python腳本的開頭添加#!/ usr/bin/env python。從cron中的bash腳本執行軟件時,這也是一個很重要的方面。 –
管線末端的'2>&1'線做了什麼? –
你有沒有試過'/ usr/bin/python/path/to/room_wise.py'? – Nepho
是的@Nepho,我已經嘗試了這兩個東西, – Sid
是否按預期方式輸出了'which/python'/usr/bin/python'? – Nepho