Команда at в PuppyRus Linux средствами bash

30 января 2011 - georgii-2

Перенёс 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 минут") и вообще универсальность скрипта.

 

Сам скрипт подробно описан у Сейджа, но если возникнут вопросы - пишите. Еще лучше если возникнут замечания и предложения - я начинающий и все еще неуверенно чувствую себя в баше

Улыбка