RTCWake не будит Ubuntu Server
Добрый день,
Я переключился с сервера Windows на сервер Ubuntu, и мне удалось воспроизвести все элементы, которые у меня были на старом сервере, за исключением спящего режима.
В настоящее время у меня установлен Ubuntu Server 16.04.2 LTS, и я просто не могу заставить его работать, используя скрипт crontab.
с помощью:
sudo rtcwake -u -s 120 - mem
заставляет компьютер спать 2 минуты, чтобы я знал, что система способна спать и просыпаться, но попытка перенести это в скрипт мне трудна, так как это все новое, и мои знания об Ubuntu/Linux в настоящее время очень ограничены. поэтому не могли бы вы потратить 2 минуты, чтобы посмотреть, что я сделал на данный момент, пожалуйста.
Команды, которые я выполнил до сих пор:
sudo crontab -e
затем добавили эту строку в конце, чтобы протестировать эту функцию:
30 19 * * * /home/andy/suspend_until 19:45
В файле suspend_until есть:
#!/bin/bash
# Auto suspend and wake-up script
# Argument check
if [ $# -lt 1 ]; then
echo "Usage: suspend_until HH:MM"
exit
fi
# Check whether specified time today or tomorrow
DESIRED=$((`date +%s -d "$1"`))
NOW=$((`date +%s`))
if [ $DESIRED -lt $NOW ]; then
DESIRED=$((`date +%s -d "$1"` + 24*60*60))
fi
# Kill rtcwake if already running
sudo killall rtcwake
# Set RTC wakeup time
# N.B. change "mem" for the suspend option
# find this by "man rtcwake"
sudo rtcwake -l -m mem -t $DESIRED &
# feedback
echo "Suspending..."
# give rtcwake some time to make its stuff
sleep 2
# then suspend
# N.B. dont usually require this bit
#sudo pm-suspend
# Any commands you want to launch after wakeup can be placed here
# Remember: sudo may have expired by now
# Wake up with monitor enabled N.B. change "on" for "off" if
# you want the monitor to be disabled on wake
xset dpms force on
# and a fresh console
clear
echo "Good morning!"
Кредит RedgeOnline
Затем: chmod +x suspend_until
Сервер перешел в режим ожидания в 19:30, но так и не проснулся.
Любая помощь высоко ценится
Заранее спасибо за ваше время
Энди
2 ответа
В вашей команде тестирования:
sudo rtcwake -u -s 120 -m mem
-u
вызывает, что rtcwake предполагает, что часы вашего компьютера (в BIOS) установлены на время UTC. Однако при тестировании на относительное время (в данном случае 120 секунд) на самом деле не имеет значения, в какое время установлены часы, поэтому оно все равно работает.
Скрипт, который выполняется cron, использует -l
опция, заставляющая rtcwake предполагать, что часы вашего компьютера установлены на местное время.
В любом случае, вы должны быть последовательны, какой вариант вы используете, и вы должны проверить ваши фактические настройки BIOS. Чтобы протестировать rtcwake с абсолютным временем, используйте опцию -t:
sudo rtcwake -m mem -l -t $(date +%s -d ‘today 19:45’)
где я предположил, что часы вашего компьютера установлены на местное время.
ура
Вы также можете приостановить и разбудить вашу систему, используя systemd, как описано здесь: Запланированное приостановление и возобновление с systemd
Однако systemd доступен только в Ubuntu начиная с версии 15.04.
ура