Я хочу запустить скрипт перед выходом из сеанса GNOME, чтобы предупредить себя, если я забыл, что к машине подключен Pendrive.
Тем не менее, все решения, которые я нашел, мне не хватило:
Этот похожий вопрос предполагает редактирование
/etc/gdm/PostSession/Default
файла, но у меня нет прав для этого. (И файл в настоящее время пуст на моей машине, поэтому нет никаких существующих хуков, чтобы воспользоваться)Я также обнаружил, что этот пост предлагает обходной путь, но, согласно первому ответу, он не работает, если я выключаю компьютер вместо того, чтобы выходить из системы.
Ответы:
Поскольку вы используете Gnome, вы можете использовать приведенный ниже скрипт Python, адаптированный из того, который вы упомянули.
Требуется выход из Gnome (т. Е.
gnome-session-quit
) (Или выключение Gnome), который происходит, когда мы используем выход из GUI. AFAIK ни один процесс не может заблокировать отключение по командеsudo shutdown -h 0
или поsudo poweroff
. Когдаshutdown
выполняется, это дает SIGTERM всем процессам и дает им несколько секунд для выхода (после выполнения некоторых сценариев, которые не могут редактировать пользователи без прав root). Если процесс не завершен, SIGKILL принудительно уничтожает его.Это пошаговая процедура
gnome_save_yourself
метода. Давайте сделаем тест.Сохранить следующий код как
~/Desktop/execute_script_on_shutdown.sh
(с http://www.linuxquestions.org/questions/linux-desktop-74/gnome-run-script-on-logout-724453/#post3560301 )Сделайте его исполняемым:
Сохранить следующее как
~/Desktop/shutdown_script.sh
Выполнить основной скрипт
Теперь вы чувствуете, что сценарий чего-то ждет
Проверьте файл с именем
AAAAAAAAAAAAAAAAAAAAAAAAAAA
на вашем рабочем столе.Если вы видите файл, все в порядке. Теперь вы можете редактировать в
shutdown_script.sh
соответствии с вашими потребностями. Также не забудьте выполнитьexecute_script_on_shutdown.sh
вход при входе в систему (или сделать его автоматически запускаемым при запуске).источник
Если вы хотите, чтобы ваш сеанс блокировался при любых обстоятельствах, вам нужны привилегии root. Там нет никакого способа обойти это. Пользователь root всегда может
kill -9
ваши процессы. Я удивлен, что отключение не заставляет гнома издавать сигнал «спасай себя». Также я считаю, что сценарии «PostSession» запускаются только после завершения gnome-session и (я полагаю) непосредственно перед завершением Xserver, то есть это не то место, где вы бы хотели разместить предупреждение, которое должно отображаться на экране (если Я прав).То, что может работать, - это приложение Gnome, которое а) реагирует на событие гнома «спаси себя» И б) реагирует на SIGTERM таким же образом, как оно реагирует на «безопасность себя». Помимо этого, вы мало что можете сделать, особенно без привилегий root.
Однако вы можете решить проблему без полномочий root: напишите скрипт PostSession, который делает то, что вы хотите, и предложите кому-нибудь с привилегиями root развернуть его на всех машинах, поскольку это разумный инструмент, который очень помогает пользователям. Обычно парням с привилегиями root платят, чтобы сделать пользователей счастливыми. :-)
Какую проблему вы пытаетесь решить? Почему вы не можете выйти из сеанса, когда Pendrive подключен?
У вас может быть клиент dbus с надписью «Не забудьте отключить устройство!» когда gvfs объявляет о размонтировании файловой системы на USB-устройстве. Но я не знаю, насколько хорошо это работает или даже служит вашим целям.
источник
Мне наконец-то удалось протестировать скрипт Python, который я упомянул в качестве второго варианта в моем вопросе. Оказывается , что он делает работу , когда просят , чтобы закрыть, а не только при перезагрузке.
источник