Всем трудно встающим по утрам посвящается (вольный перевод отсюда). Это, пожалуй одно из простых и эффективных использований подручных shell скриптов в повседневной жизни. Дано: компьютер с установленным unix (linux), звуковой картой и колонками, bash (думаю, под другие shell адаптировать скрипт будет довольно просто).
Итак, создаём скрипт wakeup.sh в домашнем каталоге:
#!/bin/bash echo "Запускаемся..." mpg123 /путь/к/хорошей/музыке/* & for (( i = 1; i <= 100; i++ )) do echo "Устанавливаем громкость в $i" setmixer vol $i echo "Ждём 10 секунд..." sleep 10s done
Простенько и со вкусом. Запускается плеер и каждые 10 секунд увеличивается громкость. Добавляем запись в ваш crontab:
0 11 * * * /home/foobar/wakeup.sh
если хотите побудку в 11 утра.
Если есть проблемы с подбором музыки – рекомендуется Enya, хорошо подходящая для этой цели. Эксперименты с тяжёлой музыкой показали, что её хочется просто выключить и спать дальше. Мягкое пробуждение всё же лучше.
Можно ещё придумать функцию “snooze” – требовать от пользователя ввода какого-нибудь осмысленного кода для остановки процесса побудки.
А ещё можно хвастаться, что у меня дома, мол, самый дорогой будильник!
А где deb-пакет? =)
что-то не получается 🙁 музыка воспроизводится, а вот громкость не меняется…
wakeup.sh: 7: Syntax error: Bad for loop variable
я чего-то не понял или сделал не так?
Может вместо крона было бы логичнее в данной ситуации использовать at?
Можно и at. Это если разово. А если каждый день? Крон тем и хорош, что можно поставить разное время для выходных и для трудовых будней 🙂
wakeup.sh: 7: Syntax error: Bad for loop variable
седьмая строка – for (( i = 1; i <= 100; i++ )) do
Не знаю, не знаю: у меня всё работает. Видимо проблемы “на вашей стороне” 😉
важно использовать
#!/bin/bash
хм… а я решил проблему проше
ogg123 bell.ogg в кроне каждые 5 минут.
правда есть опасность встать и выключить звук вообще.
эххх… вот если бы были комповые колоночки управляющиеся ремотно с него-же… да ещё и программно… да ещё и из шелла…
тогда твоё решение было бы действительно удобным.
Я вот всё вынашиваю коварные планы сделать IR-управление колонками с компьютера – чтобы можно было под музыку засыпать, а потом чтобы комп по крону выключал колонки.
А вот это уже интересно =)
Максимум чего я добился – управление mpd через bluetooth.
хотелось бы посмотреть на другие способы реализации =)
Засунуть плеер в крон или at – это все само собой разумеется.
Но я привык на ночь закрывать крышку ноута (sleep), как бы под Линухом разбудить комп из sleep? Под виндой с этим проблем нет – есть как готовый софт так и нужные функции в kernel32.dll
Наверняка сказать не могу — не занимался, но думаю, что в ACPI есть какая-нибудь функция на эту тему.
Решил немного модернизировать 😉 вот что получилось
#!/bin/bash
amarok > /dev/null 2>&1
setmixer vol 1
dcop amarok player play
MSG=`dcop amarok player nowPlaying`
echo “Играет: $MSG”
for ((a = 1; a = 1; i– )) do
clear
echo “Устанавливаем громкость в $i”
MSG=`dcop amarok player nowPlaying` && echo -en “Играет: \33[36m $MSG \33[0m ”
setmixer vol $i
sleep 0.2s
done
done
killall amarokapp
Импровизировать можно до бесконечности 🙂
Спасибо большое! Непременно воспользуюсь вашим скриптом.
Прямо в ближайшее время :-Р
Я рекомемендую до запуска плейера обнулить общесистемный звук, так как старое значение может быть слишком громким. А вместо setmixer`а я использую “aumix -v(или -w) $i”. А вообще идея отличная!
“sleep 8h; cat /dev/urandom > /dev/dsp”
(настоящий будильник юниксоида)
было на кулере
ищем-качаем
kukushka-clock-0.4.0-1.src.rpm
собственно там примерно то же, только кукует хорошо и треем привода дергает… опуская вопрос износа трея привода – довольно прикольный будильник получается 🙂
А вот ещё башорговский вариант:
[00:20:50] sleep `echo 6*60|bc` && while true; do eject -T; done
[00:20:50] будильник линуксоида на через 6 часов
[00:23:18] vo11mond всем до eject’a
[00:28:44] ну я и чудак
[00:29:24] sleep 6h && while true; do eject -T; done
[00:29:31] хорошо поспал 6 минут)