Зачем?

  • Экономия электричества
  • Экономия ресурса HDD/SSD
  • Не нужно мониторить, что все еще ничего не сломалось
  • Тишина, если машина оснащена вентилятором и/или HDD

Как выключать?

Выполняем команду и будет выключаться в полночь:

echo "10 0 * * * root /sbin/poweroff" > /etc/cron.d/poweroff

Для отключения удаляем файл /etc/cron.d/poweroff.

В TrueNAS SCALE немного по другому: заходим в System Settings -> Advanced -> Cron Jobs -> Add (run as root, остальные настройки очевидны).

Как включать?

Самый удобный способ – послать “магический” пакет на сетевой интерфейс (по MAC-адресу, т.к. IP-адрес в это время еще недоступен). Для этого обе машины должны быть в одном сегменте сети.

Настройка клиента

Как поставить утилу на macOS (на остальные системы примерно так же):

brew install wakeonlan

Как запустить (7c:83:00:11:22:33 – MAC-адрес машины, которую нужно включить):

wakeonlan 7c:83:00:11:22:33

Для удобства сделал alias:

alias on_nas="wakeonlan 7c:83:00:11:22:33"

Настройка выключаемой машины

Проверьте есть ли в BIOS соответствующая настойка. Если есть, то включите.

Проверьте под root отработает ли команда без ошибок:

/sbin/ethtool -s eth0 wol g
netlink error: cannot enable unsupported WoL mode (offset 36)
netlink error: Invalid argument

– это как раз пример ошибки (Raspberry Pi 4 не поддерживает такое включение – для него только через умную розетку)

Если операционная система настраивается через Network Manager (Ubuntu и Rocky), то можно использовать следующие команды:

# получить список соединений, чтобы узнать точное имя
nmcli connection

# настроить включение WoL:
nmcli connection modify "Wired connection 2" 802-3-ethernet.wake-on-lan magic

Для TrueNAS SCALE:

  1. Имя сетевого устройства можно посмотреть в разделе Network -> Interfaces.
  2. Заходим в System Settings -> Advanced -> Init/Shutdown Scripts -> Add. Добавляем Post Init команду:
/sbin/ethtool -s enp2s0 wol g

Про выключение вышла новая статья (там еще несколько способов выключения): Удаленное выключение домашнего сервера.