Запустить скрипт с взаимодействием с пользователем при выходе из системы / выключении?
Я хотел бы запустить скрипт при выключении, который прерывает процесс выхода из системы и открывает окно с zenity, Моя цель - заставить autofsck работать с lightdm. Кажется, он работает с 12.04 после установки старого файла *.deb, если запустить скрипт проверки вручную. Чтобы использовать его, он должен автоматически запускаться при выходе из системы и спрашивать пользователя, хочет ли он / она проверить диск при выключении.
Есть вариант session-cleanup-script в файле /etc/lightdm/lightdm.conf что, кажется, работает, если используется bash-файл с полным путем (я не могу разместить команду прямо там). Но если я нажму на выключение, у пользователя не будет времени.
Есть ли другой вариант, чтобы решить эту проблему?
Изменить: Кажется, как будто есть и другие проблемы, особенно с AutoFsck. Сценарий очистки сеанса выполняется, но команда проверки для AutoFsck не выполняется.
1 ответ
Я считаю, что на ваш вопрос о выключении / отключении питания (более или менее) ответили здесь:
Глядя на ответ (ы), предоставленные там, я хотел бы настроить / уточнить / обобщить, что вам, вероятно, нужны оба, чтобы использовать сценарий очистки сессии, так что X не умрет, прежде чем вы сможете ответить и запустить задание, и новый, маленький /etc/init.d/ сценарий на достаточно высоком уровне выполнения, чтобы "блокировать" завершение работы до тех пор, пока сценарий очистки сессии не вызовет сценарий AutoFsck.
Таким образом:
Добавьте в session-cleanup-script установку флага через '
touch /etc/noreboot'(или аналогичный), который очищается вашим скриптом вызова AutoFsck (т. е. удалить файл /etc/noreboot, если ответ нет, или, если да, удалить только после завершения AutoFsck).Твой новый
/etc/init.dскрипт должен проверять наличие /etc/noreboot и, если он существует, проверять каждую секунду или две в цикле while, пока файл не будет удален. однажды/etc/norebootне существует, сценарий может завершиться и позволить продолжить процесс завершения работы. Опять же, ключ здесь заключается в том, чтобы убедиться, что скрипт init.d запускается до завершения работы lightdm или любого другого отключения X.
Поскольку X все еще должен работать, пока /etc/noreboot Проверьте сценарий в init.d, вы также можете отправить на экран сообщение X о том, что завершение работы заблокировано в ожидании удаления файла. Это маленькое неприятное сообщение может пригодиться, если /etc/noreboot По какой-то причине файл не очищен, что не позволяет вашей системе корректно завершить работу.