Mint linut: скрипт выключения при помощи zenity не работает

Я написал простой скрипт, который запускается при выключении компьютера. Я поместил скрипт под /etc/init.d/ каталог и связать его с /etc/rc0.d/. Ссылка мягкая ссылка и ее название K99checkout-reminder.

вот результат перечисления файлов под /etc/rc0.d/:

lrwxrwxrwx 1 root root 24 Nov 17 18:10 K99checkout-reminder -> ../init.d/alert_checkout

вот содержание alert_checkout:

#!/bin/bash
export DISPLAY=:0.0
if zenity --question --text="I guess you have a nice working day?"; then
    zenity --info --text="Gr8! Now please
          _______

               |
               |
               |
               v

DO NOT forget to CHECKOUT your working time at door.nnSee you next day!"
else
    zenity --info --text="Thats really sad.nnGo checkout your time to finish your working.nnHave good dinner, go sleep early and have a nice day!"
fi

Я пытался запустить скрипт под root привилегия и работает отлично:

$ /etc/rc0.d $ sudo ./K99checkout-reminder

есть окно оповещения появился!

есть ли что-нибудь, что я здесь не хватает?

спасибо.

7
задан petwho
14.02.2023 21:57 Количество просмотров материала 2753
Распечатать страницу

4 ответа

попробуйте изменить владельца, может быть, если он работает после этого его разрешения вещь. Разрешения могут быть сложными, даже если иногда предоставляется полный доступ.

0
отвечен AskTrae 2023-02-16 05:45

попробуйте добавить символ \ перед окончанием строки в тексте zenity, например:

#!/bin/bash
export DISPLAY=:0.0
if zenity --question --text="I guess you have a nice working day?"; then
zenity --info --text="Gr8! Now please \
      _______\
\
               |\
               |\
               |\
               v\
\
DO NOT forget to CHECKOUT your working time at door.\n\nSee you next day!";
else
zenity --info --text="Thats really sad.\n\nGo checkout your time to finish your         working.\n\nHave good dinner, go sleep early and have a nice day!"
fi

или замените символы новой строки \ n Escape.

0
отвечен cj ayho 2023-02-16 08:02

обратите внимание, что есть разница между запуск под правами root и под root пользователей. Если вы попытались запустить его так:

sudo ./alert_checkout

тогда это сработало, потому что реальный UID по-прежнему установлен для пользователя, только с эффективный UID изменяется на root. Однако, при работе в качестве init.d скрипт, он выполняется под пользователем root, поэтому оба UIDs установлены в root.

это consfusing для zenity как он должен отображать сообщение внутри ваш сеанс пользователя. Поэтому он нуждается в реальном ID, чтобы соответствовать вашему пользователю.

Если вам нужно только это, чтобы работать для конкретной учетной записи пользователя, а затем просто редактировать сценарий и запустить zenity под su <user> -c <zenity cmd>.

0
отвечен Jozef 2023-02-16 10:19

Я думаю, что ссылку вы показываете-это символическая ссылка или ссылка.

когда система выключается, я думаю, что он запускает убить inits в числовом порядке, так что

K01... перед к02...

Если вы используете этот скрипт как K99...

тогда не будет ли оконный менеджер уже закрыт?

вы пробовали запускать скрипт так:

K01checkout-reminder 
0
отвечен AngelaS 2023-02-16 12:36

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх