【问题标题】:How to Create Windows service from PERL script on Windows 7 64-bit如何在 Windows 7 64 位上从 PERL 脚本创建 Windows 服务
【发布时间】:2014-05-10 18:08:39
【问题描述】:
有没有人举例说明如何从 PERL 脚本在 windows 7 64 位上创建 windows 服务?
在windows XP Professional 32位上,我用Win32::Daemon成功创建了windows服务,它具有回调函数。这不适用于 64 位。
我已经看到了这个http://nssm.cc/usage 并使用它创建了一个服务,但它不保持状态并且它给出了错误。如果有人有合适的例子,也许......
非常感谢一些想法。
【问题讨论】:
标签:
perl
windows-7
windows-services
64-bit
【解决方案1】:
我现在设法解决了这个问题。
我的 perl 脚本现在在 Windows 7 64 位上作为 Windows 服务运行。
基本上 win32::Daemon 在 win 7 64 位上工作,但服务创建需要手动完成。 IE。回调函数和启动都很好。
这是一个从头开始创建 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] 创建服务成功
现在我们需要编辑注册表。打开注册表编辑器。 (开始 -> 然后输入 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。
% tail -f *.log
进程将打印 Hello!定期...
谢谢。