root@531a0c7c5e99:/home/NBSystem# systemctl status System has not been booted with systemd as init system (PID 1). Can’t operate. Failed to connect to bus: Host is down

このエラーメッセージは、あなたが使用している環境がsystemdを使用していないことを示しています。多くの場合、これはコンテナ(例えばDocker)内で操作しているときに発生します。コンテナ環境ではsystemdは通常使用されず、代わりに別のinitシステムやプロセス監視ツールが使用されます。

以下に、cronジョブの問題を解決するためのいくつかの手順を示します。

1. コンテナ内でcronを動作させる

cronデーモンの開始

コンテナ内でcronデーモンを手動で起動する必要があります。

sh
service cron start

もしくは

sh
/etc/init.d/cron start

cronのステータスを確認

cronデーモンが正しく動作していることを確認するために、次のコマンドを実行してステータスを確認します。

sh
ps aux | grep cron

2. cronジョブの設定確認

cronジョブの設定を再確認し、正しく設定されていることを確認します。

sh
crontab -e

設定例:

sh
* * * * * /path/to/your/script.sh

3. cronジョブのログを確認

コンテナ内でのcronジョブのログを確認するためには、通常/var/log/syslogまたは/var/log/cron.logを確認します。

sh
tail -f /var/log/syslog

もし/var/log/syslogが存在しない場合、cronデーモンの出力を標準出力にリダイレクトすることを考慮してください。

4. 環境変数の設定

cronジョブが使用する環境変数が正しく設定されていることを確認します。

crontabの先頭に環境変数を設定することができます。

sh
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin * * * * * /path/to/your/script.sh

5. スクリプトのテスト

cronジョブで実行されるスクリプトが手動で正しく動作するかどうかを確認します。

sh
/path/to/your/script.sh

6. Dockerfileでcronの設定

もしDockerを使用している場合は、Dockerfileにcronの設定を追加することを検討してください。

Dockerfile
# ベースイメージの選択 FROM ubuntu:latest # 必要なパッケージのインストール RUN apt-get update && apt-get install -y cron # crontabファイルをコピー COPY my-crontab /etc/cron.d/my-crontab # crontabファイルに実行権限を追加 RUN chmod 0644 /etc/cron.d/my-crontab # crontabをcronデーモンに追加 RUN crontab /etc/cron.d/my-crontab # cronデーモンを実行 CMD ["cron", "-f"]

そして、my-crontabファイルには、以下のようにcronジョブを定義します。

sh
* * * * * /path/to/your/script.sh >> /var/log/cron.log 2>&1

これらの手順を順に実行することで、cronジョブが正しく動作するように設定できるはずです。問題が解決しない場合は、さらに詳細な情報を提供してください。

未分類

Posted by ぼっち