cron ジョブが動作しないのはなぜですか?

cron ジョブが動作しないのはなぜですか?

私は cron ジョブに関する 20 の質問を読み、設定する必要のあるものはすべて実行しました。重複としてタグ付けしないでください。私のスクリプトは次のようになります。

#!/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 シェルと bash シェルの両方で試しましたが、どちらも機能しません。 &>> bash リダイレクトと 2>&1 sh リダイレクトを使用して、出力をログ ファイル ボットにリダイレクトしようとしましたが、ログ ファイルは空のままです。いろいろ試しましたが、プロセスが強制終了されることはありませんが、コマンド ライン経由で実行すると強制終了されます。

パスとシェルを追加するだけでなく、すべてのコマンドをフルパスで記述しました。ps aux | grep openRTPS を実行して開いているプロセスを調べることで、それが機能したかどうかを確認します。コマンド ラインからスクリプトを実行すると、プロセスは閉じられますが、cron ジョブを使用すると、プロセスは開いたままになります。

いくつかのバージョンでは、最初にタッチ bla があったので、この特定のスクリプトは実行されているが、すべてのコマンドが実行されているわけではないことはわかっています。

答え1

ジョブやスクリプトが期待通りに動作しない場合は、set -xスクリプトの先頭に次の行を追加し、出力を調べてスクリプトが期待通りに動作していることを確認するという非常に役立つトラブルシューティングのヒントがあります。考える実行環境に関して、現場では証明されていない仮定や推測を行っている可能性が十分にあります。

関連情報