Armadilloフォーラム

Cron登録済のタスクが立ち上がらない

hitx.ito

2022年6月10日 9時20分

crontabにて起動時(@reboot)にタスクを指定して特定プロセスを起動・動作させています。
従来は問題なく起動をしていたのですが、先日再起動した際に上記タスクで指定したプロセスが立ち上がってきませんでした。

syslogを確認した結果、cronのタスク起動のログは確認できていますがその後の状況がログを読んでも判別できません。
対象のプロセスがシステム起因で終了しているかどうかがsyslog上で確認ができますでしょうか。
また該当のプロセスはクラウド接続に関する処理を記載しているためネットワークトラブルが関係している可能性があると考えてますが
その時のネットワークの状況がログから判別可能であれば教えて頂きたいです。

6/8 00:03~ 再起動 cron起動プロセスが起動せず。添付:syslog.1(L2272~)
6/8 10:30~ 再度再起動 cron起動プロセスが通常起動し、復旧。添付:syslog(L64282~)

crontab設定内容(@rebootのもののみ)
@reboot sleep 30;systemctl restart chronyd
@reboot python /home/gateway/gcloud.py
@reboot python /home/gateway/startuppy.py
@reboot echo > /home/gateway/manageinit.txt
@reboot /usr/local/bin/node /home/gateway/server/nodeserver.js

ファイル ファイルの説明
syslog_armadillox1.zip
コメント

at_akihito.irie

2022年6月14日 10時16分

入江です。

> syslogを確認した結果、cronのタスク起動のログは確認できていますがその後の状況がログを読んでも判別できません。
> 対象のプロセスがシステム起因で終了しているかどうかがsyslog上で確認ができますでしょうか。

pythonスクリプトの実装がわからず、cronもデフォルトではsyslogに終了時の
ステータスやログを吐いてくれないので、頂いたログからでは確実なことは言
いかねます。
cronは設定次第で終了ステータスやログを出力するようにできるので、現象が
再現できるのであれば原因究明のために試してみると良いかもしれません。

> また該当のプロセスはクラウド接続に関する処理を記載しているためネットワークトラブルが関係している可能性があると考えてますが
> その時のネットワークの状況がログから判別可能であれば教えて頂きたいです。

ログを見るに最終的にeth1でネットワークには接続されているようです。
ネットワークトラブルが原因だとするならば、ネットワークが有効になるタイ
ミングの問題の可能性はあります。

cronの@rebootでプロセスを起動させる場合は、その起動までに他のデーモン
プロセスが完了している保証はないので、ネットワークが有効になっていない
のにネットワークを使用するアプリケーションが起動するようなことが起こり
えます。

この場合はアプリケーション内で対応(ネットワークが有効になるまで待つ等)
しても良いですが、cronではなくsystemdを利用して起動時に自動実行するよ
うに設定することで、ネットワークの設定が完了するのを待ってから起動する
など自由度の高い自動実行ができるので、可能であればそちらをお勧めします。

systemdについては以下を参照してください。
https://manual.atmark-techno.com/armadillo-guide-std/armadillo-guide-st…
https://armadillo.atmark-techno.com/blog/6938/2865

上記はネットワークが有効になるタイミングが原因である前提の話です。
もちろんネットワーク以外が原因の場合もありますのでご注意ください。

入江様

ご回答ありがとうございます。

確認したところ、アプリケーション内でネットワークがつながるまで待つ処理が既に実装されていました。
そもそもアプリケーションログが不十分なことも問題かと思いますので、再発に向けてログを増やすなどの対策を検討してみます。