Так как основная проблема новичков под Linux состоит в том, что они спрашивают, как копать, а им отвечают, куда копать, я в качестве небольшого примера привожу практическую задачу пробуждения нас любимых после полуночных бдений за консолью =) Будить нас будет наш собственный лаптоп под управлением OS GNU/Linux (и я считаю это True Way).
С чего начать? Наверное с того, с чего начинался любой будильник - с срабатывания в точно назначеное время =) Иначе это не будильник, а кривая поделка товарища Сый Цу из бюджетного района Пхеньяна. Да простят мне китайцы мою любовь к родине и соотечественникам в частности=)
Самый простой путь:
at -f /home/netf0x/ring.sh 7:07
Где:
cat /home/netf0x/ring.sh mplayer /home/netf0x/ring.mp3
Как видим, все просто. Лишь бы демон atd работал и мы точно проснемся. Проверяется просто:
sudo root@fox:~# /etc/init.d/atd status
* atd is running
Но пойдем дальше:
root@fox:/tmp/ring# cat alarm #!/bin/sh amixer sset PCM 95% > /dev/null VOL=0 START_VOL=50 STEP_VOL=10 SLEEP_VOL=120 ALARM_ACTION=/home/dimka/bin/alarm_action #Поменять на свой путь к файлу alarm_action setvolume() { amixer sset Master $1% > /dev/null} VOL=$START_VOL setvolume $START_VOL while [ 1 == 1 ]; do $ALARM_ACTION let VOL=VOL+STEP_VOL setvolume $VOL sleep $SLEEP_VOL
Этот скрипт делает следующее: Плавно прибавляет громкость и через скрипт (будет ниже) alarm_action выдает звук.
alarm_action:
root@fox:/tmp/ring# cat alarm_action #!/bin/sh play -q /home/dimka/snd/untie.wav > /dev/null & 2>1 DATE=`date | awk '{print($4)}' | sed s/:/" часов "/ | sed s/:/" минут "/ | awk '{print($1" "$2" "$3" "$4)}' ` /home/dimka/bin/fest "доброе утро, уже $DATE" #/home/dimka/bin/ - поменять на свой путь к файлу скрипта fest
Этот скрипт, посредством festival читает про доброе утро. Festival вызывается скриптом со звучным названием fest
#cat fest #!/bin/sh echo "(voice_msu_ru_nsh_clunits)(SayText \"$1\")(quit)" > /tmp/test festival_client /tmp/test
Ну и теперь давайте все же заставим работать этот скрипт в назначеное время =) В файл /etc/crontab добавляются следующие строки (а если у вас нет прав root просто наберите crontab -e и правьте правила только для себя)
45 7 * * 3 dimka alarm 45 8 * * 1-2,4-5 dimka alarm
Естественно user dimka надо поменять на имя вашего юзера ну а строки 45(минуты), 7(часы), 3(среда), 1-2(понедельник-вторник), 4-5(четверг-пятница)
Архив со скриптами прикладываю. Успехов в пробуждении!
Скрипты
P.S: Огромное спасибо 468 за борьбу с собственной ленью! =)
Источник:http://rootfox.com/blog/archives/135
|