システムサービス(shスクリプトをサービスとして呼び出す) - 更新された状態を取得する方法

システムサービス(shスクリプトをサービスとして呼び出す) - 更新された状態を取得する方法

systemd再起動時に完全に機能し、自動的に起動する次のsystemctl起動スクリプトがあります(他のdbdeployerの依存関係も起動します)。

.sh script基本的に呼び出されるサービスについて、ここにいくつかの異なる「状態」を作成しました。

(スタートスクリプトはドッカーが書いたプロジェクトであり、もう一つはdbdeployer mysqlインスタンス)

システム化されたサービスユニットドッカー作成コンテナ:

[Unit]
Description=Magento 2.3.5 Docker-Compose Containers
After=dbdeployer-mysql-5-731-in-1.service
Requires=docker.service dbdeployer-mysql-5-731-in-1.service

[Service]
EnvironmentFile=/var/www/_systemd.startups_/glolighting/magento/2_35/docker-compose.mag2.35.env.file
#Environment=FILE_SCRIPT=/var/www/docker/_systemd.startups_/magento/2_35/dc-glo-mag235.sh
#PassEnvironment=$DCFOLDER
Type=simple
TimeoutStartSec=0
Restart=always
RestartSec=4s
RemainAfterExit=yes
#WorkingDirectory=${DC_PROJECT_FOLDER}
ExecStartPre=mkdir -p ${LOGFOLDER}
ExecStartPre=echo ${DC_PROJECT_FOLDER}
ExecStartPre=echo Starting Docker-compose service for ${DESCRIPTION}...
ExecStartPre=bash ${SERVICE_FILE_SCRIPT} ${DC_PROJECT_FOLDER} 1
ExecStart=bash ${SERVICE_FILE_SCRIPT} ${DC_PROJECT_FOLDER} 2
ExecStartPost=bash ${SERVICE_FILE_SCRIPT} ${DC_PROJECT_FOLDER} 1
ExecStop=bash ${SERVICE_FILE_SCRIPT} ${DC_PROJECT_FOLDER} 3
ExecStopPost=bash ${SERVICE_FILE_SCRIPT} ${DC_PROJECT_FOLDER} 1

[Install]
WantedBy=multi-user.target

スクリプト名は次のとおりですsystemd

____truncated for relevance___
# Continue on success
if [ $arguments_correct -eq 1 ]; then
   cd $PATH_DOCKER_COMPOSE_PROJECT_FILE

   if [ $OPTION -eq 1 ]; then
         echo "$LINE"
         echo ""
         $(which docker-compose) ps
         echo ""
         echo "$LINE"
   elif [ $OPTION -eq 2 ]; then
         $(which docker-compose) start
   elif [ $OPTION -eq 3 ]; then
         $(which docker-compose) stop
   fi
   exit 0
fi

ExecStartPost=bash ${SERVICE_FILE_SCRIPT} ${DC_PROJECT_FOLDER} 1正しい出力が提供されることを望んでいます($(which docker-compose) psつまり、遅延があります。Dockerコンテナには約3〜10秒かかることがあるため、この状態はコマンドが呼び出されるたびに更新(再クエリ)されません。)status、ソースが発生した場合にのみ出力が表示されますExecStartPost

要約すると、これを行うと、systemctl status docker-compose-mag235.service一部のドッカーコンテナがまだexit/starting生きていることを示す出力が表示されます。

質問

systemctl status docker-compose-mage235.service私に以下を提供するために使用できる方法(またはそれに対応するsystemctlコマンド)がありますか?アップデートステータス。 _つまり、$(which docker-compose) psこの新しいsystemctlコマンドを実行したときの状態です。

(これらの起動システムサービスを作成する前に、常に各呼び出しがステータスを「再クエリ」すると仮定していましたが、ログファイルから最後の出力のみを取得することに気づきました(おそらくsyslog)。

メモ:

呼び出し/location/of/project/file/of/docker-compose.ymlは可能ですが、Docker Composeプロジェクトに基づいてクエリできるさまざまなクエリに対応したいと思いますsystemd services。つまり、さまざまなDCプロジェクト用の複数のフォルダがあります。その後、エイリアスを作成する必要があります。そうする前に、これが役に立つsystemdかどうかがわかります。

ベストアンサー1

docker-composeいいえ、systemdのログに追加情報を送信できない場合は不可能です。

systemctl statusサービスステータスとそのサービスの最新のジャーナルエントリを表示します。

を実行すると、より多くのログエントリを表示できますjournalctl -b0 -p 0..7 -u docker-compose。これにより、最後に再起動した後のすべてのdocker-composeログエントリが提供されます。

おすすめ記事