Выключение сервера через 24 часа в режиме приостановки работы

Команда findочень старая, начиная с Unix V5 . В то время соглашения о синтаксисе командной строки не были так прочно установлены, как сейчас. Несколько старых программ отклоняются от этих соглашений.

Изначально у findне было опций. Он ожидал, что первый аргумент будет каталогом для обхода, а остальные аргументы будут выражением. Вычисление выражения для каждого файла указывает, должен ли этот файл быть напечатан (или, в более общем смысле, указывает, что делать с файлом ). Выражение состоит из операторов и их операндов. Операторы поиска начинаются с -(, за исключением нескольких знаков препинания, )по той же причине, что и опции начинаются с -:, потому что он не имеет особого значения в оболочке, поэтому его легко набирать, но его можно отличить от файла. имена, потому что разумные люди не начинают имя файла с -.

Операторы не являются опциями. Почему? Потому что у них нет синтаксиса опций… У них есть написание опций (, начинающееся с -), но они используются в другом контексте.

Позже findприобрел несколько вещей, которые можно было считать опциями — глобальные настройки, такие как -depth, которые на самом деле не имеют никакого отношения к выражению.Они были помещены в выражение для согласованности, потому что у findне было вариантов.

Еще позже findприобрел несколько опций, с обычным синтаксисом опций :опций перед не -опциями. Это было сделано для совместимости со многими другими программами, которые поддерживают те же параметры(-Hи -Lдля настройки поведения символической ссылки ).

Синопсис говорит вам, что -H, -Lи тому подобное может идти первым, затем путь (s ), затем выражение. Синтаксис синопсиса не всегда может выразить все возможности. Если бы он был полным, он был бы нечитаем, поэтому все, что вы знаете, это то, что он дает одну возможность. Вам нужно читать дальше, если вы хотите точно знать, что возможно, а что нет. Например, -H, -Lи т. д. могут идти в любом порядке, если они стоят перед путем.

1
27.10.2019, 21:53
1 ответ

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

Возможное решение:

  • Настройте BIOS на пробуждение каждый день в заданное время
  • Добавьте сценарий /etc/pm/sleep.d, который будет вызываться с помощью thawили resume.
  • Этот скрипт проверяет файл маркера(touch /run/wakeuptime)и :.
    • файл маркера существует, и ему уже 24 часа (*):переход в спящий режим
    • иначе создать маркер(touch /run/wakeuptime)и приостановить

В идеале вы можете указать BIOS просыпаться только в том случае, если система находится в S3, и оставить ее в спящем режиме, если в S4.

(*)для этого я бы использовал [[ -n $(find /run -maxdepth 1 -path /run/wakeuptime -mmin -1440) ]].

0
27.01.2020, 23:58

Теги

Похожие вопросы