在AWS EC2 linux AMI上不断运行perl脚本

我已经使用各种代码片段来build立一个系统

  1. 监听传入TCP数据的端口(使用perl脚本),将这些数据写入日志文件。
  2. 调用并运行PHP脚本来使用日志文件并将其写入RDS MySQL数据库

我有一个GPS设备configuration为将数据发送到我的AWS EC2服务器的弹性IP

它工作正常,当我通过SSH运行

perl portlistener.pl 

它工作正常,愉快地工作。

我可以停止脚本运行的唯一方法是closuresterminal窗口,结束我的SSH会话。 我需要做的是始终保持运行,并实施一个启动,停止和重启设施。 我需要创build一个守护进程吗?

我知道PHP,但直到现在,从来没有与Perl的工作。 我也不太熟悉命令行,除了安装更新,浏览和编辑单个文件等。

提前感谢任何帮助,或指引我在正确的方向。

解决了我的想法!

安装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 

如果终端窗口是唯一的任务,则可以使用nohup命令,例如http://linux.101hacks.com/unix/nohup-command/要终止侦听器,您可以终止一个或多个正在运行的进程。

守护进程的实现不能确保其永久运行。 它可能会崩溃或可能被某人杀死。 为了保证永久守护进程的运行,你必须实现这个守护进程的全天候监视并自动重启。