Запускать скрипт при пробуждении? [дубликат]

Есть ли способ запустить сценарий, когда компьютер «просыпается» (из спящего режима)? Я знаю, что это можно сделать при запуске, очевидно, но проблема в этом случае заключается в том, что подсветка моего ноутбука, кажется, сбрасывается каждый раз, когда он выходит из спящего режима, и в идеале я бы хотел, чтобы сценарий позаботился о ее включении. до разумного уровня вместо того, чтобы каждый раз вводить его вручную.

52
задан 7 December 2012 в 00:18

4 ответа

pm-utils предоставляет набор скриптов, которые запускаются в спящем режиме / возобновлении работы, вы можете добавить туда свой скрипт, но вам нужно быть осторожным, так как ошибка, скорее всего, нарушит возобновление. Посмотрите в /usr/lib/pm-utils/sleep.d , там находятся скрипты, вы можете посмотреть скрипт под названием 95led , поскольку он довольно простой и будет хорошим модель для начала.

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

#!/bin/sh

case "$1" in
    resume)
        echo "hey I just got resumed!"
        run_some_command
esac

Ваш сценарий, вероятно, должен запускаться последним, поэтому убедитесь, что он отображается до последнего в каталоге,может быть, назовите его 99ZZZ_myscript или что-то в этом роде. Опять же, если вы не уверены, что делаете здесь, я бы не стал с этим связываться. Вы можете прервать приостановку / возобновление. Если это произойдет, вы можете удалить сценарий или исправить его, но вам придется выполнить полный цикл включения питания, чтобы восстановить вашу систему.

Может быть и более простой способ, но я знаю, что этот метод сработает.

39
ответ дан 7 December 2012 в 00:18

В 15.04, Vivid, вам нужно разместить ваши скрипты в:

/lib/systemd/system-sleep/

Пример скрипта, основанного на одном из Arch wiki (systemd sleep Hooks):

#!/bin/sh
case $1/$2 in
  pre/*)
    echo "Going to $2..."
    # Place your pre suspend commands here, or `exit 0` if no pre suspend action required
    ;;
  post/*)
    echo "Waking up from $2..."
    # Place your post suspend (resume) commands here, or `exit 0` if no post suspend action required
    ;;
esac

Не забудьте сделать ваш скрипт исполняемым!

sudo chmod a+x /lib/systemd/system-sleep/your-script

Смотрите man systemd-sleep для получения более подробной информации.

Нет необходимости в sudo, так как ваш скрипт будет запущен как root.

Примечание: ссылка Arch wiki на эту тему (systemd sleep hooks) заявляет (неправильно для 15.04), что вы должны поместить свои скрипты в /usr/lib/systemd/system-sleep/, но это не сработает в Ubuntu 15.04. Поместите свои скрипты в /lib/systemd/system-sleep/, если вы выполняете 15.04.

51
ответ дан 7 December 2012 в 00:18

Поскольку у меня недостаточно репутации, чтобы писать комментарии, я перепишу решение от mfisch, добавив ответ для Lindh-E:

РЕШЕНИЕ:

pm-utils предоставляет набор сценариев, которые запускаются в спящем режиме / возобновлении работы.

Вам необходимо:

  1. Создать сценарий с именем 99MyScript.sh (99 позволяет запустите его после других сценариев)
  2. Добавьте свой сценарий в /usr/lib/pm-utils/sleep.d
  3. Назначьте право выполнения: sudo chmod + x / usr / lib / pm-utils /sleep.d/99MyScript.sh[1277 providedTest it :)

ПРЕДУПРЕЖДЕНИЕ:

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

ПРИМЕР:

Посмотрите существующие сценарии в / usr /lib/pm-utils/sleep.d. Скрипт под названием 95led довольно прост и будет хорошей моделью для начала. 95led предоставляет варианты для гибернации / приостановки и размораживания / возобновления, если вы хотите только возобновить работу, вы должны написать свой сценарий следующим образом:

#!/bin/sh

case "$1" in
    resume)
        echo "hey I just got resumed!"
        run_some_command
esac
11
ответ дан 7 December 2012 в 00:18

На самом деле это не отдельный независимый ответ, но поскольку я не могу комментировать (из-за ограничения репутации), я просто хотел бы добавить важное дополнение к ответу mfisch, которое также сработало для меня.

Обратите внимание, что HOME и PATH (и, вполне возможно, другие переменные среды), вероятно, не будут такими же, как ваша обычная среда оболочки. У меня были проблемы с решением mfisch, которое, похоже, не работало для сценариев, которые мне нужно было выполнить при возобновлении, но оказалось, что это были мои сценарии, поскольку они ожидали, что HOME будет установлен в моем каталоге пользователя (я Я один пользователь в моей системе) и для ПУТЬ , чтобы включить / usr / local / bin , и в момент возобновления, ни то, ни другое не гарантируется (и в случае of HOME , возможно, не рекомендуется). Так что вам, возможно, придется адаптировать ваши скрипты / программы, чтобы они не зависели от этих env-vars ...

6
ответ дан 7 December 2012 в 00:18

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

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