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.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.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.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.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.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.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.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
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.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.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.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.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
|