Пользуюсь папирусом уже достаточно давно и мне жутко не хватало в нем примитивного планировщика - чего-нибудь вроде команды
at. Насколько я понял в BusyBox, она не встроена, а очень хочется себе иной раз написать что-нибудь типа
at 22:30 gxmessage "Пора спать"
Совершенно случайно в библиотеке Мошкова попалась книга Рассела Сейджа
"Приемы профессиональной работы в UNIX", в которой помимо прочего описывается создание такой команды средствами скриптового языка. Я решил, что это хорошая идея и адаптировал вариант Сейджа к реалиям bash.
#!/bin/bash
# Execute command line at specific time
# Author: Russ Sage 2а
# адаптирована tengu-crow (tengu-crow.livejournal.com)
# Выполнить командную строку в указанное время
# проверяем число аргументов
# если оно оно не равно двум или не содержит
# таймстамп - возвращаем код ошибки
if [ $# -lt 2 ]
then echo "at: wrong arg count" >&2
echo "usage: at hr:min cmd [;cmd ...]" >&2
exit 1
fi
ITS=$1; shift
while :
do
time=`eval date +%H:%M`
if [ "$ITS" == "$time" ]
then eval $@
exit 0
else sleep 35
fi
done &
Действует описанным выше способом - скрипт записывается в файл, например, at.sh
Нужно сделать скрипт исполняемым:
Далее, когда нужно запустить программу, пишем в папке, где лежит программа что-нибудь вроде:
./at.sh 06:00 mplayer ~/mp3/alarm.mp3
В 06:00 запустится плейер, который проиграет нужную мелодию.
Чтобы показать сообщение можно параллельно запустить gxmessage:
./at.sh 06:00 gxmessage "Пора вставать"
Тогда, вместе с плейером возникнет окошко с сообщением.
Меня привлекает то, что его можно расширять и дорабатывать - можно сделать так, чтобы он реагировал на относительное время ("запустить то-то и то-то через 15 минут") и вообще универсальность скрипта.
Сам скрипт подробно описан у Сейджа, но если возникнут вопросы - пишите. Еще лучше если возникнут замечания и предложения - я начинающий и все еще неуверенно чувствую себя в баше