Проснись и пой

Jan 18, 2011 13:37

Возникла потребность автоматически включать комп по утрам (а то жена плешь проела можно забыть включить, а потом с работы домой не зайдешь).

Почему-то по настройкам BIOS'а комп не хотел просыпаться (не стал выяснять, почему; предполагаю, из-за того, что комп обычно не выключен, а в режиме S3 (suspend to disk)). Нашел некий инструмент rtcwake, позволяющий управлять будильником из системы, а не из BIOS'а. Как обычно, записываю, чтобы самому не забыть. ;)

Обычно rtcwake переводит комп в указанный режим сна, предварительно сохраняя в RTC-устройстве желаемое время пробуждения, но можно, не усыпляя, просто установить время пробуждения.

Осталось только обеспечить такое задание времени пробуждение, как это делает at. А именно, если сказано проснуться в 10:00, то нужно ближайший момент, когда будет 10:00 (это может быть сегодня либо завтра). Однако rtcwake в отличие от at ведется себя довольно тупенько, поэтому надо ее обмануть:

rtcwake -m no -t $(date +%s -d 10:00) || rtcwake -m no -t $(date +%s -d '10:00 tomorrow')
Если 10:00 уже наступило, то первый вызов приведет к ошибке, и тогда сработает второй.

Еще нужно подумать, куда засунуть эту строчку. Можно периодически теребить cron'ом, но я решил засунуть этот вызов в скрипт, подвешенный на кнопку питания, непосредственно перед вызовом s2disk.

Ясно, что всё это не очень надежно (что будет, если нажать кнопку примерно в 10:00?), но уже вполне годится. Наверно более правильно делать wake-on-lan с точки доступа, которая всё время включена. Но для этого требуется прошивка, которая умеет слать wake-on-lan, имеет sshd, и может держать туннель на внешний сервер. Может быть когда-нибудь доберусь и до нее.

software, rtc, hardware, acpi

Previous post Next post
Up