私はクローンの仕事と設定する必要のない項目について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 | openRTPSをgrepし、開いているプロセスを確認してください。コマンドラインからスクリプトを実行するとプロセスは終了しますが、cron操作によってプロセスは開いたままになります。
一部のバージョンでは、最初にタッチblaがあり、この特定のスクリプトが実行されていることがわかりますが、すべてのコマンドが実行されるわけではありません。
答え1
タスクやスクリプトが期待どおりに機能しない場合は、非常に便利なトラブルシューティングのヒントは、スクリプトの上部に追加して出力を確認して、スクリプトが期待どおりに機能していることを確認set -x
することです。考えるそれをしています。現場で証明されていないランタイム環境についていくつかの仮定をした可能性が高いです。