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

Я использую Ubuntu 10.04 и апплет gnome-do docky. По какой-то причине время от времени (иногда после одного, иногда после нескольких приостановок), когда я просыпаюсь от ожидания (я на ноутбуке, поэтому каждый раз, когда я закрываю экран между занятиями), gnome-do начинает пожирать ЦПУ. Попытка использовать кнопку выхода на gnome-do не работает, я должен убить -1 процесс.

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

Есть указатели? Спасибо!

4 ответа

Решение

Я полагаю, что вы можете поместить сценарий оболочки в /etc/pm/sleep.d/ который будет работать в режиме ожидания / гибернации / возобновления / оттаивания. Увидеть pm-suspend man-страница для получения дополнительной информации.

Я также рекомендовал бы попробовать гном-до из багажника (bzr branch lp:do) и посмотрим, исправит ли это. Если это так, мы можем посмотреть на получение целевого исправления как SRU.

Вы могли бы kill -s STOP <pid> до и kill -s CONT <pid> после. Это приостановит, а затем возобновит процесс, не давая абсолютно никаких циклов ЦП, пока компьютер начинает переходить в спящий режим и когда он просыпается. Это немного натянуто, но, возможно, это сработает.

Объедините это с Iain Lane's /etc/pm/sleep.d/ идея, и вы получили полностью автоматизированное решение.

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

Вы можете найти полное решение этой страницы: http://www.linux-compatible.com/tutorial/docky-closes-after-waking-suspend-ubuntu

Поместите скрипт в /etc/pm/sleep.d/, Имя файла должно начинаться с порядкового номера, 00-49 для пользовательских сценариев, и вы можете различать между приостановкой и пробуждением по аргументу, который будет передан в сценарий (для получения дополнительной информации об обоих см. man pm-suspend).

Убивая это, я предлагаю сделать

(killall -1 gnome-do; exit 0)

в сценарии. В противном случае, если вы попытаетесь приостановить и обработать gnome-do не работает, killall выйдет с кодом выхода 1, который отменит весь приостановить. Выше будет работать killall в под-оболочке, которая будет выходить с 0.

Если у вас возникли проблемы, проверьте /var/log/pm-suspend.log это будет регистрировать попытку запуска вашего скрипта и возможные проблемы.

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