Shell-Script

cron呼叫shell腳本呼叫python腳本RP_和3R磷一世3RPi3

  • January 24, 2017

我正在嘗試使用 Cron 重複執行 python 腳本。我已經編寫了一個呼叫那個/這些 python 腳本的 shell 腳本。我已將 shell 腳本製作為執行檔,並且在終端和只需點擊執行即可完美執行。

我已更改 Crowntab 以在特定的時間間隔(通常在一兩分鐘內)呼叫我的 shell 腳本,以查看它是否正常工作。但是,似乎我的腳本沒有正確執行。

我的 python 腳本很長,它也有它呼叫的本地 python 函式。儘管如此,我還是創建了一個簡短的 python 程序和一個 shell 腳本來呼叫它,目的是確定 cron 是否工作,並且似乎它被按預期呼叫。

為什麼我的 python/shell 腳本沒有被正確呼叫以執行?如果我呼叫 shell 腳本,是否還需要包含路徑以供 cron 看到?

我的 crontab:

20 13 * * * /my/full/path/to/the/shell_script.sh

我的外殼腳本/文件:

#!/bin/bash
cd /full/path/to/the/python_script_folder
sudo python3 python_script.py argument

RPi3 /var/log/syslog:

Jan 23 20:13:01 raspberrypi cron[477]: (pi) RELOAD (crontabs/pi)
Jan 23 20:13:01 raspberrypi CRON[3851]: (root) CMD (/etc/myDevices/crontab.sh)
Jan 23 20:13:01 raspberrypi CRON[3854]: (pi) CMD (/my/full/path/to/the/shell_script.sh)

任何幫助表示讚賞。如果您需要任何其他資訊,請告訴我。謝謝你。

正如@thrig 提到的 - sudo 可能要求輸入密碼,bash -x並將提供有關執行內容和輸出內容的附加資訊。首先,重定向 cron 輸出是一個好習慣,例如

20 13 * * * /my/full/path/to/the/shell_script.sh > ${HOME}/cron.log 2>&1

這將為您提供記錄在文件中的腳本的輸出。

我會:

  1. 將條目放在需要執行它的使用者的 crontab 中。
  2. 刪除包裝器並將命令設置為’python3 /path/to/script.py args'

引用自:https://unix.stackexchange.com/questions/339641