更新:2022-1-24
前置要求:该字段参数 需要 systemctl ≥ 236 以上版本才支持
经测试 CentOS 7.9 内置 systemctl 版本为 219,所以不支持该参数,请升级 systemctl
CentOS 8 内置 systemctl 为 239,支持以上参数
在不支持的 systemctl 使用,会报错:
[/etc/systemd/system/sub.service:13] Failed to parse output specifier, ignoring: ......
[/etc/systemd/system/sub.service:14] Failed to parse output specifier, ......
主要是添加这2个字段: StandardOutput,StandardError
示例:
[Unit]
Description=test service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/root/test/test.sh
WorkingDirectory=/root/test
Restart=always
RestartSec=3
StandardOutput=append:/root/test.log
StandardError=append:/root/test_error.log
#append 是写入日志时追加不覆盖,如果需要覆盖,则把这2行改为 StandardOutput=file:/root/test.log ,StandardError=file:/root/test_error.log
[Install]
WantedBy=multi-user.target
有个缺点,就是日志不会在 systemctl status -l xxxx
显示出来了。