I ended up writing my own shell script: GitHub gist #!/bin/sh To fix this problem, one must each loop iteration compute the precise time to sleep which is usually slightly less than a second (for one second interval timers). This error slowly accumulates and would over time make our stopwatch timer more and more imprecise. Even if one would just sleep 1 in a loop 10 times, the overall execution would take a bit more than 10 seconds because of the small overhead that comes from executing sleep and iterating the loop. The advantage of sleepenh is, that it is able to take into account the small delay that accumulates over time from the processing of other things than the sleep during a loop. For distributions that don't have it, it comes from The sleepenh tool comes from the package of the same name in Debian and its derivatives like Ubuntu. So for example you can say: $ time countdown 2m 4.6sĬountdown 2m 4.6s 0.00s user 0.00s system 0% cpu 2:04.60 totalĪnd as you can see, the command ran exactly for 2 minutes and 4.6 seconds without much magic in the script itself. On Debian and derivatives, this includes sub-second sleeps and a nice human-readable way to specify the time. Since the sleep command is used, this script allows to specify the duration for which to count in the same precision as your sleep allows. The script can either be used as a stop watch (counting up until interrupted) or as a timer that runs for the specified amount of time. The tool that I have in my $PATH looks like this: #!/bin/sh The latter is inadequate because it keeps the CPU busy for no good reason. After enough time passed, the counter will skip a second.
The former is inadequate because due to the small time spent doing the printing, the output will not actually happen once per second but a bit less than that which is suboptimal. Instead, the proposed solutions either use a sleep 1 between subsequent timer outputs or a busy loop that outputs as fast as possible. I'm surprised that nobody used the sleepenh tool in their scripts. In bash, add these lines to your ~/.bashrc (the sleep 0.1 will make the system wait for 1/10th of a second between each run so you don't spam your CPU): countdown() ))Ĭombine this with some way of playing sound in linux terminal ( Play MP3 or WAV file via the Linux command line) or Cygwin ( cat /path/foo.wav > /dev/dsp works for me in Babun/Windows 7) and you have a simple flexible timer with alarm! You can combine these into simple commands by using bash (or whichever shell you prefer) functions. If you need greater precision, you can use this to give you nanoseconds: while true do printf '%s\r' "$(date +%H:%M:%S:%N)" doneįinally, if you really, really want "stopwatch format", where everything starts at 0 and starts growing, you could do something like this: start=$(date +%s)įor a countdown timer (which is not what your original question asked for) you could do this (change seconds accordingly): seconds=20 That will show you the seconds passing in realtime and you can stop it with Ctrl+ C. If all you want is a stopwatch, you can do this: while true do printf '%s\r' "$(date)" done
That’s it! Your timers will be automatically saved so that they are easily available for future visits.I'm not sure why you need beep.
You can choose between an hour-based timer that ranges between 1-12 hours, a minute-based timer that ranges between 1-120 minutes, and a second-based timer that ranges between 1-90 seconds.Īfter you select the timer you want, then you will be taken back to enter your custom message and select your alarm tone. Simply click “Use different online timer” and you’ll be directed to a new page. If you need a timer set for a different amount of time than 1 hour, it is simple and quick to change the setting. You can choose between a tornado siren, newborn baby, sunny day, music box, bike horn, and simple beep. Then, choose the sound that you want the timer to make when the countdown is finished. For example, you could enter “Time for another 30 pushups!” If you want to enter a message for your timer, simply type it into the message box. You just set the timer and use it whenever you want. If you need to set a timer for 1 hour, then you are at the right place! This simple-to-use web app is free to use. Message: Take a break every hour - 30 push ups Beep Tornado Siren Bike Horn Baby Just Born Music Box Sunny Day Start timer Test timer Use different online timer Your latest online timers