ubuntu – 使用Upstart记录守护进程的输出

我有一个自定义守护程序,由我的ubuntu服务器上的upstart管理.除了我需要捕获(记录)守护进程的输出之外,它完美地工作. official stanzas page说我可以使用控制台记录来执行此操作,但它记录的文件是什么?

我还看到登录的控制台是no longer a valid stanza.我目前正在使用0.3.9(Hardy),但在几个月后将升级到0.6.x(Lucid).如果控制台登录实际上不适用于更高版本,我应该使用什么?

代码段将管道您的服务输出
进入记录器,同时仍允许你执行
服务流程(从而取代shell流程)
所以新贵不会感到困惑.它也使
确保记录器进程被重新分配给init,所以
它不是你服务的孩子,它避免了
即使是在文件系统中也不停地坐着
虽然它需要暂时创建一个fifo.
script
  mkfifo /tmp/myservice-log-fifo
  ( logger -t myservice </tmp/myservice-log-fifo & )
  exec >/tmp/myservice-log-fifo
  rm /tmp/myservice-log-fifo
  exec myservice 2>/dev/null
end script

以下是它的工作原理:

> mkfifo / tmp / myservice-log-fifo只生成fifo特殊文件
(又名命名管道).输入man 7 fifo获取更多信息.
>(logger …< / tmp / myservice-log-fifo&)在后台开始从fifo读取记录器. parens导致记录器进程被重新分配给init,而不是保留当前shell进程的子进程.
> exec> / tmp / myservice-log-fifo将当前shell的stdout重定向到fifo.现在我们有一个针对该fifo的开放文件描述符,我们实际上不再需要文件系统条目了…
> rm / tmp / myservice-log-fifo所以我们将删除它.
> exec myservice 2> / dev / null只是以通常的方式运行服务. Stdout已经进入了fifo,并且在新程序执行时不会改变.

更新:因为Upstart认使用此选项运行脚本,所以不需要设置-e(参见http://upstart.ubuntu.com/cookbook/#develop-scripts-using-bin-sh)

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...