systemd 服务将标准输出重定向到自定义文件名

systemd service redirect stdout to custom filename

我正在使用 systemd 服务来启动应用程序。 Stdout 应重定向到包含当前日期(服务启动时)的文件。记录到文件工作正常,但是,我不知道如何在服务中提供文件名的日期。有什么想法吗?

...
[Service]
ExecStart=/bin/mybin
StandardOutput=file:/my/path/<filename should contain date>.log
...

systemd 无法动态生成文件名。但是您可以使用 bash 重定向和 date 来创建这样的日志文件。

[Service]
ExecStart=/bin/bash -c "/bin/mybin >/my/path/filename-$(date %%y-%%d-%%m).log"

我有同样的需求,我找到了一个很好的解决方案。它运作良好。希望对你也有帮助。

1.创建一个脚本。

您必须将脚本放在 /usr/bin 下。对我来说 /usr/bin/ruoyi-gen.sh

2。添加以下内容。

#!/bin/bash
java -jar /root/xf-service/ruoyi-modules-gen-2.3.0.jar > /root/xf-service/ilogs/modules-gen-`date "+%Y-%m-%d"`.log 2>&1 &

使脚本可执行 -> chmod +x /usr/bin/ruoyi-gen.sh.

3。添加服务描述

运行 vi /etc/systemd/system/ruoyi-gen.service, 添加描述如下:

[Unit]
Description=ruoyi-gen

[Service]
Type=forking
ExecStart=/usr/bin/ruoyi-gen.sh

[Install]
WantedBy=multi-user.target

4.重新加载所有系统服务文件

systemctl daemon-reload

5.Start您的服务

systemctl start ruoyi-gen

它适用于 CentOS 7。