首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将系统服务日志重定向到文件

将系统服务日志重定向到文件
EN

Unix & Linux用户
提问于 2016-11-07 19:02:43
回答 5查看 100K关注 0票数 47

我试图在Ubuntu16.04上作为systemd服务运行flume,并在/etc/systemd/system/flume-ng.service中使用以下内容

代码语言:javascript
复制
[Unit]
Description=Apache Flume

[Service]
ExecStart=/usr/bin/nohup /opt/flume/current/bin/flume-ng agent -c /etc/flume-ng/conf -f /etc/flume-ng/conf/flume.conf --name a1 &
ExecStop=/opt/flume/current/bin/flume-ng agent stop

[Install]
WantedBy=multi-user.target

我试着添加了以下几行

代码语言:javascript
复制
StandardOutput=/var/log/flume-ng/log1.log
StandardError=/var/log/flume-ng/log2.log   

对我来说不管用。我确实运行了systemctl daemon-reloadsystemctl restart flume-ng

有人知道这是怎么回事吗?

EN

回答 5

Unix & Linux用户

发布于 2018-11-04 00:29:30

重定向

以下内容仅适用于systemd v236和更新版本:

代码语言:javascript
复制
StandardOutput=file:/var/log/flume-ng/log1.log
StandardError=file:/var/log/flume-ng/log2.log

记录在案的这里

对于比v236更早的系统,可以使用:

代码语言:javascript
复制
ExecStart=/bin/sh -c 'exec /usr/bin/my_binary [arguments] >/var/log/flume-ng/log1.log 2>/var/log/flume-ng/log2.log'

请注意,这样,每次服务重新启动时,整个日志文件内容都将被覆盖。

附加

如果希望在服务重新启动之间维护文件日志,只需向其添加新的日志行:

代码语言:javascript
复制
# Works only in systemd v240 and newer!
StandardOutput=append:/var/log/flume-ng/log1.log
StandardError=append:/var/log/flume-ng/log2.log

对于比v240更早的系统,可以使用:

代码语言:javascript
复制
ExecStart=/bin/sh -c 'exec /usr/bin/my_binary [arguments] >>/var/log/flume-ng/log1.log 2>>/var/log/flume-ng/log2.log'

exec是指在没有分叉的情况下设置重定向后,用my_binary程序代替shell程序。因此,与直接在my_binary之后运行ExecStart=没有什么区别。

票数 66
EN

Unix & Linux用户

发布于 2019-01-29 10:03:05

对于在不覆盖的情况下登录到文件(system.d版本需要240+ ):

代码语言:javascript
复制
StandardOutput=append:/var/log/flume-ng/log1.log
StandardError=append:/var/log/flume-ng/log2.log

代码语言:javascript
复制
StandardOutput=append:/var/log/flume-ng/log.log
StandardError=inherit
票数 16
EN

Unix & Linux用户

发布于 2019-06-28 12:34:42

我希望这能帮上忙。给Ununtu

代码语言:javascript
复制
[Unit]
Description=name-service
After=syslog.target
After=mysql.service
Requires=mysql.service
[Service]
Type=idle
PIDFile=/path_to_PID/****.pid
WorkingDirectory=/path_to_directory
User=root
Group=root
ExecStart=****.py
Restart=always
TimeoutStartSec=1min
RestartSec=1min
KillMode=process
StandardOutput=append:/path_to_log/service.log
StandardError=append:/path_to_log/service_error.log
[Install]
WantedBy=multi-user.target

为CENTOS

代码语言:javascript
复制
[Unit]
Description=name-service
After=syslog.target
After=mysql.service
Requires=mysql.service
[Service]
Type=idle
PIDFile=/path_to_PID/****.pid
WorkingDirectory=/path_to_directory
User=root
Group=root
ExecStart=****.py  >>/path_to_log/log.log
Restart=always
TimeoutStartSec=1min
RestartSec=1min
KillMode=process
[Install]
WantedBy=multi-user.target

“后”和“要求”的必要性。“用户”和“组”

另一个选项:在执行的脚本中添加日志记录。

票数 7
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/321709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档