|
Linux GrundlagenJa über das Thema wird dermaßen viel geredet das ich mich, völlig entgegen meiner sonstigen Gewohnheit, entschieden habe die Klappe zu halten und einfach nur zu vermitteln versuche, was ich für die Grundlagen halte. Mit Begründung - versteht sich aber mehr nicht. Allgemeines Gelaber zu tausend Themen findet Ihr an anderer Stelle in diesem Quell des Wissens und der Weisheit - genannt Website :-) Die Seiten richten sich gezielt an Einsteiger. Profis werden hier nichts neues finden. Deswegen bitte ich um Feedback inwieweit der Stoff verstanden wird, ob was fehlt oder ob etwas falsch erklärt wurde. Wer Fragen hat kann auch gerne einfach mailen, mit der Zeit fließt dann alles in die Seite ein. Grundlagenübersicht
Allgemeinesüber die Namensgebung bei Linux zu sagen beschränkt sich meistens auf die verwirrenden Namensgebungen für Laufwerke und Endgeräte. Da diese aber gesondert in den unten stehenden Tabellen behandelt werden, versuche ich hier Euch nur die generelle Namensgebung nahezubringen, sprich : "Warum heisst ein Diskettenlaufwerk,nicht einfach A: ?". Die Antwort ist einfach. Unter Linux gibt es keine Laufwerke :-) Jedes Gerät, unabhängig davon was es ist, wird über Gerätedateien angesprochen ( Device ). Das hängt eng mit dem Unixstandard zusammen und ermöglicht die konkurrenzlos flexible Handhabung vorallem im Netz. Diese Geräte werden in das Dateisystem eingehängt ( gemounted ) und stehen unter frei wählbaren Namen zur Verfügung. Laufwerkswechsel fallen also weg, es wird lediglich mit dem "cd" Befehl gearbeitet.Das ist logischer als die Namensgebung von MS-DOS, denn warum soll eine Floppy nicht auch "Floppy" heißen, sondern "A:" ? Intern verwaltet Linux die Namen natürlich etwas anders. Linux spricht die Geräte über Gerätedateien an die im Verzeichnis "/dev" zu finden sind. Die Benamsung erfolgt nach Schema : Kürzel für die Geräteart und ein Buchstabe oder eine Zahl für das Gerät.Geräte am IDE Bus zum Beispiel beginnen mit dem Kürzel hd, "hd" steht für Harddisk ( Festplatte ) weil es damals noch keine CD-ROM's gab. So ergibt sich für Platten und CD-ROM's folgendes Schema :
Die kompletten Namen gibt es weiter unten unter Laufwerke. Wer das Schema verstanden hat, kann eigentlich alle Geräte ziemlich schnell benennen und identifizieren, was vorallem bei der Installation und dem Installieren diverser Geräte wie Modems und Scannern wichtig ist. Weitere Stolperfallen sind Begriffe wie "mounten" und "unmounten", die eng mit dem Dateisystem zusammenhängen. Da Linux eben keine Laufwerke kennt, entfällt auch das unter Windows so einfache "reinlegen und go". Linux will implizit wissen wann und ob eine Datenträger gewechselt wird. Das heisst, bevor ein Datenträger aus dem Laufwerk entfernt wird muß man Linux auch sagen das man ihn entnehmen will. Dann erst werden letzte Änderungen geschrieben.Macht man dies nicht droht Datenverlust. Genauso gilt : Nach dem Einlegen muß man Linux Bescheid geben das ein Datenträger zur Verfügung steht. Dieses Vorgehen hängt noch mit den Grundlagen des Filesystems zusammen. Wichtig also ist die Reihenfolge : Datenträger einlegen - mounten - arbeiten - unmounten - Datenträger entfernenMehr gibt es eigentlich nicht an reinen Linuxfachbegriffen, falls doch reicht wie üblich eine kurze Mail mit der Aufforderung doch gefälligst diesen oder jenen Begriff aufzunehmen. Es ist leider so daß man als langjähriger Linuxer Sachen für selbstverständlich hält, die es eben nicht sind. Da diese Seiten sich an Einsteiger richten, bin ich in der Hinsicht wirklich auf Eure Hilfe angewiesen. Seitenanfang GrundlagenübersichtLaufwerks- und GerätenamenDie folgende Tabelle ist nicht annähernd komplett aber sie enthält die häufigsten Gerätenamen und dient grundsätzlich auch nur dazu das oben beschriebene Schema noch etwas zu verdeutlichen. Linux fängt, wie auch alle Programmiersprachen, bei 0 an zu zählen !
Seitenanfang Namenstabelle Grundlagenübersicht Verzeichnisse und StrukturenDie meisten Linuxeinsteiger und Windowsumsteiger haben Probleme mit der komplizierteren Verzeichnisstruktur. Das diese sich auch noch, je nach gemounteten Zusatzgeräten, verändern kann sorgt dann für totale Verwirrung. Da diese Strukturen aber einen erheblichen Anteil der täglichen Arbeit beeinflussen und ausmachen, kommt man nicht umher sich etwas eingehender damit zu beschäftigen. Als erstes eine kleine Tabelle mit den "Standardverzeichnissen" unter Linux, die bei jeder Distribution gleich sein sollten
Seitenanfang Grundlagenübersicht Verzeichnistabelle DateisystemZu den ersten Aufgaben eines jeden Betriebsystems gehört die Arbeit mit Dateien.Die logische Strukturierung, Pflege und Erweiterung des Dateisystems gehört von daher zu dem Grundwissen das man zum qualifizierten Arbeiten haben sollte. Das Linuxdateisystem, ext2, ist deutlich strukturiert aufgebaut. Die Basis bildet das "root" oder "Wurzelverzeichnis" als Spitze des Verzeichnisbaums.Dieses Verzeichnis ist auch gemeint wenn irgendeine Pfadangabe mit dem "/" beginnt. Übersetzt heisst "cd /var/spool/mail" nämlich nichts anderes als :
Es gibt im Verzeichnisbaum 2 "Aliasnamen" die man benutzen kann. Einmal den . der das aktuelle Verzeichnis darstellt oder zweimal verwendet .. das nächsthöhere Verzeichnis benennt ,( das Elternverzeichnis ) also und die Tilde ( ~ ) die das Arbeitsverzeichnis des aktuellen Users bezeichnet. Statt cd /home kann man also auch cd ~ oder nur cd eingeben.Wie im DOS auch ist die Navigation unter Linux kinderleicht.Die Parameter entnehmt bitte den manpages Verzeichnis wechseln mit cd cd Verzeichnisname und das war es auch schon. Wie unter DOS auch kann man hier mit cd /usr/bla auch aus anderen Verzeichnisbereichen in ein Verzeichnis springen (absolute Adressierung) oder mit cd usr in ein untergeordnetes Verzeichnis derselben Struktur gehen (relative Adressierung ausgehend vom Standort). Verzeichnis anlegen mit mkdir mkdir Verzeichnisname und fertig. Auch hier ist natürlich die absolute und relative Adressierung möglich. Verzeichnis löschen mit rmdir rmdir Verzeichnisname und fertig.Die absolute und relative Adressierung ist auch hier möglich. Ihr solltet sicher sein das die Verzeichnisse leer sind. Ein wiederherstellen von Dateien ist unter Linux nicht möglich !!! Verzeichnis einhängen mit mount mount /dev/hdc -t iso9660 /mnt/cdrom hängt den Inhalt der CD-ROM in Das Verzeichnis
/mnt/cdrom Hierbei gibt es einige Besonderheiten :
Es ist nicht immer nötig den Type mit der Option -t anzugeben. Das hängt von den Einträgen in der Datei /etc/fstab ab auf die wir später noch genauer eingeben. Verzeichnis aushängen mit umount Hier muß nur umount Mountpoint angegeben werden. Keine Typenbezeichnung. Es gilt allerdings : Ihr dürft nicht im gemounteten Verzeichnis sein. Eigentlich logisch, da dieses Verzeichnis danach nicht mehr existiert - Ihr würdet Euch also außerhalb des Systems befinden. Verzeichnisinhalt anzeigen mit ls Die Eingabe von ls listet den Inhalt des aktuellen Verzeichnisses auf. Hierbei gibt es ein Unzahl von Optionen die Ihr bitte der manpage zu ls entnehmt. Auf vielen Systemen ist ls ein sogenanntes Alias für ls -laF. Auch auf den Begriff Alias gehe ich später noch ein und zwar unter "Linuxbefehle". An dieser Stelle steht absichtlich kein Link :-) Als Abschluß der Grundlagen noch kurz die Tabelle für die Ausgabe von ls.
In diesem Falle ist es ein Verzeichnis d, die nächsten 3 Zeichen bezeichnen die Rechte des Eigentümers, die folgenden 3 die der Gruppe und die letzten 3 die des Restes der User. Eigentümer ist hier root, der zur Gruppe root gehört. Der Verzeichniseintrag ist 4 KByte groß und wurde am 05 Juni 1997 unter dem Namen bin erstellt.Die Rechte seien hier erwähnt weil sie die Grundlage der ganzen Linuxphilosophie in Bezug auf Sicherheit sind, für Einzelplatzsysteme sind sie nicht so wichtig. Eigentlich.
Das soll es erstmal gewesen zum Thema Grundlagen. Ergänzungen, Fragen sind wie immer herzlich willkommen. Seitenanfang Grundlagenübersicht Verzeichnis Befehle - SystemverhaltenBefehle die das Systemverhalten beeinflußen sind während der laufenden Arbeit vielleicht nicht so wichtig, sollten aber auf jeden Fall genannt werden um User die sich etwas tiefer in Linux einarbeiten möchten auf die richtige Spur zu leiten. Systemverhalten wird hier im Sinne von Eingriffen ins System benutzt - dazu gehört das stoppen, manipulieren von Prozessen genauso wie das starten und stoppen von diversen Diensten wie dem Apache Webserver. Strenggenommen ist der Apache auch nur ein Prozess aber so genau will ich es an dieser Stelle nicht nehmen Grundlage aller Verwaltung ist der Befehl top. Die Ausgabe besteht aus 2 Teilen. Der Statusanzeige im oberen Teil und der Auflistung aller laufenden Programme weiter unten. Hier die Statuszeile (Header): 2:43pm up 11:32, 1 user, load average: 0.08, 0.03, 0.01 56 processes: 54 sleeping, 1 running, 1 zombie, 0 stopped CPU states: 1.9% user, 0.3% system, 0.0% nice, 97.6% idle Mem: 54760K av, 53168K used, 1592K free, 61868K shrd Swap: 136544K av, 472K used, 136072K free 21096K cachedDer Header : zeigt in der ersten Zeile von links nach rechts an das es viertel vor drei Mittags ist und der Rechner seit 11 Stunden und 32 Minuten läuft. Die load averages beziehen sich auf die aktiven Prozesse in den letzten 5,10 und 15 Minuten bzw. deren Ressourcenverbrauch, erstmal nicht wichtig.Zeile 2 gibt die Gesamtzahl der laufenden Prozesse und deren Status aus. Im Moment schlafen 54, 1 tut irgendwas und 1 Prozess gammelt ohne Sinn und Zusammenhang im System rum.In Zeile 3 listet top die Gesamtauslastung des Systems unterteilt nach Userverbrauch, Systemverbrauch und Reservierten Ressourcen. Wie man sieht nimmt Linux unter X mit 6 offenen Fenstern, davon 2 Netscape und einer aktiven Internetverbindung wirklich nicht viel.Interessant ist auch Zeile 4 die uns den Gesamtarbeitsspeicher, den Verbrauch und einiges mehr gibt. Zeile 4 schließlich widmet sich ganz dem Swap-Speicher, auch hier Gesamtgröße, benutzte, freie und die gecachte im RAM. Gar nicht so heftig gell ? Eben. PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND 1020 root 10 0 1036 1036 844 R 0 5.6 1.8 0:00 top 1 root 0 0 204 204 172 S 0 0.0 0.3 0:03 init 2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd 3 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kupdate 4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kpiodDie Statuszeile : ist auch nicht weiter heftig.PID ist die Process ID, also nur eine Nummer zur Identifizierung.USER sagt nur aus wer den Prozess gestartet hat und PRI zeigt ob und welche Priorität ein Prozess genießt. Diese läßt sich zuweisen, logisch.NI ist der Nice Level eines Prozesses, der NICE Level reserviert Ressourcen für Prozesse.SIZE zeigt den Platz den der Prozess für Code und Daten im Arbeitsspecher verbraucht.SHARE gibt den Verbrauch an Shared Memory an. Interessant sind auch STAT was den aktuellen Status des Prozesses angibt.
%CPU zeigt den Verbrauch der CPU,%MEM den Gesamtverbrauch an Arbeitsspeicher,TIME dann die Laufzeit und COMMAND den exakten Aufruf des Programmes. Manipulationensind natürlich immer das liebste :-). Was also kann man mit Prozessen machen ? Generell erstmal fast alles. Hauptbefehl dafür ist kill. Trotz seines archaischen Namens ist er nicht nur dafür da um einen Prozess zu töten, sondern dient der Manipulation ganz allgemein. Die Syntax ist denkbar einfach : kill -X PID also kill -15 1 würde den init-Prozess killen, etwas das man tunlichst unterlassen sollte. Es gilt : Nur Prozesse killen die Ihr selbst gestartet habt bzw. wenn Ihr genau wißt was Ihr tut !!! Hier kurz die kill Optionen : 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR Allerdings sollen nur die 5 wichtigsten genauer erklärt werden. Den Rest überlasse ich gerne den Manpages :-) Mit den nicht erwähnten Nummern lassen sich zum Beispiel Ausgaben auf Systemebene umleiten, andere PID's zuweisen, Speicherbereiche sperren und ähnliches. Diese Art Manipulation sollte man getrost unter "Linux für Fortgeschrittene" verbuchen.
Mehr braucht man, als Grundlage eigentlich nicht. Interessant und sehr nützlich ist das starten von Prozessen im Hintergrund. Linux bietet zwar generell 6 Textkonsolen aber es passiert sehr schnell das man auf einer Konsole einloggt, dann meinetwegen top startet um die Ressourcen zu überwachen und es schlicht vergißt oder nicht will das die Konsole blockiert wird. CD-Spieler auf der Konsole sind ein klassisches Beispiel. Deswegen bietet Linux die Möglichkeit alle Programme mit dem & als letzte Option zu starten und damit in den Hintergrund zu schicken.cdplay & würde also die CD starten und im Hintergrund weiterlaufen ohne die Konsole zu blockieren. In den Vordergrund holt man die Programme einfach mit fg und der PID. Die Ausgabe erfolgt weiterhin auf dem Bildschirm !!! Die PID läßt sich natürlich nicht nur über top ermitteln sondern auch einfach mit ps -C Aufrufname ermitteln. So würde ps -C cdplay alle laufenden CD Spieler listen. Im Zusammenhang mit den Umleitungsmechanismen die weiter hinten erklärt sind, lassen sich daraus sehr komfortable Scripte ( das Linuxpedant zur Batchdatei ) basteln, die Euch das Leben sehr erleichtern. Soviel dazu. Widmen wir uns dem Dateihandling. DateihandlingDateihandling umfaßt das Anzeigen von Dateien, manipulieren, Rechte verteilen und auch die sehr genialen Ein- und Ausgabeumleitungen. Diese allerdings nur in den Grundlagen. Das ist ein ewiges Thema.Auch hier gibt's wieder eine meiner heißgeliebten Tabellen.
Wildcardssind Platzhalter für Zeichen. Bei allen oben beschriebenen Befehlen können Wildcards eingesetzt werden um das kopieren, löschen oder einfach bearbeiten von Dateien zu erleichtern. Wildcards sind relativ einfach zu handhaben. Ein ? ersetzt ein Zeichen an der Stelle an der es angegeben wird, ein * ersetzt eine beliebige Anzahl von Zeichen an der Stelle wo er angegeben wird. In der Tabelle sieht das so aus :
So easy. Es gibt noch die Möglichkeit Regular Expressions statt der Wildcards einzusetzen, aber das führt hier zuweit. Vielleicht baue ich es irgendwann nochmal ein, allerdings denke ich das man Regular Expressions ( reguläre Ausdrücke im Format ls [^U-Z] ) vielleicht doch lieber im Rahmen der Shellprogrammierung oder einer anderen Sprache lernen sollte. Das bringt uns direkt zum letzten Thema dieser Abteilung, wobei ich hier kurz die Ein- und Ausgabeumleitungen vorstellen will, da sie für Dateihandling und auch die Tools nicht unwichtig sind.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||