连续执行perl脚本

时间:2015-06-25 12:14:43

标签: php linux perl

我是Perl的新手,我使用的是Windows机器

我正在使用PHP以及Perl ..我的完整Web应用程序是用PHP编写的。我每20分钟为DB交互编写一个Perl脚本。我的Perl脚本是这样的。

use strict;
use warnings;

sub Process1()
{
    use DBI;
    use Date::Format;

    my $DBH=DBI->connect("DBI:mysql:dbname:localhost","root","");
    my $sth=$DBH->prepare("UPDATE tablename SET column1='blah'"); #update query
    $sth->execute();
    while (my @row=$sth->fetchrow_array)
    {
        print $row[0] . "\n";
    }
}


while(1) {
    &Process1(); 
    sleep 900;
}

如果我必须运行我的perl脚本,我只需打开Perl Commad行并执行命令

perl C:xampp\htdocs\samplescript.pl

我的问题是 -

  • 如何在Linux服务器中运行相同的Perl脚本。
  • 如何执行命令?
  • 如果我关闭windows中的perl命令行,脚本将被停止。
    如何在linux服务器中停止相同的脚本?

3 个答案:

答案 0 :(得分:1)

恕我直言,最好的方法是将你的perl代码写成一个简单的" one-shot"处理,并依靠系统提供的功能重复运行:

  • Windows上的预定任务
  • Linux上的Crontab

答案 1 :(得分:1)

如何在Linux服务器中运行相同的Perl脚本?

有几种方法可以在linux上执行perl脚本。

您需要使用口译员执行脚本。在大多数情况下,您使用:

/usr/bin/env perl /Path/To/Your/script.pl

或者

/usr/bin/perl /Path/To/Your/script.pl

至少有一种更好的方式:

将解释器路径定义到脚本的第一行。

#!/usr/bin/env perl
use strict;
use warnings;

sub Process1()
{
    use DBI;
    use Date::Format;

    my $DBH=DBI->connect("DBI:mysql:dbname:localhost","root","");
    my $sth=$DBH->prepare("UPDATE tablename SET column1='blah'"); #update query
    $sth->execute();
    while (my @row=$sth->fetchrow_array)
    {
        print $row[0] . "\n";
    }
}


while(1) {
    &Process1(); 
    sleep 900;
}

然后您可以使用以下命令执行脚本:

/path/to/your/script.pl

如何执行命令?

您可以在Linux终端上执行相同的命令吗?

如果我在Windows中关闭perl命令行,脚本将停止。 如何在linux服务器上停止相同的脚本?

您可以使用linux“kill”命令。如果您在后台运行它。如果您关闭终端会话或按strg + c,脚本也将停止。

您还可以查看此模块并构建自己的Perl命令以停止脚本。

Getopt::Long

我的提示

守护您的脚本并插入一些命令来处理脚本。所以它可以在后台运行。

Explanation: Daemon(computing)

答案 2 :(得分:0)

如果您没有在网上找到它们,这可能有所帮助。

在Linux perl "path"/script.pl中运行脚本。要在linux中连续运行脚本,请使用crontab或通过shell脚本运行脚本并运行它。

要在Linux中停止脚本,请分别使用ps -ef|grep script.pl命令和kill -9 "process_id"查找并终止该过程。