ich bräuchte für einen Cron-Job ein Script, welches checkt, ob der
smpppd-Deamon läuft oder nicht und wenn nicht, soll es ihn neustarten.
Den Status kann man abfragen mit: rcsmpppd status
Kommt entweder:
Checking for SMPPPD: running
oder
Checking for SMPPPD: unused
Wie kann ich das realisieren (Shell-Programmierungs-Newbie)?
(SuSE 7.3, 2.4.10)
Danke!
Stefan Block
> ich bräuchte für einen Cron-Job ein Script, welches checkt, ob der
> smpppd-Deamon läuft oder nicht und wenn nicht, soll es ihn neustarten.
Was spricht gegen "/sbin/pidof smpppd || <starte smpppd>"?
--
Ciao, Sebastian
* Email: toy...@sauerland.de
* HP: http://www.sauerland.de/~toyland/ PGP-Key available
> ich bräuchte für einen Cron-Job ein Script, welches checkt, ob der
> smpppd-Deamon läuft oder nicht und wenn nicht, soll es ihn neustarten.
>
> Den Status kann man abfragen mit: rcsmpppd status
> Checking for SMPPPD: running
> Wie kann ich das realisieren (Shell-Programmierungs-Newbie)?
> (SuSE 7.3, 2.4.10)
Als Neuling lernt man IMHO am besten durch abkupfern. Hättest Du
reingeschaut, wärest Du wahrscheinlich schon fertig.
Folgendes finde ich in /etc/init.d/skeleton, das
Beispielscript für eigene Sachen:
status)
echo -n "Checking for FOO: "
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
# Status has a slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running
# NOTE: checkproc returns LSB compliant status values.
checkproc $FOO_BIN
rc_status -v
;;
"rcsonstwas status" liefert also einen definierten Rückgabewert
mittels checkproc. Hat Dein rcsmpppd auch folgendes?
try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
$0 status >/dev/null && $0 restart
# Remember status and be quiet
rc_status
;;
Aldo
Also bei mir zum Beispiel das es das nicht gibt.
Ich löse das immer mit ps -xa|egrep sendmail|egrep -v grep ||
/usr/sbin/sendmail
Wenn mir jemand da nen Tip geben würde wie ich die zwei greps zu einem
machen kann wäre ich übrigens recht dankbar ;)
lg
--
PB-Systeme IT-Dienstleistungen
email in...@pb-systeme.de
Internet http://www.pb-systeme.de
Du (pba) meintest am 23.02.02:
> Ich loese das immer mit
> ps -xa|egrep sendmail|egrep -v grep || /usr/sbin/sendmail
> Wenn mir jemand da nen Tip geben wuerde wie ich die zwei greps zu
> einem machen kann waere ich uebrigens recht dankbar ;)
(ungetestet)
ps -xa|egrep [s]endmail|| /usr/sbin/sendmail
^wird zu "sendmail" umgebaut
Viele Gruesse!
Helmut
> ps -xa|egrep sendmail|egrep -v grep || /usr/sbin/sendmail
>
> Wenn mir jemand da nen Tip geben würde wie ich die zwei greps zu einem
> machen kann wäre ich übrigens recht dankbar ;)
ps -xa | egrep [s]endmail || ...
"egrep [s]endmail" sucht in der Prozessliste nach dem String "sendmail",
taucht selbst aber als "egrep [s]endmail" auf, wodurch es sich selbst
nicht matchen kann.
Beste Grüsse - Jürgen
Neuere ps koennen das Argument -C:
-C select by command name
Also einfach
$ ps -xa -C sendmail
statt dem ps|grep|grep-Kontrukt machen.
-volker
--
http://die-Moells.de/ * http://Stama90.de/ * http://ScriptDale.de/
"Amnesia used to be my favorite word, but then I forgot it."
>
> Was spricht gegen "/sbin/pidof smpppd || <starte smpppd>"?
>
Kommt bei mir nur:
linux:/home/sbl # /sbin/pidof smpppd || <starte smpppd>
bash: syntax error near unexpected token `smpppd>'
Du bist zu blöd zum Kacken.
Bitte springe vom nächsten Hochhaus mit mehr als 12 Stockwerken.
Danke.
>
> Als Neuling lernt man IMHO am besten durch abkupfern. Hättest Du
> reingeschaut, wärest Du wahrscheinlich schon fertig.
> Folgendes finde ich in /etc/init.d/skeleton, das
> Beispielscript für eigene Sachen:
>
>
> status)
> echo -n "Checking for FOO: "
> ## Check status with checkproc(8), if process is running
> ## checkproc will return with exit status 0.
>
> # Status has a slightly different for the status command:
> # 0 - service running
> # 1 - service dead, but /var/run/ pid file exists
> # 2 - service dead, but /var/lock/ lock file exists
> # 3 - service not running
>
> # NOTE: checkproc returns LSB compliant status values.
> checkproc $FOO_BIN
> rc_status -v
> ;;
Keine Checkung! Was soll ich damit anfangen?
> "rcsonstwas status" liefert also einen definierten Rückgabewert
> mittels checkproc. Hat Dein rcsmpppd auch folgendes?
>
> try-restart)
> ## Stop the service and if this succeeds (i.e. the
> ## service was running before), start it again.
> ## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
> $0 status >/dev/null && $0 restart
>
> # Remember status and be quiet
> rc_status
> ;;
>
>
> Aldo
Würde gehen, nur wird der Dienst vorher auch gestoppt. Das gilt es aber zu
vermeiden.
Hat nicht jemand für mich zwei (oder auch drei) fertige Zeilen mit denen
das zu realisieren ist?
einfach rcsmpppd start
wenn bereits gestartet, passiert nichts und wenn nicht wird er gestartet.
Danke!
>
> Du bist zu blöd zum Kacken.
> Bitte springe vom nächsten Hochhaus mit mehr als 12 Stockwerken.
> Danke.
Danke für die Beleidigung.
Sag mir einfach, was ich falsch gemacht habe, und erläutere, was in der
Zeile passiert..
>ich bräuchte für einen Cron-Job ein Script, welches checkt, ob der
>smpppd-Deamon läuft oder nicht und wenn nicht, soll es ihn neustarten.
Warum startest Du den Daemon nicht über inetd, der macht nämlich genau
das was Du willst. Sobald der Task nicht (mehr) läuft, wird er neu
gestartet.
man inetd
FFPX Frederick
--
Failure is not an option. It comes bundled with your Microsoft product.
Setz einfach für <starte smpppd> das Kommando zum starten des Daemons ein.
Daß "<starte smpppd>" kein Kommando/Shellbefehl ist, ist doch wohl klar,
insofern muß ich dem Grundgedanken von Felix' posting recht geben.
Gruß
Jan
--
Registered Linux User #246982 (http://counter.li.org)
> Warum startest Du den Daemon nicht über inetd, der macht nämlich genau
> das was Du willst. Sobald der Task nicht (mehr) läuft, wird er neu
> gestartet.
>
Ich brauche aber eine gewisse Zeit ohne den laufenden Daemon. Bei dieser
Lösung wird doch bestimmt direkt nach dem Beenden neugestartet, nehme ich
an.
Habe Problem mittlerweile anders gelöst (siehe Posting:"Gelöst:...")
> man inetd
Warum "hilfst" du anderen, wenn du selber keine Ahnung hast?
Dieser Unfug ist jetzt in den Newsgroup-Archiven und verwirrt
möglicherweise noch andere Leute, die es auch nicht wissen, aber im
Gegensatz zu unserem Spezialisten hier erst recherchieren.
Cancele bitte obiges Müll-Posting, um den Schaden einzugrenzen, den du
anrichtest.
Restarten von Diensten macht nicht inetd sondern init.
Felix
> ps -xa | egrep [s]endmail || ...
>
> "egrep [s]endmail" sucht in der Prozessliste nach dem String "sendmail",
> taucht selbst aber als "egrep [s]endmail" auf, wodurch es sich selbst
> nicht matchen kann.
ps -xa | egrep '[s]endmail' || ...
ist besser, da ohne die Apostrophe (oder Anführungszeichen) schon die
Shell die eckigen Klammern fürs Globbing benutzt. Wenn man sich in einem
Directory befindet, in dem es ein "sendmail" gibt, führt die Shell sonst
wieder nur
ps -xa | egrep sendmail
aus:
% ps -xa | egrep [s]endmail
458 ? S 0:00 sendmail: accepting connections on port 25
23536 pts/1 S 0:00 egrep sendmail
Viele Grüsse...
Michael
>>Warum startest Du den Daemon nicht über inetd
Das war leider Unsinn meinerseits, natürlich muß es "init" heißen :-/
>Ich brauche aber eine gewisse Zeit ohne den laufenden Daemon.
Hm, dann ist das nicht geeignet, denn Du hast völlig recht:
>Bei dieser Lösung wird doch bestimmt direkt nach dem Beenden
>neugestartet, nehme ich an.
FFPX Frederick
--
This Would Be Really Funny If It Weren't Happening To Me