#!/bin/sh runforever=1 while [ $runforever ] do <stuff> done It will chew up resources and spit out the pieces (unless sleep is used judiciously). Which is why it is best to have it as a cron job run once a minute. From a sysadmin standpoint, a 30-40 second delay in notification of a failed service is usually OK. If it's not, that service needs to be on a dedicated machine running watchdog services. I have seen wrapper scripts that do something along the lines as above but use the PID of the service. This can be used to auto-restart a failed service but it will not detect the crashed service that has a dangling PID. On Wed, 2007-10-31 at 07:51 -0600, Doug Simpson wrote: > Is it just not possible to make a bash script run in a continuous > loop? Your solution looks to be about the easiest to do, but, like the > rest, has no provision for the "restart at the top of the list again" > part. No one has offered a solution that includes that. . . > > In your solution, would I need the text to log in quotes if it were > more than one word so it wouldn't think it was more than one variable? > > like: > 10.40.12.3 "This hostname is down." > > And, will it not report anything if the host is *not* down? For the > purpose, I need it to sit there quietly running until it sees that a > host is actually down before it takes any action. Then it reports, and > continues on to the next one and so on. > > What does this line do?: > done </path/to/file > > Thanks for your assistance! > > Doug > > Doug Simpson > Technology Specialist > De Queen Public Schools > De Queen, AR > simpsond leopards k12 ar us > > >>> Les Mikesell <les futuresource com> 10/30/2007 1:04 PM >>> > Doug Simpson wrote: > > > I have a script that I am trying to get to work and I can't get it > right. It is a script that will write the names of offline servers to > a textfile. > > > > As it is, it only does the first server and repeats, *unless* the > first server is not online, in which it writes to the file and then > goes on to the next one. > > How can I make it continue through the script regardless of whether > or not each server is online, but still echo the text to the file if > it finds one offline and then restart at the top of the list again? > > > > The script follows. > > > > ****************************************** > > #!/bin/bash > > while (true) > > do > > #sleep 30 > > if ping -i 3 -c 3 10.40.12.56 > > then > > continue > > else > > echo "Doug's workstation is offline. Please check it!" > >>serverdown.txt > > fi > > [..lots of repeated stuff...] > > > I'd make a text file in the form: > > ip_address <white space> text to log > > And use a script like: > > #!/bin/bash > while : > sleep 30 > do > while read ADD TEXT > ping -i 3 -c 3 $ADD || echo $TEXT >>serverdown.txt > done </path/to/file > done > > -- > Les Mikesell > lesmikesell gmail com > > _______________________________________________ > K12OSN mailing list > K12OSN redhat com > https://www.redhat.com/mailman/listinfo/k12osn > For more info see <http://www.k12os.org> > > > _______________________________________________ > K12OSN mailing list > K12OSN redhat com > https://www.redhat.com/mailman/listinfo/k12osn > For more info see <http://www.k12os.org> > -- James P. Kinney III CEO & Director of Engineering Local Net Solutions,LLC 770-493-8244 http://www.localnetsolutions.com GPG ID: 829C6CA7 James P. Kinney III (M.S. Physics) <jkinney localnetsolutions com> Fingerprint = 3C9E 6366 54FC A3FE BA4D 0659 6190 ADC3 829C 6CA7
Attachment:
signature.asc
Description: This is a digitally signed message part