View previous topic :: View next topic |
Author |
Message |
mrsteven Veteran
Joined: 04 Jul 2003 Posts: 1938
|
Posted: Tue Jun 08, 2004 5:42 pm Post subject: Laptop bei kritischem Akkustand im Textmodus runterfahren |
|
|
Hallo!
Wie kann ich meinen Laptop (mit funktionierendem ACPI) bei kritischem Akkustand automatisch herunterfahren, auch wenn er im Textmodus (also ohne X) läuft? Eine Warnung kurz zuvor durch einen Piepston oder so wäre auch ganz nett. _________________ Unix philosophy: "Do one thing and do it well."
systemd: "Do everything and do it wrong." |
|
Back to top |
|
|
Earthwings Bodhisattva
Joined: 14 Apr 2003 Posts: 7753 Location: Germany
|
Posted: Tue Jun 08, 2004 6:45 pm Post subject: |
|
|
Schau mal, ob der Kernel bei kritischem Akkustand einen Event generiert. Sprich acpid emergen und schauen, ob im syslog eine Meldung kommt, wenn der Akkustand kritisch ist. Falls ja, musst Du nur noch /etc/acpi/default.sh entsprechend konfigurieren, das darauf reagiert wird. Falls nicht, notfalls selbst einen kleinen Daemon schreiben, der regelmäßig den Batteriestand überprüft. _________________ KDE |
|
Back to top |
|
|
elmo[bjoern] n00b
Joined: 03 Jun 2004 Posts: 14 Location: Oer-Erkenschwick, NRW, Germany
|
Posted: Tue Jun 08, 2004 9:47 pm Post subject: |
|
|
Nabend,
da ich über dieses Problem auch schonmal nachgedacht habe, habe ich gerade kurz mal ein kleines Perl Script geschrieben. Hoffe es funktioniert bei euch. Einfach das script starten, und am besten in den Hintergrund legen. Man könnte noch ein schönes init-script schreiben, doch habe ich leider grad keine Zeit mehr.
Bin leider kein Perl-Guru, wäre schön wenn ihr mir ein paar tips geben könntet, wie man das vielleicht eleganter schreiben kann.
Quote: |
#!/usr/bin/perl -w
# Written by Bjoern Biesenbach < do2bba at darc dot de >
# $batwarn and $batmin are relative values of the battery capacity
# if $batwarn is reached, the programm will broadcast low capacity
# if $batmin is reached, halt is executed
$batwarn = 10;
$batmin = 7;
while(1)
{
if (!(`cat /proc/acpi/battery/BAT0/info | grep "design capacity:"` =~ m/\.*(\d+)\.*/))
{
print "Fehler beim Zugriff auf ACPI Interface !\n";
exit(1);
}
$designcapacity = $1;
if (!(`cat /proc/acpi/battery/BAT0/state | grep "remaining capacity:"` =~ m/\.*(\d+)\.*/))
{
print "Fehler beim Zugriff auf ACPI Interface !\n";
exit(1);
}
$currentcapacity = $1;
$relative = $currentcapacity / $designcapacity * 100;
if($relative <= $batwarn)
{
`wall BATTERIESTAND NIEDRIG !!`;
echo -e "\a" > /dev/tty1;
}
if($relative <= $batmin)
{
`halt`;
exit(0);
}
sleep(10);
}
|
|
|
Back to top |
|
|
texx n00b
Joined: 14 Nov 2002 Posts: 67 Location: Vienna
|
Posted: Wed Jun 09, 2004 9:07 am Post subject: |
|
|
ist es nich sinnvoller das script komplett durchlaufen zu lassen... und per cron alle x wieder zu starten???
matthias _________________ System 1: Athlon 64 3200+ | Asus K8V Deluxe | 512MB Kingston | 80GB Seagate (IDE) | GeForceFX 5950 | Gentoo-2.6.3-r2
Server: AMD K6 | 64MB | 200GB Seagate (IDE) | Gentoo-2.4.22 |
|
Back to top |
|
|
Earthwings Bodhisattva
Joined: 14 Apr 2003 Posts: 7753 Location: Germany
|
Posted: Wed Jun 09, 2004 2:14 pm Post subject: |
|
|
Wenn Du es per cron startest, hast Du potentiell mehr Plattenzugriffe, was im Batteriemodus nicht unbedingt wünschenswert ist. Als "daemon" bleibt es im Arbeitsspeicher.
@elmo[bjoern]: Vielleicht wäre es sinnvoller, bei nicht vorhandener /proc/acpi/battery/BAT0/info das Skript nicht zu beenden. Die Module können kurzzeitig aus dem Kernel genommen werden (z.B. bei mir bei hibernate/resume) und ein Beenden des Skripts ist dann ungünstig. Außerdem solltest Du noch die mögliche Division durch Null abfangen. Last not least würde ich statt halt shutdown aufrufen (halt ist low-level Befehl), am besten gleich noch mit einer Verzögerung von 1 Minute, so dass man den shutdown notfalls abbrechen kann. |
|
Back to top |
|
|
mrsteven Veteran
Joined: 04 Jul 2003 Posts: 1938
|
|
Back to top |
|
|
MrTom l33t
Joined: 20 Jan 2003 Posts: 608
|
Posted: Mon Jun 14, 2004 7:20 pm Post subject: |
|
|
Hab das Script bei mir installiert und wollte nun noch eine Änderung machen. Es soll zusätzlich zum wall noch ein xmessage gemacht werden. Leider funktioniert es nicht so, wie ich will!?!
Mit xhost +local: oder xhost +'hostname' habe ich versucht lokal Zugriff zu bekommen. Also das der User root auf die X-Console des "normalen" Users zugriff hat.
Wenn ich nun versuche mit DISPLAY=:0.0 xmessage test, was auf die X-Console meines Users zu schicken bekomme ich nur die Meldung das :0.0 broken ist und er macht dann einen Restart des X-Servers!
Hat da jemand einen Tipp?!?
Hab jetzt erst mal eingestellt, dass er einen Sound spielt. Da ich meistens nur unter X bin, bekommt ich vom wall nicht viel mit. Zusätzlich hätte ich da schon gerne ein xmessage...
Denke Zugriff mit xhost ist Ok, aber warum X gleich abschmiert verstehe ich nicht?!?!! |
|
Back to top |
|
|
sarahb523 Guru
Joined: 10 Mar 2004 Posts: 423 Location: Berlin
|
Posted: Mon Jun 14, 2004 10:58 pm Post subject: |
|
|
zum thema acpi kann ich leider nich viel sagen (hab noch nie acpi konfiguriert), aber wer noch ein "BEEP" vor dem herunterfahren haben möchte sollte zuerst mal
emerge beep
machen. und dann kann man mit dem befehle beep (und witzigen parametern) lustige töne dem pc speaker entlocken. Derzeit piept mein rechner bei allen möglichen sachen mit den unterschiedlichsten beep-codes
probier mal:
Code: | beep -f 800 -r 3 -d 300 -l 300 -D 400 -n -f 200 -l 800
|
Naja das läßt sich sicher noch optimieren _________________ AMD Sempron 2400+ / 1GB RAM / NVidia Geforce 5200FX /
Kernel 2.6.31-gentoo-r4 / kde 4.3 |
|
Back to top |
|
|
MrTom l33t
Joined: 20 Jan 2003 Posts: 608
|
Posted: Tue Jun 15, 2004 5:47 am Post subject: |
|
|
@sarahb523: Ich glaube, da hat jemand zu schnell gelesen:
Der Beep oder bei mir der play eines wav macht kein Problem.
Was ich möchte, ist eine Meldung unter X. Da bin ich als User TOM angemeldet. Das Script läuft als ROOT. Wenn ROOT nun versucht dem TOM eine Meldung mit xmessage zu schicken, macht bei mir der XServer einfach einen Neustart und ich habe XDM zur Anmledung da. |
|
Back to top |
|
|
Earthwings Bodhisattva
Joined: 14 Apr 2003 Posts: 7753 Location: Germany
|
Posted: Tue Jun 15, 2004 7:37 am Post subject: |
|
|
@MrTom: sarahb523's Antwort ging wohl an mrsteven. |
|
Back to top |
|
|
sarahb523 Guru
Joined: 10 Mar 2004 Posts: 423 Location: Berlin
|
Posted: Tue Jun 15, 2004 8:33 am Post subject: |
|
|
Earthwings wrote: | @MrTom: sarahb523's Antwort ging wohl an mrsteven. |
jap du hats recht, sorry war wohl etwas müde gestern abend meine antwort bezog sich auf:
mrsteven wrote: | ...Eine Warnung kurz zuvor durch einen Piepston oder so wäre auch ganz nett. |
wegen xmessage. ich habe mal folgendes probiert:
als user:
xhost +local:localhost
ausgeführt. und dann als root:
xmessage "bla bla bla"
und es geht. _________________ AMD Sempron 2400+ / 1GB RAM / NVidia Geforce 5200FX /
Kernel 2.6.31-gentoo-r4 / kde 4.3 |
|
Back to top |
|
|
elmo[bjoern] n00b
Joined: 03 Jun 2004 Posts: 14 Location: Oer-Erkenschwick, NRW, Germany
|
Posted: Tue Jun 15, 2004 3:15 pm Post subject: |
|
|
@MrTom:
ich habe das mit xmessage auch mal versucht. Es lief, indem ich einfach vom root zum user mit "su" gewechselt bin, dann DISPLAY=:0.0 und export DISPLAY gemacht habe, und /usr/X11R6/bin/xmessage - test aufgerufen habe. Eine umsetzung im script auf diese Weise ist wohl leicht möglich, ich werde mich später mal daran begeben, habe jetzt gerade nicht viel Zeit.
Gruß
Björn |
|
Back to top |
|
|
MrTom l33t
Joined: 20 Jan 2003 Posts: 608
|
Posted: Tue Jun 15, 2004 6:51 pm Post subject: |
|
|
Gehen beide Tipps nicht. Vielleicht liegt es am xorg. Bei kommt dann die Fehlermeldung: X connection to :0.0 broken (explicit kill or server shutdown).
Und genau das macht er auch... Der X macht einen shutdown und startet dann wieder. Da ich den xdm von xorg verwende kommt dieser und fragt braf nach dem User und Passwort...
Werde das bei der nächsten Version von xorg nochmals testen.
Die meisten Fehler erledigt die Zeit |
|
Back to top |
|
|
|