corner image
home ·mein Linux (Unix) Waschzettel


letzte Änderung:
TCP-States
Netzwerk
Links
Australien
Wertpapiere

mein Linux (Unix) Waschzettel

by Claus Ebert

Version (0.55a)

Alle Kommandos, die ich von Linux (oder anderen Unixen) wissen sollte, aber mir nicht merken kann (will).
Ja, ich lebe im Geburtsort von Alois Alzheimer ... ;-)

1.Bash

2.Backup

3.Paket-Management

4.Dateien / Verzeichnisse

5.Netzwerk

6.User und Gruppen

7.Filesysteme

8.System

9.Booten

10.Hardware

11.OS Spezifisches

12.Sonstiges


1. Bash

1.1 Tastenkombinationen

Anmerkung:
C-c entspricht dem gleichzeitigen drücken der Tasten STRG (CTRL) und 'c'
A-c oder M-c entspricht dem gleichzeitigen drücken der Tasten ALT (META) und 'c'
Rubout entspricht der Taste Backspace

Kürzel Beschreibung
C-a setzt den Cursor an den Zeilenanfang (verwenden Sie das, wenn die POS1-Taste nicht funktioniert).
C-e setzt den Cursor ans Zeilenende (verwenden Sie das, wenn die ENDE-Taste nicht funktioniert).
C-f geht ein Zeichen nach rechts.
C-b geht ein Zeichen nach links.
A-f geht ein Wort nach rechts.
A-b geht ein Wort nach links.
C-l löscht den Bildschirm, lässt aber die Kommandozeile unangetastet.
C-t vertauscht das Zeichen unter dem Cursor mit dem links davon. Der Cursor wird gleichzeitig nach rechts bewegt.
A-t vertauscht das Wort unter dem Cursor mit dem links davon. Der Cursor wird gleichzeitig ans Ende des zweiten Wortes gesetzt.
C-k löscht alles vom Cursor bis zum Ende der Zeile. Das Zeichen unter dem Cursor wird mit gelöscht.
C-u löscht alles vom Anfang der Zeile bis zum Cursor
C-x Rubout wirkt wie C-u.
A-d löscht bis zum Ende des aktuellen Wortes. Wenn der Cursor zwischen zwei Wörtern steht, dann löscht es bis zum Ende des nächsten Wortes.
A-Backspace löscht bis zum nächsten Sonderzeichen links vom Cursor und bewegt den Cursor entsprechend zurück. Beispiel: Sie haben 'ls /proc/443' eingegeben, dann löscht C-w '443' und es bleibt 'ls /proc/' stehen.
C-w löscht das Wort (in diesem Fall durch Leerzeichen begrenzt) links vom Cursor und bewegt den Cursor entsprechend zurück. Beispiel: Sie haben 'ls /proc/443' eingegeben, dann löscht C-w '/proc/443'.
A-\ löscht alle Leerzeichen links vom Cursor und bewegt den Cursor entsprechend zurück.
top

2. Backup

2.1 tar und mt

mt= magnetic tape;
tar= tape archive; -c= create; -v= verbose;-x= extract; st= scsi tape; -t= list; -f= file(system), -z = compress (gzip meistens nur unter Linux).

Anmerkung: /dev/st0 entspricht unter AIX /dev/rmt0

Befehl Beschreibung
mt -f /dev/st0 status Gibt des Status und noch einige andere Infos aus
tar -cvf /dev/st0 /dir_to_tar Schreibt den Inhalt des Verzeichnisses dir_to_tar auf das Band
tar tvf /dev/st0 Zeigt den Inhalt des Tapes an
tar -xvf /dev/st0 /data Liest nur den Inhalt des Verzeichnisses /data vom Band zurück
(wenn die -p Option gesetzt ist, wird versucht die Orginal-Rechte wiederherzustellen)
tar xf EXPERIMENT.tar data17 Falls man nur eine Datei oder ein Verzeichnis benötigt. Dieses Kommando stellt die Datei "data17" aus dem tar EXPERIMENT.tar wieder her
mt -f /dev/st0 rewind  Spult das Band zurück
mt -f /dev/st0 offline  Wirft das Band aus.
mt -f /dev/st0 erase Löscht das ganze Band (dauert ziemlich lange)
mt -f /dev/st0 datcompression Schaltet die Datenkomprimierung ein
mt -f /dev/st0 retension Spult das Band einmal komplett um, damit das ganze Bank gleich straff gespannt ist
top

2.2 gezipptes Tar ohne Zwischendatei entpacken

Nicht jedes Tar kann direkt gezippte tar's verarbeiten. Um sich jedoch den Umweg (entpacken dann tar) zu ersparen kann man folgendes Kommando verwenden:
gzip -d < /datei/name | tar xfv -

top

2.3 tar und zip ohne Zwischendatei

Nicht jedes tar enthält einem eingebauten komprimierer.
Um dennoch ein komprimiertes tar zu erhalten kann man zuerst ein tar erstellen und dieses dann komprimieren, oder folgendes Kommando verwenden:
tar cf - {verzeichnis z.B: /devel/CVSROOT/*} | gzip > /tmp/tar/Datei.tar.gz

top

2.4 tar und zip ohne Zwischendatei mit Pipe

Eine Pipe ist dann sehr hilfreich, wenn man große Datenmengen verarbeiten muss und sich keine großen Zwischendateien leisten kann.

Zuerst löschen wir die Pipe (da keine Erstellt wird, falls noch eine alte vorhanden ist):
rm -f name_der_pipe

Dann erzeugen wir uns eine frische Pipe:
mknod name_der_pipe p            # or mkfifo pipe 

jetzt lassen wir gzip im Hintergrund aus der Pipe lesen
gzip < name_der_pipe > gezipptes_file.gz &

danach sollten wir gzip etwas Zeit geben um zu starten
sleep 5

und danach wird die Pipe gefüttert
tar cvf name_der_pipe /usr/var/test/*

und jetzt löschen wir die Pipe wieder
rm -f name_der_pipe

top

3. Paket-Management

3.1 Benutzung der verschiedenen Packetmanagement-Systeme

Beschreibung rpm dpkg / apt
Ist ein Packet installiert rpm -qa | grep -i Paket dpkg -l "*Paket*"
Informationen über ein Paket rpm -qi Paket dpkg -p Paket
Info's über das Archiv rpm -qip .rpm-Datei dpkg -I .deb.Datei
Liste der installierten Pakete ? dpkg -l | grep ^ii
Dateien im Paket rpm -pl Paket dpkg -L Paket
Dateien in einer Datei rpm -qlp .rpm-Datei dpkg -c .deb-Datei
Aus welchem Paket stammt die Datei rpm -qf Datei dpkg -S Datei
Lokales Paket installieren rpm -i .rpm-Datei dpkg -i .deb-Datei
Aus dem Internet installieren rpm -i URL apt-get install Paket
Paket aktualisieren rpm -U .rpm-Datei dpkg -i .deb-Datei
Paket löschen rpm -e Paket dpkg -P Paket
top

3.2 Debian 'unstable'-Pakete in Woody installieren (Backport)

Manchmal ist es notwendig, 'neuere' Versionen in Woody zu installieren.

Wenn z.B das Paket samba in einer Neueren Version installieren will, als in stable vorhanden, kann man sich eines sog. Backport-Servers bedienen.

Dazu muss man in der Datei
/etc/apt/sources.list

Folgende Zeilen einfügen:
deb http://www.backports.org/debian stable samba 
oder für die Sourcen:
deb-src http://www.backports.org/debian stable samba

Danach mit
apt-get update
und
apt-get upgrade
Woody aktualisieren.

HINWEIS: www.backports.org ist nur einer von vielen Backport-Servern im Internet (einfach mal mit Google suchen)

top

3.3 Packete unter Debian aus Sourcen kompilieren und installieren

Viele Wege führen hier nach Rom ( .. zum Ziel)

  • Methode 1
    cd /usr/src
    apt-get build-dep mozilla
    apt-get source -t unstable mozilla
    cd mozilla-...
    vi debian/rules
    [compiler flags setzen]
    debian/rules binary
    dpkg -i ../mozilla*.deb
  • Methode 2
    cd /usr/src
    apt-get build-dep mozilla
    apt-get source mozilla
    cd mozilla-...
    dpkg-buildpackage
    dpkg -i ../mozilla*.deb
  • Methode 3
    cd /usr/src
    apt-get build-dep mozilla
    apt-get -b source mozilla
    dpkg -i ../mozilla*.deb
top

4. Dateien / Verzeichnisse

4.1 Große Dateien teilen

Große Dateien kann man unter LINUX splitten, damit sie z.B. auf Diskette passen:
split -b 1440k dateiname block
zerlegt die Datei Dateiname in 1440k-Blöcke mit den Namen blockaaa, blockaaab, usw.
Mit cat block* > dateiname
kann man die Blöcke wieder zu einer großen Datei zusammenbauen.

top

4.2 CD-Images auf der Festplatte

Hat man ein ISO-Image einer CD aus dem Internet oder selbst erstellt, so kann man von Linux aus so zugreifen, als läge die zugehörige CD in einem Laufwerk.
Ist dateiname.iso das CD-Image, so setzt man folgenden Befehl ab:
mount dateiname.iso /mnt -t iso9660 -o ro,loop=/dev/loop0
Auf die ISO-Version der CD kann man dann über den Pfad /mnt zugreifen.

top

4.3 Komplettes Linux auf andere Festplatte kopieren

Es soll von der Partition dev/hda5 eine Linux-Installation komplett auf eine neue Platte auf /dev/hdb5 kopiert werden. Die neue Partition ist unter /part1 gemountet:
cd /
find . -xdev -print0 | cpio -pdum0 --sparse /part1
Danach müssen in /etc/fstab die Mountpoints richtig gesetzt werden.
Das neue Linux kann mit linux hdb5 gestartet werden. (oder Lilo neu konfigurieren)

top

4.4 Windows-Installation mit Linux sichern

Mit Linux kann man ohne Probleme komplette Windows-Partionen sichern:
dd if=/dev/hda1 | gzip > winimage.gz
sichert eine komplette Partition in die Datei winimage.gz (nämlich dev/hda1 )
Zum Wiederherstellen der Imagedatei dient der Befehl:
gunzip -c winimage.gz | dd of=/dev/hda1

top

4.5 Disketten-Sicherungen in Linux:

Mit Hilfe des dd Kommandos lassen sich leicht Kopien von Disketten oder CD' s erstellen.
Das Kommando: dd if=/dev/fd0 of=FloppyImage
legt ein komplettes Abbild einer Diskette in der Datei FloppyImage an.
Dieses Image lässt sich wieder mit
dd if=FloppyImage of=/dev/fd0
auf eine Diskette schreiben.
Um ein Abbild zu mounten, kann man folgendes Kommando benutzen:
mount -o loop -t msdos FloppyImage /mnt
Damit kann man auf einzelne Datei des FloppyImages zugreifen.

top

4.6 Komplette Verzeichnisse kopieren

Ein Home-Verzeichnis eines Benutzers soll vollständig in das Verzeichnis /sonst kopiert werden
cd /home
find . -depth -xdev | cpio -pdm /sonst

top

4.7 Verzeichnisgrößen anzeigen

du -k . | grep '[.]/[^/]*$'
Mit Hilfe dieses Kommandos werden die Verzeichnisse der aktuellen Ebene und deren gesamte Größe angezeigt

top

4.8 Viele Dateien löschen

find ~/test -name "*.txt" -exec {}rm \;
löscht alle Dateien mit *.txt aus dem Verzeichnis ~/test rekursiv in auch in allen Unterverzeichnissen.
Um die Rekursion auf eine Ebene zu beschränken führt man aus:
find ~/test -maxdepth-name "*.txt" -exec {}rm \;
Es geht auch so:
ls -d ~/test/*.txt | xargs rm
Das Ganze lässt sich auch kombinieren:
find ~/test -maxdepth 1 -name "*.txt" | xargs rm
Um auch Leerzeichen im Dateinamen zuzulassen kann man den Aufrufe folgendermaßen durchführen:
find ~/test -maxdepth 1 -name "*.txt" -print0 | xargs -0 rm
Dies kann notwendig sein, falls der Platz zum Expandieren mittels rm ~/test/*.txt nicht ausreicht.

top

4.9 ftp automatisieren

um in einem Shell-Script Dateien automatisiert auf einen anderen Rechner zu übertragen kann ftp verwendet werden.
Dazu muss man im HOME-Verzeichnis des users die Datei ~/.netrc erstellt werden, die von ftp abgearbeitet wird. Nur der user darf Leserechte auf diese Datei haben.

chmod 400 ~/.netrc sollte das sicherstellen.

Der Inhalt der Datei kann von dem Skript (oder von Hand) gefüllt werden. Der Inhalt der Datei ist mehr oder weniger selbsterklärend.
Im Zweifelsfall hilft ein man netrc bestimmt weiter.
Eine Besonderheit ist in diesem Zusammenhang das Macro init das automatisch beim starten des ftp-Clients ausgeführt wird. In unserem Fall können wir den Dateiupload(download) mit diesem Macro lösen.


machine zielrechner.com
login username
password das_ftp_passwort

macdef init
cd Pub/meinverzeichnis
bin             #datei im binärmodus Übertragen
prompt          #promot ausschalten, wenn wir mehrere Dateien wollen
mget *          #get alle Dateien oder mput .. wie mann will
quit            #beenden, wenn nichts mehr zu tun ist
[leere Zeile]

Beispiel zum automatisieren des Ftp-Filetransfers in einem Script

top

4.10 System über ssh holen

Gibt es im erreichbaren Netz einen anderen Computer (z.B. 192.168.2.1), der ein lauffähiges System vorweisen kann, startet man ein Rettungssystem (SUSE, Knoppix oder ähnliche). Nun mountet man die Installationspartition so, dass sie auch schreibbar ist, beispielsweise nach /mnt. Nun genügt ein einziges Kommando:

ssh 192.168.2.1 tar clf - / | (cd /mnt; tar xf - )

Alles wird von tar auf dem Remotehost zusammen gesammelt und unter /mnt auf dem lokalen Computer entpackt. Fertig und sogar noch verschlüsselt.
Gegebenfalls kann man jetzt noch Mountpoints verteilen und man sollte aufpassen, wie die Einteilung der Partitionen auf dem Remotehost war, da man vielleicht /mnt/etc/fstab anpassen muss.
Bei Masseninstallation von gleichartigen Computern ist das ein guter Weg, einen Computer, der vollständig eingerichtet ist und stabil läuft, zu klonen.

top

5. Netzwerk

5.1 Verschiedene DNS-Server unter LINUX

Verwendet man verschiedene Internetprovider für die Einwahl, ist es mühsam stets die Adressen der Nameserver in /etc/resolv.conf einzutragen. Aktuelle Versionen des pppd kennen die Option 'userpeerdns'. Gibt man diese Option an, erfragt der pppd bis zu zwei Nameserveradressen beim Provider und übergibt sie in den Variablen DNS1 und DNS2 an das Script /etc/ppp/ip_up . ip_up kann die Adressen dann automatisch in die Datei /etc/resolv.conf schreiben.

top

5.2 Alle MAC-Adressen ermitteln

Um alle MAC-Adressen des Netzwerks abgezeigt zu bekommen, kann man einen Ping an die Broadcast-Adresse des Netzwerks schicken (normalerweise die IP-Adresse mit der Null am ende)
ping -b -n 1 10.81.40.0 unter Linux oder
ping -n 1 10.81.40.0 unter Windows
Danach kann man die IP's und die dazugehörigen MAC-Adressen mit einem
arp -a abfragen

top

5.3 IP-Verbindungen anzeigen

Das Swiss-Army-Knife für den Netzwerk Administrator

Falls Parameter nicht beschrieben oder unklar sind dann hilft einem die Man-Page weiter

AIX Linux SunOS
Alle offenen Verbindungen anzeigen netstat -f inet netstat netstat -a
Alle offenen TCP Verbindungen anzeigen netstat -t
top

5.4 netstat

die Optionen von netstat (Linux)

Option Was tut sie
-o Zeigt einige zusätzliche Informationen zu den Netzlaufzeiten an
-a Zeigt alle Sockets an (auch alle listening Sockets)
-r Zeigt die Kernel-Routing Tabels an
-i Zeigt eine Liste aller verfügbarer Netzwerk-Interfaces an (inklusive der bisher übertragenen Datenmenge)
-M Zeigt eine Liste aller Maskierter Sessions an
-v Wird meist zusammen mit anderen Optionen verwendet. Alle Ausgaben werden sehr detailliert ausgeführt. (Die beste Beschreibung dafür ist die Übersetzung des Wortes verbose (gesprächig), von dem diese Option Ihren Buchstaben hat.
-e Zusätzliche Informationen

Beispiele für netstat

netstat
netstat ohne Parameter liefert eine lange Liste von Netz-Verbindungen.
Prinzipiell kann man diese Liste in zwei Teile zerlegen:

Active Internet connections (TCP, UDP, RAW) - Socket information

Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 linux.ahinc:netbios-ssn nt:1118 ESTABLISHED
tcp 0 0 linux.ahinc:netbios-ssn lorie:1025 ESTABLISHED
tcp 0 0 linux.ahinc:netbios-ssn roger:1025 ESTABLISHED
tcp 0 0 linux.ahinc:netbios-ssn omni:1825 ESTABLISHED
tcp 0 0 linux.ahinc.com:27381 ferret.toledolink.:6667 ESTABLISHED
tcp 0 0 linux.ahinc.com:telnet omni:1829 ESTABLISHED
udp 0 0 localhost:domain *:*
udp 0 0 linux.ahinc.com:domain *:*
udp 0 0 linux.ahinc.com:domain *:*
udp 0 0 linux.ahinc.:netbios-ns *:*
udp 0 0 linux.ahinc:netbios-dgm *:*
udp 0 0 linux.ahinc.:netbios-ns *:*
udp 0 0 linux.ahinc:netbios-dgm *:*
udp 0 0 localhost:1421 *:*
udp 0 0 localhost:1691 *:*
udp 0 0 localhost:1803 *:*
udp 0 0 localhost:1076 *:*

Was bedeutet das:

  • Proto Protokoll (tcp, udp, raw)
  • Recv-Q Anzahl von Bytes die noch nicht von einem Programm auf unserem Rechner aus dem Stack ausgelesen wurden.
  • Send-Q Anzahl von Bytes die noch nicht von der Remote-Seite aus dem Stack ausgelesen wurden
  • Local Address lokale adresse (hostname) und Port-Nummer des Sockets.
    Solange die Option -n nicht gesetzt ist versucht netstat die IP-Adressen in Host- und Domainnamen aufzulösen und die Port-Nummern als service-Namen anzuzeigen.
  • Foreign Address Adresse und Port-Nummer des entfernten Rechners.
    Solange die Option -n nicht gesetzt ist versucht netstat die IP-Adressen in Host- und Domainnamen aufzulösen und die Port-Nummern als service-Namen anzuzeigen.
  • State Socket Status. Da es für raw und udp Sockets keinen Status gibt bleiben diese leer
    • ESTABLISHED Verbindung hergestellt.
    • SYN_SENT Versucht gerade eine Verbindung herzustellen.
    • SYN_RECV Verbindung wird gerade Initialisiert.
    • FIN_WAIT1 FIN_WAIT2 Verbindung ist geschlossen und wartet auf die Beendigung der entfernten Seite.
    • TIME_WAIT Warte nach dem schließen der lokalen Verbindung auf die shutdown retransmission der entfernten Seite.
    • CLOSED Socket nicht in Benutzung.
    • CLOSE_WAIT Die entfernte Seite hat die Verbindung beendet, warte bis auch die lokale Seite beendet werden kann.
    • LAST_ACK Die entfernte Seite hat die Verbindung beendet und geschlossen. Warte au die Bestätigung.
    • LISTEN Höre auf ankommende Verbindungen
      solche Sockets werden nur dann angezeigt, wenn die Option -a gesetzt ist
    • CLOSING Verbindung soll beendet werden, aber es sind noch nicht alle Daten verschickt.

Active UNIX domain sockets (w/o servers)

Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] STREAM CONNECTED 589
unix 2 [ ] STREAM 590 /dev/log
unix 2 [ ] STREAM CONNECTED 686
unix 2 [ ] STREAM 687 /dev/log
unix 2 [ ] STREAM CONNECTED 720
unix 2 [ ] STREAM 721 /dev/log
unix 2 [ ] STREAM CONNECTED 760
unix 2 [ ] STREAM 761 /dev/log
unix 2 [ ] STREAM CONNECTED 808
unix 2 [ ] STREAM 809 /dev/log
unix 2 [ ] STREAM CONNECTED 9898058
unix 2 [ ] STREAM 9898059 /dev/log

Was bedeutet das:

  • Proto Das benutzte Protokoll (normalerweise unix)
  • RefCnt Referenz Zähler (Anzahl der verbundenen Prozesse)
  • Flags Gesetzte Flaggen :SO_ACCEPTON (angezeigt als ACC), SO_WAITDATA (W) oder SO_NOSPACE (N). SO_ACCECPTON wird für unbenutzte Sockets verwendet, wenn das dazugehörige Programm auf eine Connect-Anfrage wartet. Die anderen Flags sind für uns normalerweise nicht von Bedeutung.
  • Type Die verschiedenen Socket-Typen
    • DGRAM Used in Datagram (connectionless) mode.
    • STREAM Stream (connection) socket
    • RAW Raw socket.
    • RDM Reliably-delivered messages.
    • SEQPACKET Sequential packet socket.
    • PACKET - RAW Interface access socket

  • State
    • FREE Not allocated
    • LISTENING Listening for a connection request.
      Those sockets are only displayed if the -a switch is set.
    • CONNECTING About to establish a connection.
    • CONNECTED Connected.
    • DISCONNECTING Disconnecting.
    • (empty) Not connected to another socket.


top

5.5 Nameserver

Tools rund um DNS (Domain Name Service)

nslookup ws60
zeigt an wie der eingetragene Nameserver den Domain-Namen (ws60) in eine IP-Adresse auflöst
nslookup  10.81.40.4
zeigt an wie der eingetragene Nameserver die IP-Adreses in einen Domain Namen auflöst.
host  ws60
zeigt an wie der Name auf diesem Rechner aufgelöst wird

top

5.6 Hostnamen

Die verschiedenen Möglichkeiten des Befehls

In den untern genannten Beispielen gehe ich davon aus, das der Rechner den Hostname linux hat und in der Domain meinedomain.com ist.

Befehl Beschreibung
hostname zeigt den aktuell eingetragenen Hostnamen an. ( linux )
hostname neuerName setzt den Hostname auf neuerName (leider nur bis zum nächsten Neustart auf meiner Linux-Kiste).
Um den Namen dauerhaft zu ändern bietet sich der Befehl uname an.
hostname -d Zeigt nur die Domain an, zu der unser Rechner gehört ( meinedomain.com )
hostname -f Zeigt den vollen qualifizierten Host und Domain-Namen an ( linux.meinedomain.com )
hostname -i Zeigt die IP_Adresse des Rechners an ( z.B: 192.168.1.1 )
top

5.7 ipconfig

Anzeige der Netzwerk-Einstellungen

Der Befehl ifconfig (Interface Config) kann dazu benutzt werden, die Netzwerk-Adapter zu konfigurieren. In den meisten Fällen wird dieser Befehl aber verwendet um sich die aktuellen Einstellungen der Netzwerkkarten anzeigen zu lassen.
Praktisch ist auch, das auch die Sende (YX) und Empfangs (RX) Fehler mit angezeigt werden.

ifconfig zeigt folgendes an:

  • lo Link encap:Local Loopback
    inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
    UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
    RX packets:292320 errors:0 dropped:0 overruns:0
    TX packets:292320 errors:0 dropped:0 overruns:0
  • eth0 Link encap:10Mbps Ethernet HWaddr 00:60:94:57:D3:55
    inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:7820768 errors:3465 dropped:0 overruns:0
    TX packets:8643039 errors:0 dropped:0 overruns:0
    Interrupt:14 Base address:0x5180
  • eth1 Link encap:10Mbps Ethernet HWaddr 00:C0:F0:1F:55:26
    inet addr:216.227.29.113 Bcast:216.227.29.115 Mask:255.255.255.252
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:1224415 errors:0 dropped:0 overruns:0
    TX packets:208329320 errors:0 dropped:0 overruns:0
    Interrupt:11 Base address:0x5100

Die obige Ausgabe repräsentiert ein System mit zwei Netzwerkkarten (eth0 und eth1) und dem Standard loopback device (lo)
In der ersten Zeile der Netzwerkkarte wird die eindeutige MAC-Adresse dieser Karte ausgegeben (wird z.B für DHCP benötigt)
In der zweiten Zeile stehen dann die IP-Parameter (IP-Adresse (inet addr), Broadcast-Adresse (Bcast) und die Netzwerkmaske (mask)).
In der dritten Zeile ist der Wert der MTU (Maximum Transmission Unit) zu sehen. Dieser Wert kann für DSL-Benutzer von großer Bedeutung sein da Modems (Analog oder DSL) teilweise mit zu großen Werten nicht zurecht kommen.

top

6. User und Gruppen

6.1 Einen neuen User anlegen

Der Befehl useradd legt einen neuen User an

Optionen:

  • -d Home directory.
  • -s Starting programm (shell).
  • -p Passwort.
  • -g primäre Gruppe des Users.
  • -G andere Gruppen des Users.
  • -m Erzeuge das Home-Directory wenn noch nicht vorhanden.


das folgende Beispiel legt einen User mit den folgenden Eigenschaften an:

  • des primären Gruppe users
  • der zweiten Gruppe mgmt
  • der starting Shell /bin/bash
  • mit dem passwort xxxx
  • mit dem Home-Directory /home/roger
  • das Home-Directory soll erzeugt werden
  • mit dem USer-Name roger


useradd -gusers -Gmgmt -s/bin/shell -pxxxx -d/home/roger -m roger

Natürlich kann man auch die Datei /etc/passwd direkt editieren

Bei der Neuanlage eines Users werden alle Dateien, die sich im Verzeichnis /etc/skel befinden in das neue Home-Directory des Users kopiert.
Dies ist ganz hilfreich um die Umgebung aller neuen User mit einer Default-Umgebung zu versehen ( .bashrc, .bash_profile )

top

6.2 Einen bestehenden User verändern

Der Befehl usermod verändert einen User

Optionen:

  • -d Home Directory
  • -s Starting Programm (shell)
  • -p Passwort
  • -g primäre Gruppe des Users.
  • -G andere Gruppen des Users.


das folgende Beispiel fügt den User roger in die Gruppe 'others' ein

usermod -Gothers roger

Natürlich kann man auch die Datei /etc/passwd direkt editieren

top

6.3 Einen User löschen

Irgendwann muss auch der friedlichste User mal weg. Also:
userdel

Optionen:

  • -r löscht auch gleich das Home-Directory


Das folgende Beispiel löscht den user roger samt seinem Home-Directory.

userdel -r roger

top

6.4 Das Passwort ändern

Das Passwort eines Users kann mit dem Befehl passwd geändert werden.

Optionen:

  • User Name (Nur benötigt wenn root das passwort eines anderen Users ändern will (muss))

Beispiel: Ändert das Passwort für den User der momentan eingeloggt ist:

  • passwd
  • Eingabe des alten Passworts
  • Eingabe des neuen Passworts
  • nochmalige Eingabe des neuen Passworts (zur Bestätigung)

Beispiel: Ändert das Passwort für den User roger (nur wenn man als user root eingloggt ist)

  • passwd roger
  • Eingabe des alten Passworts (kann das alte Passwort von roger, oder das root Passwort sein)
  • Eingabe des neuen Passworts
  • nochmalige Eingabe des neuen Passworts (zur Bestätigung)
top

6.5 wo sind die User und Gruppen-Informationen gespeichert

User-Namen und die primäre Gruppe werden in der Datei /etc/passwd gespeichert. Diese Datei kann direkt editieret werden (ist aber NICH EMPFOHLEN)
Das Format der Datei ist:

  • User-Name (normalerweise in Kleinschrift)
  • Passwort (Verschlüsselt oder nur der Buchstabe 'X')
  • User-ID (Eindeutige Nummer für den User)
  • Group-ID (die Eindeutige Nummer der primären Gruppe)
  • Kommentar (Normalerweise der volle Name der Person)
  • Home-Directory (normalerweise /home/<user name>)
  • Default Shell (normalerweise /bin/bash oder /bin/false wenn des User nicht das recht haben soll sich Einzuloggen (System-User))


Die einzelnen Felder sind durch einen Doppelpunkt getrennt.

Die Passwörter für alle User sind normalerweise in der Datei /etc/shadow gespeichert. Diese Datei sollte NICHT editiert werden. Passwortänderungen sollten nur mit dem Befehl passwd erfolgen.

Gruppen-Informationen werden in der Datei /etc/group abgelegt. Auch diese Datei kann direkt verändert werden

Das Format der Datei ist:

  • Gruppen-Name
  • Gruppen-Passwort (wird selten gebraucht)
  • Group-ID (die eindeutige Gruppennummer)
  • User-Namen die dieser Gruppe angehören (getrennt durch Komma)

Die einzelnen Felder sind durch einen Doppelpunkt getrennt.

top

6.6 User wechseln

Um zu einem anderen User zu wechseln wird der su Befehl verwendet (Das ist der am meisten gegangene Weg um root zu werden)

Beispiel: Wechsel zum root-account:

  • su
  • Eingabe des root-Passwortes

Beispiel: Wechsel zum root-account, wobei die Umgebung von root gesetzt wird:

  • su -
  • Eingabe des root-Passwortes

Beispiel: Wechsel zum User roger:

  • su roger
  • Eingabe des Passworts von roger (oder nichts wenn man root ist)

um zurück zum vorherigen User zu kommen mus man nur exit eintippen und die return-taste drücken.

top

7. Filesysteme

7.1 Ein Mountpoint kann nicht ge-umount-ed werden

z.B: /cdrom kann nicht ge-umount-ed werden
$ umount /cdrom
/dev/cdrom: Device is busy
Da greift irgendjemand noch auf das CDROM zu. Oder ein Programm hat noch sein Arbeitsverzeichnis auf dem CDROM. Wer? Welches Programm? Finden wir's raus:
$ fuser -u /cdrom
/cdrom: 348c(bill)
Aha, der böse Bill. :-) Es ist uns völlig egal, was der tut - der hat gefälligst nicht auf dem CDROM zu sein: Killen wir ihn!
$ fuser -k /cdrom
/cdrom: 348c
No automatic removal. Please use umount /cdrom
$ umount /cdrom
Na also. Geht doch!
Falls doch nicht, dann sollte es hiermit sicher funktionieren (immer noch als root):
$fuser -k /cdrom/*.*
Wenn lokale Verzeichnisse oder gemountete Partitionen betroffen sind (z.B. /win/d)
$ fuser -k /win/d/*.*
Falls obiges doch nicht möglich ist, mit lsof ermitteln, welche Datei auf /cdrom in Gebrauch ist und dessen Prozess killen

top

8. System

Ich beschreibe hier nur kurz die Tools, die ich einsetze. Wer genaueres dazu wissen will, der kann in den Man-Pages alles nachlesen.

8.1 top

Das Monitoring Tool. Es zeigt die Prozesse an die momentan am meisten CPU verbrauchen. Außerdem werden noch andere Parameter angezeigt wir z.B. Speicherverbrauch, user und PID. Aber das ist von Unix zu Unix verschieden.

top

8.2 ps

Das Basiswerkzeug wenn es um Prozesse geht. Leider sind aber die Parameter von Unix zu Unix unterschiedlich.
Wer genauere Informationen benötigt sollte die Man-Page konsultieren.

Bezeichnung AIX Solaris Linux
Zeigt den Speicherverbrauch der einzelnen Prozesse an ps aux ps -elf ps axl
top

8.3 prstat

ist ein nettes kleines Tool, das ähnlich wie6 top alle Prozesse auflistet, die viel CPU verbrauchen, es zeigt auch an auf welcher CPU die Zeit verbraucht wird (gibt es leider nur unter Solaris)

prstat -L -v -u user
zeigt einem die Auslastung alle Prozesse des Users 'user' und deren Threads an.

prstat -L -p 1675
zeigt die Auslastung der einzelnen Threads (LWP Light Weight Process) des Prozesses mit der PID 1675 an.

top

8.4 vmstat

Zeigt die momentane Auslastung des Systems an

vmstat 1
Diese Programm erzeugt ungefähr folgenden Output:
 procs     memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr f0 s2 s3 s3   in   sy   cs us sy id
 0 0 0 2283072 365264 235 218 1280 0 0 0 0  0  0  0  0 2964 58623 41519 42 21 36
 0 0 0 2282168 364064 272 113 2560 0 0 0 0  0  0  0  0 3245 60690 43444 43 19 38

Interresant sind dabei folgende Werte:

  • pi Page In und po Page Out
    Anzahl der Pages die gerade aus dem Swapbereich in den Hauptspeicher geschrieben wurden.
    Daran erkennt man ob ein Programm zuviel Hauptspeicher verbraucht, oder ob evtl. nicht genügend Hauptspeicher vorhanden ist.
    Falls diese beiden Werte immer relativ hoch sind, kommt das System vor lauter IO-Zugriffen kaum dazu etwas anderes zu machen. Es ist in diesem Zustand extrem langsam.
  • id Idle
    Dies ist die eigentliche Systemauslastung.
    Dieser Wert zeigt an wie viel Prozent der Zeit das System NICHTS zu tun hat. Was dann natürlich bedeutet das, falls dieser Wert auf 0 geht, das System voll ausgelastet ist.
top

9. Booten

9.1 Schnell eine Boot-Disc erzeugen

dd if=/boot/mein.kernel of=/dev/fd0
Sicherheitshalber sollte man noch das Kommando rdev /dev/fd0 /dev/bootpartition absetzen.

top

9.2 Installiertes Linux booten mit Boot-Diskette

Problem: Sie haben ein installiertes Linux auf der Festplatte und möchten dieses aus irgend welchen Gründen mit einer Diskette booten:
/sbin/badblocks -v /dev/fd0 1440
dd if=/boot/vmlinuz of=/dev/fd0 bs=18k (allgemein:dd if=<der Kernel> of=/dev/fd0 bs=18k)
rdev /dev/fd0 /dev/hda5 (allgemein: rdev /dev/fd0 <die Root-Partition>)
rdev -R /dev/fd0 1

top

10. Hardware

10.1 IDE-Festplatten beschleunigen

mit dem Befehl hdparm -v /dev/hda  überblickt man die momentanen Einstellungen
Wenn Sie die Zeilen
using_dma = 0 (off)
I/O support = 0 (default 16-bit)
lesen, verwendet der Festplattentreiber 16-Bit-I/O ohne DMA.
Die aktuellen Übertragungsraten bestimmen Sie mit: hdparm -t /dev/hda
Einschalten von DMA: hdparm -d 1 /dev/hda
32-Bit-Zugriff einschalten: hdparm -c 1 /dev/hda
Mit hdparm -k 1 /dev/hda bleiben die Einstellungen auch nach einem vom Kernel ausgelösten IDE-Reset erhalten.

top

10.2 Wievel Speicher ist im PC

Betriebsystem Befehl
AIX-Systeme /etc/lsattr -El mem0
Compaq Tru64 UNIX vmstat -p
Solaris Intel /usr/sbin/prtconf | grep size
Sun SPARC Solaris /usr/sbin/prtconf | grep size
Linux Intel cat /proc/meminfo | grep Memtotal
top

10.3 USB Festplatte einbinden

Zuerst sollte man unter /proc/bus/usb/devices  nachsehen, ob sich nach dem Einstöpseln der USB-Festpatte überhaupt etwas getan hat.
Falls nicht, hat man ein grundlegend anderes Problem (z.B: Der USB-Controller erkennt die Festpatte nicht, kein Strom ...)

Falls alles in Ordnung ist sollte man so etwas wie:
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=256ms
T:  Bus=01 Lev=01 Prnt=01 Port=04 Cnt=01 Dev#=  3 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=04cf ProdID=8818 Rev=a3.01
S:  Manufacturer=Myson Century, Inc.
S:  Product=USB Mass Storage Device
S:  SerialNumber=100
sehen.

Ein beherztes dmesg nach dem Einstöpseln der USB-Festplatte sollte einem auch einige Hinweise geben, ob die Platte erkannt wurde und wo sie im System zu finden ist.

Das Device, dem die Platte zugeordnet wurde kann man natürlich auch mit einen
fdisk -l ermitteln, aber dmesg liefert einem im Fehlerfall doch etwas mehr Informationen.

Nun muss die Platte noch partitioniert werden, was zum Beispiel mit cfdisk /dev/sda gemacht werde kann (vorausgesetzt die Platte wurde auch unter /dev/sda eingebunden).

Falls man (wie ich) Dateien zwischen Linux und Windows austauschen will, empfiehlt es sich die Platte mit dem Typ TYP 0C (Win95 FAT32 (LBA)) zu partitionieren.

Ein anschließendes fdisk -l  zeigt einem jetzt wo die Platte zu finden ist (in meinem Fall unter /dev/sda1 )

Jetzt muss die Platte noch gemountet werden:
mount -t vfat -o rw,umask=500 /dev/sda1 /mnt/usbHD/
-o rw,umask=500 ist notwendig, das auch andere user (außer root) auf die Platte zugreifen können.

Als letztes müssen wir die neue Platte nur noch formatieren, was schnell mit einem:
mkfs.msdos -F32 /dev/sda1
geschehen ist.

top

11. OS Spezifisches

11.1 Betriebsystem Version

Das Betriebsystem, und die Version des Betriebsystems kann man sich bei allen Unixen mit
uname -a
anzeigen lassen.

top

11.2 Patchlevel anzeigen

Manchmal ist es Interessant zu wissen, welche Patches eingespielt wurden

Betriebsystem Befehl
AIX-Systeme instfix -a
Um herauszubekommen ob ein bestimmter Patch installiert ist, kann man folgenden Befehl verwenden:
instfix -ivk ARPA_NUMMER
Um zu erfahren welche Filesets installiert sind, kann man folgenden Befehl verwenden:
lslpp -1 [fileset_name]
Compaq Tru64 UNIX dupatch
Solaris Intel showrev -p
Sun SPARC Solaris showrev -p
Linux Intel showrev -p
top

12. Sonstiges

12.1 UNIX-Zeitstempel lesbar machen

In der UNIX-Welt wird die Zeit Rechner-intern als ein ganzzahliger Wert geführt, der die Sekunden seit 00:00 am 1.1.1970 GMT darstellt. Normalerweise hat man damit als Anwender oder Administrator nicht viel zu tun.
An einigen wenigen Stellen kann man aber auf das Problem stoßen, eine Uhrzeit nur in diesem Format erhalten zu können. So liefert rpm Zeitstempel nur in diesem Format. Zum Beispiel kann man so erfahren, wann ein bestimmtes Paket installiert wurde:

rpm -q --qf "%{NAME} %{INSTALLTIME}\n" kernel

Auch "stat -t" liefert die drei Zeitstempel einer Datei im internen UNIX-Format.
Jetzt muss man diese Information nur noch in ein menschenlesbares Format konvertieren können. Dazu reicht ein perl Einzeiler:

perl -e '$time=localtime($ARGV[0]); print $time, "\n";' 1089286144

liefert als Ausgabe "Thu Jul 8 13:29:04 2004" - natürlich nur in meiner Zeitzone, die der CEST (Central European Summer Time) entspricht. Wer die Information lieber in GMT/UTC haben möchte, muss dazu nur die Funktion localtime() durch gmtime() ersetzen.

top
  ©2016· Claus Ebert · Emailemail senden