我使用了各种代码片段来构建一个
的系统我将GPS设备配置为将数据发送到我的AWS EC2服务器的弹性IP
它工作正常,当我通过SSH运行时
perl portlistener.pl
它的工作做得很好,快乐地工作。
我可以停止脚本运行的唯一方法是关闭终端窗口,结束我的SSH会话。我需要做的是,让它始终保持运行,并实现启动,停止和重启设施。我需要创建一个守护进程吗?
我知道PHP,但到目前为止从未使用过Perl。除了安装更新,导航和编辑单个文件等之外,我对命令行也不熟悉。
提前感谢您的帮助,或者指出我正确的方向。
答案 0 :(得分:1)
我想解决了!
已安装CPAN http://www.thegeekstuff.com/2008/09/how-to-install-perl-modules-manually-and-using-cpan-command/
使用CPAN,安装了Deamon :: Control
然后创建一个新程序如下(portlistener_launcher.pl),并将其作为SU运行。
#!/usr/bin/perl
use strict;
use warnings;
use Daemon::Control;
$ENV{PHP_FCGI_CHILDREN} = 10;
$ENV{PHP_FCGI_MAX_REQUESTS} = 1000;
Daemon::Control->new({
name => 'portlistener',
program => 'perl /home/ec2-user/portlistener/portlistener.pl',
fork => 2,
pid_file => '/var/run/portlistener.pid',
stdout_file => '/var/log/portlistener.log',
stderr_file => '/var/log/portlistener.log',
})->run;
这可能是一种更简洁的方式,但它似乎有效,我可以像这样停止/启动它:
perl portlistener_launcher.pl start
答案 1 :(得分:0)
如果终端窗口是唯一的任务,则可以使用nohup命令,例如: http://linux.101hacks.com/unix/nohup-command/ 要终止侦听器,您可以终止正常运行的进程。
守护程序的实现不能确保其永久运行。它可能会崩溃或可能会被某人杀死。要保证永久守护程序运行,您必须对此守护程序实施全天候监视并自动重新启动它。