Сейчас, начитавшись айтихепенса, занимаюсь написанием будильника. Скрипт должен запускаться в определенное время посредством "at". Сам скрипт при запуске лично мною работает отлично, но при запуске в определенное время возникло две проблемы: 1. Не получается запустить из него другой скрипт в параллельном режиме, т.е команду "sh scripts/music.sh &" система игнорирует. Без & все работает замечательно. 2. Попытка вызвать kdialog из скрипта успехом также не увенчалась. Видел подобную проблему у людей на форумах, но с планировщиком cron, решения не прилагалось. Подскажите пожалуйста, это такие фичи системы, или я что-то делаю не так?
Да скрипт самый банальный. Убавляет громкость, берет данные двух других скриптов, проговаривает их, запускает скрипт, управляющий плеером а потом не дает этот плеер отключить пока я не проснусь и не вспомню пароль. Собственно, плеер я могу и сам из консоли убивать, но так было бы приятней. PHP: amixer set PCM 25 -q say="\"`sh scripts/time.sh` `sh scripts/weather.sh`\"" echo "(voice_msu_ru_nsh_clunits) (SayText $say)" | festival sh scripts/music.sh & pas="пустострочка" while [ $pas != "нет" ] do pas=`kdialog --password "Не спать!"` done killall mplayer && не помогло.
дай скриптик sh scripts/weather.sh интересно Я вобще когда вставать лень коннектюсь со смарта через midpssh и килю mpg321 нах ) Ща поковыряюсь отвечу вот тока kdialog тавить неохота много либ тянуть апосле festival че ненадо & !? поидее тогда он у тя стопориться после фестиваля
Вместо kdialog можно использовать xmessage, результат один. А зачем после festival & ? При запуске из консоли вручную все прекрасно работает. Да и не надо мне, чтобы голос вместе с музыкой звучал) Скрипт попахивает извращенствами, но работает. Чем хорош яндекс - он сам определяет твое местоположение, не надо каждый раз менять. PHP: wget -P `pwd` http://m.weather.yandex.ru/ -q weather=`cat index.html | egrep -o "<strong>.*,"` t=`echo $weather | egrep -o "[0-9]*"` z=`echo $weather | egrep -o "[+..-]"` nebulosity=`echo $weather | egrep -o "<p>.*</p>" | egrep -o "([а-я],?[[:space:]]?)*"` case $t in 1|21|31|41|51) word="градус";; 2|3|4|22|23|24|32|33|34|42|43|44|52|53|54) word="градуса";; *) word="градусов";;wget -P `pwd` http://m.weather.yandex.ru/ -q weather=`cat index.html | egrep -o "<strong>.*,"` t=`echo $weather | egrep -o "[0-9]*"` z=`echo $weather | egrep -o "[+..-]"` nebulosity=`echo $weather | egrep -o "<p>.*</p>" | egrep -o "([а-я],?[[:space:]]?)*"` case $t in 1|21|31|41|51) word="градус";; 2|3|4|22|23|24|32|33|34|42|43|44|52|53|54) word="градуса";; *) word="градусов";; esac if [ "$z" = "+" ] then t="Температура воздуха плюс $t $word" else t="Температура воздуха минус $t $word" fi echo "$t. $nebulosity" rm index.html esac if [ "$z" = "+" ] then t="Температура воздуха плюс $t $word" else t="Температура воздуха минус $t $word" fi echo "$t. $nebulosity" rm index.html 2drim Благодарю, одна проблема решена.
Непонял какя проблема решена и за что спасибо, За скрипт благодарю Насколько знаком с башем: & - исполнение следующий комманды по окончанию данной && - параллельное исполнение комманд И не пойму при чем тут sh #!/bin/bash echo "script" | at $1 -это для запуска основного скрипта в виде script 12:10 незабудь права посиавить раз из консоль работает значит заработает
Права на исполнение с самого начала повесил) И как запускать через at я знал, спасибо) Насчет & и && & - запуск команд в параллельном режиме, а && - запуск следующей команды в случае удачного завершения предыдущей, как то так. Вот тут про это есть http://ods.com.ua/koi/unix/bash-conspect.html sh убрал, плеер начал запускаться параллельно, я тогда это имел ввиду.