Простой «будильник» rtcwake + cron

/www/pages/modesco/ubuntovod

Внимание, всё выполнялось под Ubuntu версии 12.04 (но это не факт, что на других версиях не будет идентично всё).

Так случилось, что я перестал просыпаться от звука будильника в телефоне... Слишком он тихий, чтобы разбудить меня. 🙂 Тогда на смену ему пришёл cron (конечно можно было и готовый будильник скачать, но это не мой путь, т.к. по натуре русского характера я).

И так...

ШАГ 1:

Для начала я создал скрипт для запуска трека утром alarm.sh. Вот его содержимое:

#!/bin/sh
audacious `/home/user/просыпайся мой друг.mp3` #вместо user - введите своё имя уч.записи, вместо "просыпайся мой друг.mp3" - ваш файл расположенный в домашней папке

Вместо audacious - можно выбрать любой другой проигрыватель, хоть даже mplayer. И поместил его в папку ~/my_scripts/.

После чего сделал его исполняем:

chmod +x ~/my_scripts/alarm.sh

ШАГ 2:

Затем пришла очередь назначить время запуска скрипта. 🙂 Вот и пришёл на выход крон. 🙂

crontab -e

При первом запуске он попросит выбрать текстовый редактор по умолчанию (я выбрал nano).

И так... Открывается планировщик заданий. В конце файла вписываем:

DISPLAY=:0 # Это обязательный параметр, из-за него не запускался мой скрипт. Он означает на каком дисплее запустить его. Мучался до 4 утра с ним :) Пока после введёной строчки всё не заработало
 
30 6 * * * ~/my_scripts/alarm.sh #время и путь к нашему скрипту

Эта запись означает, что каждый день в 6:30 утра будет запускаться наш скрипт "будильника". Более подробно можете почитать в интернете о планировщике cron.

После чего, если вы использовали редактор nano (эх... Люблю я его). Зажимаем crtl+o и нажимаем Enter. Это сохранит наше расписание. Теперь зажимаем ctrl+x, чтобы выйти из редактора.

Мы получаем сообщение: crontab: installing new crontab. Это говорит о том, что расписание установлено.

Ну вот уже будильник у нас есть! 🙂

ШАГ 3:

На этом можно было и остановится... Но вот шум компьютера меня несколько раздражает ночью... И так... Немного порывшись в интернете, я наткнулся на утилиту rtcwake (если я не ошибаюсь, она по-умолчанию уже установлена) в Ubuntu.

И так запускаем её с парметрами:

sudo rtcwake -m mem -t `date +%s -d 06:29`

Подробней об утилите rtcwake:

man rtcwake

После чего компьютер перейдёт в состояние S3, т.е. сам будет выключен, но питание будет подоваться на оперативную память. И включится в 6:29 утра. После чего по крону запустится наша песня. 🙂

ШАГ 4:

Итак! 🙂 Меня немного настораживало постоянно вводить команду "sudo rtcwake -m mem -t `date +%s -d 06:29`". Захотелось это дело упростить. 🙂 Тогда я создал ещё один скрипт sleepandwakeup.sh и закинул его в папку ~/my_scripts/.

Вот содержимое скрипта sleepandwakeup.sh:

#!/bin/sh
 
if [ -n $1 ]; then
sudo rtcwake -m mem -l -t $(date +%s -d $1)
else
echo ""
echo "не указано время пробуждения"
echo ""
echo ""
echo "ПРИМЕР ИСПОЛЬЗОВАНИЯ:"
echo "./sleepandwakeup.sh 7:00"
echo ""
echo "чтобы усыпить и разбудить компьютер в 7:00"
fi

После чего делаем его исполняемым:

chmod +x ~/my_scripts/sleepandwakeup.sh

Но он не заработал должным образом, т.к. требовалось ввести пароль, для запуска rtcwake. Поэтому нам потребовалось отключить запрос пароля суперпользователя для rtcwake. Поэтому запускаем visudo:

sudo visudo

И добавляем таку строчку:

%user_name ALL = NOPASSWD: /usr/sbin/rtcwake

Где user_name - имя вашего пользователя. После чего поочерёдно ctrl+o, enter, ctrl+x.

Ну вот и всё. 🙂 Теперь мы можем отправлять компьютер поспать введя команду в терминале:

~/my_scripts/sleepandwake.up 6:29

Но это мне показалось тоже неудобным. Поэтому я решил добавить ссылку на наш скрипт:

sudo ln -s ~/my_sripts/sleepandwakeup.sh /usr/bin/sleepandwakeup

Теперь компьютер можно оправлять спать просто введя в терминале:

sleepandwakeup 6:29

Чтобы изменить время будильника, меняем дату в crontab.

Ну вот вроде и всё. 🙂 Конечно можно было бы ещё модифицировать скрипт sleepandwakeup - чтобы он и время будильника сразу менял, но пока ещё руки не дошли.

Это 1-ая моя статья, поэтому старался всё максимально подробно описать (в частности того, что нужно). В интернете вы подробнее можете узнать об cron и rtcwake.

Готовитесь к лету? Хотите держать в хорошем состоянии свой сад и огород? Магазин строительной техники ИНГРИН поможет вам в этом, предлагая самую лучшую садовую технику по очень приятным ценам. Настоящий садовод оценит хороший выбор в магазине.

exromany
2012-10-16 01:14:00
Не знаю как остальные, а я часто меняю уровень громкости звука программно, и почти не трогаю громкость на динамиках. И чтобы нормализовать звук по утрам (вдруг вечером выкрутил звук в 0 или на полную), перед вызовом любимого плеера идет команда `pactl set-sink-volume '0' 19000` (0 - номер устройства, 19000 - громкость от 0 до 65536, подробности в интернетах)
Сергей Белозёрцев
2012-10-16 02:58:00
спасибо :) Модернизировал ещё себе скрипт, а то забываю иногда громкость набавить :)
Сергей Белозёрцев
2012-10-16 03:26:00
Я ещё бы добавил pactl set-sink-mute '1' 0 - вдруг звук выключен :)