Выполнить скрипт перед выключением

21

Когда я выключаю свой компьютер, я хочу показать некоторые незавершенные задачи, которые я должен выполнить, прежде чем покинуть офис ... Я сделал локальное приложение для управления этими задачами, в основном я просто хочу запустить команду и завершить работу после того, как я убил приложение выполнено.

juanefren
источник
Может быть полезно для будущих пользователей: askubuntu.com/a/747556/295286
Сергей Колодяжный

Ответы:

7

Вы можете добавить свою команду в файл /etc/gdm/PostSession/Defaultперед exit 0строкой.

попей
источник
Если я перехожу к опции «Выйти», она работает нормально, но если я нажимаю кнопку выключения, появляется почти мгновенный фиолетовый экран выхода из системы Ubuntu и запускается скрипт (на экране, где появляется логотип Ubuntu с 5 маленькими шариками). (проверено со сном 20).
juanefren
Диалоговое окно «Вы уверены, что хотите завершить работу» находится здесь: / usr / lib / display-session / gtk-logout-helper, а часть пакета индикатора-сессии написана на C / C ++, поэтому его довольно сложно редактировать. Возможно, вам повезет больше, спросив в каком-
нибудь списке рассылки
6

Вы можете сделать это, создав скрипт в /etc/rc0.d (для выключения) и /etc/rc6.d (для перезагрузки). Для этого запустите:

gksu gedit /etc/rc0.d/K01mycustomscript

Отредактируйте сценарий завершения работы в текстовом редакторе и запустите:

sudo chmod +x /etc/rc0.d/K01mycustomscript

И если вы хотите, чтобы он также запускался при перезагрузке, запустите это:

sudo cp /etc/rc0.d/K01mycustomscript /etc/rc6.d/K01mycustomscript

Источник: эта ветка форума

dv3500ea
источник
Из его описания звучит так, будто он хочет вызвать графическое приложение, поэтому ему нужен доступ к xserver. В этом случае использование init-скриптов не работает.
sepp2k
1
Да ... как говорит @ sepp2k, скрипт работает вне xserver :(
juanefren
4

Звучит как вопрос для superuser.com для меня. Во всяком случае, после некоторого поиска в Google я нашел, как запустить скрипт при выходе из системы? в котором говорится добавить скрипт в $ HOME / .bash_logout.

Если это не сработает, добавьте

$HOME/.bash_logout

в / etc / gdm / PostSession / Default, чтобы он правильно выполнял сценарий выхода из системы.

Если пользователь все равно выйдет из системы до завершения работы, это должно охватывать обе базы.

myusuf3
источник
1
Поскольку он, вероятно, не хочет, чтобы скрипт выполнялся каждый раз, он выходит из bash (т.е. каждый раз, когда закрывает окно терминала), я не думаю, что было бы хорошей идеей записать команду в .bash_logout. Однако запись в PostSession / Default выглядит для меня хорошей идеей.
sepp2k
У меня уже есть этот файл, но, похоже, он не работает (я поставил sleep 20, и он не дождался выключения.)
juanefren
.bash_logout не будет работать при закрытии терминала, он будет работать только при выходе из сеанса терминала-входа в систему (т. е. если вы выйдете из realTTY), а не при выходе из gnome.
LassePoulsen
Почему это вопрос для суперпользователя? Если вопрос об Ubuntu, то это по теме.
NN
2

Если вы это сделаете, ./app-to-run && sudo shutdown -h nowкомпьютер должен выключиться, как только приложение будет запущено.

Томми Брунн
источник
1
Это было бы очень грубое отключение. Вместо этого вы хотите вызвать скрипт выключения рабочего стола.
txwikinger
Судо может попросить пользователя ввести пароль в случае, если приложение для запуска достаточно долго ... Так что оно никогда не выключится.
Самб
1

Почти такой же ответ, как у Томми Брунна, но без риска зависнуть, когда вас спросят пароль root:

sudo sh -c "./app-to-run; shutdown -h now"
Самба
источник