|
|
|
|
while -> done |
Compuholic
knows where he wants to go tomorrow
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
|
|
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 |
|
|
LX
El Comandante en Jefe
Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx
|
|
RE: while -> done |
|
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 |
|
|
Black Star
Der Pate [Admin]
Dabei seit: 11.12.2001
Beiträge: 2.282
Herkunft: /dev/stderr
|
|
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 |
|
|
gean
Neuling
Dabei seit: 22.11.2005
Beiträge: 2
Herkunft: Gmunden
Themenstarter
|
|
RE: while -> done |
|
hey yeah! thx LX!
funtzt perfekt!
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...
danke noch mal!!!
greets gean
__________________ greets gean
|
|
23.11.2005 10:25 |
|
|
|
|
|
|