So folgendes habe ich nun ausprobiert:
/etc/init.d/syslog stop Shutting down syslog services done sync hdparm -y /dev/hda /dev/hda: issuing standby command
Ergebnis: tatsächlich die Platte springt nicht sofort wieder an, sondern spätestens nach 10 sekunden :-( Das ist wahrscheinlich der pdflush und das nicht gesetzte noatime, Linux
Am Dienstag, 24. Juli 2007 schrieb Walter Müller: per default ist wohl für SCSI Platten gedacht, die immer laufen sollen und nicht für normale user mit ihren IDEs, die besser mal in Ruhe versetzt werden sollten! Aber google "Linux noatime Commit" brachte gleich einmal: http://linuxenterprise.de/itr/online_artikel/psecom,id,868,nodeid,9.html in Deutsch :) Es gibt aber auch ein Debugging (siehe laptop_mode): anschalten: Konsole oder bash: echo 1 > /proc/sys/vm/block_dump Perl: system('echo 1 > /proc/sys/vm/block_dump');# switch on rw log abschalten (WICHTIG !!!): Bash oder Konsole (su): echo 0 > /proc/sys/vm/block_dump aus einem Perl Prg: system('echo 0 > /proc/sys/vm/block_dump'); # switch off rw log auslesen: Konsole Bash: dmesg |grep READ >/tmp/hd.log 2>&1 dmesg |grep WRITE >/tmp/hd.log 2>&1 Perl: system ( "dmesg |grep READ >$f 2>&1"); und hier mein kl. script um den Ausdruck zu konzentrieren #!/usr/bin/perl use strict; use warnings; # Einlesen in einen Perl Hash und ausdrucken, # Mehrfach Nennungen fallen so weg :) my %show; my $f = '/tmp/hd.log'; system ( "dmesg |grep READ > $f 2>&1"); if ( -s $f > 10 ) { open F, "< $f" or warn "Can't open READ_File:$f< :$!\n"; foreach (<F>) { $show{READ}{"$1_$3"} = "$2 $3\t$1\n" if (/^(.+?): (.+?)(hda[23])[\n\r]*/) } close(F); } system ( "dmesg |grep WRITE > $f 2>&1"); if ( -s $f > 10 ) { open F, "< $f" or warn "Can't open WRITE_File:$f< :$!\n"; foreach (<F>) { $show{WRITE}{"$1_$3"} = "$2 $3\t$1\n" if (/(.+?):(. +?)(hda[23])[\n\r]*/) } close(F); } my $prt; exit 0 unless (exists $show{READ} || exists $show{WRITE} ); foreach (sort keys %{$show{READ}}) { $prt .= 'hd: '.$show{READ}{$_} } foreach (sort keys %{$show{WRITE}}) { $prt .= 'hd: '.$show{WRITE}{$_} } if ($prt) { open F, "> $f" or warn "Can't open hd-log:$f:$!\n"; print F $prt; close(F); } exit 0;
ein hadparm -S1 /dev/hda schickt die platte noch nicht mal in den schlaf naja, da muss wohl ein Blank dazwischen, ich vermute -S1 ist keine Option, -S 1 dann schon.
2.Versuch: laptop_mode unter http://www.samwel.tk/laptop_mode/ runtergeladen und installiert anschließend der perl skript kopiert und ausgeführt hmm, bei mir ist das eine Funktion für andere Programme, so alleine läuft es nicht. Es verändert ja auch nicht die hd, sondern fragt nur, dreht sie oder steht sie..
my $state = 'idle'; if (hd_is($state)) { print "$state\n"} else {print "NOT $state\n"}
sub hd_is { my $state = ($_[0] && $_[0] =~ /active|idle|standby/) ? shift : die join(' ', caller)." has made wrong call: hd(@_) valid:active|idle|standby\n"; system("hdparm -C /dev/hda | grep $state >/dev/null"); return (($?>>8) ? 0 : 1); }
dann erhalte ich die folgende Fehlermeldung: ./test.pl: line 1: my: command not found ./test.pl: line 2: syntax error near unexpected token `$state' ./test.pl: line 2: ` if (hd_is($state)) { print "$state\n"} else {print "NOT $state\n"}'
Ist etwa perl nicht installiert ? Perl Programm haben eine ziemlich wichtige erste Zeile: #!/usr/bin/perl
3. Versuch Skript unter http://www.pl-berichte.de/t_system/hd-laptop-shutdown.html kopiert und ausgeführt führt zu folgender Meldung
nas:/usr/local/sbin # ./laptop_mode Syntax: laptop_mode nas:/usr/local/sbin #
Gibt es keine genaue Anleitung (am besten auf deutsch) zu dem Thema?
Ist eigentlich dort alles beschrieben, in Deutsch nicht, da musst Du googlen, um was zu finden..
Ich bin nämlich ein Linux newbie. das ist wohl jedem hier passiert ;)
Du kannst noatime setzen - laptop_mode schreibt wie - alles wird dann in den chache geschrieben bis a) diese Zeit abgelaufen (Zeit ab dem ersten Schreibzugriff bis jetzt) ist, oder b) ein Lese-Zugriff erfolgt zB weil das best. Programm noch nicht im chache ist, oder c) der dirtied-Inode-Speicher voll ist.
wie muss ich meine fstab ändern, die wie folgt aussieht:
/dev/hda2 / ext2 acl,user_xattr 1 1 /dev/hda3 /home ext2 acl,user_xattr 1 2 /dev/hda1 swap swap defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs noauto 0 0 debugfs /sys/kernel/debug debugfs noauto 0 0 usbfs /proc/bus/usb usbfs noauto 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0
Meine Zeile (normaler pc) schaut so aus: /dev/hda2 / ext3 noatime,commit=240,acl,user_xattr 1 1 Aber ich weiß zB schon nicht mehr was jetzt das Commit genau bedeutet, seufz. Ich programmiere zwar, aber eigentlich mag und interessiert es mich nicht, und ich vergesse daher alles ziemlich schnell wieder .. Aber sieh oben.
Ich habe daher auch die cron 'abschaltet' und starte sie extra durch ein script, dass wiederum von einen 'hd_Wächter' einmal am Tag gestartet wird. mit einem sync am Schluß..
Wie schalte ich die cron ab? Reicht's wenn alle Einträge auskommentiert werden?
nas:/usr/local/sbin # crontab -l no crontab for root
So wie's aussieht ist kein cron aktiv oder? Ich hab alles in den cron-Foldern /etc/cron/ /etc/cron.daily/ ... auskommentiert und die Routinen in ein script 'verlegt' (auch so was mit einer 'ersten Zeile': #!/bin/bash Infos zu bash:http://linuxreviews.org/beginner/abs-guide/en/index.html) Das einmal am Tag ausgeführt wird, dazu kommt dann die Platte hoch, weil auch best. andere Dinge dann geschehen.
Der hd_Wächter kann auch anschalten zu log-schreiben, warum die Platte hoch kam. Kannst alles haben, wenn'st willst, aber ich bin ein lausiger Programmierer, denke ich.
Gerne, wenn eine kleine Anleitung dabei ist. hmm, das mit der Anleitung ist so eine Sache ;) Aber ich schick's Dir mal als pm.
Calli -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org