守护perl进程

守护perl进程,perl,syslog,Perl,Syslog,我正在尝试将一个perl进程示例测试后台监控到syslog 1) 在perl脚本中,它已经登录到rotate日志文件中,但我想在创建日志之前记录daemonize,以防出现问题 2) 目前我正在做 sudo/usr/sbin/daemonize-u User-a-e/home/users/me/log/log.log/home/users/me/test 它已经在工作,但问题是日志文件会变大,处理日志文件的唯一方法是停止daemonize 所以我正在尝试登录syslog,所以我正在这样做 sud

我正在尝试将一个perl进程示例测试后台监控到syslog

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

它已经在工作,但问题是日志文件会变大,处理日志文件的唯一方法是停止daemonize

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

sudo/usr/sbin/daemonize-u User-a-e/dev/stderr/home/users/me/test | logger

写入stderr时,这将出现权限错误。如果我不是以用户身份运行,它会得到良好的日志,但出于安全原因,我必须以用户身份运行daemonize

我被困住了,任何帮助都是感激的

我的测试 副总管{ 我的$i=0; 对于($i=0;$i<10;$i++){ 打印“这是一个测试”。$i.\n; } }

main(@ARG)


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

您最好使用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将为您完成繁重的工作。这不是一个简单的重定向,但它将允许您发送日志消息,而不必担心日志旋转。

-现在开始。.我怀疑您在这里遇到的另一个问题(尽管我不确定/usr/sbin/daemonize的确切功能)是您将输出管道传输到daemonize之外的记录器。我怀疑它可能会关闭标准输出(后台监控时要执行的标准操作),此时您已将管道丢失到logger,logger将立即退出。请尝试执行
personal-l您的命令