Будим ваш компьютер с помощью заданий в планировщике

Материал из База знаний Linux.ру

Перейти к: навигация, поиск

Содержание

Вступление

Данная статья - одна из последних статей в серии про советы для опытных пользователей. Итак, у нас имеется довольно простая задача. Есть компьютер, вроде ноутбука, который погружается в "спящий режим" пока вы не работаете на нём. Допустим, на ночь. В то же время, вам хотелось бы запускать какие-то необходимые задачи связанные с обслуживанием системы, наподобие резервного копирования, или очистки системы, кои вы не можете выполнить днём. Таким образом, вам потребуется механизм могущий отправить вашу машину в сон, затем при необходимости разбудить, запустить все задачи из планировщика cron и по их завершению выключить компьютер снова.

Такое возможно? Ну, если б это было не так, то я не писал бы данное руководство, хотя это, определённо, не совсем тривиальная задача. Я расскажу вам, как сделать всё это наиболее простым и безопасным образом. Мы изучим необходимые для выполнения этой задачи требования. Также мы посморим на типичный пример использования. Ещё мы обсудим множество нюансов касающихся этой затеи, например, почему стоит быть крайне внимательным при использовании планировщика для просыпания, а также некоторые другие вещи.

Требования

Чтобы погрузить компьютер в спячку нам потребуется любая современная материнская плата с поддержкой ACPI и режимов засыпания. Всё это поддерживает любой дистрибутив Linux. Мы сможем воспользоваться режимами ожидания (S1) или сохранения в ОЗУ (S3) без каких-либо проблем, но для поддержки более расширенных режимов сна нам потребуется наличие современного BIOS.

Ещё нам потребуются разрешения уровня пользователя root или возможность выполнения команд используя sudo, иначе вы не сможете отправить систему в сон или, напротив, разбудить.

Инструмент для работы: rtcwake

Утилита rtcwake - встроенный в ядро инструмент, позволяющий использовать драйвер для RTC (Real Time Clock), поддерживающий стандартные флаги для просыпания. Rtcwake - утилита имеющая интерфейс командной строки, так что вы можете легко написать сценарий с нужными вам способами задействования программы, включая использование вместе с планировщиком cron. Чтобы узнать больше об этой программе, рекомендуем изучить справочную страницу man rtcwake.

Использовать rtcwake весьма просто. Например, вы хотите проверить мгновенное выключение вашей машины, а затем её включение через некоторые время:

rtcwake -m mem -s 180 

Что же мы тут сделали?

Флаг -m указывает на режим, который может принимать следующие значения: - режим ожидания, засыпание, засыпание на диск (hibernate), и включение компьютера. Флаг -s нужен для указания времени, сколько наш компьютер будет спать (в секундах).

Сей простой пример усыпит мой компьютер на три минуты, а затем разбудит его. Всё уже проверено и работает весьма надёжно. я бы даже записал небольшое видео того, как мой компьютер возвращается к жизни, дабы вы поверили, но думаю вы и так верите моим словам.

Как вариант, ещё можно использовать флаг -t,чтобы указать точное время для просыпания компьютера.

Предупреждение

Так почему использование rtcwake может быть небезопасным?

Существует множество причин, почему обычным пользователям следует быть внимательными при использовании данного инструмента. Во-первых - он требует привилегий суперпользователя root. Во-вторых - неправильное его использование может привести к тому, что потеряете свои данные. В-третьих - если ваше аппаратное обеспечение не поддерживает должным образом режимы засыпания, или одному из ваших драйверов не нравится когда его трогают, то всё может кончиться закрытием приложения или крахом ядра.

Далее, чтобы использовать rtcwake, необходима правильная настройка BIOS. Если у вас старый системный блок, и ваша батарейка на материнской плате уже готова вот-вот скончаться, то системное время и время между аппаратными часами будет сильно отличаться, что приведёт к засыпанию или просыпанию системы не в то время.

Вам также следует убедиться в том, особенно, если ваш компьютер является ноутбуком, что он не сварится как яйцо, находясь в сумке без вентиляции, или работая от батареи слишком долго, что приведёт к выключению или засыпанию на диск после запуска задачи.

Если вы всего этого избегаете, то всё будет хорошо.

Способы использования

Как ещё можно использовать rtcwake?

Вот я, например хочу, чтобы мой компьютер спал всю ночь, затем проснулся для короткой процедуры обслуживания и снова заснул до самого утра, после чего снова бы проснулся рано утром. Для этого у меня в планировщике имеется четыре задачи. Первая - синхронизация часов операционной системы с мировым временем используя ntp. вторая - синхронизация аппаратных часов с мировым временем. Третья - отправка компьютера в сон каждый вечер, а затем, используя rtcwake пробуждать её в нужное время позднее. Четвёртая задача запускается через несколько минут после запуска компьютера, и делает всё, что её необходимо. после выполнения всях задач она засыпает снова и просыпается уже утром.

Убедитесь, что вы оставили окно размером в несколько минут между моментом просыпания и запуском запланированной задачи, чтобы избежать проблем проблем связанных рассинхронизацией времени, особенно если знаете о том, что ваш BIOS может учудить.

Прочие вещи

И, наконец, вы сможете более тонко настроить вашу систему на засыпание и пробуждение используя BIOS, если, конечно, он это поддерживает. Более того, поработав с пакетом acpitool можно можно просмотреть и изменить значения там заложенные. Acpitool также позволяет отправлять моашину в режим ожидания, менять яркость жидкористаллического монитора, задавать скорость вентиляторов, и многое другое. И наконец, на старых версиях ядра можно использовать инструмент apmsleep вместо rtcwake.

Заключение

Вот мы и закончили. Теперь, вы моежете настраивать свои ноутбуки согласно своим потребностям без нажимания кнопки вкл/выкл. каждый раз, когда вам необходимо отправить машину в сон. Использование командной строки и различных сценариев позволит позволит вам полностью управлять вашим компьютером и сохранять электроэнергию без какого-либо человеческого вмешательства.

обратите внимание, что данный программно-аппаратный интерфейс немного непредсказуем, и поэтому могут возникнуть некоторые проблемы с драйверами или железом. Если у вас "битая" память, старый BIOS, сдохшая батарейка, нестабильно работающя машина или есть известные проблемы с засыпанием, приводящие к тому, что некоторые системные ресурсы не работают должным образом, то всё это означает, что вам следует избегать использования rtcwake или других аналогичных инструментов во избежание потерь данных и сбоев. Не забудьте всё просчитать, тогда вы не перегрузите вашу систему во время работы от батарей или пропустите какие-то запланированные задачи.

Теперь вроде всё.

Всего наилучшего.


Автор оригинального текста: Igor Ljubuncic

Перевод: r0g3r