有没有人举例说明如何在PERL脚本的64位Windows 7上创建Windows服务?
在Windows XP professional 32位上,我已经使用具有回调函数的Win32 :: Daemon成功创建了Windows服务。这不适用于64位。
我已经看过这个http://nssm.cc/usage并使用它创建了一个服务,但它没有保持状态并且它会出错。如果有人有一个恰当的例子......
有些想法非常感激。
答案 0 :(得分:3)
我现在设法解决了这个问题。
我现在将我的perl脚本作为Windows服务运行在Windows 7 64位上。
基本上win32 :: Daemon在win 7 64位上运行,但是服务创建需要手动完成。即回调函数和启动都很好。
以下是从头开始创建perl windows服务的示例。
创建文件夹c:/ myservice
从此链接复制代码示例并将其保存到上面的目录中。称之为myservice.pl(http://www.roth.net/forums/topic.php?id=106)
在脚本中的print hello语句之后添加这两行。
$Context->{last_state} = SERVICE_RUNNING;
Win32::Daemon::State( SERVICE_RUNNING );
这是保持服务运行所必需的。否则它会停止。
以管理员模式打开Dos cmd终端。使用以下命令
% sc create myservice binpath= "c:\strawberry\perl\bin\perl.exe"
成功时会显示以下消息。 [SC] CreateService SUCCESS
现在我们需要编辑注册表。打开注册表编辑器(开始 - >然后键入regedit)
在HKEY_LOCAL_MACHINE-> SYSTEM-> CurrentControlSet-> Services-> myservice
点击“myservice”并将imagePath变量编辑为: c:\ strawberry \ perl \ bin \ perl.exe -I“C:\ myservice”“C:\ myservice \ myservice.pl” - run
现在打开服务窗口并启动服务。 (开始 - >控制面板 - >管理工具 - >服务)
在脚本的当前目录中,每隔几秒钟创建一次日志并进行更新。如果使用cygwin for windows,你可以拖尾它。
% tail -f *.log
进程将打印您好!定期......
感谢。