【问题标题】:Launch perl script on startup在启动时启动 perl 脚本
【发布时间】:2013-05-07 07:04:58
【问题描述】:

我目前正在尝试启动一个应该在启动时一直运行的 perl 脚本。

我正在使用 CentOS 服务器。

我在/etc/rc.d/rc.local 中添加了这一行,当我从控制台键入同一行时,脚本将无法启动:

perl /svcmon/bin/svcperf.pl --svc fav01svc --interval 5 >> /dev/null &

这个脚本实际上应该被启动,你必须等待尽可能多的时间来插入你的数据库中的数据,但是添加

>> /dev/null/& 

允许您在脚本在后台运行时继续使用您的机器。

我真的不知道我能做什么,因为我不明白为什么它不起作用......

你知道我可以尝试什么吗?

编辑:事实证明,我通过这样做成功地启动了我的脚本:

nohup /usr/bin/perl /svcmon/bin/svcperf.pl --svc fav01svc --interval 5 > /outputsvcperf.txt &

但它不起作用,因为 PostgreSQL 服务器没有及时启动,而它应该在启动时和我的 perl 脚本之前启动...

【问题讨论】:

  • 尝试指定perl的完整路径,通常是/usr/bin/perl
  • @choroba :谢谢我做到了,但它仍然不起作用。

标签: perl centos startup


【解决方案1】:

好的,这是诀窍:

我创建了一个 php 脚本,它运行我的命令行并将其放入我的根目录的 crontab 中,因此它始终检查脚本是否正在运行,如果没有运行它。

代码如下:

#!/usr/bin/php
<?php

    $resultat = shell_exec("ps aux | grep perl");
    if(preg_match("/svcperf.pl/", $resultat)){
        echo "Service déjà en route.";
    }else{
        echo "Service non lancé.";
        echo "\nDémarrage...";
        shell_exec("/usr/bin/perl /svcmon/bin/svcperf.pl --svc fav01svc --interval 5 > /dev/null &");
    }

?>

感谢您的帮助。

【讨论】:

    【解决方案2】:
    1. 在你的 Unix shell(命令工作的地方)输入命令:“which perl

      这将产生一个输出,给出 perl 二进制文件的完整路径。假设它返回“/bin/perl

    2. 在您的 rc.local 脚本中,将“perl your-command”更改为“/bin/perl your-command”(基本上将 Perl 替换为完全限定的名称)。 (帽子/提示 @choroba 在 cmets 中注意)。

      这是因为,在您的命令行中,您设置了 $PATH,它可以让您的 Unix shell 查找驻留在路径中的命令。当 RC 脚本运行时,它们没有由 shell 为它们设置的 PATH,因此不知道在哪里搜索命令。

    3. 顺便说一句,这可能不是问题,但将“&gt;&gt;/dev/null”更改为“&gt;/dev/null”。你不附加到一个空设备,你输出到它。

    参考资料:

    【讨论】:

    • 感谢您的回答,我尝试了您所说的,但脚本仍然无法在启动时运行。我在运行 ps aux 时看不到它,而且我的数据库没有自行填满......我将 perl 更改为 usr/bin/perl,但我不知道为什么它仍然不起作用......
    • @user2377141 将其更改为 /your/path/perl /svcmon/bin/svcperf.pl --svc fav01svc --interval 5 &gt; /tmp/mylog.txt 2&gt;&amp;1 &amp; 并告诉我们日志的内容
    • 好的,我做到了,日志说明了脚本在启动时应该说的内容。问题是,当我启动脚本时,它会在启动时说一些东西,然后在它仍在运行时再也不说任何东西。所以我认为脚本运行但之后退出。
    • 编辑:我已经用 nohup 准备好了,现在它说“终止”。不知道为什么(当我按 CTRL + C 或离开 puTTY 窗口时通常会这样说)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 2021-02-12
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 2011-12-04
    相关资源
    最近更新 更多