Расписание сна и пробуждения | Ubuntu 16.04.3 LTS
Я искал решения, которые позволили бы моему компьютеру засыпать в 1:00 по восточному поясному времени и просыпаться в 18:00 по восточному поясному времени каждый день. До сих пор я был неудачным.
Я попытался использовать rtcwake и cronjobs, а также скрипт здесь:
Автоматически возобновить из режима сна / ожидания / приостановки | Форумы Ubuntu
Даже на других форумах я не мог заставить это работать.
Был бы очень признателен за помощь.
PS У меня включено шифрование диска, поэтому я не могу использовать Hybernate.
3 ответа
С терминала:
Приостановить и проснуться через 60 секунд:
sudo rtcwake -m disk -s 60
Приостанови и проснись сегодня 16.00
sudo rtcwake -m no -l -t "$(date -d 'today 16:00:00' '+%s')"
Приостановить и проснуться завтра 10.00:
sudo rtcwake -m no -l -t $(date +%s -d 'tomorrow 10:00')
Приостановить и разбудить конкретную дату и время:
sudo rtcwake -m no -l -t "$(date -d '2017-04-25 16:00:00' '+%s')"
Чтобы выключить для использования обслуживания:
sudo shutdown -P +60 "The system is going DOWN to maintenance mode in 60 minutes!"
sudo shutdown -P 22:10 "The system is going DOWN to maintenance mode at 22:10!"
Использование Autopoweroff:
Скачать Autopoweroff:
wget https://github.com/deragon/autopoweroff/releases/download/3.0.0/autopoweroff-3.0.0-1.noarch.deb
Установите Autopoweroff:
sudo dpkg -i autopoweroff-3.0.0-1.noarch.deb
sudo apt-get install -f
Сценарий, которому вы следуете, слишком сложен. Более простой метод описан здесь.
Перед полной реализацией 1:00 и 6:00, вы можете сделать простой 10-секундный тест:
sudo rtcwake -m mem -s 10 && firefox
Этот тест обеспечит работоспособность приостановки в ОЗУ. После возобновления firefox
автоматически запускается.
Вместо того, чтобы возиться с UTC, rtcwake
команда вызвана из cron
в 1 час ночи и просыпаюсь 18000
секунд спустя Ваша запись в таблице cron будет выглядеть примерно так:
0 1 * * * sh /usr/sbin/rtcwake -m mem -s 18000 >> /home/Me/SuspendResume.log 2>&1
Там нет необходимости sudo
префикс, потому что cron
работает с привилегиями sudo.
замещать Me
с вашим именем пользователя. Проверьте файл SuspendResume.log
для сообщений cron периодически и всякий раз, когда возникает проблема. 2>&1
опция перенаправляет сообщения об ошибках в .log
файл.
Предостережения
- RTC обозначает часы реального времени. rtcwake использует аппаратные часы вашего компьютера, которые вы можете установить в BIOS, чтобы определить, когда ваш компьютер проснется. Если вы используете старый компьютер с умирающей батареей CMOS, которая не может правильно работать, это не сработает.
- Если режим сна, приостановка в ОЗУ или спящий режим не работают должным образом с вашей системой Linux - возможно, из-за того, что в Linux нет драйверов для их правильной работы с вашим оборудованием - это может не сработать.
- Будьте внимательны при настройке ноутбука на автоматическое включение в определенное время. Вы не хотели бы, чтобы он просыпался, работал и перегревался или разряжался в сумке для ноутбука.
Я хотел, чтобы мой компьютер засыпал в 23:59 по местному времени каждую ночь и просыпался каждое утро в 9:00.
И я знаю, что cronjobs может помочь в этом.
Я использовал инструмент (такой как https://cron.help/#59_23_*_*_*), чтобы показать мне, что правильный синтаксис для расписания перехода в сон, которое я хочу, это <tcode id="43061"></tcode>.
А потом мне нужно было посчитать, сколько секунд должен длиться сон: 9:00 — это 9 часов + 1 минута после 23:59. (9 * 60 + 1) * 60 = 32460 секунд
Так что я побежал
crontab -e
для редактирования заданий cron через vim и добавил эти 2 строки:
# inspired by https://askubuntu.com/a/1348204/48214 and https://askubuntu.com/a/1012051/48214 and https://itectec.com/ubuntu/ubuntu-automatically-sleep-and-wake-up-at-specific-times/
59 23 * * * /usr/sbin/rtcwake -m disk -s 32460 >> /code/cron.log 2>&1
И я сохранил файл.
rtcwake
.
Поэтому вместо этого то, что я использую сейчас, только приостанавливает мой компьютер по расписанию, и я еще не понял, как запланировать пробуждение:
59 23 * * * echo "$(date) Running /usr/local/bin/systemctl-suspend" >> /code/cron.log && /usr/local/bin/systemctl-suspend >> /code/cron.log 2>&1
который я получил от https://unix.stackexchange.com/a/642533/48973.