Как запустить скрипт / команду на приостановке?
Я использую 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
это будет регистрировать попытку запуска вашего скрипта и возможные проблемы.