tags:

views:

226

answers:

2

I want to create cron job that runs a script every 5 seconds. Seeing that cron jobs only allows increments of minutes 0-59 and so on.

I thought to create another script that calls my original script written below.

#!/bin/bash

while true
do
# script in the same directory as this script. is this correct?
bash makemehappy.sh
sleep 1
done

I now, need to know how to run this script every time i boot my computer and for it to start itself if it isn't running for some reason.

I am also aware that running this script every minute wouldn't be a good thing. :)

if there is an easier way to run a script every 5 seconds please advise.

Please and thank you.

A: 

Try using anacron or, better yet, an init script to start when the computer starts.

If you want the script to "restart itself", you'll need to run something every few minutes to check the original is still running. This can be done in inittab (/etc/inittab) or, on Ubuntu, /etc/event.d. Try man 5 inittab, looking at the 'respawn' option.

Borealid
+2  A: 

I wouldn't use cron for this. I would use that bash script (use an absolute path, unless you want it to be portable and know that the directory structure will be preserved).

Instead, I would just sleep 5, just like you did (only 5 seconds instead of 1).

As far as starting it with your system, that depends on the system. On (some) Linux distros, there's a file called /etc/rc.local in which you can add scripts to run when the system starts. Well... I shouldn't be so general, the distros that I have used have this. If you're running Ubuntu, there is no longer an inittab, they use upstart, btw.

So if you have an endless loop and an entry in /etc/rc.local, then you should be golden for it to run endlessly (or until it encounters a problem and exits).

Tim
My distro is ubuntu? I can't seem to find that rc.local file in etc directory.suggestions?
garbagecollector
what version? (cat /etc/issue)
Tim
10.04 I managed to figure it out. :) by adding it to init.d and updating the update-rc.d
garbagecollector
nice! hope that works for you. (any chance of choosing my answer if it helped you? Not trying to be rude, I'm just trying to build my rep, lol)
Tim
note that sleep 5 doesn't guarantee Your code will be executed exactly every 5 seconds, only that it will be at least 5 seconds between subsequent executions.
Reef