システム起動 - 停止 - 再ロードsyslogメッセージをファイルに送信する方法

システム起動 - 停止 - 再ロードsyslogメッセージをファイルに送信する方法

特定のファイルにsystemd開始/停止/再ロードメッセージを送信したいと思います。特に、mysqldはデーモンの開始/停止メッセージをファイルに送信しないようで、log-errorログに成功/失敗を示す内容を入れたいと思います。

私は現在とを操作していますが、ExecStartPostよりExecStopPost良い方法があります。インスピレーションはここにあります。

ベストアンサー1

これは次のようにうまくいくようです/lib/systemd/system/mysql.service

[Service]
ExecStart=/usr/sbin/mysqld --daemonize
ExecStartPost=/bin/bash -c "DATE=$(date --iso-8601=seconds); \
    PID=$(/usr/bin/systemctl show -p MainPID mysql |sed 's/MainPID=//'); \
    /usr/bin/echo $${DATE} '[systemd] Starting MySQL Server... PID:' $${PID} \
    >> /var/log/error-mysql.log"
ExecStopPost=/bin/bash -c "DATE=$(date --iso-8601=seconds); \
    PID=$(/usr/bin/systemctl show -p MainPID mysql |sed 's/MainPID=//'); \
    /usr/bin/echo $${DATE} '[systemd] Stopping MySQL Server... PID:' $${PID} \
    >> /var/log/error-mysql.log"

出力:

2022-03-18T08:59:18-04:00 [systemd] Starting MySQL Server... PID: 1166
2022-03-18T08:59:28-04:00 [systemd] Stopping MySQL Server... PID: 0
2022-03-18T08:59:46-04:00 [systemd] Starting MySQL Server... PID: 1216
2022-03-18T08:59:58-04:00 [systemd] Stopping MySQL Server... PID: 0
2022-03-18T08:59:59-04:00 [systemd] Starting MySQL Server... PID: 1263

おすすめ記事