bash

Executing a program for X seconds then killing it: a simple bash script

Last updated on Thu, 2011-01-20 14:16. Originally submitted by fabio on 2011-01-10 17:50.

I needed to execute a given command for a specified number of seconds on my Linux system. I wasn't able to find a program for doing that so I ended up writing this little and simple Bash script:

#!/bin/bash

cmd=$1
seconds=$2

echo "Executing: ${cmd} for $seconds seconds"
$cmd&

cmdpid=$!
sleep $seconds

if [ -d /proc/$cmdpid ]
then
  echo "terminating program PID:$cmdpid"
  kill $cmdpid
fi

If you save this into a file called run_seconds_then_exits.sh you use it with:

bash run_seconds_then_exits.sh "sleep 10" 5

The above will run the command sleep 10 for 5 seconds, then it will send a termination signal (SIGTERM) and the program will be terminated.

See any improvements to the script above? Please leave a comment below and let me know about it!

GNU/Linux bash: execute a command every X seconds indefinitely (without cron)

Submitted by fabio on Sat, 2010-01-16 11:38.

If you use the GNU/Linux operating system intensely as development environment or as a server you'll probably find yourself in need of running a determinate command or script every X seconds forever.

This could be useful for example to check that a service you run on your server is working correctly (e.g. your Apache httpd server), to clear some cache your system is using or to periodically check for software updates. Personally I needed this to periodically update the DNS entry of my home server with its current IP (my ISP gives dynamic IP, not static ones).

Posted in: