Strom sparen unter Ubuntu Gnome auf Laptop

O

Onkel Jürgen

Doppel-As
hi Leute,

also weil der Stromverbrauch auf Laptops schon recht hoch ist, im Batterybetrieb, hab ich versucht da mal ein paar Anpassungen vorzunehmen.

Dafuer hab ich mir ein Skript geschrieben, welches ich dann in
Code:
/etc/acpi/battery.d
abgelegt habe.

Das Skript tu ich mal in den Anhang.
Meine Frage ist jetzt, warum er die kill und if Abfragen mit zenity nich ausfuehrt??

Alles andere, wie neue Werte in die Konfigurationsfiles und das entladen unwichtiger Module macht er Problemlos.

Danke Gruesse
 

Anhänge

  • Battery_Stromsparen.txt
    1,9 KB · Aufrufe: 21
Rufst Du das Script als aktueller User (der, dem auch die X-Session gehört)? Kommt das zenity PopUp?
 
oh das is ne gute Frage,
ich hab ehrlich gesagt keine Ahnung, mit welchen Rechten das Skript in dem Ordner aufgerufen wird.

Aber ich wueder mal schwer schatzen, als root, weil ja sonst die Module nicht entladen werden und die Konfig Dateien sich nich aendern wuerden.

Stimmt das is, schlecht dann hab ich wohl keine chance die zenity interaktion einzubauen oder?

aber wenn du nen anderen trick kennst waer das cool.

das gute an dem Ordner ist naemlich, dass die Skripte darin immer automatisch ausgefuehrt werden, sobald ich das Netzteil abziehe.
 
Versuch mal als normaler User ein
Code:
xhost +local:root
damit erlaubst du root aufs aktuelle Display zuzugreifen, was ja normalerweise untersagt ist und wenn das hinhaut, kannst den Befehl in den Autostart packen ;)
 
Zuletzt bearbeitet:
naja sowas wollte ich dann eigentlich nich machen, vor allem nich, wenn ich das in autostart den autostart packen soll.

ne andere loesung waer mir schon lieber, wenn es eine gibt :)

okay, das waere ne gute loesung danke.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

leider hat das nicht funktioniert.

ich habs jetzt so reingeschrieben, wie du gepostet hast, aber die zenity popups sind leider nicht aufgegangen.

aber trotzdem danke
 
Zuletzt bearbeitet:
Deswegen hab ichs wieder rausgenommen.
Code:
# sudo -u user xhost +local:root
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

xhost:  unable to open display ":0.0"
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Code:
# su -c "xhost +local:root" $user
So gehts aber ;)
 
Zuletzt bearbeitet:
Sorry aber so gehts leider auch net ?(

ich hab den Befehl mal in der Konsole so eingegeben und da verlangt er von mir ein Passwort.
Dieses kann ich ja nicht eintippen, wenn das Skript automatisch ausgefuehrt wird.
 
Musst das schon als root ausführen. Das Skript wird ja auch mit root Rechten ausgeführt und dann brauchts eigentlich auch kein PW. Musst dann nur $user durch deinen Benutzernamen ersetzen.
 
sorry aber da tut sich nix:

hab das jetzt so im Skript stehen:

Code:
su -c "xhost +local:root" onkeljuergen
[... das ganze Skript ...]
su -c "xhost -local:root" onkeljuergen
exit 0

und wenn ich es im Terminal eingeben bekomme ich auch folgende Ausgabe:
Code:
non-network local connections being added to access control list

also an sich scheint der Befehl schon zu gehen.
Aber in dem Skript wirkt er nich.

Ich hab mein Skript, genauso, wie ich es in der /etc habe mal als root gestartet und es fuehrt mir die zenity Abfrage auch mit root Rechten auf meinen Output aus. Soll heissen das zenity Fenster hat das aussehen von gksu Anwendungen (sieht bei mir als user und root unterschieldich aus)
schliesst aber die Anwendungen des users.

Also keine Ahnung, warum er das Skript unter /etc nicht korrekt ausfuehrt.
 
Zuletzt bearbeitet:
Hm
Code:
#!/bin/bash

su -c "xhost +local:root" user
if zenity --question; then echo ok; else echo nope; fi
su -c "xhost -local:root" user

exit 0
läuft hier Problemlos. Was sagt denn ls -l /bin/sh?
 
ja ich hab grad das Problem gefunden, mehr oder weniger aus Zufall, und ich frag ich ich grad, warum das bei dir nicht noetig war.

ich musste den acpi daemon nei starten

Code:
sudo /etc/init.d/acpid restart

danke fuer deine Hilfe, sorry, dass es jetzt zum schluss so verzwickt wurde.
jetzt funktioniert es auch bei mir.
 
Das ist in der Tat etwas seltsam :think: acpi hat ja nicht wirklich was mit dem Zugriff aufs Display zu tun.

Edit: Könnte aber auch daran liegen, dass der acpid die Änderungen im Script erst nach nem Neustart übernimmt.
 
Zuletzt bearbeitet:
so nach langem tuefteln und ausprobieren, hab ich hier mal ein relativ brauchbares Skript geschrieben, fuer einige Stromsparfunktionen.

Ausserdem ist es interaktiv geworden. Also wen es interessiert, ich tus mal in den Anhang.

also gruesse und danke fuer die gute Hilfe

P.S.: ist so jetzt das meisste was ich finden konnte, falls jemand noch Verbesserungsvorschlaege hat, waere ich ueber diese natuerlich sehr dankbar.
 

Anhänge

  • Battery_Stromsparen.txt
    4,5 KB · Aufrufe: 10
Wie funktioniert denn dein Skript? Und zu welchem Preis erkauft sich das Skript den Strom?
Und warum benutzt Linux solche Funktionen nicht immer, wobei diese Frage sich mit der Funktionalität des Skriptes erklären läßt;)
 
ja also funktionieren tut es indem man es in den Ordner
Code:
/etc/acpi/battery.d/
ablegt.

Tja warum sowas bei Linux nicht per default dabie ist, kann ich dir jetzt auch nicht so gut erklaeren.
Ich hab mein Wissen hauptsaechlich von:
http://www.lesswatts.org

Da kann man viel nachlesen.
Und zu welchem Preis, weiss ich nich so genau was du meinst. Aber nachdem das Skript gelaufen ist, hab ich keine merklichen Einbusen an Performance, es werden nur gewisse Sachen mehr oder weniger deaktiviert.

Das Skript sollte man natuerlich lesen und auf seine Beduerfnisse anpassen. Ich hab das hier nur als Anreiz bzw. Vorlage reingestellt, fuer die die sich auch damit befassen wollen.

Also viel Spass beim lesen :))

P.S.: Die Umkehrung des Skripts steht mehr oder weniger auch schon im Skript und dann sollte man ein zweites anfertige, was damit nicht allzu schwer sein sollte und dieses kopiert man dann in
Code:
/etc/acpi/ac.d
Das wird dann gestartet, sobald man das Netzkabel wieder anschliesst. Und dann sollte der Laptop wieder in der Ausgangssituation sein.
 
Zuletzt bearbeitet:
Mit "zu welchem Preis es sich erkauft" meine ich, wo ic dann Einbußen zu verzeichnen habe.
Es muss ja etwas ändern, da du ja schon sagst, dass man auch Skript anlegen sollte, um in Ausgangspunkt zu kommen. Das heißt ja, irgendwas wird irgendwo verändert.
Wäre nett, wenn du dies grob erklären könntest.
 
okay also ganz, genauer steht es im Skript, hab es kommentiert.

Als erstes fragt es, ob es bestimmte Programme beenden soll, die viel Leistung benoetigen, da sie im Hintergrund aktiv sind.

Weiterhin entlade ich ein paar Module, die ich nicht zwingend brauche, wenn ich nicht am Strom haenge. Diese werden dann, wenn man ans Netz zurueck geht neu geladen. Ich hab auch kommentiert, wofuer sie da sind, damit genau weiss, was passiert.

Dann mache ich noch ein paar Veraenderungen an der Festplatte und am WLAN, das wird eventuell etwas langsamer, aber meine Router ist nicht ganz so schnell, dass ich das nicht unbedingt merke.

Ja ansonsten, will ich hier nich alles vorkauen, das Skript ist wie gesagt eh nicht universell, also sollte sich auf jeden Fall jeder mit der Materia auseinandersetzen, wenn er es verwenden moechte. Und man kann wirklich alles auf der Seite, die ich gepostet habe genau nachlesen.

Und ich merke keine Einbussen. Ich sehe nur, dass mein Stromverbrauch runtergeht.
 
hallo nochmal,

ich hab leider immernoch ein Problem mit dem Skript.
Wenn ich neustarte und dann das Netzteil von meinem Laptop entferne, wird das Skript zwar ausgefuehrt, aber leider nicht die interaktiven Popup Fenster von Zenity. Diese bekomme ich immer erst zum laufen, wenn ich den acpi Daemon neustarte, also:
Code:
sudo /etc/init.d/acpid restart

ich habe auch versucht das in die rc.local zu schreiben, aber das funktioniert leider nicht.

Hat da vll jemand nen anderen Loesungsansatz??
Ich hab naemlich ehrlich gesagt keine Lust, jedesmal den Daemon haendisch neu zu starten, nach einem Reboot, um mein Skript vollkommen nutzen zu koennen.

Danke
 
hallo, ich wollte das Thema nochmal pushen, da ich leider immernoch keine Loesung bezueglich meines Posts direkt ueber diesem gefunden habe.

Irgendwie ist es zum verzweifeln. Ich finde auch keine wirkliche Doku zum acpid, sodass ich irgendwie herausfinden koennte warum es nicht geht. Aber naja.

Gruesse
 
Möglicherweise kannst du den restart des daemons an den Anfang des Skripts setzen und mal schauen obs dann klappt.
 
Zurück
Oben