daemonize perl进程

时间:2010-06-02 23:22:17

标签: perl syslog

我正在尝试将perl进程示例测试守护进入syslog。

1)在perl脚本中它已经登录到旋转日志文件但是我想记录daemonize以了解在日志创建之前出现问题的情况 2)目前我在做     sudo / usr / sbin / daemonize -u用户-a -e /home/users/me/log/log.log / home / users / me / test

它已经运行但问题是日志文件会变大,处理日志文件的唯一方法是守护进程是否停止。

所以我正在尝试登录syslog,所以我正在做

sudo / usr / sbin / daemonize -u用户-a -e / dev / stderr / home / users / me / test |记录器

写入stderr时会出现权限错误。如果我不以用户身份运行它会使日志正常,但出于安全原因,我必须以用户身份运行我的守护进程。

我被任何帮助都感激不尽

我的测试 sub main {     我的$ i = 0;     for($ i = 0; $ i< 10; $ i ++){         打印“这是一个测试”。 $ i。 “\ n”;     } }

主(@ARG);

注意我也尝试过2>& 1但不起作用

1 个答案:

答案 0 :(得分:2)

您最好从CPAN或类似的东西使用Daemon :: Daemonize。它允许您自动重定向STDOUT和STDERR。它声称处理你需要的所有setpgrp东西。

我认为如果你将它与使用Sys :: Syslog(也来自CPAN)结合使用,你可以完成所有你需要做的事情而不依赖于/ usr / sbin / daemonize并且可以更多地控制实际的内容发生在你的程序中。

您似乎有两个不同的问题:

1)守护你的程序。 2)登录syslog。

这两个问题都可以直接在您的Perl代码中解决。除了Daemon :: Daemonize还有Proc :: Daemonize。我对他们的相对优点没有看法,我过去只使用过Daemon :: Daemonize。任何一个都可以让你的程序作为守护进程运行。

对于写入syslog,使用Sys :: Sylog将为您做繁重的工作。这不是一个简单的重定向,但它允许您发送日志消息,而不用担心日志轮换。