# Mal wieder ein Problem bei einem Shellscript...

## 3PO

Hallo Zusammen,

gibt es eine einfache Möglichkeit um abzufragen, ob ein Deamon läutft oder nicht?

Ich habe da an so etwas gedacht:

 *Quote:*   

> 
> 
> .....
> 
> if [ ! -e XXXX apache2 ]; then
> ...

 

Leider fehlt mit noch der grün geschriebene Teil.

Falls Jemand eine Idee hat, immer her damit, ich bin über jeden Tipp dankbar.   :Wink: Last edited by 3PO on Thu Nov 01, 2007 3:45 pm; edited 1 time in total

----------

## schmutzfinger

```
/etc/init.d/apache2 status
```

 wobei nochmal starten wenn er schon läuft auch nicht schlimm ist weil das initscript das schon abfangen sollte.

----------

## 3PO

Danke erstmal für die Antwort, jedoch ist das nicht unbedingt das was ich gesucht habe.

Mir geht es in erster Linie nicht darum, einen Prozess zu starten, sondern eher darum, um abzufragen ob er gestartet ist, oder nicht. Bei der if-Schleife sollen dann noch mehrere Bedingungen mit rein.

Das oben aufgeführte Script war nur ein Beispiel.

----------

## xraver

Vileicht hilft dir dieser Thread weiter....

https://forums.gentoo.org/viewtopic-t-591803.html

----------

## 3PO

@ xraver,

genau das habe ich gesucht.

Ich habe das jetz so gelöst:

 *Quote:*   

> #!/bin/bash
> 
> apache2=`pgrep -x apache2`
> 
> if [ "$apache2" == "" ]; then 
> ...

 

Vielen Dank nochmal,

.

----------

## Necoro

ich bin für einen Shell-Script-Fragen-Thread  :Wink: 

----------

## schmutzfinger

Mein code liefert auch nen exit status für das if sonst hätte ich das nicht geschrieben. Und anstatt "ps | grep" würde ich "ps -C" nehmen. Aber nochmal, für nen apachen gibts ein initscript und da steckt die Magie schon drinne.

----------

## Knieper

Beachtlich, wie immer wieder dieselben Fehler begangen werden.

----------

## 3PO

Bevor sich hier noch einige die Köpfe einschlagen.......  :Laughing: 

Das Script soll auf einen VDR verwende werden, um etwas zu starten.

Und dafür der Weg von xraver genau richtig.   :Wink: 

```
#!/bin/bash

 

# set -x

foo="$(pgrep -x foo)" 

SVDRPSEND="svdrpsend.pl" 

if [ "$foo" == "" ]; then 

   $SVDRPSEND MESG "Starte foo..."

   /etc/init.d/ foo start

   sleep 6

else

   $SVDRPSEND MESG "foo ist bereits gestartet!"

   exit

fi

if [ "$foo" != "" ]; then 

   $SVDRPSEND MESG "Fehler..."

   $SVDRPSEND MESG "foo konnte nicht gestartet werden!"

else

   $SVDRPSEND MESG "foo gestartet"

fi

exit
```

 :Arrow:  Aber wenn Jemand eine bessere und/oder Lösung hat, immer her damit.   :Cool: 

----------

## Necoro

Zwei kleine Sachen:

1.) Zwischen den beiden if's solltest du $foo noch mal neu setzen  :Wink:  ... sonst gibt er immer ein fehler aus, wenn der service am anfang nicht gestartet war =)

2.) Da du ja Bash verwendest, kann man auch das schönere [[...]] anstatt dem [...] verwenden:

```
[ "$foo" == "" ]
```

 wird dann zu 

```
[[ -z $foo ]]
```

 und 

```
[ "$foo" != "" ]
```

 zu 

```
[[ -n $foo ]]
```

 oder 

```
[[ $foo ]]
```

----------

## toralf

 *Knieper wrote:*   

> Beachtlich, wie immer wieder dieselben Fehler begangen werden.

 That's life.

----------

## 3PO

So, habe es jetzt mal abgeändert, so wie Necoro es beschrieben hat:

```
#!/bin/bash

set -x

foo="$(pgrep -x foo)" 

SVDRPSEND="svdrpsend.pl" 

if [[ -z $foo ]]; then 

   $SVDRPSEND MESG "Starte foo..."

   stt foo

   sleep 6

else

   $SVDRPSEND MESG "foo ist bereits gestartet!"

   exit

fi

if [[ -z $foo ]]; then ´

   $SVDRPSEND MESG "foo gestartet"

else

   $SVDRPSEND MESG "Fehler..."

   $SVDRPSEND MESG "foo konnte nicht gestartet werden!"

fi

exit
```

Auf [[ -n $foo ]] habe ich nun ganz verzichtet, ich habe eben die Messages entsprechend angepasst.   :Wink: 

 *Knieper wrote:*   

> Beachtlich, wie immer wieder dieselben Fehler begangen werden.

 

@ Knieper,

schön dass du hier mitliest und auch offenbar Fehler erkennst.   :Very Happy: 

Schade finde ich aber nur, dass Du uns/mir nicht mitteilst, um welche Fehler es sich handelt, und uns/mir somit die Chance nimmst, diese in Zukunft abzustellen....   :Crying or Very sad: 

----------

## xraver

 *Knieper wrote:*   

> Beachtlich, wie immer wieder dieselben Fehler begangen werden.

 

Beachtlich das einige Leute immer wieder meinen es besser zu wissen blos weil jemand einen anderen Weg gehen möchte.

Unter *nix habe ich nun mal einen fetten Werkzeugkasten mit dem ich machen kann was ich will. Wenn das ein Fehler ist - dann hätte man auch bei Windows bleiben können.

Oder was meinst du?

----------

## Knieper

Beachtlich, dass einige Leute nicht einmal die Verweise lesen, die sie selbst angeben.

 *Quote:*   

> Unter *nix habe ich nun mal einen fetten Werkzeugkasten mit dem ich machen kann was ich will.

 

Mach das. Allerdings haut man mit teuren Schraubendrehern keinen Nagel in die Wand.

----------

## think4urs11

 *Knieper wrote:*   

> Beachtlich, dass einige Leute nicht einmal die Verweise lesen, die sie selbst angeben.

 

 *Knieper wrote:*   

> Mach das. Allerdings haut man mit teuren Schraubendrehern keinen Nagel in die Wand.

 

Beachtlich das einige Leute gegen Forenregel 7 verstoßen.

----------

## xraver

 *Knieper wrote:*   

> Beachtlich, dass einige Leute nicht einmal die Verweise lesen, die sie selbst angeben.
> 
> 

 

Was meinst du damit?

 *Quote:*   

>  Allerdings haut man mit teuren Schraubendrehern keinen Nagel in die Wand.

 

Wer macht das? Letzendlich weisst du doch gar nicht was man mit der Lösung eben noch anstellen will.

Ein meinen Fall hab ich mein Scipt so ausgebaut das es meinen Bedürfnissen entspricht.

Auch der Thread ersteller hat sein Script so angepasst das es das macht was er will.

Nun sag mir doch mal bitte welchen Fehler wir begangen haben?

War es ein Fehler dein Lösungsansatz zu ignorieren?

Und in diesen Thread hab ich noch gar keinen Lösungsansatz von dir gefunden und in meinen Thread war mir deine Lösung zu unflexibel.

Sag mir bitte genau was für einen Fehler wir gemacht haben - ich las mich gerne eines besseren Belehren.

----------

## Knieper

 *xraver wrote:*   

> Auch der Thread ersteller hat sein Script so angepasst das es das macht was er will.

 

In diesem speziellen Fall evtl., dann sollte aber ein fetter Warnhinweis daneben stehen, dass man dieses Skript nicht auf Servern oder Multiusersystemen einsetzen soll. Man weist aber lieber auf Forenregeln hin, die eh niemand liest.

 *Quote:*   

> War es ein Fehler dein Lösungsansatz zu ignorieren?

 

Nein, das ist mir letztenendes egal, es war nur einer von vielen Ansaetzen. Ich haette es nur gern gesehen, wenn man auf die Gefahren und einen ueblichen Loesungsansatz hingewiesen haette. Normalerweise sind Fragende fuer Verbesserungsvorschlaege offen.

 *Quote:*   

> Und in diesen Thread hab ich noch gar keinen Lösungsansatz von dir gefunden und in meinen Thread war mir deine Lösung zu unflexibel.

 

Haettest Du den Loesungsvorschlag verstanden, haettest Du erkannt, dass er maechtiger ist und ausserdem sicherstellt, dass Deine Frage "Laeuft Programm xy?" richtig beantwortet werden wuerde. Hier ist das wieder nicht der Fall. Aber gut, veroeffentlicht weiter schlechte Beispiele, moegen es andere kopieren.

----------

## firefly

 *Knieper wrote:*   

>  *xraver wrote:*   Auch der Thread ersteller hat sein Script so angepasst das es das macht was er will. 
> 
> In diesem speziellen Fall evtl., dann sollte aber ein fetter Warnhinweis daneben stehen, dass man dieses Skript nicht auf Servern oder Multiusersystemen einsetzen soll. Man weist aber lieber auf Forenregeln hin, die eh niemand liest.
> 
>  *Quote:*   War es ein Fehler dein Lösungsansatz zu ignorieren? 
> ...

 

Öhm da du ja anscheinend weist was für Gefahren diese Lösung anscheinend mit sich bringt, wiso sagst du uns das nicht, anstatt sich nur darüber zu beschweren das es niemand tut.

----------

## xraver

Hm, was hätte dagegen gesprochen wenn du hin einfach einen Warnhinweis geschrieben hättest.

Währe ein sinnvoller Eintrag gewesen  :Wink: .

Naja, blöde Diskusion.

//edit

Firefly war schneller....

----------

## think4urs11

Ich schließe mich meinen Vortippern an.

Nur nebulöse Andeutungen nützen ähnlich wenig wie ggf. in manchen Anwendungsszenarien suboptimal funktionierende Scripts.

Das man irgendwo im Internet gefundene (das bezieht sich auch auf f.g.o) Scripts nur mit einer gewissen Vorsicht und Sachverstand einsetzen sollte ist eine Binsenweisheit.

Soll heißen nicht nur 'ist bäh ich weiß es besser' von sich geben sondern zukünftig vielleicht besser 'ist bäh, und zwar wegen a, b,c und via 1,2,3 wird daraus eine bessere Lösung' - was aber in dem Fall nur kam war nun mal nicht zielführend und daher u.a. gegen Regel 7. (das einige Kommentare ein 'du bist doof' implizieren überlese ich mal)

*locked*

----------

