如何将 systemd 启动 - 停止 - 重新加载系统日志消息发送到文件

如何将 systemd 启动 - 停止 - 重新加载系统日志消息发送到文件

我想将启动/停止/重新加载 systemd 消息发送到特定文件。具体来说,mysqld 似乎没有向log-error文件发送守护进程启动/停止消息,所以我想在日志中显示一些指示成功/失败的内容。

我现在正在摆弄 和ExecStartPostExecStopPost但必须有更好的方法。灵感就在这里。

答案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

相关内容