Запустить скрипт с пользовательским взаимодействием при выходе из системы / завершении работы?

4

Я хотел бы запустить сценарий при выключении, который прерывает процесс выхода и всплывает окно с zenity . Моя цель - получить autofsck работу с lightdm. Кажется, что он работает с 12.04 после установки старого файла * .deb, если запустить скрипт проверки вручную. Чтобы использовать его, он должен автоматически запускаться при выходе из системы и спрашивать пользователя, хочет ли он / она проверить диск при завершении работы.

В файле session-cleanup-script есть опция /etc/lightdm/lightdm.conf , которая, похоже, работает, если используется файл bash с полным путем (я не могу поместить команду прямо там). Но если я нажму на остановку, нет времени для выбора пользователя.

Есть ли другой вариант для решения этой проблемы?

Изменить: Похоже, что с AutoFsck есть и другие проблемы. Выполняется сеанс очистки сценария, но команда проверки для AutoFsck выполняет not .

    
задан lumbric 17.06.2012 в 16:21
источник

1 ответ

1

Я считаю, что ваш вопрос о выключении / выключении (более-менее) ответил здесь:

Если вы посмотрите на предоставленные там ответы (ответы), я хотел бы настроить / уточнить / подытожить, что вам, вероятно, нужно обоим, использовать сценарий очистки сеанса, чтобы X не умер, прежде чем вы сможете ответить и запустить задание , и новый, небольшой скрипт /etc/init.d/ на достаточно высоком уровне выполнения, чтобы "заблокировать", до тех пор, пока скрипт сценария сеанса, вызванный сценарием AutoFsck, не завершится.

Таким образом:

  1. Добавить в скрипт-очистку-скрипт, устанавливающий флаг через ' touch /etc/noreboot ' (или аналогичный), который очищается вашим скриптом вызова AutoFsck (т.е. удаляет файл / etc / noreboot при ответе нет или , если да, удаляется только после завершения AutoFsck) .

  2. Ваш новый скрипт /etc/init.d должен проверить наличие / etc / noreboot, и если он существует, повторите проверку каждую секунду или две в цикле while, пока файл не будет удален. Как только /etc/noreboot не существует, скрипт может завершить и разрешить оставшуюся часть процесса останова. Опять же, ключ здесь заключается в том, чтобы убедиться, что скрипт init.d запускается до выключения lightdm или запуска любого другого X.

Так как X все еще должен работать, пока скрипт проверки /etc/noreboot в init.d запущен, вы также можете отправить на экран сообщение X, в котором говорится, что выключение блокируется в ожидании удаления файла. Это небольшое неприятное сообщение может пригодиться, если файл /etc/noreboot по какой-либо причине не очищается, что предотвращает изящное завершение вашей системы.

    
ответ дан Andrew 23.09.2014 в 23:06