Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Fragen zum start-stop-daemon

1 view
Skip to first unread message

Robert Berghaus

unread,
Oct 15, 2009, 1:20:17 PM10/15/09
to
Hallo

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

Marcel Bruinsma

unread,
Oct 15, 2009, 5:32:15 PM10/15/09
to
Am Donnerstag, 15. Oktober 2009 19:20, Robert Berghaus a écrit :

> 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! #

Robert Berghaus

unread,
Oct 16, 2009, 6:59:07 AM10/16/09
to
Danke, das sehe ich mir jetzt an.
Gibt es eine Möglichkeit herauszubekommen, ob das Programm als
Daemon oder 'normal' laufen soll?
Wenn das Programm von init.d gestartet wurde, soll es als Daemon
laufen, wenn ich es in einer shell starte, soll es als ganz normales
Programm laufen.
So würde ich im Startprogramm in init.d den Parameter --daemon mitgeben.

Nochmals vielen Dank
Robert


Marcel Bruinsma schrieb:

Rainer Weikusat

unread,
Oct 16, 2009, 8:19:13 AM10/16/09
to
Marcel Bruinsma <m...@nomail.afraid.org> writes:
> Am Donnerstag, 15. Oktober 2009 19:20, Robert Berghaus a �crit :
>
>> 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;

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 "$!";

Sven Geggus

unread,
Oct 16, 2009, 9:04:41 AM10/16/09
to
Robert Berghaus <Robert....@gmx.de> wrote:
> Gibt es eine Möglichkeit herauszubekommen, ob das Programm als
> Daemon oder 'normal' laufen soll?

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

Robert Berghaus

unread,
Oct 16, 2009, 11:08:36 AM10/16/09
to
Sven Geggus schrieb:

> Robert Berghaus <Robert....@gmx.de> wrote:
>> Gibt es eine Möglichkeit herauszubekommen, ob das Programm als
>> Daemon oder 'normal' laufen soll?
>
> 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.
>

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

Robert Berghaus

unread,
Oct 16, 2009, 11:20:23 AM10/16/09
to
Rainer Weikusat schrieb:

> Marcel Bruinsma <m...@nomail.afraid.org> writes:
>> Am Donnerstag, 15. Oktober 2009 19:20, Robert Berghaus a �crit :
>>
>>> 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;
>
> 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
>

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

Rainer Weikusat

unread,
Oct 16, 2009, 12:31:33 PM10/16/09
to
Robert Berghaus <Robert....@gmx.de> writes:
> Rainer Weikusat schrieb:

[...]

>> 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.

Robert Berghaus

unread,
Oct 16, 2009, 2:42:34 PM10/16/09
to
Rainer Weikusat schrieb:

> Robert Berghaus <Robert....@gmx.de> writes:
>> Rainer Weikusat schrieb:
[...]

>> 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

0 new messages