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

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

21
задан 17.10.2019, 16:14

5 ответов

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

1
ответ дан 17.10.2019, 16:15

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

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

$HOME/.bash_logout

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

В любом случае, как и до выключения, пользователь выходит из системы, это должно охватывать обе базы.

4
ответ дан 17.10.2019, 16:15
  • 1
    Почему это вопрос для суперпользователя? Если вопрос об Ubuntu, то это по теме. – Vivek 17.10.2019, 16:15
  • 2
    У меня уже есть этот файл, но, похоже, он не работает (я поставил sleep 20, и он не дождался завершения работы.) – Pylinux 17.10.2019, 16:16
  • 3
    Поскольку он, вероятно, не хочет, чтобы скрипт запускался каждый раз, он выходит из bash (т.е. каждый раз, когда закрывает окно терминала), я не думаю, что было бы хорошей идеей записать команду в .bash_logout. Однако запись в PostSession / Default выглядит для меня хорошей идеей. – ShZ 17.10.2019, 16:16
  • 4
    .bash_logout не будет работать при закрытии терминала, он будет работать только при выходе из сеанса терминала-входа в систему (т. е. если вы выйдете из real TTY), а не при выходе из gnome. – Nearoo 17.10.2019, 16:17

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

gksu gedit /etc/rc0.d/K01mycustomscript

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

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

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

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

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

6
ответ дан 17.10.2019, 16:16
  • 1
    Да ... как говорит @ sepp2k, скрипт выполняется вне xserver :( – ShZ 17.10.2019, 16:16
  • 2
    Из его описания звучит так, будто он хочет вызвать графическое приложение, поэтому ему нужен доступ к xserver. В этом случае использование init-скриптов не работает. – spacer GIF 17.10.2019, 16:16

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

2
ответ дан 17.10.2019, 16:16
  • 1
    Это было бы очень грубое отключение. Вместо этого вы хотите вызвать скрипт выключения рабочего стола. – Pylinux 17.10.2019, 16:16
  • 2
    Судо может попросить пользователя ввести пароль в случае, если приложение для запуска достаточно долго ... Так что оно никогда не выключится. – Ben Taliadoros 17.10.2019, 16:17

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

7
ответ дан 17.10.2019, 16:17
  • 1
    & Quot; Вы уверены, что хотите закрыть & quot; диалог находится здесь: / usr / lib / Indicator-session / gtk-logout-helper и часть пакета индикатора-сеанса написана на C / C ++, поэтому его довольно сложно редактировать. Возможно, вам повезет больше, спросив в каком-нибудь списке рассылки гномов-гуру – VinGarcia 17.10.2019, 16:17
  • 2
    Если я перейду к пункту «Выйти» Опция работает нормально, но если я нажму выключение, появится почти мгновенный экран выхода из Ubuntu Purple и запустит скрипт (на экране, где появляется логотип Ubuntu с 5 маленькими шариками). (проверено со сном 20). – John K 17.10.2019, 16:18

Теги

Похожие вопросы