3

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

1)在perl脚本中,它已经登录到旋转日志文件,但我想记录守护进程,以防在创建日志之前出现问题 2)目前我正在做 sudo /usr/sbin/daemonize -u User -a -e /home/users/me/log/log.log /home/users/me/test

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

所以我正在尝试登录系统日志,所以我正在做

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

这将在写入 stderr 时出现权限错误。如果我不以用户身份运行,它会很好地记录日志,但出于安全原因,我必须以用户身份运行我的守护进程。

我被卡住了,任何帮助都将不胜感激

我的测试子主{我的 $i = 0; for($i=0; $i < 10 ; $i++){ print "这是一个测试" . $i 。"\n"; } }

主要(@ARG);

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

4

1 回答 1

2

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

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

您似乎有两个明显的问题:

1)守护你的程序。2) 记录到系统日志。

两者都是直接在您的 Perl 代码中更好地解决的问题。除了 Daemon::Daemonize 还有 Proc::Daemonize。我对它们的相对优点没有意见,我过去只是使用过 Daemon::Daemonize。任何一个都会让您的程序作为守护程序运行。

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

于 2013-11-05T22:53:36.697 回答