繁体   English   中英

连续执行 perl 脚本

[英]Execute perl script continuously

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

嗯,即时通讯使用 PHP 以及 Perl.. 我完整的 web 应用程序是用 PHP 编写的。 我每 20 分钟编写一个用于数据库交互的 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服务器中停止相同的脚本?

恕我直言,最好的方法是将您的 perl 代码编写为简单的“一次性”处理,并依靠系统提供的功能重复运行它:

  • Windows 上的计划任务
  • Linux 上的 crontab

如何在我的 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::长


我的提示

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

说明:守护进程(计算)

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM