為什麼我的 cron 作業不起作用?

為什麼我的 cron 作業不起作用?

我讀了 20 個關於 cron 作業的問題,以及你不需要設定什麼,我做了所有這些,不要將其標記為重複。所以我的腳本是這樣的:

#!/bin/bash

openRTSP_process_ids=(`/bin/ps -fu $USER | /bin/grep "openRTSP" | /bin/grep -v "grep" | /bin/grep -v $0 | /usr/bin/awk '{print $2}'`)
echo $openRTSP_process_ids
for i in "${openRTSP_process_ids[@]}"
do
    if [ -n "$i" ]; then
        echo $i
        kill -1 $i
    fi
done

我的 crontab 看起來像這樣:

#SHELL=/bin/bash
PATH=/home/username/bin:/home/username/.local/bin:/opt/OpenPrinting-Gutenprint/sbin:/opt/OpenPrinting-Gutenprint/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap$

43,41,26,21,16,12,1,7,48,46,33,49,54,57,59,4,9,14,19,24,27,29,32,34,39,44 * * * * bash /home/username/Documents/stop_openRTSP &>> /home/username/stop.log
50,55,0,5,10,15,20,25,30,35,40,45 * * * * /home/username/Documents/start_openRTSP

我用標準 sh shell 嘗試過,但 bash shell 都不行。我嘗試使用 &>> bash 重定向和 2>&1 sh 重定向將輸出重定向到日誌檔案機器人,但日誌檔案只是空的。我嘗試了很多事情,但進程永遠不會被終止,但當我透過命令列執行此操作時,它們就會被終止。

除了添加路徑和 shell 之外,我還用完整路徑編寫了所有命令。我透過查看 ps aux | 檢查它是否有效。 grep openRTPS 並查看開啟的進程。當我從命令列運行腳本時,進程會關閉,但透過 cron 作業它們只會保持開啟。

在某些版本中,我在開始時有一個 touch bla,所以我確實知道這個特定的腳本正在執行,但不是所有命令。

答案1

如果作業或腳本沒有按照您的預期進行操作,一個非常有用的故障排除技巧是將其添加set -x到腳本的頂部,並檢查輸出以確保腳本正在按照您的預期進行操作。思考它正在做。您很可能對運行時環境做出了一些未在現場得到證實的假設或推定。

相關內容