如何在Windows 7 64位上从PERL脚本创建Windows服务

时间:2014-03-31 11:58:27

标签: perl windows-7 windows-services 64-bit

有没有人举例说明如何在PERL脚本的64位Windows 7上创建Windows服务?

在Windows XP professional 32位上,我已经使用具有回调函数的Win32 :: Daemon成功创建了Windows服务。这不适用于64位。

我已经看过这个http://nssm.cc/usage并使用它创建了一个服务,但它没有保持状态并且它会出错。如果有人有一个恰当的例子......

有些想法非常感激。

1 个答案:

答案 0 :(得分:3)

我现在设法解决了这个问题。

我现在将我的perl脚本作为Windows服务运行在Windows 7 64位上。

基本上win32 :: Daemon在win 7 64位上运行,但是服务创建需要手动完成。即回调函数和启动都很好。

以下是从头开始创建perl windows服务的示例。

  1. 创建文件夹c:/ myservice

  2. 从此链接复制代码示例并将其保存到上面的目录中。称之为myservice.pl(http://www.roth.net/forums/topic.php?id=106

  3. 在脚本中的print hello语句之后添加这两行。

    $Context->{last_state} = SERVICE_RUNNING;

    Win32::Daemon::State( SERVICE_RUNNING );

    这是保持服务运行所必需的。否则它会停止。

  4. 以管理员模式打开Dos cmd终端。使用以下命令

  5. 创建服务

    % sc create myservice binpath= "c:\strawberry\perl\bin\perl.exe"

    成功时会显示​​以下消息。 [SC] CreateService SUCCESS

    1. 现在我们需要编辑注册表。打开注册表编辑器(开始 - >然后键入regedit)

    2. 在HKEY_LOCAL_MACHINE-> SYSTEM-> CurrentControlSet-> Services-> myservice

    3. 下查找服务
    4. 点击“myservice”并将imagePath变量编辑为: c:\ strawberry \ perl \ bin \ perl.exe -I“C:\ myservice”“C:\ myservice \ myservice.pl” - run

    5. 现在打开服务窗口并启动服务。 (开始 - >控制面板 - >管理工具 - >服务)

    6. 在脚本的当前目录中,每隔几秒钟创建一次日志并进行更新。如果使用cygwin for windows,你可以拖尾它。

      % tail -f *.log

    7. 进程将打印您好!定期......

      感谢。