Для этой цели я создал сценарий оболочки, используя команды systemctl suspend
и rtcwake
для управления питанием.
При запуске он будет работать в цикле (15-минутные циклы):
проверка времени и дня недели,
определение времени пробуждения
проверка, следует ли приостановить работу прямо сейчас
#!/bin/bash
while [ 1=1 ]; do # repeat forever
clear
echo "Updated: $(date '+%F %T')"
echo "### TIME SECTION"
SLEEP_H=18 # What hour should the system suspend at?
WAKE_H=8 # What hour should the system wake up at?
# check what day of the week it is now
DOW=$(date +%w) # 1 = monday, 5 = friday etc.
echo "Day of week: $DOW"
# check what time is it now
H=$(date +%H)
M=$(date +%M)
NOW_S=$(date +%s)
echo "Hour: $H, minute: $M"
#date +%s --date "tomorrow 8:00"
if [[ $DOW -lt 5 ]]; then
echo "It's Monday to Thursday!"
WAKE="tomorrow $WAKE_H:00"
else
echo "It's Friday to Sunday!"
WAKE="monday $WAKE_H:00"
fi
WAKE_S="$(date --date "$WAKE" +%s)"
WAKE_SR=$(( $WAKE_S - $NOW_S))
echo
echo "Wake: $WAKE"
echo "Wake relative seconds: $WAKE_SR"
echo
rtcwake -m no -s "$WAKE_SR"
# sleep section
sleep 15m
echo "### SLEEP SECTION"
if [[ $H -gt $SLEEP_H ]]; then # sleep if the hour is right
systemctl suspend
continue
else
echo "It's too early to sleep"
fi
if [[ $DOW -gt 5 ]]; then # sleep if it's saturday or sunday
systemctl suspend
continue
else
echo "It's not weekend - gotta stay up!"
fi
done
Этот сценарий настроен на пробуждение системы с понедельника по пятницу в 8:00 и засыпание в 18:00.
Он будет спать по выходным и по ночам. Не стесняйтесь изменять его в соответствии с вашими потребностями.
Я храню этот скрипт в /root/power-schedule.sh
. Убедитесь, что он исполняемый:`sudo chmod +x /root/power -schedule.sh'
Также поместите скрипт в crontab со временем @reboot
, чтобы убедиться, что внезапное отключение электроэнергии не нарушит ваше расписание.
Выполнить:
sudo crontab -e
И добавьте эту строку:
@reboot exec /root/power-schedule.sh
Вы также можете настроить UEFI/BIOS таким образом, чтобы машина включалась при обнаружении питания переменного тока -это заставит ее загружаться после отключения питания (вместо того, чтобы оставаться выключенной -, что обычно это поведение по умолчанию ).