【问题标题】:Running perl script on AWS EC2 linux AMI continually在 AWS EC2 linux AMI 上持续运行 perl 脚本
【发布时间】:2014-06-27 10:45:00
【问题描述】:

我使用了各种sn-ps的代码来构建一个系统

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

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

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

perl portlistener.pl

它做得很好,愉快地工作。

我可以停止脚本运行的唯一方法是关闭终端窗口,结束我的 SSH 会话。我需要做的是让它始终运行,并实现启动、停止和重启功能。我需要创建一个守护进程吗?

我知道 PHP,但直到现在还没有使用过 Perl。除了安装更新、导航和编辑单个文件等之外,我对命令行也不太熟悉。

提前感谢您的帮助,或为我指明正确的方向。

【问题讨论】:

  • 看看Daemon-Control
  • 解决了我认为使用 Deamon::Control
  • 是的,我试过了,但它不会让我在一定的询问时间内自己回答

标签: linux perl amazon-web-services amazon-ec2 daemon


【解决方案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

【讨论】:

    【解决方案2】:

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

    守护程序的实现并不能确保其永久运行。它可能会崩溃或可能被某人杀死。为保证永久守护程序运行,您必须对守护程序实施 24x7 监控并自动重新启动它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 2019-03-15
      • 2018-09-09
      相关资源
      最近更新 更多