Thread Projekt - Perl in Windows 2008 (47 answers)
Opened by WilliamW at 2013-10-17 18:11

WilliamW
 2013-10-23 17:44
#171439 #171439
User since
2013-10-17
27 Artikel
BenutzerIn
[default_avatar]
So das Perl-Skript läuft nun auch als Service unter W2008 im Service Manager bei Configuration->Services und lässt sich von dort aus starten, stoppen, pausieren etc. pp.. Für den Service selber nutze ich Example 2: Typical skeleton code. Ich könnte auch Example 4 und 5 nutzen, sofern ich dies mit CallBackRoutine() händeln möchte.

Um den Service im Service Manager von W2008 anzeigen zu lassen, muss man folgende Kommandozeilen im Shell verwenden.
"sc create MyService binPath= C:\testService2.pl DisplayName= "PerlService""
...

Desweiteren habe ich folgenden Quellcode für die Erstellung eines Services in Windows verwendet.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/perl -w
use Win32::Daemon;
# If using a compiled perl script (eg. myPerlService.exe) then
# $ServicePath must be the path to the .exe as in:
# $ServicePath = 'c:\CompiledPerlScripts\myPerlService.exe';
# Otherwise it must point to the Perl interpreter (perl.exe) which
# is conviently provided by the $^X variable...
my $ServicePath = $^X;

# If using a compiled perl script then $ServiceParams
# must be the parameters to pass into your Perl service as in:
# $ServiceParams = '-param1 -param2 "c:\\Param2Path"';
# OTHERWISE
# it MUST point to the perl script file that is the service such as:
my $ServiceParams = 'c:\testService.pl -param1 -param2 "c:\\Param2Path"';


%Hash = (
machine => '',
name => 'PerlTest',
display => 'Oh my GOD, Perl is a service!',
path => $ServicePath,
user => '',
pwd => '',
description => 'Some text description of this service',
parameters => $ServiceParams
);
if( Win32::Daemon::CreateService( \%Hash ) )
{
print "Successfully added.\n";
}
else
{
print "Failed to add service: " . Win32::FormatMessage( Win32::Daemon::GetLastError() ) . "\n";
}


Morgen werde ich diesen Durchgang an dem originalen W2008-Server durch führen. Ob ich mich dann noch mit den enthaltenen Funktionen beschäftigen muss, wird sich dann morgen klären im Gespräch.


EDIT:
Nun ist noch die Frage, wofür die CallBackRoutine() aus dem vierten und fünften Beispiel geeignet ist ? Was für Vorteile habe ich, wenn ich diese anwenden würde und welchen Zweck hat diese ?
Also es macht den Quellcode um einiges kürzer und übersichtlicher oder gibt es dort noch andere Vorteile ? Könnten Nachteile durch die Anwendung der CallBackRoutine() entstehen ?
EDIT:EDIT:
Bzw. verstehe ich auch noch nicht so richtig wie die CallBackRoutine() funktioniert. Vor allem das 5. Beispiel verstehe ich überhaupt nicht. Wodurch z.B. die sub-Funktionen angesprochen bzw. angewendet/gestartet werden ?
EDIT:EDIT:EDIT:
Hierfür muss ich wohl erstmal verstehen was CallBack's überhaupt sind in Perl.
EDIT:EDIT:EDIT:EDIT:
Ich werde mir dafür mal folgenden Link bei Gelegenheit durchlesen...
http://www.perl.com/pub/2003/08/07/design2.html
...
Evtl. verstehe ich dann was die CallBackRoutine in Perl bewirkt bzw. wie diese überhaupt funktioniert.
Last edited: 2013-10-23 18:33:17 +0200 (CEST)

View full thread Projekt - Perl in Windows 2008