====== Console Alarm Clock ==
===== A Beeper Progam ==
// file: sbbeep.c
#include
#include
int main() {
struct timespec a={0,200000000}, b={0,600000000}, c;
int i, j;
for (j=0; j<3; j++) {
for (i=0; i<3; i++) {
putchar('\a');
fflush(stdout);
nanosleep(&a, &c);
}
nanosleep(&b, &c);
}
return 0;
}
Compile this tiny prog with ''gcc -o sbbeep sbbeep.c'' and move the resulting file to ''/usr/local/bin/sbbeep''
===== Daily Alarms with Cron Entries ==
Add something like the following to the crontab of //root//.
# Daily alarms at 8:57 and noon:
57 08 * * * /usr/local/bin/sbbeep > /dev/console
00 12 * * * /usr/local/bin/sbbeep > /dev/console
===== Unique Alarms with Alarm Clock Setter Script ==
For unique alarms you can copy the following script to ''/usr/local/bin/sbsetalarm'':
#!/bin/bash
# file: sbsetalarm
# An alarm clock
# Example usage: "sbsetalarm 17:10" or "sbsetalarm now +5 minutes"
# This script accepts the same time specifications as the 'at' command, because
# they are simply passed to 'at'. See "man at" for details
# Check already set alarms with "atq"
beeper='echo -e "\a"' # default noise maker
bebeep=$(which sbbeep)
if [ $? -eq 0 ] ; then beeper=$bebeep; fi # try to find a better noise maker
user=$(id -nu) # get user id name
ltrs=$(find /dev -name 'tty*' -user $user) # look for allowed terminals
trms=$(echo $ltrs) # replace '\n' with ' '
term=${trms%% *} # take first terminal
#term=$(echo $terms | cut -d' ' -f1) # take first terminal (alternative)
#eval $beeper > $term # test if alarm works
echo "$beeper > $term" | at "$@" # call 'at' with your timespec