Versuchen Sie, den Besitzer zu ändern, wenn es funktioniert, dann ist es eine Berechtigungssache. Berechtigungen können schwierig sein, auch wenn sie manchmal vollen Zugriff haben.
Mint linut: Skript herunterfahren, wobei Zenity nicht funktioniert
Ich habe ein einfaches Skript geschrieben, das ausgeführt wird, wenn ich meinen Computer herunterfahre. Ich habe das Skript unter /etc/init.d/
Verzeichnis abgelegt und es mit verlinkt /etc/rc0.d/
. Der Link ist Softlink und der Name lautet K99checkout-reminder
.
Hier ist das Ergebnis der Auflistung von Dateien unter /etc/rc0.d/
:
lrwxrwxrwx 1 root root 24 Nov 17 18:10 K99checkout-reminder -> ../init.d/alert_checkout
Hier ist der Inhalt von 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.\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
Ich habe versucht, das Skript unter root
Privilegien auszuführen, und es funktioniert gut:
$ /etc/rc0.d $ sudo ./K99checkout-reminder
Es wurde eine Benachrichtigungsbox angezeigt!
Gibt es etwas, was ich hier vermisse?
Vielen Dank.
4 Antworten auf die Frage
- Beliebte
- Neu
- Mit Kommentaren
- Aktiv
Versuchen Sie, ein Symbol vor den Zeilenenden im Zenity-Text hinzuzufügen:
#!/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
oder ersetzen Sie neue Zeilensymbole durch \ n Escapezeichen.
Bitte beachten Sie, dass es einen Unterschied gibt, ob Sie unter root-Berechtigungen und unter dem root
Benutzer laufen . Wenn Sie versucht haben, es so auszuführen:
sudo ./alert_checkout
Dann funktionierte es, da die Real UID noch auf Ihren Benutzer eingestellt war und nur die Effective UID in root geändert wurde. Wenn Sie jedoch als init.d
Skript ausgeführt werden, wird es unter dem Root-Benutzer ausgeführt, sodass beide UIDs auf Root gesetzt sind .
Dies ist verwirrend, zenity
da die Nachricht in Ihrer Benutzersitzung angezeigt werden muss. Daher benötigt es die Real-ID, um zu Ihrem Benutzer zu passen.
Wenn Sie dies nur für ein bestimmtes Benutzerkonto benötigen, bearbeiten Sie einfach das Skript und führen Sie zenity unter aus su <user> -c <zenity cmd>
.
Ich denke, der Link, den Sie anzeigen, ist ein symbolischer oder symbolischer Link.
Wenn das System heruntergefahren wird, denke ich, dass es die Kill inits in numerischer Reihenfolge ausführt
K01 ... wird vor K02 ausgeführt ...
Wenn Sie dieses Skript als K99 ausführen ...
Dann wäre der Fenstermanager nicht bereits heruntergefahren?
Haben Sie versucht, Ihr Skript so auszuführen:
K01checkout-reminder
Verwandte Probleme
-
3
Computer herunterfahren, wenn der Download / Upload beendet ist
-
2
Warum schaltet sich mein PC manchmal aus, wenn ich mich auf meinem Schreibtisch schockiere?
-
12
Welchen Schaden kann das Herunterfahren anstelle des Herunterfahrens bewirken?
-
8
Warum dauert es für mein XP immer, um das Fenster zum Herunterfahren anzuzeigen?
-
4
Wenn Windows XP nicht neu gestartet wird - wie diagnostizieren, herunterfahren, ohne den Computer au...
-
2
Windows 7 wird den Protokollen zufolge unerwartet heruntergefahren
-
4
Windows XP lässt sich nicht ordnungsgemäß herunterfahren
-
1
Computer wird stummgeschaltet (ubunutu + Xfce)
-
2
So deaktivieren Sie IPv6 in Linux Mint
-
3
Langsames wlan0 im Vergleich zu eth0?