linux:administration

Administration

Warum kam es zu dem Problem?
Welche Programme sind an dem Geschehen beteiligt?
Was ist der Wortlaut der Fehlermeldungen?
Wie heisst Deine Distribution?
Warten Sie Bitte auf Rückfragen der Rettungsleitstelle.
  • Hilfe/Dokumentation (man + Kategorien! [man man], info, apropos, whatis) tldp.org, lok. user groups, irc, foren, mailinglisten
  • Hardware-Erkennung: lsusb, lshal, lspci (lspci -knn), lshw
    • dmidecode: zeigt detaillierte Infos über CPU, Arbeitsspeicher durch den DMI-Bus
    • kudzu: RedHat, Fedora
    • hwsetup: Knoppix
    • discover Debian Mandriva?
    • hwinfo SuSE
    • Harddrake Mandriva
    • HotPlug für hotplug-Geräte wie FireWire, USB usw. SATA-hotplug geht z.B. mit (host0, host1, …):
      echo "- - -" > /sys/class/scsi_host/host0/scan
  • Bootmanager und Bootprozess, Runlevel (init 1 bzw. heute sein symlink telinit, /etc/inittab), initrd
  • shutdown (init 0, halt, shutdown -h now oder +10 für 10min, -r = reboot, shutdown -c) Server zeitgesteuert herunterfahren
  • Dateisystemaufbau ( /proc !)
  • Umleitungen der Eingabe- und Ausgabe, UNIX Pipes und Streams
  • Devices (LPI 1 S.153), Dateitypen (sockets, fifos, …)
  • Kernel (Versionen, Branches , uname -a)
  • Dateisysteme und Formatierung (Journaling, inodes, superblock, sym- / hardlinks, Dateisystemchecks: tune2fs), FIXME
    • Mounten / Mountoptionen / Automounter / Freigaben mounten
    • Dateimanagement: ls, cd, mkdir, rm, rmdir, cp, mv, ln, touch, df, du (du / -ah | sort -nr | less) , pwd, cat, grep, wc, head, tail, less, more
    • Verzeichnisse ab- & vergleichen: rsync, diff -qr Verzeich1 Verzeich2 1), Dateimanager wie ranger, mc oder krusader
    • offene Dateien: lsof (offene Datei anzeigen) und fuser -u (Wer hat die Datei geöffnet?)
    • Bibliotheken: ldd (Abhängigkeiten), ltrace (wann werden diese Bibl. aufgerufen?)
    • sparse-files (wachsende Dateien die nicht voll zugewiesen sind)2)
    • Dateiänderungen mit Inotify überwachen
  • System- und Umgebungsvariablen (env oder printenv, export, set)
  • Rechte (chown, chmod, su, sudo, /etc/sudoers, SUID, SGID usw.), Quota (quota, edquota, repquota, quotaon)
    • Benutzer: (hinzufügen: users, useradd (adduser), usermod, userdel, chfn, chsh, deaktivieren, PAM, Dateien wie shadow, visudo, vigr (group), vipw (passwd), wohl nicht mehr nötig: pwconv; UID 500/1000, GID 100) chage. siehe hier
    • Gruppen: groups, groupadd (addgroup), groupmod, groupdel, newgrp
    • login (id, w, who, whoami, last, lastb, /etc/motd, issue + issue.net, shell, home, /etc/skel , etc/profile /etc/.bashrc (bei nicht netzlogins, aber oft include).
  • Dienstekonzept (Daemons) FIXME(Seite)
  • SWAP (mkswap, swapon, swapoff), Verteilung auf mehrere Festplatten, wenn er mit gleicher Priorität für mehrere Partitionen aufgerufen wird:
    /dev/sda2       none            swap    sw,pri=1
    /dev/sdb2       none            swap    sw,pri=1

    /proc/sys/vm/swappiness (50-60 normal, höher = mehr swapping): Einstellung vm.swappiness=60 in /etc/sysctl.conf

    cat /proc/meminfo

    (Swap insgesamt + frei),

    cat /proc/swaps

    (benutzte Swap-geräte),

    swapon -s

    (swap-Geräte),

    vmstat

    (Statistiken über den virtuellen Speicher)

  • Software installieren (kompilieren, Paketmanager)
  • Tastenkombinationen (strg-alt-f1-6 ; strg-alt-backspace, alt-z, alt-d,) überlastetes Systemit mit sysrq-Tasten sicher ausschalten
  • Uhrzeit setzen:
    • per NTP:
      ntp -q -d

      3)

    • manuell:
      date -s '2012-07-10 19:09:00' +'%Y-%M-%d %T'
    • Uhrzeit in Hardware/RTC/CMOS-Uhr schreiben:
      hwclock -w # entspricht --systohc
  • Shells (shells, alias, ncurses, history, auto-completion), terminal, console
  • Konsolen, (Virtuelle) Terminals, Tastenkombinationen
  • Drucker / Weg durch das Drucksystem (Cups: webinterface, /etc/cups/cupsd.conf /etc/cups/printers.conf; lpd: /etc/printcap, lpq, lp, lpr, lpc, lprm)
  • Blockstorage
  • Objectstorage
  • Dateisysteme
  • Netzwerkdateisysteme
  • scale-up vs. scale-out
Befehle in Abhängigkeit ausführen
BefehlA ; BefehlB 
BefehlA ausführen und dann BefehlB ausführen egal ob BefehlA erfolgreich war oder nicht
BefehlA &  BefehlB 
BefehlA im Hintergrund ausführen und dann gleich BefehlB ausführen ohne auf das beendet von BefehlA zu warten
BefehlA && BefehlB 
BefehlA ausführen und dann BefehlB ausführen wenn BefehlA erfolgreich war
BefehlA || BefehlB 
BefehlA ausführen und dann BefehlB ausführen falls BefehlA einen Fehler ergab
Befehl Beispielaufruf Zweck des Programms
kill kill PID killt einzelne Prozesse nach ihrer Prozess-ID (PID), -9 SIGKILL
killall killall -HUP named killt (mehrere) Prozesse nach ihrem Namen 7)
mpstat 8) mpstat -P ALL 2 10 (alle 2s 10 Messungen) zeigt die Auslastung der CPU, längere Überwachung und Mittelwerte
ps ps auxww laufende Prozesse
pgrep / pkill pgrep -u root sshd sucht/killt Prozessnamen
top laufende Prozesse mit Ressourcenverbrauch; :!: htop: viel besser als top, ncurses-Oberfläche, interaktiv

Links

Debugging

  • strace startet Programme und gibt deren Aufrufe wieder.
Aufruf Wirkung
strace programm startet programm und gibt dessen Systemaufrufe auf dem Bildschirm aus
strace -o prog.log programm wie oben, aber Ausgabe in prog.log Logdatei
strace -f -o prog.log programm wie oben, aber verfolgt auch Kindprozesse
strace -p pid verfolge die Aufrufe des laufenden Prozesses mit Prozess-ID pid
strace -e trace=open,close,read,write gibt nur Systemaufrufe aus, die das Dateimanagement betreffen
strace -e trace=open,close,read,write gibt nur Systemaufrufe aus, die das Dateimanagement betreffen
strace -e trace=file gibt Dateioperationen aus
  • GDB: The GNU Project Debugger FIXME
  • Lüfterdrehzahlen und Temperaturen (Paket lm-sensors):
    sensors
  • Arbeitsspeicher: cat /proc/meminfo bzw. cat /proc/mtrr
  • DMA: hdparm
  • Geräte IDs anzeigen: lshal
    • PCI-Geräte: lspci
    • USB-Geräte: lsusb
  • Grafikkarte: xrandr
  • S.M.A.R.T.-Status für Festplatten: smartmontools (siehe S.M.A.R.T.- und Temperaturstatus auslesen)
  • PCMCIA: pccardctl status
  • Taktregelung der CPU
    • Paket cpufrequtils:
      cpufreq-info
    • auch ein Gnome-applet mit der gleichen Funktionalität verfügbar
    • Direktzugriff mittels sysfs (Einheit ist Hz, cpu0 ist der erste Kern, cpu1 der zweite usw.; Ändern der Werte einfach möglich z.B. 1 Ghz als Minimaltakt einstellen wäre
      echo "1000000" > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
      • Governor einstellen (userspace, conservative, …)
        cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
      • Liste der Governors anzeigen:
        cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
      • minimale CPU-Frequenz: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
      • maximale CPU-Frequenz: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
      • Geschwindigkeit einstellen (userspace governor): /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
      • Statistiken:
        • cat /sys/devices/system/cpu/cpu0/cpufreq/stats/total_trans
        • cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
      • mit Debian-Paket sysfsutils kann man Einstellungen in /etc/sysfs.conf dauerhaft hintelegen, z. B.
        devices/system/cpu/cpu0/cpufreq/scaling_min_freq = 3100000
  • I/O (auch: E/A = Eingabe/Ausgabe-operationen auf Datenspeichern wie Festplatte)
    • :!: Tools des „sysstat“-Pakets (sar, mpstat, iostat, sadf und sa; Auswertung z.B. mit ksar) für Linux sollte man sich anschauen.
    • iotop für eine schnelle Anzeige welches Programm gerade I/O-Belastung verursacht
    • unbekannte Dateien identifizieren: file (Dateityp anhand von typischen Zeichenketten erkennen lassen) und strings (druckbare Zeichen einer Datei ausgeben)
  • Stresstest
    • Pakete stress und stressapptest
      stress -t 36000 -c 3 -i 3 -m 3 -d 3 --vm-bytes 768MB

      9)

  • gems: Den Inhalt einer Console auf mehrere Rechner übertragen

Das Verzeichnis /etc sollte auf Servern mit mehreren Administratoren oder allgemein auf wichtigen System versioniert werden. Dazu lassen sich entweder Versionsverwaltungssysteme benutzen oder alternativ spezialisierte Tools wie etckeeper oder metche verwenden.

  • server:Quota
  • allgemeine Limits: ulimit -n

Traditionellen Unix-implementierungen unterscheiden nur zwischen priviligiertem Benutzer (id=0, root) und unpriviligiertem Benutzer (andere ID als 0). Moderne Linux-Distributionen können Programmen eine Vielzahl von einzelnen Fähigkeiten (=capabilities) geben ohne pauschal alles erlauben zu müsssen. Die Programme setcap und getcap verwalten die Rechte.

Beispielaufruf - Wireshark bekommt CAP_NET_RAW und CAP_NET_ADMIN mit unten genannter Wirkung:

sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
Buchstabe Bedeutung Erklärung
e Effective the capabilities used by the kernel t perform permission checks for the thread.
p Permitted the capabilities that the thread may assume (i.e., a limiting superset for the effective and inheritable sets). If a thread drops a capability from its permitted set, it can never re-acquire that capability (unless it exec()s a set-user-ID-root program).
i inheritable the capabilities preserved across an execve(2). A child created via fork(2) inherits copies of its parent's capability sets. See below for a discussion of the treatment of capabilities during exec(). Using capset(2), a thread may manipulate its own capability sets, or, if it has the CAP_SETPCAP capability, those of a thread in another process.
  • Kurzreferenzen: Linux kurz&gut (O`Reilly): Teil einer Reihe, gibts auch für Apache, MySQL, PHP
  • Komplettwerk: Linux (M. Kofler, Addison-Wesley)
  • Apache: Apache Webserver 2 (S. Wolfgarten, Addison-Wesley)
  • MySQL: MySQL 5 (M. Kofler, Addison-Wesley)

1)
-r = rekursiv -q = nicht die Unterschiede innerhalb der Dateien anzeigen
2)
sparse-Datei anlegen z.B. einer Datei mit 128 GB:
dd if=/dev/zero of=filename.img bs=1k seek=128M count=1
mit du -lah und ls -lah kann man den Unterschied zwischen aktuell belegtem und maximal belegbaren Speicherplatz. Achtung: In dem Augenblick wo eine sparse-Datei auf ein anderes Dateisystem kopiert wird muss auch der maximale Speicherplatz zur Verfügung stehen!
3)
veraltet:
ntpdate de.pool.ntp.org
4)
traceroute TCP-SYN Check
traceroute -T -p PORTNR HOST
5)
libpcap unterstützt ab Version 1.0.0 ebenfalls zero-copy aber nur für das sniffing
6)
Beispielaufruf:
tshark -i eth0 -w Traffic-sniff.pcap
7)
bei Debian im Paket psmisc
8)
mit sysstat-Paket enhalten
9)
3 CPU Prozesse für sqrt(), 3 sync(), 3 Speichertester malloc()/free()