Probleme mit Bash Skript auf einem Vserver

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
darkiop
Beiträge: 144
Registriert: 29.01.2004 20:12:23

Probleme mit Bash Skript auf einem Vserver

Beitrag von darkiop » 24.04.2006 15:22:33

Habe folgendes mit Problem mit einem Skript das mir überprüfen soll ob der Apache2 läuft und je nach Ergebnis entsprechend reagieren soll:

Skript:

Code: Alles auswählen

#!/bin/bash
#
# ueberprueft apache2 ob aktiv oder inaktiv
#

if [ "test -f /var/run/apache2.pid" ] ;
then
        # Apache2 aktiv
        echo "Apache2 ist gestartet"
        echo
        echo "PID:"
        cat /var/run/apache2.pid
else
        # Apache2 nicht aktiv
        /etc/init.d/apache2 start
        echo "Apache2 wurde gestartet!"
fi

# EOF

Ausgabe:

Code: Alles auswählen

root  |>> /etc/init.d/apache2 stop
Stopping web server: Apache2.

root  |>> ./apache2test 
Apache2 ist gestartet

PID:
cat: /var/run/apache2.pid: No such file or directory

root  |>> /etc/init.d/apache2 start
Starting web server: Apache2.

root  |>> ./apache2test            
Apache2 ist gestartet

PID:
32545
Der Skript springt immer zu "Apache aktiv", auf einem anderen Debian System (kein vserver) funktioniert es einwandfrei.

Hab die Abfrage auch schon auf anderen Wegen versucht, z.B. mit "pgrep apache2", allerdings hatte ich hier genau die gleichen Probs.
Life begins when you accept your fate...

darkiop
Beiträge: 144
Registriert: 29.01.2004 20:12:23

Beitrag von darkiop » 24.04.2006 15:41:25

Problem gelöst:

Im Skript die Zeile

Code: Alles auswählen

if [ "test -f /var/run/apache2.pid" ] ;
in

Code: Alles auswählen

if test -f /var/run/apache2.pid
ändern.


Kann vieleicht jemand erklären warum dies so ist? Auf beiden Debiansystem läuft die gleiche Bashversion.
Life begins when you accept your fate...

Benutzeravatar
FANA
Beiträge: 482
Registriert: 30.03.2005 17:50:55

Beitrag von FANA » 24.04.2006 17:06:38

ich denke es liegt daran, dass du im Prinzip 2 mal einen "Test" ausführst.

Das [ stellt bereits eine Testbedingung dar.

[ ist in die bash eingebaut.
"test" ist eine eigenständige binary

Antworten