Ich habe ein Perl Programm, welches unter Windows als Dienst läuft;
es soll das Gleiche jetzt auf einem Linux PC machen.
Inzwischen bin ich soweit, daß es vom System gestartet und auch
gestoppt wird, allerdings habe ich beim Start noch --background
angegeben.
Was muß ich am Skript ändern, damit ich --background weglassen kann?
Gibt es dafür kleinere Beispiele?
vielen Dank für Antworten
Robert
> Was muß ich am Skript ändern, damit ich --background
> weglassen kann?
man 3pm Net::Server::Daemonize
oder (altmodisch),
use POSIX;
exit if fork;
POSIX::setsid;
open STDIN,'<','/dev/null';
open STDOUT,'>','/dev/null';
open STDERR,'>','/dev/null';
--
printf -v email $(echo \ 155 141 162 143 145 154 142 162 165 151 \
156 163 155 141 100 171 141 150 157 157 056 143 157 155|tr \ \\\\)
# Live every life as if it were your last! #
Nochmals vielen Dank
Robert
Marcel Bruinsma schrieb:
Aus 'historischen Gruenden' exportiert POSIX alles, dh die
Qualifizierung (POSIX::) ist ueberfluessig. Das 'exit if fork' ist
nicht nur stilistisch unguenstig, weil es den wesentlichen Teil der
Operation (fork) unwesentlich aussehen laesst und vorraussetzt,
dass ein Leser die Dokumentation von fork vorher gelesen und im Kopf
hat, sondern ausserdem falsch: Falls fork fehlschlaegt, wird das
Skript ohne weiteren Kommentar im Vordergrund ausgefuehrt. Mal von
modernem Perl ausgehend
given (fork()) {
when (0) {
break;
}
when (undef) {
die("fork: $!");
}
default {
exit;
}
}
insofern sich dem Perl-Programmierer hier die Haare straeuben, weil
das kein bisschen wirr ist, koennte man auch noch sowas machen:
defined(fork and exit) or die "$!";
Wer oder was soll das dem Programm denn sagen?
Viele Unix daemons haben nen Schalter --foreground oder so ähnlich über den
man das daemonize abschalten kann.
Sven
--
"I'm a bastard, and proud of it"
(Linus Torvalds, Wednesday Sep 6, 2000)
/me is giggls@ircnet, http://sven.gegg.us/ on the Web
Es hätte ja sein können, daß der start-stop-daemon eine
Umgebungsvariable setzt und einen zusätzlichen Parameter mitgibt.
In der Doku hatte ich aber auch nichts darüber gefunden. :-)
Jetzt kann ich mich also entscheiden, ob das Programm normalerweise
als Daemon oder als Konsolenanwendung läuft ;-)
Da ich das Programm zum Testen auch unter Windows und OS2 laufen
lassen will, werde ich wohl im init.d Skript --background mitgeben
(oder --daemon).
Robert
Ist das jetzt Perl 6? In meinen 5er B�chern finde ich weder given
noch when oder break.
Als Beispiel war obiges f�r mich ok; in meinen Programmen w�rde das
dann etwas ausf�hrlicher gemacht werden, damit ich auch nach ein
paar Monaten noch wei�, was ich da gemacht habe.
> given (fork()) {
> when (0) {
> break;
> }
>
> when (undef) {
> die("fork: $!");
> }
>
> default {
> exit;
> }
> }
>
> insofern sich dem Perl-Programmierer hier die Haare straeuben, weil
> das kein bisschen wirr ist, koennte man auch noch sowas machen:
>
> defined(fork and exit) or die "$!";
Wer sagt denn, da� alle Perl-Programmierer es gerne wirr haben
wollen. Das sch�ne an Perl ist doch gerade, da� es sehr viele
M�glichkeiten gibt, eine Anforderung in Code zu fassen.
Robert
[...]
>> Mal von modernem Perl ausgehend
>>
>
> Ist das jetzt Perl 6? In meinen 5er B�chern finde ich weder given
> noch when oder break.
Es sind 'Perl 6'-features die ihren Weg in 5.10 gefunden haben.
[...]
>> given (fork()) {
>> when (0) {
>> break;
>> }
>>
>> when (undef) {
>> die("fork: $!");
>> }
>>
>> default {
>> exit;
>> }
>> }
>>
>> insofern sich dem Perl-Programmierer hier die Haare straeuben, weil
>> das kein bisschen wirr ist, koennte man auch noch sowas machen:
>>
>> defined(fork and exit) or die "$!";
>
> Wer sagt denn, da� alle Perl-Programmierer es gerne wirr haben
> wollen. Das sch�ne an Perl ist doch gerade, da� es sehr viele
> M�glichkeiten gibt, eine Anforderung in Code zu fassen.
Das sagen die "99%" der Menschheit, denen es beim Gedanken, mit
anderer Leute Perl-Code jemals arbeiten zu muessen, kalt den Ruecken
herunterlaeuft und die dafuer verantworlich sind, dass Perl mehr oder
weniger als Vulgarausdruck/ Schimpfwort ('four letter word') angesehen
wird. Was ich etwas schade finde. Die Sprache ist eigentlich sehr
nuetzlich und eignet sich aufgrund ihrer vielfaeltigen
Ausdrucksmoeglichkeiten auch dazu, sehr klaren Code zu schreiben,
anstatt bloss die eigene Cleverness herauszustreichen.
>> Wer sagt denn, da� alle Perl-Programmierer es gerne wirr haben
>> wollen. Das sch�ne an Perl ist doch gerade, da� es sehr viele
>> M�glichkeiten gibt, eine Anforderung in Code zu fassen.
>
> Das sagen die "99%" der Menschheit, denen es beim Gedanken, mit
> anderer Leute Perl-Code jemals arbeiten zu muessen, kalt den Ruecken
> herunterlaeuft und die dafuer verantworlich sind, dass Perl mehr oder
> weniger als Vulgarausdruck/ Schimpfwort ('four letter word') angesehen
> wird. Was ich etwas schade finde. Die Sprache ist eigentlich sehr
> nuetzlich und eignet sich aufgrund ihrer vielfaeltigen
> Ausdrucksmoeglichkeiten auch dazu, sehr klaren Code zu schreiben,
> anstatt bloss die eigene Cleverness herauszustreichen.
Wenn es mir also beim Gedanken, mit Sourcen von anderen arbeiten zu
m�ssen, kalt den R�cken runter l�uft, ich selber aber einigerma�en
klaren und dokumentierten Code schreibe, bin ich auch daf�r
verantwortlich, da� Perl einen schlechten Ruf hat? ;-)
Das, was Du hier �ber Perl schreibst, galt lange Zeit auch f�r C.
Ich glaube, es ist eine Minderheit, die nur selbstleserlichen Code
schreibt.
Ich habe auch noch nichts dar�ber geh�rt, da� Perl einen schlechten
Ruf hat.
Robert