我创建了以下 systemd 服务:
[Unit]
Description=ISPConfig DC Sync
After=network.target
After=mysql.service
After=nginx.service
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/ispconfig/server/server.sh
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
(.sh) 命令有一个循环,它返回一条消息,说明它是否有错误或成功。问题是这个结果打印在消息 (/var/log/messages) 日志中。有没有办法防止这种情况?(最好在自己服务的规范中)
Mic*_*ton 15
该文档说明您可以设置StandardOutput=并设置StandardError=为您想要的任何内容。它们默认为日志,但您可以将它们重定向到多个位置中的任何一个。
控制已执行进程的文件描述符 1 (STDOUT) 连接到的位置。采用
inherit,null,tty,journal,syslog,kmsg,journal+console,syslog+console,kmsg+console,socket或 之一fd。...
null将标准输出连接到/dev/null,即写入其中的所有内容都将丢失。
StandardError=是类似的,但它inherit的方式有一个重要的例外(这也是默认值):
控制已执行进程的文件描述符 2 (STDERR) 连接到的位置。可用选项与 的相同,但
StandardOutput=有一些例外:如果设置为inherit用于标准输出的文件描述符,则为标准错误复制,而fd在错误流上操作,默认情况下将查找名为 的描述符"stderr"。
所以,你可以这样做:
[Service]
StandardOutput=null
StandardError=journal
Run Code Online (Sandbox Code Playgroud)
但请记住,您将丢失脚本的输出;更重要的是,如果出现问题并且脚本在标准输出上输出错误而不是标准错误(正如许多 shell 脚本所做的那样),您也会丢失它。当出现问题时,这会给你带来很多不必要的挫败感。
所以,你真的不应该对 systemd 单元做任何事情。相反,如果您不希望脚本在成功时输出任何内容,请修复脚本。
| 归档时间: |
|
| 查看次数: |
10926 次 |
| 最近记录: |