Armadilloフォーラム

rc-updateで起動したcrondとシェルから起動したcrondで挙動が異なる。

yamada_masa

2024年9月27日 14時36分

スクリプトでwebアプリを起動しているが、自動起動したcrondからだとwebアプリが立ち上がらない。
システム起動後、シェルから実行したcrondの場合は立ち上がる。

手順
①下記コマンドでcrondを自動起動を設定

rc-update add crond && persist_file -v /etc/runlevels/default/crond

②reboot後、psコマンドで起動していることを確認(これを自動起動したcrondと呼ぶ)

 1667 root      0:00 /usr/sbin/crond -c /etc/crontabs -f

③crond登録内容

/var/app/volumes # crontab -l
# do daily/weekly/monthly maintenance
# min   hour    day     month   weekday command
*/15    *       *       *       *       run-parts /etc/periodic/15min
0       *       *       *       *       run-parts /etc/periodic/hourly
0       2       *       *       *       run-parts /etc/periodic/daily
0       3       *       *       6       run-parts /etc/periodic/weekly
0       5       1       *       *       run-parts /etc/periodic/monthly
*       *       *       *       *       for i in `seq 0 15 59`; do (sleep ${i}; /var/app/volumes/web_run.sh) & done;

④crondは定期実行されている。

 2517 root      0:00 /bin/sh -c for i in `seq 0 15 59`; do (sleep ${i}; /var/app/volumes/web_run.sh) & done;
 2518 root      0:00 /bin/sh -c for i in `seq 0 15 59`; do (sleep ${i}; /var/app/volumes/web_run.sh) & done;
 2519 root      0:00 /bin/sh -c for i in `seq 0 15 59`; do (sleep ${i}; /var/app/volumes/web_run.sh) & done;
 2520 root      0:00 sleep 30
 2522 root      0:00 sleep 15
 2523 root      0:00 sleep 45

質問
自動起動時とシェルからの実行でcrondの挙動は変わりますでしょうか。
web_runc.shからさらにwebアプリ(java)を起動するスクリプトを呼び出しています。
この中で最終的にexecでjavaアプリを起動しています。

コメント

yamada_masa

2024年9月27日 16時58分

解決いたしました。
環境変数JAVA_HOMEの設定が問題でした。
/var/app/volumes/web_run.sh のスクリプト内で環境変数JAVA_HOMEを設定したところWEBアプリが起動しました。
/etc/profile にて環境変数を設定していましたが、自動起動の場合は、この設定が反映されていないようです。

追加した設定

export JAVA_HOME=/var/app/volumes/jvm/default-jvm/jre

取り急ぎ結果まで。

憶測になりますが、
/etc/profile は、シェルログイン時に読み込まれる設定との説明を見かけました。
そのためシステム起動時の処理では環境変数として設定されていないのだと思います。
https://wa3.i-3-i.info/word11795.html