BlackBoard » Computerecke » Betriebssysteme » SuSE while -> done » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen while -> done
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
gean gean ist männlich
Neuling

Dabei seit: 22.11.2005
Beiträge: 2
Herkunft: Gmunden

while -> done       Zum Anfang der Seite springen

Hallo!

Ich würde gerne eine endlos schleife an einer linux 9.0 pro maschine machen, dass überprüft, ob der cron am laufen ist...
Meine Denkweise, ist vlcht ein bisschen verwirrend, aber trotzdem sollte dass funtzn..

per cronjob führe ich einen touch auf die datei /tmp/adslcheck.sock durch.
beim systemstart wird das script croncheck.sh ausgeführt und mit einer sleep time von 600 sekunden soll sich das script dann immer wieder wiederholen..

croncheck.sh:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
#script to check the cron service |gean 1005
PROC='ps -ef |grep "sshd" |head -1 |awk '{ print $2 }'

if test -e $PROC

while(true); do if test -e /tmp/adslcheck.sock;then rm -f /tmp/adslcheck.sock;echo "`date` -(croncheck.sh)- cronjob is already running!" >> /var/log/messages;else rccron restart >> /var/log/messages;echo "`date` -(croncheck.sh)- cron is not correctly running - restart..!!" >> /var/log/messages

fi
sleep 600

done



und jetzt kommt das problem.. wenn ich den croncheck.sh ausführe bekomme ich ein "syntax error: unexpected end of file"

hättet ihr bitte eine lösung für mich??

__________________
greets gean

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von gean: 22.11.2005 22:49.

22.11.2005 22:45 gean ist offline E-Mail an gean senden Homepage von gean Beiträge von gean suchen
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

      Zum Anfang der Seite springen

Ich kenne mich leider mit Shellscripten nicht so gut aus, aber mir sind ein paar Dinge aufgefallen, die mir seltsam vorkommen:

code:
1:
PROC='ps -ef |grep "sshd" |head -1 |awk '{ print $2 }'

Da stimmt wahrscheinlich was mit den ' nicht.

code:
1:
while(true); do if ...

Wie gesagt, ich kenne mich nicht mit Shellscripten aus, aber in den Programmiersprachen, die ich kenne setzt man kein Semikolon hinter Schleifen-Anweisungen.
22.11.2005 23:31 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

RE: while -> done       Zum Anfang der Seite springen

1. Shellscripts beginnen für gewöhnlich mit der Shebang... das solltest du auch so machen:

#!/bin/sh

2. Pass mit den Quotes auf, die zweite Zeile beinhaltet davon eine Menge, allerdings werden die wild durcheinander geöffnet und geschlossen. Außerdem sollte ausführbarer Code in `-Anführung:

PROC=`ps -ef | grep sshd | head -1 | awk '{print $2}'`

3. Vor deiner WHILE-Schleife hast du ein THEN vergessen.

4. Nach der WHILE-Schleife musst du das beginnende IF auch schließen. Solche Fehler vermeidest du am besten, indem du mit Zeilenumbrüchen und Einrückung arbeitest.

5. Die WHILE-Syntax ist wie die IF-Syntax, runde Klammern für Funktionen gibt es in der Bash nicht.

Alles in allem sieht's dann so aus:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
#!/bin/bash
PROC=`ps -ef | grep sshd | head -1 | awk '{print $2}'`

if [ $PROC ]
then
  while [ 1 ]
  do
    if [ -e /tmp/adslcheck.sock ]
    then
      rm -f /tmp/adslcheck.sock
      echo "`date` -(croncheck.sh)- cronjob is already running!" >> /var/log/messages
    else
      rccron restart >> /var/log/messages
      echo "`date` -(croncheck.sh)- cron is not correctly running - restart..!!" >> /var/log/messages
    fi

    sleep 600
  done
fi


[EDIT]
Compuholic: Semikolons schließen in der Bash Zeilen ab, wenn man keine Zeilenumbrüche drin hat.

__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

22.11.2005 23:45 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
Black Star Black Star ist männlich
Der Pate [Admin]


images/avatars/avatar-2158.jpg

Dabei seit: 11.12.2001
Beiträge: 2.282
Herkunft: /dev/stderr

      Zum Anfang der Seite springen

Ich verstehe nicht ganz, warum du deinem cron-daemon nicht vertraust?
Wenn du etwas regelmaessig ausfuehren willst, wuerde ich den cron-daemon nehmen, dafuer ist er schliesslich da.
Dass es nur cron.hourly, cron.daily usw gibt, heisst nicht, dass es nichts dazwischen gibt.

*/10 * * * * /mein/script
In einer der crontab-Datein (fuer root vermutlich /etc/crontab) wird alle 10 Minuten `/mein/script' ausfuehren

1,11,21,31,41,51 * * * * if [ -f /mal/schaun ]; then rm /mal/schaun; echo is weg >> /var/log/syslog; fi
geht auch.

Falls dein cron-daemon nicht vernuenftig laeuft, wuerde ich mir eher darueber Gedanken machen, da dort vielleicht noch andere Scripte laufen sollten. Auf einem Desktop-System ist das zwar i.d.R. nichts wichtiges, aber es koennen nuetzliche Sachen dabei sein (z.B. updatdedb)

__________________
vescere bracis meis

23.11.2005 08:53 Black Star ist offline E-Mail an Black Star senden Homepage von Black Star Beiträge von Black Star suchen
gean gean ist männlich
Neuling

Dabei seit: 22.11.2005
Beiträge: 2
Herkunft: Gmunden

Themenstarter Thema begonnen von gean
RE: while -> done       Zum Anfang der Seite springen

hey yeah! thx LX!
funtzt perfekt! Augenzwinkern

black star => das script überprüft ob der cron noch läuft. nicht dass ich ihm nicht vertrauen würde, aber es hat schon hin und wieder mal deinen ausfall von ihm gegeben... und wenn er nicht korrekt läuft, dann wird er mittels diesem script neu gestartet... Augenzwinkern

danke noch mal!!!

greets gean

__________________
greets gean
23.11.2005 10:25 gean ist offline E-Mail an gean senden Homepage von gean Beiträge von gean suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Computerecke » Betriebssysteme » SuSE while -> done

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH