首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从php启动和停止perl守护进程

如何从php启动和停止perl守护进程
EN

Stack Overflow用户
提问于 2012-12-06 00:18:47
回答 1查看 561关注 0票数 4

我需要从web应用程序(php)控制(启动\停止\重新启动)一个perl守护进程。当我从命令行使用init脚本(/etc/init.d/foodaemon start (工作正常))时,守护程序可以正确启动(并运行),但当我尝试从应用程序启动时,守护程序无法工作(守护程序已关闭,但创建了pid文件,就好像守护程序在创建后死亡一样)。在我的/etc/sudoers中,我添加了

代码语言:javascript
复制
apache  ALL = NOPASSWD: /etc/init.d/foodaemon

在我的php脚本中,

代码语言:javascript
复制
$cmd = "/usr/bin/sudo /etc/init.d/foodaemon start";                             
exec($cmd,$out,$ret);

我拥有所有权限。perl脚本是

代码语言:javascript
复制
#!/usr/bin/perl
use strict;
use warnings;
use Proc::Daemon;
Proc::Daemon::Init;

my $continue = 1;
$SIG{TERM} = sub { $continue = 0 };

close STDIN;
open STDERR,">>/tmp/mylog";
print "My pid: $$\n";
close STDOUT;

while ($continue) {

        # ... what I need        
}   
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-06 00:40:53

解决..。我的init.d脚本中有一个错误,或者更确切地说

代码语言:javascript
复制
case "$1" in
    start)
        if [ -z "$(pgrep $DAEMON)" ]
        then

            # DAEMON is not running                         
            printf "%-50s" "Starting $NAME..."

            cd $DAEMON_PATH
            PID=`$DAEMON > /dev/null 2>&1 & echo $!`

            #echo "Saving PID" $PID " to " $PIDFILE
            if [ -z $PID ]; then
                printf "%s\n" "Fail"

我没有得到许可去做

代码语言:javascript
复制
cd $DAEMON_PATH

因此,我更新如下

代码语言:javascript
复制
 #cd $DAEMON_PATH
 PID=`$DAEMON_PATH/$DAEMON > /dev/null 2>&1 & echo $!`

然后它works...Sorry..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13727639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档