30.06.2013 Aufrufe

Die Reise von Tausend Meilen beginnt mit dem ersten Schritt. Lao ...

Die Reise von Tausend Meilen beginnt mit dem ersten Schritt. Lao ...

Die Reise von Tausend Meilen beginnt mit dem ersten Schritt. Lao ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

EBS - Übung (1) HWR Berlin, FB 2 Duales Studium<br />

FR Informatik<br />

Dipl.-Ing. Peter Zeh VDI<br />

Stand: 20.10.2012 15:23<br />

<strong>Die</strong> <strong>Reise</strong> <strong>von</strong> <strong>Tausend</strong> <strong>Meilen</strong><br />

<strong>beginnt</strong> <strong>mit</strong> <strong>dem</strong> <strong>ersten</strong> <strong>Schritt</strong>.<br />

<strong>Lao</strong> Tse<br />

Seite 1 Co-Autor(in):<br />

1. Semester<br />

Dennis Ritchie<br />

Dennis Ritchie of Bell Laboratories<br />

was one of the principals involved with<br />

the development of UNIX. He was the<br />

designer of the first version of C,<br />

which was then used to rewrite UNIX<br />

for the PDP-11 computers.<br />

In den 60 igern gab es folgenden Stand in der Betriebssystementwicklung:<br />

- <strong>Die</strong> Betriebssysteme waren auf spezielle Rechner nach Firmenstandard zugeschnitten<br />

- <strong>Die</strong> BS waren in Assembler der jeweiligen Zentraleinheit geschrieben und praktisch nicht portierbar<br />

- „Hochsprachenprogramme“ waren hardwareabhängig und schwierig zu portieren<br />

- Tools zur Programmentwicklung waren firmenspezifisch und teuer<br />

- Offline Batch - Betrieb und Multiprogramming waren der ”State of Art”<br />

In dieser Zeit entwickelten Ken Thompson, Brian Kernigham, Dennis Ritchie und Freunde bei AT&T/Bell<br />

neben ihrer eigentlichen Arbeit Unix und C (Erprobung <strong>mit</strong> einem verteilten Spiel auf alten PDP8’s), um:<br />

- den Traum <strong>von</strong> der Rechnerleistung aus der Steckdose zu verwirklichen<br />

(eine Stadt wie Chikago sollte an einen Großrechner angeschlossen werden. Jeder hat zu Hause eine<br />

Steckdose, in die er ein Terminal einstecken kann - Multiuser/Multitasking Betrieb)<br />

- nicht für jeden neuen Rechner einen neuen Assembler lernen zu müssen (C ist assemblernah und<br />

ermöglicht Betriebssysteme und Programme nahezu hardwareunabhängig zu entwickeln)<br />

Unix kann durch seine Schichtenstruktur in ca. 2 Monaten auf eine andere Architektur gebracht werden.<br />

Unix ist das Betriebssystem auf den meisten Rechnerarchitekturen :-)<br />

- unter Unix diverse Tools für den Anwendungsprogrammierer (d.h. den Programmierer, der für<br />

irgendeine Umgebung Software entwickeln muß) zur Verfügung zu stellen.<br />

Heute hat Unix dieses Ziel erreicht, ist<br />

- ein transparentes netzwerkfähiges Multiuser/Multitasking Betriebssystem einsetzbar auch in heterogenen<br />

Umgebungen<br />

- hat eine Vielzahl <strong>von</strong> Tools, die <strong>dem</strong> Softwareentwickler das Leben leicht machen<br />

- hat eine Vielzahl <strong>von</strong> grafischen Oberflächen<br />

- bietet eine Vielzahl <strong>von</strong> freien Anwendungen für den Serverbetrieb bis hin zu Bürosoftware<br />

- wird in briefmarkengroßen „Eingebetteten Systemen“ bis hin zu Super-Rechnerclustern eingesetzt<br />

- ist kostenlos und quellcodeoffen, wird <strong>von</strong> einer weltweiten Gemeinde im Internet weiterentwickelt<br />

(Linux)<br />

- hat Anregungen für andere kommerzielle Betriebssysteme gegeben<br />

- ist extrem anpassungsfähig, um auch für künftige Entwicklungen gewappnet zu sein ;-)<br />

(Multiprozessorbetriebssystem, Netzwerkbetriebssystem)<br />

AT&T durfte aus kartellrechtlichen Gründen keine Software verkaufen und verschenkte die Quellen an<br />

Hochschulen. Heute gibt es 2 Hauptlinien der Entwicklung, die BSD -Distribution (University of California at<br />

Berkeley) und die kommerzielle AT&T Unix Version V. Linux vereinigt das Beste aus beiden Welten.<br />

In diesem Crash-Einführungs-Kurs werden wir nur an der „Oberfläche <strong>von</strong> Linux kratzen“.


EBS - Übung (1) HWR Berlin, FB 2 Duales Studium<br />

FR Informatik<br />

Dipl.-Ing. Peter Zeh VDI<br />

Stand: 20.10.2012 15:23<br />

Seite 2 Co-Autor(in):<br />

1. Semester<br />

Wir werden knapp den EinLog – Vorgang (Login) betrachten, das Hilfesystem vorstellen und <strong>mit</strong> Files arbeiten.<br />

Soviel nur zu <strong>dem</strong> Betriebssystemaspekt: Unix ist ein netzwerkfähiges Multiuser/Multitasking Betriebssystem.<br />

Auf einem Betriebssystem-Kern können mehrere Task (besser Prozesse) mehrerer Nutzer parallel oder<br />

quasiparallel gleichzeitig ablaufen. Aus Anwendersicht (Anwendungsprogrammierer) verwaltet Unix die<br />

Betriebs<strong>mit</strong>tel (Ressourcen) des Rechners (CPU, Speicherplätze, Tastatur,...), ermöglicht eine bequeme und<br />

effiziente Nutzung der Ressourcen für jeden Nutzer und stellt eine Kollektion <strong>von</strong> Systemfunktionen (open,<br />

fork, read,....) zur Kommunikation des Anwender(programm)s <strong>mit</strong> den Betriebs<strong>mit</strong>teln zur Verfügung.<br />

In diesem Sinne stellt Unix <strong>dem</strong> Anwender eine ”virtuelle Maschine” unabhängig <strong>von</strong> der konkreten Hardware<br />

zur Verfügung, zur Hardware kann nur über die Systemfunktionen zugegriffen werden.<br />

<strong>Die</strong> Programmierung <strong>mit</strong> den ca. 100 Systemfunktionen ist möglich, aber aus mehreren Gründen nicht immer<br />

zweckmäßig. Es gibt eine Vielzahl <strong>von</strong> Bibliotheken auf der Basis der Systemfunktionen, die bequemere<br />

Schnittstellen (fopen, fread, printf,...) zur Verfügung stellen. <strong>Die</strong> Unix-Funktionen (System, Bibliotheken) aller<br />

Hersteller halten sich ziemlich streng an den Posix-Standard.<br />

Nicht Bestandteil des Betriebssystems ist die Shell (Auch unter DOS können wir eine eigene command.com<br />

starten und arbeiten immer noch unter DOS). Wir haben es jetzt aber ausschließlich <strong>mit</strong> der Shell zu tun, d.h. wir<br />

lernen Unix nur über die Shell kennen. <strong>Die</strong> Shell ist ein Prozess, der nach <strong>dem</strong> login (:-O) in einem Terminal<br />

(TTY oder xterm) gestartet wird und eine User-Interaktion ermöglicht (interaktive Shell). Es gibt eine Vielzahl<br />

<strong>von</strong> Shells (Korn-Shell, C-Shell) <strong>mit</strong> speziellen Eigenschaften. Wir werden nur <strong>mit</strong> der Linux-Standard-Shell<br />

bash (Bourne against shell) zu tun haben.<br />

<strong>Die</strong> Shell ermöglicht:<br />

Editieren und Analysieren einer Eingabezeile zur:<br />

- Ausführung eingebauter (built in) Kommandos wie cd (change directory)<br />

- Interpretation <strong>von</strong> programmähnlichen Strukturen (Shell-Interpreter)<br />

- Ein-Ausgabeumleitung<br />

- Pipeline-Aufbau<br />

- Environment-Verwaltung<br />

- Job Verwaltung<br />

- Ausführung <strong>von</strong> Programmen<br />

- Unix - Kommandos wie cp (copy)<br />

- Ausführung <strong>von</strong> Shell-Scripten<br />

- Verwendung <strong>von</strong> Tools wie make, vi, sed , ylex, yacc<br />

- Entwickeln, Debuggen und Starten eigenentwickelter Programme (a.out)<br />

- Starten <strong>von</strong> Anwenderprogrammen wie kbilliard<br />

Hilfen<br />

In Unix gilt: Wenn man etwas weiß, so wird einem geholfen!<br />

Grundlage ist das Manual, welches in Sektionen unterteilt ist:<br />

Section<br />

1 User Commands 2 System - Aufrufe<br />

3 Bibliotheksfunktionen 4 Devices<br />

5 File Formats 6 Games<br />

7 Miscellaneous 8 System Administration<br />

n New<br />

<strong>Die</strong> Unterteilung ist wichtig, weil es viele Namen doppelt gibt, mkdir z.B. in Section 1 als Kommando und in<br />

Section 2 als Systemaufruf.<br />

man mkdir - liefert nur die Bedeutung aus Section 1<br />

man 2 mkdir - liefert die Bedeutung aus Section 2<br />

man man - gibt Hilfe zum Manual.<br />

man - pages stehen unter /usr/man/. Sie können <strong>mit</strong> man -t cmd in Postcript-Format (zum Ausdrucken)<br />

umgewandelt werden.<br />

Innerhalb einer Manual-Ausgabe kann man <strong>mit</strong> Befehlen des less-Kommandos navigieren, z.B.<br />

H -> Hilfe zu less<br />

/pattern -> Suche <strong>von</strong> pattern<br />

apropos mkdir oder whatis mkdir liefert alle Sektionen, in denen mkdir vorkommt.<br />

whereis mkdir gibt den absoluten Pfad aus, wo sich der mkdir-Befehl befindet<br />

type mkdir gibt weitere Informationen zu einem Kommando.<br />

info mkdir neueres GNU - Hilfesystem<br />

mkdir - -h cmd built in help.


EBS - Übung (1) HWR Berlin, FB 2 Duales Studium<br />

FR Informatik<br />

help cd Hilfe zu „Shell – built-in“ Kommandos.<br />

Dipl.-Ing. Peter Zeh VDI<br />

Stand: 20.10.2012 15:23<br />

Seite 3 Co-Autor(in):<br />

1. Semester<br />

Unter X gibt es für Oberflächenfreaks das xman und eingebaute Hilfen zu KDE und Programmen <strong>mit</strong> grafischer<br />

Oberfläche (qdevelop) . Linux gibt (meistens) unter usr/share/doc/packages/ und /usr/share/doc/howto<br />

ausführliche Hinweise zu bestimmten installierten Paketen. Der O’Reilly - Verlag bietet diverse ausgezeichnete<br />

Bücher (besonders die Nutshell-Serie).<br />

Das Schöne an Unix für den Informatiker und Anwendungsprogrammierer ist, dass es grundsätzlich zu<br />

allem aus der Unix/Freeware/Shareware-Welt eine Vielzahl <strong>von</strong> Alternativen gibt, die sie sich selbst<br />

erarbeiten müssen bzw. die sie sich selbst entwickeln können. An Linux und GNU arbeiten enthusiastisch<br />

die besten Programmierer der Welt umsonst und vollkommen freiwillig. Der Kurs und der Dozent<br />

können Ihnen dazu nur einen Bruchteil ver<strong>mit</strong>teln.<br />

Weitere Litaraturquellen:<br />

Hekman, J.: Linux in a Nutshell, O’Reilly 1997<br />

Gulbins, Obermayr: UNIX System V, Springer 1995<br />

Brockmann, L.: Jetzt lerne ich Unix, Markt & Technik 1999<br />

Internet diverse Sites<br />

Übungen 1:<br />

Führen Sie die folgenden Übungen aus und machen Sie sich Notizen über die <strong>von</strong> Ihnen eingegebenen<br />

Kommandos und die Antworten vom System.<br />

1. Melden Sie sich <strong>mit</strong> Ihrem Account am Linux-System an (KDE) und starten Sie ein X-Terminal.<br />

Es erscheint ein Befehlsfenster (Console), in <strong>dem</strong> Sie Befehle (Kommandos) eingeben können.<br />

Sie befinden sich innerhalb der SHELL „bash“.<br />

2. Fragen Sie das System, wer Sie sind (whoami).<br />

3. Rufen Sie die man-Page für das Kommando man auf.<br />

(Verlassen <strong>von</strong> man <strong>mit</strong> ‚q’)<br />

4. Suchen Sie alle Kommandos zum Schlüsselwort „time“ (man –k schlüsselwort(e)).<br />

5. Schreiben Sie einen Kurztext und legen Sie ihn im aktuellen Verzeichnis (WorkDirectory) ab.<br />

Kurztext: „Das ist mein erster Linux-Text.“<br />

Den Text speichern Sie unter <strong>dem</strong> Dateinamen „meinerster.txt ab (cat > meinerster.txt).<br />

Bitte beachten Sie: Das Kommando cat benutzt hier die Tastatur so, wie bei einer Schreibmaschine.<br />

Erst <strong>mit</strong> der Eingabe <strong>von</strong> +D wird ein EOF (end of file) erzeugt und<br />

der Text aus <strong>dem</strong> Buffer in die Datei „meinerster.txt“ geschrieben.<br />

6. Geben Sie die Datei „meinerster.txt“ auf der Console aus (cat meinerster.txt).<br />

7. Prüfen Sie den Inhalt der folgenden Dateien <strong>mit</strong> <strong>dem</strong> Kommando file.<br />

Geben Sie dazu den Dateinamen wie angegeben ein.<br />

Dateien: /etc/passwd<br />

/bin/rm<br />

/usr<br />

meinerster.txt<br />

8. Gibt es einen Unterschied in der Ausgabe der beiden folgenden Befehle?<br />

Wenn ja, dann versuchen Sie ihn zu begründen. Bitte achten Sie darauf, dass zwischen den Wörtern<br />

ein, zwei, drei mehrere Leerzeichen (z.B 5) eingegeben werden.<br />

Befehle: echo „eins zwei drei“<br />

echo eins zwei drei<br />

9. Versuchen Sie <strong>mit</strong> <strong>dem</strong> Kommando date eine Ausgabe in der Form: Datum: 29.10.2009<br />

Zeit : 18:30:45<br />

Variablen: %d (Tag), %m (Monat), %Y (Jahr), %H (Std.), %M (Min.), %S (Sek.), %n (Zeilenwechsel)<br />

10. Was ist an <strong>dem</strong> folgenden Kommando falsch und warum?<br />

Kommando: date +Es ist jetzt %H:%M

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!