How to set a crontab to execute commands on a
seconds time interval on GNU / Linux and FreeBSD
Have you ever been in
need to execute some commands scheduled
via a crontab, every let's say 5 seconds?, naturally this is
not possible with crontab, however adding a small shell script to
loop and execute a command or commands every 5 seconds and setting
it up to execute once in a minute through crontab makes this
possible.
Here is an example shell script that does execute commands every 5
seconds:
#!/bin/bash command1_to_exec='/bin/ls';
command2_to_exec='/bin/pwd'; for i in $(echo 1 2 3 4 5 6 7 8 9 10
11); do sleep 5; $command1_to_exec; $command2_to_exec;
done
This script will issue a sleep every 5 seconds and execute the two
commands defined as
$command1_to_exec and
$command2_to_exec
Copy paste the script to a file or
fetch
exec_every_5_secs_cmds.sh from here
The script can easily be modified to execute on any seconds
interval delay, the record to put on cron to use with this script
should look something like:
# echo '* * * * * /path/to/exec_every_5_secs_cmds.sh' |
crontab -
Where of course
/path/to/exec_every_5_secs_cmds.sh needs to
be modified to a proper script name and path location.
Another way to do the on a number of seconds program / command
schedule without using cron at all is setting up an endless loop to
run/refresh via
/etc/inittab with a number of predefined
commands inside. An example endless loop script to run via inittab
would look something like:
while [ 1 ]; do
/bin/ls
sleep 5;
done
To run the above sample never ending script using
inittab,
one needs to add to the end of inittab, some line like:
mine:234:respawn:/path/to/script_name.sh
A quick way to add the line from consone would be with
echo:
echo 'mine:234:respawn:/path/to/script' >>
/etc/inittab
Of course the proper paths, should be put in:
Then to load up the newly added inittab line,
inittab needs
to be reloaded with cmd:
# init q