Dirk Lubahn Freiberufler Knowledge-Base Privat Links
Knowledge-Base / Betriebssysteme
Info
Betriebssysteme
Sprachen
Techniken
Datenbanken
Netzwerke
Tools

Betriebsysteme

MS Windows
UNIX


MS Windows

Shell - cmd

F7 = extra Fenster mit Befehlshistorie
F8 = automatisches Vervollständigen des aktuellen Befehls (wie Tab für Dateien)

Explorer

Kontextmenü erweitern

Eine Erweiterung des Kontextmenüs(rechte Maustaste) im Explorer, z.B. Aufruf der cmd.exe erfolgt durch:
Explorermenü - Extras - Ordneroptionen - Dateitypen - Ordner selektieren - Erweitert - Neu:
"Vorgang" ist der Menueintrag (DOS) und "Anwendung für d..." ist die auszuführende Datei(cmd.exe).

Infobereich

Autostart und Icon in der Taskleiste (Infobereich):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Netzlaufwerke

Verbinden als Administrator:
Dialog: Netzlaufwerk verbinden, aufrufen und Pfad: \\pc101\c$ eingeben.
erst \\ für den Rechner mit dem Namen pc101, dann c$ um als Administrator auf Laufwerk C verbunden zu werden.

Systemvariablen

Path

Der Pfad sollte aus Performancegründen immer so aufgebaut sein, dass der Pfad zum System der erste ist. Damit beginnt die Suche nach Dateien auch im Systemverzeichnis, wo die meisten Treffer sind.
Path: C:\Windows\System32;C:\Windos;...;...;... (%SystemRoot%\system32;%SystemRoot%;...;...;...)
niemals:
Path: ...;...;...;C:\Windows\System32;C:\Windos

Registrieren von ActiveX-Componenten

Registrieren von ActiveX-Componenten mit:
regsvr32 C:\Pfadname\Dirk.exe
deregistrieren:
regsvr32 /u C:\Pfadname\Dirk.dll

Registrieren von ActiveX-EXE mit:
C:\Pfadname\Dirk.exe /regserver
C:\Pfadname\Dirk.exe /unregserver

MS Windows-Befehle

at

at = cron führt Befehle zu einer bestimmten Zeit aus,
at 10:00 c:\util\reg\regclean.exe führt 10.00 Uhr RegClean aus,
at \\Rechnername 10:00 c:\util\reg\regclean.exe führt Reglean auf dem angegebenen Rechner aus,
mit at wird die Liste der Befehle angezeigt,
mit at 1 /delete wird der Job eins gelöscht,
steht auch unter Arbeitsplatz geplante Vorgänge graphisch,
entsprechende Rechte sind erforderlich,

chkdsk

chkdsk c: /F überprüft Laufwerk c und behebt gefundene Fehler sofort,

dir

dir /s macht dir rekursiv und zeigt am ende die Größe an,

findstr

findstr /s "Dirk" *.txt sucht im aktuellen Verzeichnis und in allen Unterverzeichnissen nach "Dirk" in allen "*.txt" Files.

help

kleines man; Ausgabe der DOS-Befehle;
Help echo, gibt die hilfe zu echo aus.

ipconfig

ipconfig zeigt die IP-Configuration meines Rechners an, IP-Adresse, Subnetmask, Gateway,...
ipconfig /all, gibt alle IP-Infos aus,
ipconfig /renew, liest die IP-Adressen für alle Adapter neu,

more

more ist der pager unter DOS,
mit more werden Texte Seitenweise ausgegeben,
dir | more, gibt dir Seitenweise aus,

net

net bietet verschiedene Netzdienste an (z.B. senden und starten von Diensten),
net send dirk hallo, sendet den String: "hallo" in einer MessageBox an den Nutzer dirk (alterntiv kann auch der Domainname oder * angegeben werden),
für net send gibt es unter Windows einen Dienst, der unter Systemverwaltung->Dienste gestoppt werden kann (bei Belästigung).

netstat

netstat -n, zeigt die offenen IP-Verbindungen an,

ping

ping -w 60000 -t 111.77.77.11, sendet fortlaufend (-t) alle Minute (-w 60000) einen Ping an den Server mit der Adresse 111.77.77.11,

set

gibt alle Umgebungsvariablen mit ihren Werten aus,
mit set r würden alle Variablen, die mit r beginnen ausgegeben werden,

tracert

tracert zeigt den Weg der Adresse durch das Netz, also zum DNS Server usw. an,
mit tracert www.heise.de, wird der Weg zum Server 193.99.144.71 über DNS Server, Gateway, ... und die verbrauchten Zeiten ausgegeben,

type

Wie more; Beide können auch mehrere Dateien anzeigen mit type kannweg.xml title.xml.

type

gibt den Inhalt einer Datei auf dem Bildschirm aus,
mit type test.txt | more r würde der Inhalt von test.txt seitenweise auf dem Bildschirm ausgegeben.
Es können auch mehrere Dateien ausgegeben werden mit type kannweg.xml title.xml.

Scripting

%~dp0 liefert den Pfad des aufrufenden Scriptes
@ verhindert die Ausgabe des aufrufenden Befehls
%* alle Kommandozeilenparameter
%1 der erste Parameter
echo %Path% Ausgabe des Wertes der Variablen Path
^ Verbindung zwischen zwei Zeilen, wie ' in VB

echo @ant -f build.xml %* > a.bat
erzeugt "a.bat" mit dem Inhalt: @ant -f build.xml %*
Aufruf mit a test, "test" wird als Parameter an das build file übergeben

for /r %i in (*.jar) do @(echo === %i === && jar tf %i | grep something )
jar tf lib\test.jar Anzeige der im jar enthaltenen Klassen
gehe rekursiv "/r" durch alle jar "*.jar" und gebe alle jar Filenamen aus und den Namen der enthaltenen Files, die "something" im Namen haben.

for /r %i in (*.cc) do @(echo %i && findstr hig %i)
durchsucht alle "*.cc" Dateien im aktuellen Verzeichnis und allen Unterverzeichnissen nach "hig" und gibt den Filenamen und den gefundenen Text aus.

Befehle schachteln, die nicht über Pipes geschachtelt werden könne (Backtracking)
for %i in (dir) do echo %i //Ausgabe des Strings dir
for /f "usebackq" %i in (`dir`) do echo %i durch "/f “usebackq”" können die Ausgaben von Befehlen durchlaufen werden, der Befehl muss aber in einfachen Anführungszeichen stehen.
for /f "usebackq" %i in (`dir ^| sed "s/0/1/g"`) do @echo %i es können auch mehrere Befehle durch eine Pipe verbunden werden, dabei muss aber das Pipezeichen maskiert werden durch "^", damit es nicht frühzeitig interpretiert wird. sed setzt alle 0 auf 1

for /f "usebackq" %i in (`dir ^| sed "s/0/1/g"`) do @echo %i | sed "s/1/2/g" gibt das aktuelle Verzeichnis Zeile für Zeile aus und ersetzt jede 0 durch 1 und später jede 1 durch 2.



UNIX

UNIX-Befehle

alias

ein Alias wird mit: alias dir='ls' gesetzt.
um einen Alias aus einem Script aufzurufen könnte man alias dir='ls' in das Script schreiben und danach das Script mit . Scriptname aufrufen, damit es im aktuellen Prozeß ausgeführt wird.
Normalerweise wird alias dir='ls' in eine Start-Datei (.Profile) geschrieben.

at

das Kommando führt zu einem Vorgegebenen Zeitpunkt eine Abarbeitung aus. Dazu führt es vorher den loggin-Vorgang des users aus.

at 1100pm
at> cd /dirk/src
at> ./compile.sh #ein Kommando auf dem ein Pfad steht wird ohne ./ ausgeführt
at> <EOT> #(Ctrl d)
mit at -l kann man sich den Erfolg dieser Aktion ansehen.

backtracking

ist ein Mechanismus, bei dem alle Kommandos, die in '`' stehen vor den anderen ausgeführt werden. grep dirk `ls` durchsucht alle Files des aktuellen Directory nach dirk.

basename

liefert den Namen einer Datei ohne Path (siehe auch dirname)

chmod

chmod u+rwx filename setzt den Modus für den user (owner) auf +rwx
u = user
g = group
o = other

diff

vergleicht zwei Dateien diff filename1 filename2
b = ignoriert führende Blanks und Tabs

dirname

liefert den Path einer Datei (siehe auch basename)

df

mit df (disk free) wird die der freie Platz auf den Platten angezeigt.
k = nutzt Bearkley Format (Anzeige in Kilobyte und beschriftet).
Wenn im Filesystem ein Name mit einem Doppelpunkt beginnt, dann wurde das Directory von einer anderen Maschine gemounted.
mit df -k . freier Platz im aktuellen Verzeichnis
mit df -k /tmp wird der freie Platz in tmp und damit der swap space angezeigt

du

mit du (disk usage) zeigt man die Größe eines Verzeichnisses mit Unterverzeichnissen an wie ls -s -r
k = Kilobyte

env

mit env PATH=/opt/bin:${PATH} xemacs wird das Kommando xemacs aufgerufen und die Umgebungsvariablen werden übernommen und zusätzlich entsprechend modifiziert, im Beispiel wird also die PATH-Variable erweitert.
Die Änderung der Umgebung gilt nur für den Prozess der für das Kommando xemacs aufgemacht wird.

exec

das fork Kommando gabelt den Process (siehe fork). An den Elternprozeß geht die Pid des Childs zurück und es wird eine identische Kopie des Elternprozeß im selben Adressraum erzeugt. Damit kann also noch kein neues Programm ausgeführt werden, sondern nur ein gleichartiges.
Das Exec macht intern auch einen Fork und arbeitet mit dem Kind weiter. Nach außen wird ein Kind mit der Pid und der Umgebung des Elternprozeß erzeugt. Das Kind führt aber das als Parameter übergebene, auszuführende Kommando aus und ersetzt den Adressraum des Elternprozesses durch den Adressraum des neuen Kommandos. Damit haben wir ein Programm ausgeführt und die Umgebung geerbt. Mit der Änderung des Adressraumes wird der Elternprozeß beendet, weil ihm sein Adressraum entzogen wird. Ein Exec erzeugt also einen neuen Prozess und beendet alles vorhergehende.

Ein exec bash macht nicht nur eine neue shell (bash) auf, sondern beendet die alte shell.

Eine shell arbeitet beim Aufruf von Programmen hauptsächlich mit exec und forks. Wird in einer shell ein Programm gestartet, so wird intern ein fork aus geführt das Kind macht gleich danach einen Exec und wir sehen in der shell dann das Kind (das auszuführende Programm). Das Elternprogramm vom fork (shell) läuft weiter, ist aber durch ein wait gestoppt und wartet bis das Kindprogramm beendet ist. Wenn ein Kommando mit & in den Hintergrund geschickt wird, entfällt einfach nur das wait des Elternprozeß und dieser (shell) läuft weiter.

exit

beendet das aktuelle Programm, meißt die aktuelle shell.

fg

Mit fg wird der zuletzt in den Hintergrund geschickte job wieder in den Vordergrund geholt.
Mit fg %2 würde der zweitletzte in den Hintergrund geschickte job wiedergeholt.
Mit Ctrl-Z wird der aktuelle job in den Hintergrund geschickt (der job wird völlig auf Eis gelegt).
Die jobs können mit jobs angesehen werden.

file

mit file name.exe erfolgt die Ausgabe:
ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped
wobei not stripped sagt, das Symbolinformationen vorhanden sind, d.h Debug-Version

find

find . -name filename sucht vom aktuellen Verzeichnis aus rekursiv nach dem File filename.
find . -size 0 sucht vom aktuellen Verzeichnis aus rekursiv nach Files mit der Größe 0 Byte.
mit grep dirk `find . -name '*.cc'` wird zuerst der find durchgeführt (Backtracking), dabei verhindern die Hochkommas um *.cc eine interpretation des * durch die Shell, danach wird ein grep auf alle *.cc files die im aktuellen Verzeichnis oder dessen Unterverzeichnissen stehen, durchgeführt.

fork

das fork Kommando gabelt den aktuellen Process. An den Elternprozeß geht die Pid des Childs zurück und es wird eine identische Kopie des Elternprozeß im selben Adressraum erzeugt. Damit kann also noch kein neues Programm ausgeführt werden, sondern nur ein gleichartiges.

kill

mit kill -9 Prozeßnummer wird ein Prozeß zerstört, terminiert, gelöscht. Danach kann man das ganze noch mal aufrufen, wobei ein Fehlermeldung Job nicht vorhanden kommen sollte.
Die Prozeß- oder Jobnummer kann mit ps ermittelt werden.
Achtung!!! normalerweise sollte erst ein kill Prozeßnummer Aufgerufen werden. Dadurch wird ein kill -15 (Terminated) veranlaßt, erst wenn der nicht geht und auch ein kill -2 (Interupt) nicht funktioniert sollte zur Keule kill -9 (killed) gegriffen werden, weil bei einem kill -9 keine Logfiles mehr geschrieben werden und auch die Kinder möglicherweise nicht mehr sauber beendet werden.

ldd

mit ldd Exefile werden die Dependencies (die benötigten shared, dynamic Librarys oder shared Objects) zu einem Exefile ausgegeben.
pldd macht das gleiche für laufende Prozesse.

less

anzeigen einer Datei mit vielen extra Funktionen (Suchen, navigieren, ... )
hilfe zu less mit less --help
q = beenden
z = eine Seite vorwärts
w = eine Seite zurück
[n]G = goto Fileende (Zeile n)
[n]g = goto Fielanfang (Zeile n)
/pattern = vorwärts Suchen
?pattern = rückwärts Suchen
n = suche zum Dateiende fortsetzten
N = suche zum Dateianfang fortsetzen

ln (link)

mit ln -s wird ein symbolischer Link erzeugt, was nur ein besserer Link ist (kann mehr als ln einfach), anstelle von ln -s kann auch link geschrieben werden.
Ein Link kann auf ein Verzeichnis oder eine Datei gehen.
ln -s /projects/dirk projekt legt im aktuellen Verzeichnis einen Link mit Namen projekt an, der auf das Verzeichnis /projects/dirk zeigt.

ls

Ausgabe eines Verzeichnisinhaltes. t = sortiert nach Timestamp r = sortiert reverse

man

Manual Pages ...
Wenn man die Ausgabe in ein File umlenken will, dann kann es Schwierigkeiten mit der Formatierung der Sonderzeichen geben. Mit man make | ul > filename kann man zumindestens die Unterstriche auf die Reihe bringen.
Bei gleichnamigen Befehlen und Funktionen muß die Sektion im man angegeben werden, z.B. man -s 1 less, zeigt die Hilfe zum less Kommando (man less, zeigt die Hilfe zur Funktion less).
Wenn die Sektion nicht bekannt ist, können mit man -a less, die Erklärungen aus allen Sektions ausgegeben werden. Der Name der aktuellen Sektion wird in der ersten Zeile rechts hinter dem Begriff in Klammern ausgegeben.
Beispiel: less in Sektion 1: User Commands LESS(1)
man -k suchbegriff = Volltextsuche geht aber nur wenn die entsprechenden Index-Files (z.B. /usr/man/windex) vom Administrator auf dem System angelegt wurden.

netstat

netstat -na gibt die aktuellen Verbindungen und Ports an auf denen gehört wird:
*.3333 *.* 0 0 24444 0 LISTEN -> auf dem Port 3333 wird gehört und jeder darf sich verbinden
111.222.333.44.55555 177.77.77.7.77777 25555 0 25555 0 CLOSE_WAIT -> auf 111.222.333.44.55555 (Port 55555) ist eine Verbindung zu 177.77.77.7.77777 dabei geschlossen zu werden
188.888.888.88.8888 199.99.9.9999 266666 0 33366 0 ESTABLISHED -> auf 188.888.888.88.8888 (Port 8888) besteht eine Verbindung zu 177.77.77.7.77777

nm

gibt die Symboltabellen für ein Objekt oder Libraryfile aus.
mit nm name.a | grep funcname könnte die Library name nach dem Symbol funcname durchsucht werde, um das vorhandensein der Funktion funcname in der Library zu überprüfen.
Die Namen der Funktionen erscheinen etwas kryptisch mit der option -C wird zu jeder verstümmelten Ausgabe die ursprüngliche Notation hinzugefügt (demangle weil die Parameter mit in den Funktionsnamen kodiert werden).
In UNIX werden statische Librarys mit name.a benannt und dynamische (shared) Librarys werden mit name.so benannt.

Pipe

Die Pipe lenkt stdout eines Kommandos nach stdin eines zweiten Kommandos.
Mit ls | wc -w wird die Ausgabe von ls, also die Liste der Dateien, nach stdin von wc umglenkt, welches diese zählt.

pldd

wie ldd nur für aktuelle Prozesse.
Ausgabe der dynamic Lybraries zu einem laufenden Prozess.

pgrep

gibt wie ps alle jobs aus und hat gleich verschiedene grep-Funktionalitäten eingebaut.
Mit pgrep name -U userID werden alle Jobs, deren Programmname dem regulären Ausdruck (name) entsprechen und dem Nutzer mit der ID (userID) gehören, ausgegeben.
l = komplette Liste ausgegeben
f = Suchbegriff auf die gesamte Processliste anwenden und nicht nur auf den Namen

prstat

gibt eine Statistik zu den aktiven Prozessen aus.
das gleich wie top
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
CPU -die CPU Auslastung in Pozent angibt (sollte nicht so hoch sein)
NICE - nice-Wert sollte bei 0 liegen
mit -U dirk werden nur die Daten zum User dirk angezeigt

ps

mit ps werden alle Jobs ausgegeben. Siehe auch pgrep. Nur ps gibt alle Jobs der aktiven Shell aus.
e = alle Jobs auf dem System ausgegeben.
f = verkürzte Liste erstellt.
um alle meine Jobs komplett zu sehen ps -ef | grep dirk
l = langes Listing erstellen, dann kann man auch sehen wieviel Speicher die Prozesse ziehen
U = (-U dirk) werden alle Processe des users dirk angezeigt
unter NI steht der nice-Wert bei Bearkley oder System5 ist der Default 5 bzw. 20 sollte der Wert meiner Processe davon abweichen folgt daraus eine niedere Priorität !!!.
sz - The total size of the process in virtual memory, including all mapped files and devices, in pages. Größe des Processes.
ps -elf | grep Z gibt alle Zombies aus

pstack

mit pstack pid werden alle Threads zum Prozess (mit pid) ausgegeben, zur Laufzeit
mit pstack corefile werden alle Threads des Files, das den Coredump (corefile) geschmissen hat, ausgegeben

pwd

print working directory gibt das aktuelle Verzeichnis aus

rm

löscht einen File.
Mit rm -r dirname wird rekursiv ein Verzeichnis gelöscht. Wenn dieser Befehl nicht geht, existiert noch ein File im Unterverzeichnis, auf das von einem User zugegriffen wird. Das entsprechende Verzeichnis wird in der Fehlermeldung ausgegeben. Mit ls -l würde man dann im entsprechendem Verzeichnis eine .nfs* Datei entdecken. Zum löschen muß der User die Datei freigeben.
Achtung: Kann auch von mir in den Hintergrund geschickter Job sein, der die Datei liest.
rm */*.o um Dateien eines bestimmten Typs im aktuellen Verzeichnis und in allen direkten Unterverzeichnissen zu löschen.

Statistiken

können mit vmstat (Speicher) und iostat (I/O) ausgegeben werden.

set (env oder export)

Ausgabe aller Umgebungsvariablen
Variablen:
LC_CTYPE = en_US.ISO8859-1 deutscher Zeichensatz wird von einigen Programmen (Oracle) genutzt

short cuts

C-a = Zeilenanfang
C-c = Programm beenden, terminieren
C-e = Zeilenende
C-i = Historie
C-q = Gestopte Ausgabe weiterlaufen lassen
C-s = Ausgabe anhalten

spell

spell checker mit spell enter danach Text eingeben und mit C-d beenden.
Danach werden alle unbekannten Wörter ausgegeben.

swap -l

zeigt den Swapbereich mit verfügbaren Swapspeicher an.

Systemvariablen

PS1 enthält den aktuellen Prompt
PS1="$LOGNAME@$HOSTNAME:"'$PWD'" (enter drücken) $> "
hier wird als Prompt erst der Loginname, dann ein @, dann der Hostname, dann ein Doppelpunkt, dann das aktuelle Verzeichnis, dann ein Zeilenumbruch und dann ein "$> " ausgegeben. Durch die doppelten Anführungsstriche wird es möglich den Zeilenumbruch in den Befehl aufzunehmen (geht nicht in jeder Shell) die einfachen Anführungsstriche um den Pfad sorgen dafür das nicht die Ausgabe von $PWD sondern das Kommando selber in die Variable geschrieben wird, sonst würde der Pfad immer auf dem Pfad beim Kommandoaufruf stehen bleiben.

tail

gibt die letzten Zeilen einer Datei aus.
Mit tail -f filename werden die letzten Zeilen ausgegeben und jede Sekunde aktualisiert.

tar

zum auspacken von gezippten und getarten Files
tar -cvf test.tar sh packt das Verzeichnis oder den File sh ein (rekursiv bei Verzeichnissen) in das tar-File test.tar
tar -xvf test.tar - entpackt das tar-File test.tar
tar cvf archivname `find . -name \*.cc` packt rekursiv alle *.cc Files in ein Archiv
c = einpacken
v = verbose
f = der Filename des tar Files wird als Parameter eingegeben
x = extract (auspacken)
z = zip komprimieren und dekomprimieren (nur auf LINUX)
mit -I test.txt werden die zu packenden Files aus der Datei test.txt gelesen

touch

setzt die Zugriffswerte für ein File, mit touch filename wird das File auf die aktuelle Systemzeit gesetzt.

truss

sehr interessanter Befehl zum Tracen von Librarys auf Aufrufe von außen, Dependencys ...
truss -o trussfile test.exe
schreibt alle Systemcalls, die das File test.exe durchführt in das trussfile
truss -u\* -d -D -L -o truss_out -p pid
-u\* alle Librarys -D Zeitdelta des Aufrufs -d Zeitpunkt des Aufrufs

umask

mit umask kann der Default für die Dateiattribute read, write und execute eingestellt werden.

Umlenkung

das Programm cat liest normalerweise den Inhalt einer Datei und schreibt nach StandardOut. Die Datei filename mit dem Inhalt hi würde mit cat hi ein hi auf den Bildschirm schreiben. Die Standard-Ausgabe kann umgeleitet werden mit >. Mit cat filename > filename2 wird also hi in die Datei filename2 geschrieben, dabei wird der alte Inhalt von filename2 gelöscht (mit >> wird an den alten Inhalt angehängt). Eine solche Umlenkung geht nur für Befehle, die auf stdout auch eine Ausgabe erstellen. Mit cat > filename << Paul wird die Ausgabe in filename umgeleitet und cat angewiesen von der Tastatur zu lesen bis der Endekenner Paul wiederholt wird. << bedeutet vom momentanen Ort lesen.
Befehle wie sort, lesen von stdin. Nach der Eingabe von sort werden so lange Zeilen gelesen bis <STRG> d eingegeben wird. Alle Befehle, die in dieser Art arbeiten, werden in Scripten entweder von einem File beliefert (sort > filename < filename2 schreibt die Datei filename2 sortiert nach filename) oder aus dem Script beliefert, z.B.: sort > filename << Paul
Zeile1
...
ZeileN
Paul

schreibt Zeile 1-N sortiert nach filename.

Eingabe Umlenken mit sort < Rohdaten. Das Ergbnis ist zwar gleich sort > Rohdaten, aber in der zweiten Form wird ein neuer Filedescriptor von dem Programm sort geöffner, während in der ersten Form nur stdin umgelenkt wird.

Name Kürzel Gerät Descriptor
StandardeingabestdinTastatur0
StandardausgabestdoutBildschirm1
StandardfehlerausgabestderrBildschirm2

Alle weiteren von einem Programm geöffneten Files bekommen fortlaufende Descriptoren zugeordnet (die erste bekommt also die 3).
Bourne Shell: Umlenken der Fehlerausgabe mit, kommando 2 >> fehlerdatei.
C Shell: Umlenken der Fehlerausgabe geht nur zusammen mit stdout mit, kommando >& fehlerdatei.

unzip

unzip test.tar.gz test.tar entpackt test.tar.gz nach test.tar q = quiet mode (-qq => quieter)
n = existierende Files nicht überschreiben
o = Files ohne prompting überschreiben
v = verbose

uptime

zeigt wie lange der Rechner gelaufen ist und wie die Auslastung (Anzeige des load) war.

Variablen

Siehe Systemvariablen

vmstat

Ausgabe der Statistik des virtuellen Speichers.
vmstat 3 würde alle 3 Sekunden eine solche Statistik ausgeben.
Folgende Infos werden angezeigt:
procs
r- Anzahl der Prozesse in der Queue sollte nicht viel größer als die Zahl der Prozessoren sein
b
w runable but swapped sollte klein sein
memory
swap verfügbarer Platz
free verfügbarer Speicher
page
re page reclaims Seiten die im virtuellen Speicher gefunden wurden sollte höher als die geswappten sein
mf minor faults sollte niedrig sein
pi page in Anzahl der Seiten im Memory möglichst hoch
po page out Anzahl der Seiten geswappt möglichst wenig
faults
in interrupts - Anzahl über 1000 ist sehr hoch -> Rechner beschäftigt sich selber
sy systemcalls - Anzahl über 1000 ist sehr hoch -> Rechner beschäftigt sich selber

schlecht
procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr f0 s0 s1 s2 in sy cs us sy id
9 0 5 520224 250736 143 1128 349 40 29 0 0 0 17 17 0 2626 56433 546 84 16 0

wc

word count zählt die Anzahl an Zeilen oder Wörtern oder Zeichen in einer Datei.
ls -1 | wc -l Anzahl der Files im aktuellen Directory, wobei durch -1 eine Zeile pro Datei ausgegeben wird.

which

mit which xemacs würde der Pfade in dem der xemacs installiert ist ausgegeben werden.

xargs

Es wird der Parameter von xargs als der auszuführende Befehl genutzt (für alle Befehle, die nicht von Standardinput lesen können). Dieser Parameter erhält von standard Input soviele Argumente wie möglich oder wie mit Option -n als maximale Anzahl vorgegeben. Danach wird xargs ausgeführt solange noch Argumente vorhanden sind.
more test.txt | xargs grep ptr
würde die Datei text.txt(besteht aus Filenamen) ausgeben, die Namen gehen als Argument an den grep. Es werden also Files deren Name in text.txt stehen nach ptr durchsucht.
mit more test.txt | grep ptr würde dagegen der File test.txt nach ptr durchsucht.
grep ptr `more test.txt` würde auch gehen (Backtracking führt erst den more aus und dann den grep).

zip

zip test.tar.gz test.tar packt das file test.tar in test.tar.gz r = recurse into directories
q = quiet operation
v = verbose operation/print version info
A = adjust self-extracting exe

UNIX Shell Scripts

Ausführen

entweder executing (x, chmod) erlauben, alternativ shell scriptname aufrufen

Kommentare

Kommentare mit #

Shell

die erste Zeile in einem Script gibt die zu nutzende Shell an, z.B.:
#!/bin/bash
Die persönlichen Profiles wie .bashrc werden aber nicht zwangsläufig ausgeführt.
Der Aufruf einer Shell in einem Script mit Zeile:
bash
würde nicht gehen. bash wird als command angesehen, gestartet und endet, danach ist das Script also wieder in seiner alten Shell. Allerdings kann mit, bash -c"ls" das ls Kommando in der bashshell ausgeführt werden und mit bash -c"ls && pwd" wird nach erfolgreicher Abarbeitung von ls noch pwd abgearbeitet.

Parameter

Kommandozeilenparameter können mit $0 - $n abgefragt werden, wobei $0 reserviert ist für den Namen des Scripts.
Mit $1 wird der Parameter eins auch richtig ausgegen, wenn er Leerzeichen enthält.
Mit $@ werden alle Kommandozeilenparameter hintereinander ausgegeben.

Umgebung

Normal wird ein neues Programm oder ein Script als eigener Kindprozeß der aufrufenden Shell gestartet. Damit erbt das Kind die Umgebung von dem Elternprozeß. Wenn das Kind z.B. Umgebungsvariablen ändert, dann haben diese Änderungen keinen Einfluß auf die Umgebung des Elternprozeß. Damit ein Programm in der aktuellen Umgebung ausgeführt wird muß es mit . scriptname gestartet werden (Leerzeichen nach dem Punkt), dann würde z.B. ein PATH=$PATH:/opt auch nach dem Beenden des Scriptes in der aufrufenden Umgebung wirken.

Export && set -a

In einem Scriptfile könne Variablen gesetzt werden mit Name="Dirk". Diese gelten nur für das Script. Damit aus einer solchen Variable eine Umgebungsvariable wird, muß sie exportiert werden, z.B: export Name="Dirk".
Wird in einem Script set -a geschrieben, so werden alle nachfolgenden Variablen automatisch exportiert.
Es wird kein Anspruch auf inhaltliche Richtigkeit oder Vollständigkeit der Seiten erhoben.
Die Seit: "http://www.dlubahn.de/knowledge/systems.htm" wurde zuletzt geändert am 08.10.2004 von Dirk Lubahn.