bea*_*mit 257 logs io-redirection systemd
我为自定义应用程序创建了一个简单的 systemd 服务文件。当我手动运行该应用程序时,它运行良好,但是当我使用 systemd 运行它时,我的 CPU 会达到极限。
我正在尝试追踪我的问题出在哪里,但我不知道在哪里可以找到输出(或如何配置 systemd 以将输出放在某处)。
这是我的服务文件:
[Unit]
Description=Syncs files with a server when they change
Wants=network.target
After=network.target
[Service]
ExecStart=/usr/local/bin/filesync-client --port 2500
WorkingDirectory=/usr/local/lib/node_modules/filesync-client
Restart=always
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
在整个应用程序中,我输出到 stdout 和 stderr。
如何读取守护进程的输出?
编辑:
我发现man systemd.exec,其中提到了该StandardOutput=选项,但我不确定如何使用它。从手册页:
StandardOutput=控制已执行进程的文件描述符 1 (STDOUT) 连接到的位置。采用inherit、null、tty、syslog、kmsg、kmsg+console、syslog+console或socket 之一。
如果设置为继承标准输入的文件描述符,则为标准输出复制。如果设置为null标准输出将连接到
/dev/null,即写入的所有内容都将丢失。如果设置为tty标准输出将连接到 tty(通过 配置TTYPath=,见下文)。如果仅使用TTY 输出,则执行的进程不会成为终端的控制进程,也不会失败或等待其他进程释放终端。 syslog将标准输出连接到 syslog(3) 系统记录器。 kmsg将其与可通过 dmesg(1) 访问的内核日志缓冲区连接。 syslog+console和kmsg+console工作类似,但也将输出复制到系统控制台。 socket将标准输出连接到来自套接字激活的套接字,语义类似于StandardInput=. 此设置默认为继承。
这是否意味着这些是我唯一的选择?例如,我想将输出放入/dev/shm或其他东西。我想我可以使用 Unix 域套接字并编写一个简单的侦听器,但这似乎有点不必要。
我只需要这个用于调试,我可能最终会删除大部分日志并将输出更改为 syslog。
Mat*_*att 258
正如 mikemaccana 所指出的,systemd 日志现在是大多数发行版的标准日志记录设备。要查看systemd 单元的stdout和stderr,请使用该journalctl命令。
sudo journalctl -u [unit]
Run Code Online (Sandbox Code Playgroud)
原答案
默认情况下,stdout和stderr一个systemd单元的发送到syslog。
如果您使用的是完整的 systemd,则可以通过journalctl. 在 Fedora 上,它应该是,/var/log/messages但是 syslog 会把它放在你的规则说的地方。
由于帖子的日期,并且假设大多数接触 systemd 的人都是通过 Fedora,您可能被这里描述的错误击中:https :
//bugzilla.redhat.com/show_bug.cgi?id=754938
它有也很好地解释了它是如何工作的 =)(这是 selinux-policy 中的一个错误,它导致错误消息未被记录,并已在 中修复selinux-policy-3.10.0-58.fc16)
mik*_*ana 109
更短、更简单、非传统的答案:
sudo journalctl -u [unitfile]
Run Code Online (Sandbox Code Playgroud)
其中 [unitfile] 是 systemd.service名称。例如,要查看来自 的消息myapp.service,
sudo journalctl --unit=myapp
Run Code Online (Sandbox Code Playgroud)
实时跟踪日志:
sudo journalctl -f -u myapp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
357596 次 |
| 最近记录: |