如何作为系统服务运行时将输出管道传输到文件?

时间:2015-10-06 11:12:56

标签: linux stdout fedora systemd stderr

我在管道STDOUT&将程序作为systemd服务运行时STDERR到文件。我已尝试将以下内容添加到.service文件中:

ExecStart=/apppath/appname > /filepath/filename 2>&1

但这不起作用。输出结果在/ var / log / messages中,可以使用journalctl查看,但我想要一个单独的文件。

我也尝试过设置StdOutput=tty但无法找到将其重定向到文件的方法。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:44)

systemd.service(5)说:

  

ExecStart =

     

启动此服务时执行的命令及其参数。

因此,systemd使用args /apppath/appname>/filepath/filename

运行您的2>&1

尝试:

ExecStart=/bin/sh -c '/apppath/appname > /filepath/filename 2>&1'

答案 1 :(得分:4)

尝试:

ExecStart=/usr/bin/sh -c "/apppath/appname > /filepath/filename 2>&1"

ExecStart要求第一个参数是二进制(没有例外),并且不允许管道或重定向。因此,使用ExecStart启动一个shell,您可以在其中执行所有需要的精彩操作。