Posts Tagged ‘ shell ’

Hardwareuhr, Systemzeit und Unixzeit

Wenn man seinen PC nach Tagen wieder einmal hochfährt, “weiß” er trotzdem die genaue Zeit. Warum eigentlich? Und was unterscheidet die Hardwareuhrzeit von der Systemzeit?

 

Crystal 128 xchat%2Bxclock Hardwareuhr, Systemzeit und Unixzeit zeit unixzeit uhr shell linux hwclock hardware bios Batterie bash Akku

Quelle: Wikimedia

Jeder PC besitzt eine Knopfzelle oder einen Akku, der sicherstellt, dass die Hardwareuhr nie die korrekte Zeit verliert. Nach ein paar Jahren (oder wenn man die Knopfzelle für einige Zeit herausnimmt) verliert der PC die Hardwarezeit – und auch die Einstellungen des BIOS (inklusive eines eventuellen BIOS-Passworts).

Die Hardwareuhr und die Systemzeit müssen nicht zwangsläufig gleich sein. Beim Bootvorgang setzt der Kernel die Systemzeit aus der Hardwareuhr. Bezieht ein System danach jedoch z.B. die Zeit durch einen Zeitserverver (Protokoll: ntp), können die Hardwareuhr und die Systemzeit durchaus abweichen. Will man die aktuelle Zeit der Hardwareuhr auslesen, kann man – als privilegierter Benutzer – den Befehl hwclock benutzen. Beispiel auf einem Ubuntu-System:
root@linuxnetz: # hwclock
Do 26 Mär 2009 18:29:00 CET  -0.950218 Sekunden

Um zu erfahren, wie hwclock die Hardwareuhrzeit erhält, nutzt man hwclock mit der Option –debug.

root@linuxnetz: # hwclock –debug

hwclock from util-linux-ng 2.14
Benutze /dev interface to clock.
Letzte Abweichungskorrektur vorgenommen bei 1238082413 Sekunden nach 1969
Letzte Kalibrierung vorgenommen bei 1238082413 Sekunden nach 1969
Hardwareuhr geht nach UTC Zeit
Die Hardwareuhr läuft vermutlich in UTC.
Warte auf Uhrtick…
… erhielt Uhrtick
Zeit gelesen aus Hardwareuhr: 2009/03/26 17:31:22
Zeit der Hardwareuhr: 2009/03/26 17:31:22 = 1238088682 Sekunden seit 1969
Do 26 Mär 2009 18:31:22 CET  -0.416696 Sekunden


Hier erfahren wir ganz nebenbei, dass seit dem 1. Januar 1970 00:00 h UTC 1238088682 Sekunden vergangen sind. Bis heute zählen Unixsysteme die Sekunden (Unixzeit) seit diesem Datum (EPOCH) , um sie erst dann in ein menschenverständliches Format umzuwandeln.

Um die Systemzeit auszulesen, verwendet man den Befehl date. Beispiel:
guest@linuxnetz:~$ date
Do 26. Mär 18:44:25 CET 2009

Um die Harwareuhrzeit manuell zu setzen, verwendet man die Option –set:
root@linuxnetz: # hwclock --set --date="1/23/88 10:10:10"
root@linuxnetz: # hwclock
Sa 23 Jan 1988 10:10:16 CET  -0.880845 Sekunden

Soll die Systemzeit in die (nun auf 1988 gestellte) Hardwareuhr geladen werden – da die Systemzeit die Zeit durch einen Zeitserver bezieht – dann geht dies so:
root@linuxnetz: # hwclock --systohc
Um die Hardwareuhrzeit in die Systemzeit zu laden verwendet man:
root@linuxnetz: # hwclock --hctosys
Weiterführende Infos:
man date
man hwclock

Konsolensitzung lückenlos speichern

Das Problem: In der shell kann man mit dem Befehl ‘history’ zuletzt benutzte Befehle anzeigen, doch nicht deren output. Was also tun, wenn man die Sitzung auf der Konsole lückenlos dokumentieren will?

112px bash demo1 Konsolensitzung lückenlos speichern shell script linux konsole bash admin

bash

tuxbox:# history
(… Ausgabe verkürzt)
312     cd

313     ls
314     cd pics
315     ls

I.d.R. werden die zuletzt benutzten Befehle im Home-Verzeichnis des Benutzers in der Datei ‘.bash_history gespeichert.  In obigem Beispiel zeigt uns der Befehl ‘history’ die zuletzt genutzten Befehle zwar an, nicht aber deren Ausgabe. Welche Ordner befinden sich im Home-Verzeichnis? Welche Ordner/Bilder im Verzeichnis ‘pics’` ?

Was aber tun, wenn man z.B. eine komplizierte Konfigurationsänderung vornimmt und eine exakte Dokumentation der Vorgänge haben will? Hier hilft der Befehl ‘script’ .
script‘ öffnet eine weitere shell und dokumentiert nun alle Befehle und deren Rückgabe. Diese speichert er in der  Datei ‘typescript‘ im Home-Verzeichnis des Benutzers. Die Sitzung der Aufzeichnung beendet man nun entweder mit ‘exit‘ oder der Tastenkombination [STRG + D]. Um evtl. auftretende lästige Escape-Sequenzen zu vermeiden, öffnet man die datei ‘typescript‘ am Besten mit dem Befehl ‘more‘. Soweit die Theorie.
Beispiel:
tuxbox:# script
(…Es öffnet sich eine neue shell…)
tuxbox: #  cd
tuxbox: #  ls
pics   docs   ogg   logos
tuxbox: # cd pics
tuxbox: # ls
ubuntupics   job   holiday   popokatepetel
tuxbox: # exit
(… Die shell schließt sich…Wir sind zurück in der Ursprungs-shell)
tuxbox: # more typescript
(…Wir lassen uns den Inhalt der Datei ‘typescript’ anzeigen…)
tuxbox: #  cd
tuxbox: #  ls
pics   docs   ogg   logos
tuxbox: # cd pics
tuxbox: # ls
ubuntupics   job   holiday   popokatepetel wozup
tuxbox: # exit
Script beendet: Di 24 Mär 2009 19:05:30 CET

Eine äußerst nützliche und empfehlenswerte Funktion bei Änderungen an der Konfiguration oder wann immer eine lückenlose Dokumentation der Konsolensitzung angesagt ist.

Weierführende Information:
man script

Dateien ohne Kommentare (#) ansehen

Konfigurationsdateien sind oft gespickt mit Kommentaren, die die Konfiguration erleichtern sollen. Bei größeren Dateien geht dies aber auch auf Kosten der Übersichtlichkeit.

comments make crazy Dateien ohne Kommentare (#) ansehen shell linux bash apache admin /etc

Der Wald vor lauter Bäumen

Für (fast) alle Konfigurationsdateien gilt: Beginnt eine Zeile mit einem `#`, so wird sie nicht interpretiert. Solche Zeilen haben den Zweck, die Konfiguration zu kommentieren oder einen Befehl vorübergehend zu deaktivieren. Dateien wie die httpd.conf (Apache Webserver) können für manchen Benutzer entmutigenden Charakter haben. Wie schön wäre es da, wenn man mit einem simplen Befehl vorübergehend nur die Zeilen anzeigen könnte, die auch tatsächlich interpretiert werden?

Ein Beispiel:
Lasse ich mir auf meinem System die Datei /etc/ntp.conf anzeigen …

cat /etc/ntp.conf

werden mir insgesamt 72 Zeilen angezeigt, die meisten davon sind Kommentare wie etwa:

# local clock (LCL)

Wie kann man die Datei nun so auslesen, dass nur die tatsächlich relevanten Zeilen ohne die Kommentare ausgespuckt werden? Die Lösung ist ein kryptisch anmutender Befehl, den man sich nicht merken muss. Praktisch ist es allemal, ihn per copy and paste irgendwo verfügbar zu haben.

Um eine Datei ohne Kommentare anzeigen zu lassen, hilft:

grep -Ev ‘^(#|$)’ /pfad/zur/datei

Beispiel für /etc/ntp.conf:

mymachine: grep -Ev ‘^(#|$)’ /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0  stratum 10
driftfile /var/lib/ntp/drift/ntp.drift
logfile /var/log/ntp
keys /etc/ntp.keys
trustedkey 1
requestkey 1

Mehr als 7 Zeilen bleiben nicht übrig, die 64 Zeilen Kommentare werden nicht angezeigt.

Bild: Wikimedia

Stromverbrauch bei Laptop-Akkus

Dieser Artikel veranschaulicht, wie man mit einfachen Bordmitteln Informationen über den Stromverbrauch seines Laptop-Akkus herausfinden kann.

Nuvola apps laptop battery Stromverbrauch bei Laptop Akkus shell notebook linux laptop battery Batterie Akku acpi /proc

Stromverbrauch bei Laptops

Das Verzeichnis /proc liefert eine Unmenge an Informationen über das laufende System. Die Informationen über den Akku des Notebooks findet man so (ausgehend von einem Akku mit der Bezeichnung BAT0):

# cd /proc/acpi/battery/BAT0
# ls
alarm  info  state

Werfen wir doch mal einen Blick in info, um Aufschluss über den momentanen Zustand des Akkus meines HP Pavillion zu bekommen:

# cat state
present:                 yes
design capacity:         6000 mAh
last full capacity:      2848 mAh
battery technology:      rechargeable
design voltage:          14800 mV
design capacity warning: 147 mAh
design capacity low:     89 mAh

capacity granularity 1:  10 mAh
capacity granularity 2:  25 mAh
model number:            Primary
serial number:
battery type:            LION
OEM info:                Hewlett-Packard

Laut Hersteller sollte die Batterie eine Kapazität von 6000 mAh haben (design capacity). Meine hat bei der letzten Vollladung gerade mal müde 2848 mAh zustande gebracht (last full capacity). Zeit für eine neue Batterie…

Das erste Warnsignal (“Achtung! Batterie wird schwach!”) wird bei 147 mAh angezeigt (design capacity warning). Bei 89 mAh sollte das Herunterfahren des Systems veranlasst werden (design capacity low).

Wir befinden uns noch immer im Verzeichnis /proc/acpi/battery/BAT0 und sehen uns nun die Datei state an.

# cat state
present:                 yes
capacity state:          ok
charging state:          charged
present rate: 2243 mA
remaining capacity:      2848 mAh
present voltage:         12411 mV

Das Notebook ist gerade mit dem Netzteil verbunden, die verbleibende Kapazität entspricht der (weiter oben ausgelesenen) vollen Kapazität von 2848 mAh (remaining capacity). Bei einer Entladung von 2243 mA (present rate) hält der Akku gerade mal eine gute Stunde im vollgeladenen Zustand.

Wer also wissen will, wie viel zusätzlicher Strom z.B. durch das Ansehen einer DVD oder den download der jüngsten Ubuntu-Distribution verbraucht wird, der kann dies ganz einfach durch einen Blick in das /proc Verzeichnis herausfinden. Alles was man tun muss, ist die Differenz von present rate vor und während der Ausführung einer Anwendung zu vergleichen.