Как запустить сценарий перед приостановкой?

Я хочу запустить задание cron для очистки файлов для временного пользователя на рабочем столе Ubuntu 20.04. Поскольку система не будет регулярно полностью отключаться (для чего я мог бы просто использовать @reboot /path/to/my_script.sh), есть ли способ запланировать выполнение задания cron, когда компьютер приостановлено? Все, что я вижу в Google, связано с запуском заданий cron, когда компьютер приостановлен, но я бы хотел использовать приостановку или пробуждение в качестве триггера для этого задания cron.

0
задан 2 April 2021 в 00:17

2 ответа

Такой триггер не предназначен для cron. Cron - это триггер на основе часов. @reboot - это удобство, добавленное в cron.

Одним из решений для приостановки / удаления заданий является управление питанием.

  • См. man pm-suspend
  • Поместите свою работу в каталог /etc/pm/sleep.d/.
  • Это не работа cron. Вы помещаете в каталог полные скрипты.

Используйте case , чтобы определить, что происходит во время сна и что происходит при возобновлении:

case "${1}" in
   suspend)
      suspend_actions
      ;;
   resume)
      resume_actions
      ;;
esac

Другое аналогичное решение - использовать systemd .

  • Основное отличие заключается в использовании / lib / systemd / system-sleep / вместо /etc/pm/sleep.d/

. Оба этих метода, возможно, можно считать немного взломанными: не используйте их для реальных приложений, а также длительных задержек до приостановки. Вместо этого используйте запрет .

1
ответ дан 23 April 2021 в 23:28

Альтернативный ответ с использованием systemd

Создайте файл /lib/systemd/system-sleep/my_script.sh со следующим содержанием:

#!/bin/bash
case $1/$2 in
    pre/*)
    # commands to be executed before suspend, hibernate, etc. goes below
    echo "This example does nothing"
    ;;
    post/*)
    # commands to be executed on wake, resume, etc. goes below
    echo "Nothing to see here"
    ;;
esac

Отредактируйте и добавьте команды, необходимые для добавьте вместо строк, начинающихся с echo выше. Сохраните файл и сделайте его исполняемым. См. Как сделать файл (например, сценарий .sh) исполняемым, чтобы его можно было запускать с терминала для получения дополнительной информации.

Надеюсь, это поможет

0
ответ дан 23 April 2021 в 23:28

Другие вопросы по тегам:

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