我正在尝试将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但不起作用
答案 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将为您做繁重的工作。这不是一个简单的重定向,但它允许您发送日志消息,而不用担心日志轮换。