Сайт | Скачать | Видео | Wiki

Автор Тема: Команда at в PuppyRus Linux средствами bash  (Прочитано 3920 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tengu

  • Новичок
  • *
  • Сообщений: 1
  • Репутация: +1/-0
  • Автор темы
  • Вик
    • https://tengu911.wordpress.com
Команда at в PuppyRus Linux средствами bash
« : 26 Ноябрь 2009, 21:35:10 »
Пользуюсь папирусом уже достаточно давно и мне жутко не хватало в нем примитивного планировщика - чего-нибудь вроде команды 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 минут") и вообще универсальность скрипта.

Сам скрипт подробно описан у Сейджа, но если возникнут вопросы - пишите. Еще лучше если возникнут замечания и предложения - я начинающий и все еще неуверенно чувствую себя в баше :)
« Последнее редактирование: 27 Ноябрь 2009, 08:24:12 от Tengu »