View previous topic :: View next topic |
Author |
Message |
rybik n00b
Joined: 10 Oct 2016 Posts: 0
|
Posted: Mon Oct 10, 2016 3:49 pm Post subject: Pomocy przy prostym skrypcie SHUTDOWN |
|
|
Witam
Nie potrafie pisać skryptów a potrzebuję wyłączyć system jako user po kliknięciu na ikonę (bez potwierdzenia zamknięcia systemu).Znalazlem w google stronę
https://fitzcarraldoblog.wordpress.com/2015/09/06/gentoo-linux-run-a-script-at-shutdown-but-not-when-rebooting/
robię skrypt i nadaję mu wykonalność
Code: | #!/bin/bash
if [ `who -r | awk '{print $2}'` = "0" ]; then
######################################################################
# Put Bash commands here to be executed on shutdown but not on reboot.
######################################################################
fi
$ |
i nie odpala się.Otrzymuje komunikat
Code: | $ /etc/local.d/10-run_on_shutdown.stop
/etc/local.d/10-run_on_shutdown.stop: linia 3: błąd składni przy nieoczekiwanym znaczniku `fi'
/etc/local.d/10-run_on_shutdown.stop: linia 3: `fi'
|
umie ktoś poprawić to,tak by skrypt zadziałał?
Z gory dziekuję |
|
Back to top |
|
|
Jacekalex Guru
Joined: 17 Sep 2009 Posts: 554
|
Posted: Sat Oct 15, 2016 2:14 am Post subject: |
|
|
Nie tędy droga.
Zainteresuj się pakietem sudo.
https://wiki.gentoo.org/wiki/Sudo
Jak zainstalujesz, skonfiguruj, żeby dla twojego usera albo grupy nie żadał hasła, np:
Code: | %wheel localhost=(root) NOPASSWD: /sbin/halt, /sbin/shutdown, /sbin/reboot , /sbin/poweroff |
Edycja /etc/sudoers wyłącznie przez polecenie (z uprawnieniami roota):
Code: | EDITOR="{Twój ulubiony edytor tekstowy}" visudo |
z konta root, nawet nie próbuj inaczej.
Jak będziesz mógł odpalać poweroff bez hasła, to potem w skrócie na Pulpicie podasz:
jako polecenie, i musi działać.
Możesz też użyć mechanizmu ACPI, np wyłączać kompa przyciskiem power, wymaga to zmodyfikowania skryptu /etc/apci/default.sh.
Przykład:
Code: |
...
case "$group" in
button)
case "$action" in
power)
######## dodałem osobiście ########
/sbin/shutdown -h now;
######### koniec dodanego kawałka #######
#/etc/acpi/actions/powerbtn.sh
;;
# if your laptop doesnt turn on/off the display via hardware
# switch and instead just generates an acpi event, you can force
# X to turn off the display via dpms. note you will have to run
# 'xhost +local:0' so root can access the X DISPLAY.
#lid)
# xset dpms force off
# ;;
*) log_unhandled $* ;;
esac
;;
...
|
Pozdro
|
|
Back to top |
|
|
sebas86 Guru
Joined: 01 May 2005 Posts: 568 Location: Szczecinek / Szczecin
|
Posted: Sat Oct 22, 2016 9:20 pm Post subject: |
|
|
Po wypowiedzi sądzę, że korzystasz z graficznej sesji. Gdybyś jeszcze powiedział z jakiego środowiska graficznego korzystasz można byłoby podać rozwiązanie na tacy.
Masa środowisk, w tak tym popularne jak KDE, Gnome, XFCE, obsługują wyłączanie komputera przez wspólną „szynę” komunikacyjną. Dzisiaj system zawiera kilka usług, które umożliwiają przesyłanie wiadomości, obsługę żądań, tworzenie polityki bezpieczeństwa, nadawanie uprawnień itd. I najczęściej tutaj zaczynają się schody bo startując sesję graficzną trzeba również rozpocząć sesję na potrzeby jednej z tych usług oraz poprawnie ustawić kilka rzeczy.
Na przykładzie XFCE (https://wiki.gentoo.org/wiki/Xfce#Starting_Xfce_without_a_display_manager):
Quote: | When experiencing authorization or permissions issues within xfce4 in a OpenRC profile (symptoms include being unable to open power manager and unable to suspend/hibernate) be sure the sys-auth/consolekit package has been merged with the pm-utils flag set. Then replace the above line in ~/.xinitrc with the following (see this entry on the Gentoo Forums for more information):
FILE ~/.xinitrcStarting xfce4 the right way when invoking startx
Code: | ck-launch-session dbus-launch --sh-syntax --exit-with-session xfce4-session |
|
Jeszcze prościej można rozwiązać sprawę korzystając z popularnych menadżerów logowania (KDM lub GDM), które inicjują taką sesję z automatu.
Jeśli masz działającą sesję i działa zamknięcie poprzez przycisk wyłączania/wylogowania, a potrzebujesz tylko skrypt/ikonkę to wystarczy wysłać przez dbus komunikat w odpowiednie miejsce:
Code: | dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true |
lub dla upower:
Code: | dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop |
Źródło: http://askubuntu.com/questions/454039/what-command-is-executed-when-shutdown-from-the-graphical-menu-in-14-04
I trochę nowsze jeśli korzystasz z upower (na 99% tak): https://bbs.archlinux.org/viewtopic.php?id=127962
Można też prościej ale to już zależy od środowiska graficznego, w XFCE można łatwo to zrobić poprzez sesję:
Code: | xfce4-session-logout --halt |
_________________ Nieważne jaka dystrybucja, ważne, że Linux! |
|
Back to top |
|
|
Jacekalex Guru
Joined: 17 Sep 2009 Posts: 554
|
Posted: Sun Oct 23, 2016 2:36 am Post subject: |
|
|
Moje rozwiązanie działa od lat na Gnome2, Mate, KDE4, KDE5, XFCE, Enlightenment i LXQT.
Po prostu nie korzysta z żadnego API sroodowiska graficznego, tylko z sudo albo acpi, czyli mechanizmów obecnych we wszystkich Linuxach, bez względu na to, czy mają w ogóle środowisko graficzne i jakie mają to środowisko graficzne.
To by było na tyle
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|