Команда at в PuppyRus Linux средствами bash
Перенёс georgii-2
Автор - Tengu
Пользуюсь папирусом уже достаточно давно и мне жутко не хватало в нем примитивного планировщика - чего-нибудь вроде команды 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
Нужно сделать скрипт исполняемым:
chmod a+x at.sh
Далее, когда нужно запустить программу, пишем в папке, где лежит программа что-нибудь вроде:
./at.sh 06:00 mplayer ~/mp3/alarm.mp3
В 06:00 запустится плейер, который проиграет нужную мелодию.
Чтобы показать сообщение можно параллельно запустить gxmessage:
./at.sh 06:00 gxmessage "Пора вставать"
Тогда, вместе с плейером возникнет окошко с сообщением.
Меня привлекает то, что его можно расширять и дорабатывать - можно сделать так, чтобы он реагировал на относительное время ("запустить то-то и то-то через 15 минут") и вообще универсальность скрипта.
Сам скрипт подробно описан у Сейджа, но если возникнут вопросы - пишите. Еще лучше если возникнут замечания и предложения - я начинающий и все еще неуверенно чувствую себя в баше