|
|
Knowledge-Base / Betriebssysteme |
|
|
|
|
|
|
|
|
|
|
|
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
|
Standardeingabe | stdin | Tastatur | 0 |
Standardausgabe | stdout | Bildschirm | 1 |
Standardfehlerausgabe | stderr | Bildschirm | 2 |
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.
|
|