View previous topic :: View next topic |
Author |
Message |
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Mon Sep 14, 2009 6:55 pm Post subject: [bash] Frage zu "pidof" |
|
|
Hallo Zusammen,
ich will mir gerade einen "Watchdog" basteln, aber leider stehe ich gerade irgendwie auf dem Schlauch.
Hier mal das Script:
Code: | #!/bin/sh
# Watchdog by 3PO
#check-frequency in seconds
CHECKTIME=60
LOG="/var/log/foo.log"
DAEMOM=foo.x86
while sleep $CHECKTIME
do
PID="pidof $DAEMOM"
if [ "$PID" = "" ] ; then
echo "$(date) Fehler, $DAEMOM laeuft nicht" >> $LOG
echo "$(date) Starte $DAEMOM neu ..." >> $LOG
/etc/init.d/ $DAEMOM restart
PID="pidof $DAEMOM" && echo $PID
if [ "$PID" = "" ] ; then
echo "$(date) Fehler, $DAEMOM konnte nicht neu gestartet werden" >> $LOG
else
echo "$(date) $DAEMOM wurde neu gestartet" >> $LOG
fi
fi
done
exit |
Das mit $PID, bzw. pidof funktioniert nicht.
Wie kann ich das lösen, bzw anders machen? |
|
Back to top |
|
|
Evildad Guru
Joined: 15 Apr 2004 Posts: 475
|
Posted: Mon Sep 14, 2009 7:11 pm Post subject: |
|
|
Glaub ganz einfach:
falsch
Code: |
PID="pidof $DAEMOM"
if [ "$PID" = "" ] ; then
|
richtig
Code: |
PID=`pidof $DAEMOM`
if [ -z "$PID" ] ; then
|
|
|
Back to top |
|
|
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Mon Sep 14, 2009 7:21 pm Post subject: |
|
|
Nein das funktioniert leider auch nicht.
BTW: Ist denn " und ' nicht das selbe? |
|
Back to top |
|
|
Evildad Guru
Joined: 15 Apr 2004 Posts: 475
|
Posted: Mon Sep 14, 2009 7:23 pm Post subject: |
|
|
` (neben dem Fragezeichen) und nicht ' oder "
Ich habs grad getestet und es sollte das machen was Du willst. |
|
Back to top |
|
|
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Mon Sep 14, 2009 7:24 pm Post subject: |
|
|
Code: | PID=`pidof $DAEMOM`
if [ -z "$PID" ] ; then |
ich bäuchte des invertiert, aber
Code: | PID=`pidof $DAEMOM`
if [ ! -z "$PID" ] ; then |
gehht leider nicht. |
|
Back to top |
|
|
Evildad Guru
Joined: 15 Apr 2004 Posts: 475
|
Posted: Mon Sep 14, 2009 7:26 pm Post subject: |
|
|
Code: |
-n STRING the length of STRING is nonzero |
Aber im ersten Fall macht das doch gar keinen Sinn, oder?
Code: |
DAEMOM=/usr/sbin/acpid
PID=`pidof $DAEMOM`
if [ -z "$PID" ] ; then
echo "$(date) Fehler, $DAEMOM laeuft nicht"
else
echo "tut"
fi
|
Wenn der ACPID Daemon läuft kommt die Ausgabe tut, falls nicht kommt deine Ausgabe mit laeuft nicht... |
|
Back to top |
|
|
69719 l33t
Joined: 20 Sep 2004 Posts: 865
|
Posted: Mon Sep 14, 2009 7:37 pm Post subject: |
|
|
Probier es mal mit
Code: |
#!/bin/sh
# Watchdog by 3PO
#check-frequency in seconds
CHECKTIME=60
LOG="/var/log/foo.log"
DAEMOM=foo.x86
while sleep $CHECKTIME
do
PID=$(pidof $DAEMOM)
if [ -z "$PID" ] ; then
echo "$(date) Fehler, $DAEMOM laeuft nicht" >> $LOG
echo "$(date) Starte $DAEMOM neu ..." >> $LOG
/etc/init.d/$DAEMOM restart
PID=$(pidof $DAEMOM)
if [ -z "$PID" ] ; then
echo "$(date) Fehler, $DAEMOM konnte nicht neu gestartet werden" >> $LOG
else
echo "$(date) $DAEMOM wurde neu gestartet" >> $LOG
fi
fi
done
exit
|
Ich lass meine Dienste mittels
Code: |
#!/bin/bash
function check_runlevel {
for SERVICE in $(ls /etc/runlevels/$1); do
/etc/runlevels/"$1"/"$SERVICE" status || /etc/runlevels/"$1"/"$SERVICE" start
done
}
check_runlevel boot
check_runlevel default
|
und eine cronjob Eintrag überprüfen. |
|
Back to top |
|
|
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Mon Sep 14, 2009 7:54 pm Post subject: |
|
|
Mit PID=`pidof $DAEMOM` gehts.
1000 thx @ Evildad |
|
Back to top |
|
|
Evildad Guru
Joined: 15 Apr 2004 Posts: 475
|
Posted: Mon Sep 14, 2009 8:02 pm Post subject: |
|
|
Kein Problem
@esocr: Ich überwache meine wichtigen Dienste mit Nagios. |
|
Back to top |
|
|
69719 l33t
Joined: 20 Sep 2004 Posts: 865
|
Posted: Mon Sep 14, 2009 8:06 pm Post subject: |
|
|
Evildad wrote: | Kein Problem
@esocr: Ich überwache meine wichtigen Dienste mit Nagios. |
Ich auch, aber nur auf Arbeit , zuhause reicht so nen kleines Script, welches mir die weggeflogenen Dienste neu startet. |
|
Back to top |
|
|
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Tue Sep 15, 2009 4:46 pm Post subject: |
|
|
Ich hätte da noch eine Frage:
Wie kann ich den prüfen ob ein Script gerade ausgeführt wird?
pidof foo.sh gibt leider keinen Wert zurück, obwohl foo.sh gerade ausgeführt wird. |
|
Back to top |
|
|
Evildad Guru
Joined: 15 Apr 2004 Posts: 475
|
Posted: Tue Sep 15, 2009 4:48 pm Post subject: |
|
|
Code: |
FOO=`ps aux |grep foo |grep -v grep`
if [ -z "$FOO" ]
then
# Just do it
foo
else
# Do nothing
exit 1
fi
|
Sowas?
€dit: Wobei glaube ich auch pidof -x funktionieren könnte... |
|
Back to top |
|
|
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Tue Sep 15, 2009 5:14 pm Post subject: |
|
|
Thx @ Evildad.
Funktioniert beides. |
|
Back to top |
|
|
Evildad Guru
Joined: 15 Apr 2004 Posts: 475
|
Posted: Tue Sep 15, 2009 5:18 pm Post subject: |
|
|
3PO wrote: | Thx @ Evildad.
Funktioniert beides. |
Wunderbar, freut mich |
|
Back to top |
|
|
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Tue Sep 15, 2009 5:42 pm Post subject: |
|
|
BTW.....
man Pages lesen bildet.
man pidof
Quote: | .....
-x Scripts too - this causes the program to also return process id's of shells running the named scripts.
..... |
Da hätte ich auch selber drauf kommen können. |
|
Back to top |
|
|
Evildad Guru
Joined: 15 Apr 2004 Posts: 475
|
Posted: Tue Sep 15, 2009 6:35 pm Post subject: |
|
|
3PO wrote: | BTW.....
man Pages lesen bildet.
|
Daraus hab ichs ja
Wollte aber nicht einen auf RTFM machen. |
|
Back to top |
|
|
Knieper l33t
Joined: 10 Nov 2005 Posts: 846
|
|
Back to top |
|
|
toralf Developer
Joined: 01 Feb 2004 Posts: 3925 Location: Hamburg
|
Posted: Thu Sep 17, 2009 8:30 am Post subject: |
|
|
Das leidige back-quote - Mißverständnis (` versus ') läßt sich auf der Shellebene umgehen durch Verwendung von $(...), also z.B. Code: | tfoerste@n22 ~ $ D=`date`; echo D=$D; U=$(date -u); echo U=$U
D=Thu Sep 17 10:29:58 CEST 2009
U=Thu Sep 17 08:29:58 UTC 2009
| Anbei, was heißt eigentlich DAEMOM ? Ich kenne nur DAEMON. |
|
Back to top |
|
|
|