結構どーしようもない感じで詰まっていました。
原因さえわかってしまえば何ということはなかったのですが。
といった感じで今回の雑記です。
以前の記事で起動時やcronを使用してシェルを実行したり
といったことをしていたのですが、
この時にシェルが正しく動作してくれない時があって、なんでかなぁとなっていました。
起動後に端末からシェルスクリプト実行等していると
その時はちゃんと動いている(最後まで実行される)ので、
これはなんなんやと。
____________________________________
自動実行のシェルが最後まで実行されていない?
今回詰まったのは、シェルがどうも最後まで動いていない、ということでした。
処理の合間に
echo "" > /home/pi/a0000.txt
とか挟んでおいて実行すると確かに始めの方は実行されている。
だけど最後までは実行されていない。ということが分かりました。
(echo出力されていないファイルが一部存在している)
また、シェルによっては一個も出てないものもありました。
しかし、コンソールを起動して、
コンソール上からシェルをコマンドで実行すると出力されている…
そんな状況が発生していました。
____________________________________
そもそも処理が実行できていない
後者の「echoファイルが一つも出力されないシェル」に関しては、
割とすぐに原因が分かりました。
どうにもこのシェルに実行権限がないんですね。
これに関してはchmodコマンドで実行権限を付与することで動くようになりました。
chmod +x /home/pi/test.sh
実行権限自体がないので実行できない…と。
____________________________________
途中まで処理が実行できているシェルの方に関しては、
実行権限自体は付与されているようでした。
しかし、コンソール上で実行した時の出力等を見ていると、
処理中にエラーを吐いたりしているみたいです。
このエラー出力によってそのあとの処理が流れていないのでは?
echoによる出力ファイルのステップ位置も、エラー出力の位置と合っています。
今回はrmコマンド位置がエラー出力していました。
削除する対象のファイルがない時に出力していました。
(削除できるときはエラーを出していない)
削除前にファイルの存在チェックを行うようにしてみました。
…ファイルがなくても以降の処理に流れるようになりました。
rmコマンドで削除先がない場合は気を付けないといけませんね。
他にも、
サービスの立ち上げが失敗したとか、
処理失敗によってエラーコードを返す可能性のある部分は
そこで処理が止まってしまうようなので、
処理を止めずに最後まで実行したい場合は
注意してみるといいかもしれないですね。
めっちゃ詰まってしまった…。
途中の処理でエラーを吐いている
途中まで処理が実行できているシェルの方に関しては、
実行権限自体は付与されているようでした。
しかし、コンソール上で実行した時の出力等を見ていると、
処理中にエラーを吐いたりしているみたいです。
このエラー出力によってそのあとの処理が流れていないのでは?
echoによる出力ファイルのステップ位置も、エラー出力の位置と合っています。
今回はrmコマンド位置がエラー出力していました。
削除する対象のファイルがない時に出力していました。
(削除できるときはエラーを出していない)
sudo rm /home/pi/hoge.txt
削除前にファイルの存在チェックを行うようにしてみました。
TARGETFILE="/home/pi/hoge.txt"
if [ -e $TARGETFILE ]: then
sudo rm $TARGETFILE
fi
…ファイルがなくても以降の処理に流れるようになりました。
rmコマンドで削除先がない場合は気を付けないといけませんね。
他にも、
サービスの立ち上げが失敗したとか、
処理失敗によってエラーコードを返す可能性のある部分は
そこで処理が止まってしまうようなので、
処理を止めずに最後まで実行したい場合は
注意してみるといいかもしれないですね。
めっちゃ詰まってしまった…。
____________________________________
0 件のコメント:
コメントを投稿