shun
2025年8月28日 17時09分
==========
製品型番:Armadillo-610
Debian/ABOSバージョン:3.19.2-at.5
カーネルバージョン:5.10.220
==========
お世話になっております。
コンテナからcronの設定を適用することは可能ですか?
弊社旧製品からのソフト移植で以下に示すソースを実行しようと思っているのですが、問題ないでしょうか。
ご回答の程よろしくお願いいたします。
[init.sh] # Move crond /usr/bin/ShellScript/crond # Move cron file cp -f /usr/bin/CrondConfig /var/spool/cron/crontabs/root chmod -x /var/spool/cron/crontabs/root [/usr/bin/ShellScript/crond] #!/bin/sh . /etc/init.d/functions PATH=/bin:/sbin:/usr/bin:/usr/sbin mkdir -p /var/spool/cron/crontabs echo -n "Starting crond: " crond check_status [/usr/bin/CrondConfig] 0 * * * * /.../.../... ...
コメント
shun
マルティネさま
お世話になっております。
> init.sh というスクリプトはすでに実行されていて、コンテナイメージに crond がすでにインストールされている場合は init.sh にただ「crond」を追加してバックグラウンドで実行されますので、crontabs さえ追加すれば(add_volumes かスクリプトの様な mv コマンド)実行されると思います。
> コンテナ起動後に ps x 等で crond プロセスが実行されているかどうかを確認してください。
crontabを追加するというのは、具体的にどういうことでしょうか。
私の認識としては、[package.txt]に"cron"と記述することでcronがインストールされcrontabコマンド(crontab -eなど)が使用できるようになると思っているのですが、add_volumesで追加する際にどのような記載が必要でしょうか?
ご回答のほど、よろしくお願いいたします。
at_dominique.m…
マルティネです。
> 私の認識としては、[package.txt]に"cron"と記述することでcronがインストールされcrontabコマンド(crontab -eなど)が使用できるようになると思っているのです
そちらの認識で問題ありません。
> crontabを追加するというのは、具体的にどういうことでしょうか / add_volumesで追加する際にどのような記載が必要でしょうか?
crontab -e でコンテナ内の crontab ファイルを編集する場合、Armadillo メモリ上のファイルシステムに crontab が生成されて、再起動するまでに実行されます。
それでは困ると思いますので、問い合わせ時に書いた init.sh 「Move cron file」の cp 等で crontab をインストールする必要があります。
実行スクリプトでファイルをコピーするとスタート値を設定できますので、問題なければそちらの方法でも cron を利用できます。
「Armadilloっぽい」方法で crontab ファイルを管理するには以下の2つの方法もあります:
① コンテナイメージに固定の crontab を追加します。
VScode 上でコンテナの内容を編集して /etc/crontab や /etc/cron.d/ か /var/spool/cron/crontabs/ のファイルを編集すれば、コンテナに組み込まれて crond を実行するだけでスクリプトは実行されます。
VScode上の shell プロジェクトの場合のコンテナファイルの変更はこちらに説明されています(他のプロジェクトでしたら似たような方法で編集できます):
https://manual.atmark-techno.com/armadillo-610/armadillo-610_product_ma…
こちらの方法で予め設定した crontab が実行されますが、armadillo上での変更は再起動する際になくなります。
② ボリュームを追加して、VScode と armadillo上のどちらからでも編集できるようにします。
例えば、
* config/app.conf ファイルに「add_volumes mycontainer_crontabs:/var/spool/cron/crontabs
」を追加すると、crontab -e の編集結果は Armadillo上の /var/app/rollback/volumes/mycontainer_crontabs ディレクトリに保存されて永続化されます
* インストール時にデフォルトのファイルを転送したい場合は config/app.desc に 「swdesc_files --dest mycontainer_crontabs <crontabのあるディレクトリ>
」で転送できます。(ボリュームを利用するとコンテナ内のファイルを見えなくなりますので、①の方法でファイルを転送することはできません)
コンテナで利用できるディレクトリはこちらに説明されています:
https://manual.atmark-techno.com/armadillo-610/armadillo-610_product_ma…
よろしくお願いします。
shun
お世話になっております。
回答内容を確認すると、crontabの編集にはcrontab -e
コマンドを使用してジョブを追加するように思えるのですが、こちらで想定している動作としては、
❶[mkdir -p /var/spool/cron/crontabs]でディレクトリを作成。
❷[crond]をバッググラウンド実行。
❸[cp -f /usr/bin/CrondConfig /var/spool/cron/crontabs/root]で[/usr/bin/CronConfig]に記載されている内容を[/var/spool/cron/crontabs/root]にコピーする。
❹[chmod -x /var/spool/cron/crontabs/root]でディレクトリに実行権限を付与。
という流れを想定しております。
なのでcrontab -e
で手動で設定を反映せず、[/usr/bin/CrondConfig]の設定内容を自動(シェルスクリプト)で反映させることをしたいと思っております。
コンテナ起動後にps x
で実行中のプロセスを確認したところcrondが実行されていませんでした。
前述で記述した[init.sh]を実行することで上記の内容を処理するという流れです。
お手数をおかけしますがご回答の程、よろしくお願いいたします。
at_dominique.m…
マルティネです。
> なのでcrontab -e
で手動で設定を反映せず、[/usr/bin/CrondConfig]の設定内容を自動(シェルスクリプト)で反映させることをしたいと思っております。
crontab -e で変更した内容を保存したい場合はお手数ですが /usr/bin/CrondConfig をコピーするのではなく、前回の回答の ② (add_volumes を利用する方法)を試していただけますでしょうか。
> コンテナ起動後にps x
で実行中のプロセスを確認したところcrondが実行されていませんでした。
> 前述で記述した[init.sh]を実行することで上記の内容を処理するという流れです。
すみません、cronの実装はいくつかあって確認不足で案内を間違ってました。
cron パッケージを追加した場合は「cron」というバイナリを実行・確認してください。
(crond のバイナリは cronie パッケージでインストールできますが、cron でも問題ありません)
実行されてない場合は 「podman logs コンテナ名」で起動ログを確認していただければ幸いです。
(おそらく現状では crond: No such file or directory というエラーが表示されてると思いますので)
よろしくお願いします
at_dominique.m…
2025年8月28日 17時48分
shun さん
お世話になっています、
マルティネです
> コンテナからcronの設定を適用することは可能ですか?
コンテナでなんでも実行できます。
> 弊社旧製品からのソフト移植で以下に示すソースを実行しようと思っているのですが、問題ないでしょうか。
/usr/bin/ShellScript/crond は古い debian の init 用の書き方ですので、更新が必要です。
(コンテナによりますが、 /etc/init.d/functions と check_status がおそらく存在しない)
init.sh というスクリプトはすでに実行されていて、コンテナイメージに crond がすでにインストールされている場合は init.sh にただ「crond」を追加してバックグラウンドで実行されますので、crontabs さえ追加すれば(add_volumes かスクリプトの様な mv コマンド)実行されると思います。
コンテナ起動後に ps x 等で crond プロセスが実行されているかどうかを確認してください。
よろしくお願いします