2001-02-14

 

UNIX

 

 

 

UNIX

 

Historie:

1969               Multics wurde von Bell Laboratories entwickelt

 

Ken Thompson entwickelte auf DEC PDP7 für ein Spiel ein Betriebssystem Unics

 

Ende 1969    wurde aus Unics die erste Unix-Version entwickelt

 

1971                              UNIX wurde in Programmiersprache C portiert

 

40 Installationen von UNIX weltweit (auf PDP11)

 

1974                              erste öffentlicher Artikel über UNIX

 

 

Im Laufe der Zeit entstanden viele UNIX-Varianten (Derivate):

·        Sinix

·        Xenix

·        Ultrix

·        Alux

·        AX

·        Sun-OS

·        BSD-UNIX

·       

 

Merkmale eines UNIX-Betriebssystems:

·        hierarchisches Dateisystem

·        identische Schnittstellen für Daten-, Geräte- und Interprozesskommunikation

 

cp /etc/motd /tmp/xyz                                   (Copy-Anweisung)

cp /etc/motd /dev/tty1

 

·        Hintergrundprozesse

·        Prozesskonzept zur Realisierung synchroner und asynchroner Vorgänge

·        Filtertechnik

 

cat /etc/passwd /grep hugo /sort/less        (Darstellungs-Anweisung)

 

·        viele Werkzeuge

o       Werkzeuge erfüllen i.d.R. genau eine Aufgabe, diese aber perfekt

·        hohes Maß an Portabilität

Linux?!

·        ein finnischer Student wollte die Funktionsweise eines 80386-Prozessors ergründen: Linus Benedict Torvalds

·        Steuerprogramm wurde entwickelt: Wechsel zwischen zwei Programmen möglich

·        nach einigen Weiterentwicklungen: Linux Version 0.1

·        1991 erste öffentliche Version von Linux

·        Studenten und interessierte Personen entwickeln weiter

·        1994: Version 1.0

·        1999: Version 2.0.36

·        2001: Version 2.4.0

 

Linux-Distribution

·        Betriebssystem (Kernel) wird von Linus Torvalds verwaltet – Änderungen werden von ihm kontrolliert

 

Anwendungen

 
 


                                                                                                                      Word/Excel

 

Systemprogramme

 
 


                                                                                                                      Betriebssystem

Betriessystem (Kernel)

 
                                                                                                                      LINUX

 

 

Hardware

 
 


                                                                                                                     

 

 

·        alle andere Software (Systemprogramme, Anwendungen) kommt „sonstewo“ her

Þviele freie Entwickler

 

                        GNU (GNU is not Unix)

 

                        Þunüberschaubare Vielfalt an Software

 

·        Distributor sichtet Angebot an Software, trifft eine Auswahl und stellt diese auf geeigneten Medien bereit:

 

SuSE Linux 6.0 (Dez. 1998), DM 99,- (5 CD’s)

Debion 2.0

Redhat 5.1

 


Installation von Linux

·        textbasierte Installation: YAST1 (YAST=yet another setup tool)

o       viele Konfigurationsmöglichkeiten

·        Installation mit YAST2 (“Knopfdruckinstallation”)

o       viele Entscheidungen werden von YAST2 selbständig getroffen

o       geeignet für neuen Rechner, auf dem nur Linux laufen soll

·        von DOS aus: Setup/Loadlin

o       bei „problematischer“ Hardware (Linux erkennt CD-ROM nicht, CD nicht bootfähig,...)

 

 

YAST1

Ausgangsvoraussetzungen:

·        von CD booten (oder Bootdiskette)

·        Festplatte mit genügend Platz für Linux-Installation (~250MB – 8GB)

·        CD-ROM wird von Linux unterstützt

 

 

Vorgehensweise:

·        CD1 booten (evtl. Bootreihenfolge im BIOS ändern!)

®Begrüßungsbildschirm

wenn „boot:“ erscheint: innerhalb von 3 Sekunden eine beliebige Taste drücken, damit YAST2 nicht gestartet wird

·        boot: manual <Enter>; Befehl für das manuelle Booten des Mini-Kerns; linuxrc wird gestartet (menügeführt)

 

LinuxRC

·        Einstellungen zur Installation vornehmen

·        falls notwendig: Treiber als Kernelmodule laden

·        am Ende wird YAST gestartet (eigentliche Installation von System- und Anwendungsprogrammen)

·        Navigation:

­, ¯     Menüpunkt auswählen

¬, ®  Kommando auswählen

¿         Kommando ausführen

·        Sprachauswahl:        deutsch

·        Bildschirm:                Farbe

·        Tastaturlayout:          deutsch

·        Hauptmenü von LinuxRC:

o       Einstellungen                        Sprache, Bildschirm, Tastatur,...

o       Systeminformationen          Informationen über erkannte Hardware,

geladene Module

o       Kernel-Module                     laden von passenden Modulen für spezielle

Hardware, z.B. SCSI-Controller (falls zur

Installation benötigt)

o       Installation/                            Installation wird fortgesetzt

System starten

o       Abbruch/Reboot                  „Linux doch nicht installieren“

 

Installation/System starten:

·        Installation/Update starten              Fortsetzen der Installation

·        Installiertes System booten wird benötigt, falls es zu Problemen

beim regulären Booten kommt

·        Rettungssystem starten                   in Notfällen

·        Live-CD starten                                mit Linux “spielen”, ohne es auf

Festplatte zu kopieren

 


·        Quellmedium festlegen                   CD

·        YAST-Variante wählen                    ®textbasiert: YAST1

®grafisch:YAST2

ÞYAST wird gestartet

·        Tastaturbelegung wählen und testen

 

Hauptmenü

·        Linux installieren                             

·        bestehendes System updaten       aktualisieren von SuSE Linux

·        Experten-Modus

·        Abbruch                                            keine Installation

 

Festplatte partitionieren und formatieren

·        nicht partitionieren

·        partitionieren

·        LVM (Logical Volume Manager)

 

·        Anzahl der gefundenen Festplatten wird gemeldet; bei mehreren:

o       /dev/hda

o       /dev/hdb

o       /dev/hdc

o       ...

·        Partitionieren:                                  manuell partitionieren

 

Partitionen für Linux

mind. 2 Partitionen

1.      Betriebssystem, Daten, Programme

2.      Swap-Partition

 

Zu 1)

            Partitionstyp:                         Linux Native

            Größe:                                   mind. 180MB (Minimalsystem)

                                                           + Platz für Benutzerdaten, spez.

                                                           Anwendungsprogramme, etc.

                                                           „Spielen“ mit X-Windows: ~500MB

Zu 2)

            Partitionstyp:                         Linux Swap

            Normalfall:                             64MB

            „sicher“:                                 128MB

            ansonsten:                            abhängig vom Speicherbedarf der

Programme

®Partitionstabelle wird angezeigt

 

Löschen: Partition auswählen ®F4 = Löschen

 

Einfügen:

·        nur möglich, falls Platz vorhanden

·        Art der Partition wählen: Logisch, Primär

·        Start und Ende festlegen

 

Startzylinder:             Z96

Endzylinder               200M

 

Vorschlag: Anfang des freien Bereiches, Ende des freien Bereiches; änderbar

 

hier sinnvoll:             

1. Partition einrichten, Startzylinder übernehmen, Endzylinder: +128MB

ÞGröße der Swap-Partition festlegen

2. Partition einrichten; Start- und Endzylinder übernehmen ÞRest der Platte für Native Partition verwenden

UNIX-Name der Partition festlegen ®Auswahlliste; z.B.:

 

/dev/hda1

/dev/hda2

 

einfach einen auswählen und notieren!

 

Typ setzen

 

Partition auswählen, <F3> (Swap oder Native auswählen)

 

Festlegen der Dateisysteme

a) Dateisystem festlegen

·        Typ, Mountpoint, Formatieren für Linux-Dateisysteme festlegen

·        Partition auswählen

·        F3: Typ setzen ®ext2 wählen (reiserfs noch nicht ganz ausgereift...)

 

b) Mount Point festlegen

·        Partition auswählen

·        F4 Mount Point   /

/usr

/home

 

c) Formatieren

·        Partition auswählen

·        F6 ®Formatieren ®Normal

Software-Konfiguration festlegen:

Was soll installiert werden?

 

Konfiguration laden:

            vordefinierte Zusammenstellungen von Software zur Installation auswählen

            ®SuSE Minimalsystem

            Hinzufügen:    ausgewählte Konfiguration wird hinzugefügt

            Ersetzen:       nur ausgewählte Konfiguration wird installiert

(evtl. vorhandene Auswahlen werden

entfernt)

 

... (Hauptmenü ®Weiter mit Installation)

 

Kernel für das System auswählen

®Standard-Kernel (pentiumoptimiert)

 

für spez. Fälle: z.B. i386/i486-Kernel

 

LILO Konfigurieren

            Ja! Auf eine Bootdiskette. (Vorläufig)

            - Konfiguration erzeugen

            - auf Diskette

            Diskette einlegen; später: im BIOS Bootreihenfolge beachten!

 

Grundkonfiguration des Systems

·        Zeitzone wählen                   Europa (Berlin)

·        Rechneruhr                           GMT oder lokale Zeit

·        Netzwerkkonfiguration:        nur loopback

·        Rechnernamen, Domainname:

z.B. Erde.Kosmos

hier sinnvoll: CA10 als Rechnername, ca.de Domainname

·        Sendmail-Konfiguration:     keine Modifikation

 

Kennwort für root

            <= 8 Zeichen

            root entspricht „Administator“ in WinNT

 

Modem einrichten

            Nein

 

Maus einrichten

            Ja :-)

            Microsoft serielle Schnittstelle

            PS/2-Maus

            ...

            Testen, Umkonfigurieren/Übernehmen

            GMP starten ®Ja (damit Maus im Textmodus verfügbar ist)

 


ÞLinux ist installiert

 

·        im Hintergrund werden Konfigurationsskripte abgearbeitet

·        dennoch anmelden und arbeiten möglich

login:   root

password:      *****

CA10:#          <Befehle eingeben; arbeiten, etc.>

ls                     zeigt Inhaltsverzeichnis an

ls/                    zeigt Hauptverzeichnis an

ls/dev            

...

yast

 

                        ls = List (zeigt Inhalt eines Verzeichnisses an)

                       

                        logout             Abmelden vom System

                                   CA10:# shutdown –h now (herunterfahren und anhalten)

 

 


2001-02-15

 

UNIX

 

 LILO kann nicht booten, wenn Kern (vmlinuz) in einer Partition oberhalb 1024 Zylinder liegt.

Lösung, z.B. Bootdiskette erzeugen, die Kern direkt enthält: (siehe 4.6 Booten und Bootmanager)

 

CA10: # /sbin/badblocks –v /dev/fd0 1440

CA10: # dd if=Ihr_Kernel of=/dev/fd0 bs=18k

CA10: # rdev /dev/fd0 Ihre_Root_Partition

CA10: # rdev –R /dev/fd0 1

 

Anmelden, virtuelle Konsolen, etc.

·        Zugang zu UNIX nur nach Anmeldung Þgültiger Benutzer und Kennwort

·        Warum: Multi-User - Betriebssystem muß jeden Anwender identifizieren können

 

klassische Anwendung:

 


                                                                                                                      Konsole

 


            Terminals

 

 

 

 

 


Hugo, Erwin, Meier, root melden sich am UNIX-Rechner an; diese können gleichzeitig mit gleichen oder unterschiedlichen Programmen arbeiten.

 

unter Linux: virtuelle Terminals

 

                  Alt + F1          Alt + F2           Alt + F2

 

 

 

 


                                            virtuelle Terminals

 

 

 

Besonderheiten der Konsole (<Alt> + <F1>)

Ausgabe von Fehler- und Kontrollmeldungen (Systemmeldungen)

 

 


einige Befehle:

 

tty                                "An welchem Terminal bin ich angemeldet?"

                                   z.B. /dev/tty1

 

logout                         Abmelden von einem Terminal

                                   auch:   exit

                                               <Strg> + D (EOF)

 

pwd                            print working directory

                                   (zeige das aktuelle Arbeitsverzeichnis an)

 

cd                               change directory

                                   wechsle das aktuelle Verzeichnis

                                   (wie unter DOS)

                                   cd /      (Hauptverzeichnis)

                                   cd /tmp           (temporäres Verzeichnis)

                                   cd ..     (übergeordnetes Verzeichnis)

 

ls                                 List

                                   zeige den Inhalt des aktuellen Verzeichnisses an

                                   ls-l       long (Listenform)

                                   ls /       (Verzeichnis /)

                                   ls /dev (Verzeichnis /dev)

 

ls --help                      zeigt Optionen an (fast bei jedem Befehl; manchmal auch -h --h)

 

ls --help | more          zeigt Liste in "More" (Programm, das Datenstrom seitenweise anzeigt)

 

 

Einfacher Anwendungsfall

·        Erstellen einer Ablage für eine neue Notiz

·        eine Notiz erzeugen

·        die erstellte Notiz nochmals anzeigen

·        eine Kopie der Notiz erzeugen

·        die Notiz löschen

 

(Anmeldung am System, root)

cd /root                                              in Verzeichnis /root wechseln (=Arbeitsverzeichnis

                                                           = Heimatverzeichnis des Benutzers root)

 

mkdir ablage                                    make dir; erstellt Verzeichnis "ablage"

 

ls                                                        ablage

 

cd ablage

 

ls                                                        leer

 

            -Editor verwenden: vi, emacs, joe, pico, ...

 

vi notiz                                               Startet den Editor "vi" mit der Datei "notiz"

 

            -Eingabe von Text-

 

i                                                          insert (einfügen)

 

            -"Aller Anfang ist schwer.

            Aber Übung macht den Meister."-

 

<ESC>                                              Verlassen des Eingabemodus

 

            -Speichern der Datei-

 

ZZ                                                      speichern und Editor verlassen

 

:w                                                       speichern

 

            -Verlassen des Editors-

 

:q

 

            -Speichern und Verlassen-

 

:wq

 

            -Verlassen ohne Speichern-

 

:q!

 

            -Editor startet, ohne Datei-

 

vi

 

            -"Speichern unter..."-

 

:w notiz

 

            -Bewegen im Text-

 

hjkl                             

 

            -Nochmals anzeigen-

 

vi notiz

 

cat notiz                                             liest von stdin (=Tastatur) und schreibt auf stdout

(=Bildschirm) bis EOF kommt (<Strg> + D)

 

            -Kopie erzeugen-

 

cp notiz notiz.kopie              Kopiert von Quelle nach Ziel

 

cat notiz.kopie                                  ansehen

 

ls                                                        notiz und notiz.kopie

 

rm notiz                                             remove (löscht die angegebene Datei)

 

rm /root/ablage/notiz                        (absolute Pfadangabe)

 

ls                                                        notiz.kopie

 

cp /root/ablage/notiz /tmp/hugo      notiz als hugo in tmp gespeichert

 

 

 

mv                                                      move (bewegen, umbenennen)

 

mv notiz erwin                                   benennt notiz in erwin um

 

            -Ordner löschen-

 

es existiere /root/frank/test

aktuelles Verzeichnis: /root/frank

 

rm -r test                                            löscht Ordner "test" und alle untergeordneten

Objekte

                                                           -r: recursive

 

rm -r /                                                 NICHT machen! Löscht alle Dateien!!!

 

 

Manual Pages (Handbuch)

man <Stichwort>                  Manual Page zu Stichwort aufrufen (Ruft

automatisch less auf; beenden mit :q)

 

man cp

man ls

man mv

man vi

...

man man

 

man -f <Stichwort>               sucht nach Stichwort und listet gefundene Seiten (Stichwortsuche)

                                               man -f passwd

 

 


man -k <Stichwort>              sucht innerhalb der Seiten nach Stichwort (Volltextsuche)

                                               man -k cp

 

man <Sektion> <Stichwort>

                                               ruft Manual Page zu Stichwort in bestimmter Sektin auf

                                               man 1 passwd

                                               man 5 passwd

                                               man cp = man 1 cp (der erste Treffer zählt)

 

Kapitel:

            1          Befehle (=Programme) für Benutzer

            2          Systemaufrufe der verschiedenen Bibliotheken

            3          C-Bibliotheksfunktion

            4          Beschreibung von Konfigurationsdateien

            5          Syntax wichtiger Dateien

            6          Beschreibung von Spielen

            7          Text, Textformatierung

            8          Befehle des Systemverwalters

            9          Linux-Kernelroutinen

            n          "der Rest"

 

weitere Informationen (Artikel, Bücher, FAQs, etc.)

            /usr/share/doc und Unterordner

 

 


2001-02-16

 

UNIX

 

Mit welchem Befehl kann überprüft werden, ob man sich im Heimatverzeichnis befindet?

pwd (aktuelles Verzeichnis anzeigen)

 

Heimatverzeichnis = Homedirectory = Verzeichnis für einen bestimmten Benutzer; nach der Anmeldung befindet sich der Benutzer i.d.R. im Homedirectory, d. h. aktuelles Arbeitsverzeichnis = Homedirectory

 

Benutzer

Homedirectory

Root

/root

Hugo

/home/hugo

Erika

/home/erika

erwin

/home/erwin

           

 

 


            üblich

cd (ohne Argumente) wechselt in Homedirectory des angemeldeten Benutzers

 

 

Erstellen eines Verzeichnisses uebung im Heimatverzeichnis

mkdir uebung

mkdir /root/uebung

mkdir ~/uebung

mkdir ~/root/uebung

 

~ (Tilde)

~ = Heimatverzeichnis des angemeldeten Benutzers

            hier: Benutzer ist root ®/root

~hugo             ®/home/hugo

~root              ®/root

 

mkdir /root/neu1/neu2/test

            Was passiert? (nur root existiert bisher)

 

            ®Test soll erzeugt werden?

            ®Pfad muß vorhanden sein!          Þklappt so nicht

            ÞPfad muß Ebene für Ebene aufgebaut werden

 

 

Kopieren der Datei /etc/passwd in das erstellte Verzeichnis

cp /etc/passwd uebung

            aktuelles Verz.: /root                        ®/root/uebung/passwd

            aktuelles Verz.: /root/uebung          ®/root/uebung/uebung

 

Bei Unsicherheit: Angabe des kompletten Pfades ist immer korrekt!

 

cd /root/uebung

cp /etc/passwd .                   /root/uebung/passwd

cat passwd                           root, hugo,…

 

cp /etc/motd passwd          

ls                                            passwd

cat passwd                           “Have a lot of fun!”

 

Þcp überschreibt existente Dateien, ohne Rückfrage!

 

 

Laden der kopierten Datei in den Editor „vi“

Öffnen:

cd /root/uebung

vi passwd                            (=vi /root/uebung/passwd)

 

Bash durch Test ersetzen:

:1,$s/bash/Test/g

 

1,$                  ®Bereich (Zeilennummer; Anfang, Ende)

$                     ®letzte Zeile

.                       ®aktuelle Zeile

1,5                  ®Zeilen 1 bis 5

2,7                  ®Zeilen 2 bis 7

3,$                  ®Zeilen 3 bis Ende

4,.                   ®Zeile 4 bis aktuelle Zeile

%                    = 1,$

Option g:        global (alle Vorkommen in der Zeile, sonst nur 1. Treffer pro

Zeile)

 

Ersetzen Sie alle Vorkommen von : durch =

:%s/:/=/g

 

Ersetzen Sie alle Vorkommen von / durch Q

:%s///Q/g        geht nicht! (Error)

            / hat Sonderbedeutung im s-Befehl (Substitute)

Þdarf nicht in „Nutzdaten“ vorhanden sein

®kann durch \ aufgehoben werden

:%s/\//Q/g geht!

\\ wiederum hebt die Sonderbedeutung von \ auf

 

 

Suche Zeile, in der „root“ vorkommt und kopiere sie ans Ende

/root                sucht beginnend mit der aktuellen Zeile nach der

Zeichenkombinatin „root“ (nach unten)

?root               wie /root, aber nach oben

 

Y                     kopiert aktuelle Zeile in Puffer (Zwischenablage)

 

-mit Cursortasten ans Ende gehen-

 

p                     fügt Puffer an aktueller Position ein

 

Alternativen:

Y

:$                    letzte Zeile

p

 

Y

G                     letzte Zeile

p

 

/root

:.co$               Kopiert aktuelle Zeile ans Ende

 

:7,11 co 13    Kopiert die Zeilen 7 bis 11 in Zeile 13

:1,. co $          Kopiert die Zeilen 1 bis aktuelle Zeile ans Ende

:1,. co 39        Kopiert die Zeilen 1 bis aktuelle Zeile in Zeile 39

:1,7 co .          Kopiert die Zeilen 1 bis 7 in die aktuelle Zeile

:1m$               Verschiebt Zeile 1 ans Ende

                        m = move

 

 

Speichern des Dokumentes unter dem Namen modified und Verlassen des

Editors

            :%w modified

            :q

 

            :w modified

            :q

 

            :wq modified

 

            :w /root/uebung/modified

            :q

 

            :1,$w modified

 

 

Was befindet sich in text, was in hugo?

vi text

            -Veränderung1 vornehmen-

:w hugo

            -Veränderung2 vornehmen-

:wq

 

®text:             text + Veränderung1 und Veränderung2

®hugo:          text + Veränderung1

 

 


Dateisystem

·        Gesamtheit aller Dateien eines Betriebssystems

·        englisch: file system

·        Inhalte (Dateien, files)

·        Gliederung (Verzeichnis, Ordner (directory))

·        hierarchisch aufgebaut

 

Namen in Dateisystem

·        max. 255 Zeichen

·        Buchstaben a...z, A...Z

·        Zahlen 0...9

·        wenige Sonderzeichen: -, _, .  (ursprünglich)

·        Groß- und Kleinschreibung ist relevant

 

Dateiinformationen

·        Dateigröße

·        Erstellungsdatum

·        Besitzer

·        Zugriffsrechte

·        Lage der Daten auf der Festplatte

·        Art der Datei („normale“ Datei, Verzeichnis, Gerät)

 

ls –aFl

total 24

drwxrwxr –x 7 leser seminar 1024 Dec23 11.13./

drwxrwxr –x 4 autor seminar 1024 Dec23 04:09../

...

-rw-r--r--1 root root 2048 Feb16 09.28 modified

 

1. Spalte

d          directory

-           “normale” Datei

l           symbolischer Link

b          Block-Gerät

c          Zeichen-Gerät

 

2. Spalte

r           read

w         write

x          execute

 

Zahl

Anzahl der Verweise

 

Eigentümer

hier: root

 

Gruppe

hier: root

 

Größe der Datei

hier: 2048Bytes

 

Datum

der Erstellung, bzw. der letzten Änderung

 

Name der Datei

hier: modified

 

ls –a          all (alle Dateien anzeigen); ansonsten werden Dateien, die mit „.“

beginnen, nicht angezeigt

                   ls

                               text1 text2 text3

                   ls –a

                               . .. text1 text2 text3 .exrc

 

ls –f           Angaben zu Dateinamen ergänzen

*          ausführbare Datei

/           Verzeichnis

@        symbolischer Link

...

 

ls –l           lange Version (ausführlich)

 

 

 

Dateitypen

 

plain file        “normale Datei”

                        beliebige Folge von Zeichen, ohne Struktur und Format

                        Symbol: „-

 

directory       Verzeichnis

                        Ordner für Dateien und weitere Verzeichnisse

                        Symbol: „d

 

special file    Gerätedatei

                        für jedes Gerät (Bildschirm, Maus, Drucker, CD-ROM, Festplatte,

Ethernet-Karte,...)

                        Datei, die das entsprechende Gerät symbolisiert

                        i.d.R. /dev

                        Floppy            /dev/fd0

                        Drucker          /dev/lp0

                        Festplatte      /dev/hda

                                               /dev/hda1

                                               /dev/hda2

                                               ...

 


Symbol: b,c

            b          block special device

                        Festplatte, Diskette

           

            c          character special device

                        serielle Schnittstelle

 

Beispiel:

2x anmelden; an                   Terminal1                  Terminal2

            tty                                /dev/tty1                     /dev/tty2

            an Terminal1             cp /etc/passwd /dev/tty2

 

Was passiert?

            Datei wird auf das Gerät /dev/tty2 (=Terminal2) kopiert

            ®auf Terminal2 schalten (Alt + F2)

                        ®die Daten sind sichtbar

 

 

Symbolischer Link

·        Verweis auf eine andere Datei (Win95++: Verknüpfung)

·        Symbol: l

 

-rw-r--r--          leser   seminar          original

lrwxrwxrwx      leser   seminat          symlink ®original

 

·        Erzeugung eines symbolischen Links:

 

ln –s original symlink

 

ln:        Erzeugen eines Links

ln –s    Erzeugen eines symbolischen Links

 

Beispiel:

es existiere eine Datei text1

ln –s text1 hugo

ls                   

ls –l               

vi hugo        

Welche Datei wird bearbeitet? text1

 

 

cd /root

ln –s /usr/share/doc Dokumentation

cd dokumentation

ls –l                 ®symbolischer Link zu doc

 

 


Dateisystemtyp

·        Zugriff auf Datei muß intern in entsprechende Lese- oder Schreibbefehle auf Festplatte umgesetzt werden

·        aufgrund unterschiedlicher Anforderungen (Datensicherheit, Leistungsfähigkeit, Größe,...) wurden unterschiedliche Typen entwickelt

·        bekannt aus PC-Welt: FAT16, FAT32, NTFS, HPFS, ...

·        Linux unter folgende Dateisystemtypen

 

minix             Rudiment aus Linux-Entwicklung

ext2                Linux-Dateisystem

iso9660         Standarddateisystem von CD-ROM

hpfs               Zugriff auf OS/2-Daten; nur lesbar

sysv               UNIX Stystem V

bsd                4.3 BSD-UNIX

msdos           Dateisystem von MS-DOS

                        ÞZugriff auf DOS-Disketten/-Festplatten

ntfs                Dateisystem von Win NT

nfs                  Zugriff auf NFS (Network File System)

                        Sun/BSD-UNIX

smbfs                        Zugriff auf Windows (NT, 98,...) basierte Rechner

...

 

Mounten von Dateisystemen

·        jedes Dateisystem befindet sich auf Festplatte, Diskette, o.ä.

·        root-Filesystem (darauf befindet sich Betriebssystem) wird automatisch beim Starten verwendet

·        weitere Dateisysteme müssen bei Bedarf hinzugefügt werden (in das root-Filesystem integrieren) ®mounten

 

/dev/hda1

                                                                                                /

 

 


                                               bin                  tmp                 etc                  hugo               dev

 

 


Zylinder: txt
bla
src
            /dev/hdb9                                                                              txt        bla       src

 

mounten:        Dateisystem (z.B. NTFS) auf /dev/hdb9 wird dem Verzeichnisbaum hinzugefügt

 

 

Beispiel:

Diskettenlaufwerk einbinden (DOS-Diskette)

 

mount –t msdos /dev/fd0 /root/Diskette

 


             Typ des       Gerät     Position im Verzeichnisbaum

Dateisystems                =Name eines Verzeichnisses

·        Verzeichnis „Diskette“ muß vor dem Mounten vorhanden sein

·        Inhalt des gemounteten Dateisystems wird in das angegebene Verzeichnis „eingeblendet“ und ist demnach verfügbar (genauso wie beim root-Filesystem)

 

mkdir /windows

mount /dev/hda1 /windows

 

·        auf CD-ROM zugreifen

 

mkdir /root/scheibe

mount /dev/hdc /root/scheibe

 

 

            mount

Was passiert? ®aktuelle Belegung wird angezeigt (die gemounteten Dateisysteme)

 

/dev/hda9 on / type ext2 (rw)

/dev/hda1 on /windows type vfat (rw)

/dev/hdc on /root/scheibe type iso9660 (ro)

/proc on /proc type proc (rw)

allgemein:

Gerätename on Verzeichnisname type Dateisystem Zugriffsrechte

 

·        Dateisystem entfernen:

 

umount /dev/hdc               ®Gerät /dev/dhc wird „entfernt“

 

umount /root/scheibe       das an dem Mount-Port (=Verzeichnis, hier: /root/scheibe) gemountete Gerät wird “entfernt”

                                               ÞVerbindung zu dem entsprechenden Filesystem wird getrennt

 

Voraussetzung:

            File System wird nicht benutzt

 

Beispiel:

mkdir /root/cd-rom

mount /dev/dhc /root/cd-rom

cd /root/cd-rom

ls

umount /root/cd-rom

®”Device is busy” (geht nicht)

cd /

umount /root/cd-rom (das klappt)

 

·        mount/umount darf i.d.R. nur der Benutzer root ausführen


·        Nur-Lese-Mounten:

 

mount /dev/hda1 /windows –o ro (option: read only; -r bewirkt dasselbe)

 

 

Mount-Tabelle

·        Verzeichnis aller zu mountenden Geräte; beim Booten von Linux wird diese Tabelle ausgewertet und die entsprechenden Filesysteme gemountet

 

/etc/fstab (File System Table)

 

Beispiel:

cat /etc/fstab           [vi /etc/fstab]

 

Gerät              Mount Point              Typ                 Optionen      

/dev/hda9     /                                  ext2                defaults        1          1

/dev/fd0         /floppy                      auto               noauto,user 0          0

/dev/hdc       /root/scheibe           auto               noauto,user 0          0

/dev/hda1     /windows                 auto               defaults        0          0

 

Die beiden Ziffern am Ende sind Informationen für andere Programme.

 

 

Optionen

 

defaults        ®Voreinstellungen

·        nur root darf mounten/umounten

·        rw

·        beim Starten mounten

·        ...

 

noauto          ®kein automatisches Mounten beim Starten

 

user               ®normaler Benutzer darf Mount/Umount ausführen

 

ro                    ®read only (nur zum Lesen) mounten

exec               ®verbietet das Ausführen von Programmen

 

 

mount /dev/hdc /root/Scheibe

umount /dev/hdc

mount /root/Scheibe (wenn Scheibe in fstab steht)

 

ÞAbkürzung des Mount-Befehles unter Zuhilfenahme der Tabelle (fstab)

 

            mount floppy

            ...

            umount floppy

Leerzeichen

 

Dateiname bla bla bla (Dateiname mit Leerzeichen)

 

#> cat bla bla bla

bla nicht gefunden

bla nicht gefunden

bla nicht gefunden

 

cat „bla bla bla“         ü

cat bla\ bla\ bla         ü

 

 

Eingabehilfen

 

ls

            text hugo erwin erwin2

vi t                  <Tab>            ®vi text

vi e                 <Tab>            ®erwin (Piepston)

                        <Tab>            ®erwin2

 

vi /etc/p         <Tab>            ®Piepston (es gibt mehrere mit „p“)

                        <Tab>            ®Piepston (zeigt nun alle an)

 

 


2001-02-26

 

UNIX

 

Erstellen eines Dateisystems

 

DOS/Windows:         format

 

UNIX:                         mkfs (make file system)

                                   mkfs –t          Dateisystemtyp

                                  

                                   Beispiel:

                                   mkfs –t ext2 /dev/fd0

                                  

                                   nicht probieren:

                                   mkfs –t ext2 /hda1             ®Windows-Partition formatiert!

                                  

                                  

Überprüfen von Dateisystemen

 

fsck (file system check), (DOS: chkdsk, scandisk; Novell: vrepair,…)

 

nicht auf gemounteten Dateisystemen anwenden

 

Problem:        root-Filesystem defekt

                        ÞDateisystem kann nicht gemountet werden

                        Þanderes root-Filesystem (CD) zu Start verwenden(z.B.

Rettungssystem von CD#1 starten, booten der CD, TAB,

manual,...)

 

 

Benutzer

·        UNIX ist ein Multi-User-System; mehrere Benutzer arbeiten gleichzeitig

·        Unterscheidung von Personen (Benutzer)

·        Vergabe von Rechten

 

 

drei Klassen

user               der Benutzer; eine einzelne Person

group                        die Gruppe

other              „der Rest der Welt“

 

 

Einrichten von Benutzern

a)     mit YAST

Administration des Systems ®Benutzerverwaltung

...

 


b)     mit useradd

fügt Benutzer hinzu

 

useradd –u 500 –g users –d /home/tux –s /bin/bash –m tux

           

            -u 500:                       User ID wird vergeben (Benutzerkennung;

muß eindeutig sein. root: 0)

           

            -g users                     Gruppe

           

            -d /home/tux              Heimatverzeichnis

           

            -s /bin/bash               Befehlsinterpreter (bash ist Standard);

(welches Programm wird nach dem

Anmelden gestartet)

 

-m tux                         Benutzername (hier: tux)

 

 

Editieren der Dateien

/etc/passwd               Verzeichnis der Benutzer

/etc/group                  Verzeichnis der Gruppen

/etc/shadow               Verzeichnis der Kennwörter

 

 

Kennwort ändern/vergeben/löschen

Programm passwd  (ändert/löscht Kennwörter)

 

Beispiel:

            passwd tux                (ohne Angabe des Namens: eigenes Kennwort)

            new password

            retype password

 

 

Arbeiten mit verschiedenen Benutzern

Anmelden mit entsprechendem Benutzernamen + Kennwort

            Wer bin ich?              who am i                  ®ca10: frank

            Benutzerliste             who                           

                                               Finger

 

 

Benutzer wechseln

1.      Abmelden vom System (exit, logout, Strg + D)

2.      anderes Terminal verwenden (unter Linux auch virtuelle Terminals (Alt + F1...F6)

3.      temporäres Wechseln:

login: tux

passwd: #####

tux>                            ®angemeldet als Benutzer tux

 

su root                        wechseln zu Benutzer root

(ggf. Kennwort)

...                                alle Befehle werden als Benutzer root ausgeführt

 

                                   ®im Gegensatz zum Abmelden/erneut

anmelden: aktuelle Arbeitseinstellungen bleiben erhalten!

 

Rückkehr:

Exit, Strg + D

 

 

id        gibt Informationen zum aktuellen Benutzer (z.B. uid, gid, groups)

                        uin                  user identification number

                                               numerische Benutzerkennung

                        gid                  group identification number

                                               Gruppenkennung numerisch

                        groups          weitere Gruppenzugehörigkeit

 

Beispiel:

            Anmelden als tux

            who am I                  CA10!tux

            id                                uid=500 (tux) gid=4711 (users) …

            su root                     

            who am I                  CA10!tux

            id                                uid=0 (root) …

            exit                            

            who am I                  CA10!tux

            id                                uid=500 (tux)

 

 

Zugriffsrechte

·        wer darf was?

·        Zugriffsrechte müssen veränderbar sein, eindeutig im System erkennbar

·        jede Datei hat einen Eigentümer (owner), i.d.R. ist der Ersteller der Datei auch der Eigentümer

·        jede Datei gehört einer Gruppe an

 

ls –l /tmp

drwxrwxr-x ...         root    Gruppe                 .

 rw-rw-rw-            meier             Verwaltung              lohn.dat

 rw-r—r--               otto                Verwaltung              geld.bar

 

Zugriffsrechte            Eigentümer    Gruppe                      Name

 

drwx  rwx     rwx

Rechte des Eigentümers (owner)

Rechte der Gruppe (group)

Rechte für den „Rest der Welt“

Bedeutung der Zugriffsrechte

 

Lesen (r, read)

Datei:                         Lesen erlaubt, z.B. Anzeigen auf dem Bildschirm

                                   cat /etc/passwd

                                   cat /tmp/geld.bar

Verzeichnis:  Inhalt des Verzeichnisses kann aufgelistet werden

                                   ls /tmp

 

Schreiben (w, write)

Datei:             Datei verändern, auch löschen

Verzeichnis:  Dateien erstellen

 

Ausführen (x, execute)

Datei:             Datei kann ausgeführt werden (d.h. Programm starten)

Verzeichnis:  Wechsel in Verzeichnis möglich

                                   cd /tmp

 

            Beispiel:

                        ls –ld /root

                        drwx--x--x . ... root

 

 

Wie werden Rechte ausgewertet?

 

rw-rw-rw-        meier  users  datei1.txt

r-------- meier  users datei2.txt

r-----rw-           meier  users  datei3.txt

--------- meier  users  datei4.txt

------rwx          meier  users  datei5.txt

---rw----           meier  users  datei6.txt

 

a)     Benutzer meier, Mitglied von users

1    rw

2    r

3    r

4    -

5    -

6    -

b)     Benutzer hugo, Mitglied von users

1    rw

2    -

3    -

4    -

5    -

6    rw


c)      Benutzer erwin, Mitglied von Verwaltung

1    rw

2    -

3    rw

4    -

5    rwx

6    -

 

Þ

a)     ist Benutzer der Eigentümer der datei; so gelten die Rechte für den Eigentümer

b)     ist Benutzer Gruppenmitglied der Gruppe, die der Datei zugeordnet ist, so gelten die Rechte für die Gruppe

c)      ist Benutzer weder Eigentümer noch Gruppenmitglied, so gelten die Rechte für other

 

 

Gruppe ändern

 

chgrp (change group, verändere Gruppe)

            die Gruppenzugehörigkeit einer Datei (eines Verzeichnisses)

wird geändert

                       

                        chgrp chefs datei

                        Name der Gruppe (chefs) muß existieren

           

                        chgrp chefs text1 text2 text3 /tmp/blubber

                        mehrere Dateien werden chefs zugeordnet

 

Um die Gruppe zu ändern, muß man Mitglied der Zielgruppe sein und Eigentümer der Datei.

 

 

Eigentümer ändern

 

chown (change owner)

           

            chown hugo datei1.txt

            chown hugo datei1.txt datei2.txt

            Hugo ist neuer Eigentümer

 

nur root darf chown ausführen

a)     alter Eigentümer verliert Besitzerstatus

b)     neuer Eigentümer wird zugewiesen, mit allen Rechten und Pflichen

 

 


2001-02-27

 

UNIX

 

Benutzerrechte von Dateien

 

chgrp –r verwaltung /buero

chgrp –r hugo /daten

 

-r            rekursive Anwendung von chgrp bzw. chown

                Þalle Dateien und Unterverzeichnisse (und deren Dateien) werden

verändert

 

 

Zuteilen/Ändern von Zugriffsrechten

 

chmod (change modus)

 

chmod Klasse Operation Zugriffsrecht Objekt

 

                Objekt:   Datei, Liste von Dateien

Verzeichnis, Liste von Verzeichnissen

 

Klasse:   u             user                        Benutzerrechte verändern

                               g             group                     Gruppenrechte verändern

                               o              other                      „Rest“-Rechte verändern

                               a              all                           alle Rechte verändern

 

Operation:             +             Recht hinzufügen

-              Recht entfernen

=             Recht zuweisen (für die angegebene Klasse hinzufügen und für alle anderen entziehen)

 

Zugriffsrecht:       r              read

                                               w             write

                                               x              execute

                                               s              set user id

 

Beispiel:

                ls –l /tmp

                -rw-r--r--                datei1 hugo

                -rw------- datei2 hugo

                ----rwx---                datei3 hugo

 

hugo> chmod og+w datei1                                -rw-rw-rw-             datei1

hugo> chmod u-r datei2                                   --w------- datei2

hugo> chmod a=rw datei3                -rw-rw-rw-             datei3

hugo> chmod o-w datei3                                   -rw-rw-r--               datei3

 

Wer darf verändern? root, Eigentümer.

Beispiel:

----rw-rw- hugo users text1.txt

 

hugo ist angemeldet

 

hugo> cat text1.txt                             L

 

Was passiert? Nix, weil der Eigentümer hier keine Rechte hat.

 

Abhilfe? Hugo ist Eigentümer, also kann er Rechte verändern:

 

               chmod a=rw text1.txt

oder

               chmod u+rw text1.txt

oder

               chmod u=rw text1.txt          (nur user kann zugreifen)

 

hugo> cat text1.txt                             ü

 

 

Standardeinstellung

 

wird Datei erzeugt (z.B. vi neu oder touch neu), so werden folgende Eigenschaften vergeben:

 

Eigentümer:                          aktueller User

 

Gruppe:                 Gruppe des Users

 

Zugriffsrechte:                                    Datei                      Verzeichnis

user:                      rw-                          rwx

 

                                               group:                    r--                           r-x

 

                                               other:                     r--                           r-x

 

 

By the way:

 

                touch neu              ®?

a)       angegebene Datei existiert nicht:

neue Datei mit angegebenen Namen (Länge=0) wird erzeugt

b)       existierende Datei:

Datum der letzten Änderung wird aktualisiert

 

 


Veränderung der Standardeinstellung

 

                umask ¿               022

                Standardmaske für die Erstellung von Dateien:

                               Datei                      re-r--r--

                               Verzeichnis           rwxr-xr-x

 

                Veränderung:

                umask 222 ¿

 

                Vergewissern:

                umask ¿               222

               

                               Datei                      r--r--r--

                               Verzeichnis           r-xr-xr-x

 

                Þintern werden Zugriffsrechte durch Zahlen repräsentiert

 

                               r                              4

                               w                            2                             im Oktalsystem

                               x                              1

                               kein Recht             0

               

                rwx                         r-x                           r-x

                4+2+1                     4+1                         4+1         =             755

 

                111 = --x--x--x

 

neues Verzeichnis:

                intern rwxrwxrwx  777

                -umask                   022

                                                               755          ®rwxr-xr-x

 

neue Datei:

                intern rw-rw-rw-   666

                -umask                   022

644               ®rw-r--r--

 

zulässige Schreibweise:

               

                chmod 755 text1.dat

                               ®rwxr-xr-x text1.dat

 

umask entzieht die angegebenen Rechte bei der Erstellung einer Datei/eines Verzeichnisses (d.h. Rechte werden entfernt, herausgefiltert)

 

                umask 000             ®alle Rechte

                               umask 777             ®keine Rechte


Zugriffsrecht „s“

 

·         s (set user id)

·         jedes Programm, das ausgeführt wird, besitzt automatisch die Rechte des Benutzers

·         Ausnahme: Zugriffsrecht s ist gesetzt

®das Programm wird mit den Rechten des Eigentümers des Programmes (=Datei) gestartet

 

Beispiel:

                ls –l /usr/bin/passwd ¿     ®-rwsr-xr-x root shadow passwd

 

Setzen des s-Rechtes

                chmod +s Programm

 

Beispiel:

                hugo darf text1, text2 nur lesen

                Eigentümer von text1, text2 sei erwin

               

                hugo> vi text1      ü (read only; schreiben verboten)

               

                würde erwin Eigentümer von vi sein, und würde chmod +s vi

gesetzt haben:

 

hugo> vi text1     Þvi läuft mit erwin-Rechten

 

 

Nachinstallation von Software mit YAST

 

YAST starten (als root)

 

Einstellungen zur Installation ®Informationsquelle auswählen ®Installation von CDROM (hier ATAPI EIDE) ®/dev/hde (hier)

 

Installation festlegen/starten

 

Konfiguration ändern/erstellen

[ ]            nicht installiert

[i]            bereits installiert

 

Status des markierten Eintrages mit Leertaste ändern:

[x]           soll installiert werden

[D]          soll deinstalliert werden

[R]          nochmals installieren

 

doc         Dokumentation auswählen

 

[x] lpdmande         ®F10 ®F10 ®Installation starten


1. Legen Sie in geeigneter Weise zwei Benutzer an.

                YAST ®Administration ®Benutzerverwaltung (als root)

               

                oder:

                /etc/passwd           Benutzerliste

                /etc/group             Gruppenliste

 

                Aufbau der Datei:               man 5 passwd

                                                               man 5 group

 

/etc/passwd:

                               ...

...

...

hugo:x:501:100:Hugo Muster:/home/hugo:/bin/bash

 

Benutzername

         Kennwort (wird x entfernt, ist Kennwort nicht mehr notwendig)

                 uid (User ID; Benutzerkennung)

                        gid (Group ID; Gruppenkennung)

                        (Hauptgruppe des Benutzers, i.d.R. users)

                                    informatives Feld (hier Name des Users)

                                                                       Heimatverzeichnis

                                                                       (nach Anmelden aktuelles Verzeichnis)

                                                                                                      Programm, das nach

        Anmelden ausgeführt wird

        (i.d.R.

        Kommandointerpreter)

 

/etc/group

users:x:100:

 

buero:x:600:hugo,erwin,meier

 

Name der Gruppe

                Kennwort (Sperre)

                   gid

                               Liste der Mitglieder

 

Welchen Gruppen gehört hugo an?

                users      weil Eintrag in /etc/passwd

                buero     weil Eintrag in /etc/group

 

hugo> id               uid=501(hugo) gid=100(users) groups=100(users),600(buero)

 

 

hugo> touch test1

hugo> ls –l test1                -rw-r--r-- hugo users test1

hugo> ls –l test2                -rw-rw---- erwin buero test2

®Hugo darf lesen und schreiben (Mitglied der Gruppe buero)

 

hugo> chgrp buero test1                  ü

(hugo ist Eigentümer und gehört der Zielgruppe an)

 

hugo> chown erwin test1                 L

                (verboten, darf nur root)

 

 

2. Installieren Sie die deutschen Manual Pages

mit YAST das Paket LDPManDe installieren (siehe oben)

 

/etc/profile mit vi öffnen

 

Eintrag MANPATH suchen und den Eintrag um „/usr/share/man/de“ am Anfang der Variablen ergänzen

 

®man in deutscher Sprache

 

 

 


2001-02-28

 

UNIX

 

Zu 4. (gestrige Übung):

 

willy> cd /tmp                                   Verzeichnis  /tmp wird aufgesucht

willy> cp /usr/bin/id newid            Programm id wird ins akt. Arbeitsverzeichnis

kopiert und erhält den Namen newid

willy> cp newid rootid                   kopiert Programm newid als rootid

 

willy> su root                                   Wechsel in die Benutzerumgebung root

(Þroot-Rechte)

root> cd /tmp                                   bleibt in /tmp, da durch su keine neue

Arbeitsumgebung geschaffen wurde und

bereits vorher nach /tmp gewechselt wurde

root> chown root newid rootid  Eigentümer von newid und rootid wird root

root> chmod +s rootid                  das Recht s wird der Datei rootid zugewiesen

root> exit                                          Wechsel in vorherige Umgebung (willy)

 

willy> ls –l                                         Anzeige der Dateien in ausführlicher Form

rwsr-sr-x root xyz newid

rwxr-xr-x root xyz rootid

willy> newid                                     das Programm newid wird ausgeführt

                        uid=501(willy) gid=100(users) Gruppen=100 (users)

willy> rootid                                     das Programm rootid wird ausgeführt

                        uid=501(willy) gid=100(users) euid=0(root) Gruppen=100(users)

 

ÞProgramm läuft mit Rechten des Benutzers root (weil: s-Recht gesetzt, Eigentümer ist root)

 

 

 

Shell-Kommandointerpreter

 

Arbeitsweise in UNIX

·        Betriebssystem wartet auf Anweisungen/Eingaben des Benutzers

·        Benutzer legt Anweisungen fest

·        Betriebssystem führt Anweisungen aus

 

Anweisungen werden durch Befehle (Kommandos) erteilt

Þdie Gesamtheit der Kommandos bildet die Kommandosprache

Þder Kommandointerpreter legt sich um den Betriebssystemkern

 

ÞShell (Muschel)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


·        shell ist „normales“ Programm (z.B. /bin/bash)

Þkann durch jedes beliebige Programm ersetzt werden

[in /etc/passwd ist festgelegt, weche Shell (genau genommen welches Programm) gestartet wird]

·        Entwicklung der Shells:

 

Bourne Shell ®C-Shell ®Korn-Shell ®Bash-Shell

 

Bourne-Shell:

§         Erfinder: Steven R. Bourne

§         wurde für erste UNIX-Implementierung erstellt

§         sh (®/binsh)

 

C-Shell

§         für BSD entwickelt

§         ähnelt in vielen Teilen der Programmiersprache c

 

BASH

§         Weiterentwicklung von sh im Rahmen des GNU-Projektes

BASH = Bourne again Shell

 

 

Was bietet eine Shell?

·        Steuerkommandos

·        Schleifen, Wiederholungen, Bedingungen

·        Funktionsaufrufe

·        Verwaltung der letzten Kommandos (History)

·        Aliasnamen für längere Kommandos

·        Variablen

 


Hauptaufgabe: Kommandointerpretation

·        Einlesen der Kommandos

·        Überprüfen und Interpretieren der Kommandos

·        Umsetzen in Systemaufruf

·        Ergebnisse und Rückmeldungen anzeigen

 

Eingabeprompt, Prompt: Kommandos können eingegeben werden

$

#

erde:[/tux]>

 

 

Kommandosyntax

 

<Kommando> <Parameter>  <Parameter>...

 

Beispiel:

            echo Parameter sind nuetzlich¿

                        “Parameter sind nuetzlich“

 

            echo off  sehr flüssig     …überflüssig

                        „sehr flüssig...überflüssig“

 

Parameter werden unterteilt in Optionen und „normale“ Parameter

 

Optionen werden durch „-„ gekennzeichnet

 

Kommando legt fest, was gemacht wird

normale Parameter, womit es gemacht wird

Optionen, wie es gemacht wird

 

Beispiel:

            ls   –l   /tmp

 

            Was? Auflisten

                   Wie? In Listenform.

                         Womit? /tmp

 

 

UNIX-Prinzip

Jedes Kommando löst eine Basisaufgabe, z.B. ls zum Auflisten, cp zum Kopieren,...

Aber diese Aufgabe wird mit einer großen Vielfalt (Optionen!) erfüllt.

 

 

Variablen

·        zur wiederholten Verwendung von Zeichenfolgen

·        Variable = Speicher für beliebige Zeichenfolge

·        jede Variable hat Namen

 

Beispiel:

pwd          enthält Namen des aktuellen Verzeichnisses

 

echo $pwd        (gib den Inhalt von pwd aus)

 

®pwd ist Variable, pwd ist Kommando

 

·        Variablennamen werden i.d.R. mit großen Buchstaben geschrieben

·        Wert einer Variablen zuweisen: <Variablenname> = <Wert>

 

Beispiel:

Name = Linux

echo $Name

Linux

 

·        Wert ist eine beliebige Zeichenfolge

 

Name = Otto Meier

bash: Meier Command not found        L

echo $Name

Linux                                    (Linux war noch im Speicher)

Name = „Otto Meier“                                ü

echo $Name

Otto Meier

 

·        die von “” umgebene Zeichenkette wird als Gesamtheit betrachtet, d.h. interpretiert

 

Beispiel:

es existiere Verzeichnis „sehr wichtig“

cd sehr wichtig                              L

cd „sehr wichtig“                          ü

 

 

einige Standardvariablen

®alle Variablen: siehe man bash

 

pwd               Name des aktuellen Verzeichnisses

uid                  Benutzerkennung

home             Heimatverzeichnis

path               Suchpfad für Kommandos

ps1                 Prompt

 

ps1 = „Gib ein Kommando“

 

 

Kommandoausführung

interne Kommandos:           diese werden furch die Shell selbst zur Verfügung

                                               gestellt, z.B. echo, cd

 

externe Kommandos:          Dateien in UNIX-Dateisystem, z.B. ls, sort, cat,...

 

Zu welchem Typ gehört ein Kommando?

 

            type echo

                        echo is a shell builtin                   Þinternes Kommando

 

            type ls

                        ls is hashed (/bin/ls)                       Þexternes Kommando

 

            type type

                        type is a shell builtin

           

            type dir

                        dir is aliased to “ls –l…”              ÞAlias-Mechanismus

 

 

Suchreihenfolge (path)

·        wird durch path ermittelt

 

echo $path

 

Beispiel:        /bin:/usr/bin:/usr/local/bin:.

®mehrere Einträge durch : getrennt

 

®1. Versuch: /bin

®2. Versuch: /usr/bin

®3. Versuch: /usr/local/bin

 

hugo> unalias ls

            path=/tmp

            echo $path

            /tmp

            ls                                L

            command not found                    Þexternes Kommando; wurde

in dem in path enthaltenen

Verzeichnissen nicht gefunden

 

            /bin/ls                        ü                    ®funktioniert immer, da explizit

der Speicherort abgegeben ist

(absoluter Dateiname)

 

            cd /bin

            ls                                L                   

            command not found                   

 

           


which ls       

®Welches Programm ls wird verwendet?

Beispiel:

                        es existiere:

                        /bin/ls

                        /tmp/ls

                        path=/bin:/usr/bin:/tmp

 

                        > which ls

                        z.B. /bin/ls

 

                        keine Ausgabe:        Kommando existiert nicht im Suchpfad

oder Aliasmechanismus ist aktiv

 

 

Unterstützung der Kommandoeingabe

·        automatische Ergänzung der Kommandoeingabe durch Shell

 

da <Tab> ¿

date

 

ba <Tab> ¿

„Piep“                         ®nicht eindeutig auflösbar

<Tab>                        ®Liste der Möglichkeiten

 

basename, bash, bashbug

®stückweise ergänzen der Eingabe durch Eingabe von Zeichen bzw. Drücken der <Tab>-Taste. Sobald Eindeutigkeit vorliegt, wird die Eingabe komplett ergänzt

 

·        bei Kommandos wird path ausgewertet

·        auch bei Parametern

 

Beispiel: vi /h <Tab> s <Tab> l <Tab> r <Tab>

            ®vi /home/seminar/leser/readme

 

 

 

Wiederholung der Kommandoeingabe

            ­, ¯                 blättern in bereits ausgeführten Befehlen (history)

¬, ®             Veränderungen vornehmen

 

Kommandos zusammenfassen

a)     Kommandogruppe bilden

date; echo „Liste der Dateien“; ls ¿

b)     mehrere Kommandos als ein Kommando ausführen

(date; echo „Liste der Dateien“; ls) ¿

®wird als ein Kommando ausgeführt; notwendig z.B. bei Ausgabeumlenkung

Shell Skripte

·        Folge von Befehlen werden in eine Datei abgelegt

·        DOS: Batch File (Stapeldatei)

 

®wiederkehrende Vorgänge zusammenfassen

 

Beispiel:

>vi testskript

echo “Ich bin ein Shell Skript”

date ls                                                          Inhalt der Datei testskript

echo „So, jetzt bin ich fertig.“

 

>./testskript                                                            L

            permission denied (Zugriff verboten)

>chmod +x skript

>./testskript                                                            ü

            Ich bin ein Shell Skript

            Mit Feb 28 12:35:21 CET 2001

            So, jetzt bin ich fertig

 

 

file      versucht herauszufinden, welcher Art die angegebene Datei ist

 

>file skript

            Ascii-Text

 

>file /etc/passwd

            Ascii-Text

 

>file /bin/ls

            executable ... / 386

 

>file /etc/inetd.conf

            Englisch-Text

           

>file /dev/fd0

            block special

 

Þfile liefert Informationen über den Inhalt der Datei

 

 


Alias-Mechanismus

·        häufig benutzte Kommandos oder Kommandos mit Optionen werden durch andere Zeichenfolgen dargestellt

 

Beispiel

            Wechsel in ein übergeordnetes Verzeichnis

                        cd ..

                        .. als Abkürzung wäre schön

                        alias ..=“cd ..“

                        .. ®führt cd .. aus

 

·        Festlegung eines Alias

 

alias <Name> = <Wert des Alias>

®Zuweisung ähnlich einer Variablen

 

·        bei Aufruf des Alias ersetzt die Shell den Alias durch die vorher angegebene Zeichenfolge

·        Alias anzeigen:

 

alias                           Liste aller Aliase wird angezeigt

 

alias ..                        Alias .. wird angezeigt, hier: cd ..

 

·        Alias entfernen

 

unalias ..                   Alias .. wird entfernt

 

unalias –a                entfert alle Alias

 

 

Metazeichen

·        mehrere ähnliche Dateien ansprechen, z.B.:

alle Dateinamen, die mit

§         „kapitel“ anfangen

§         „.doc“ enden

§         die Zeichenfolge „beispiel“ enthalten

 

Voraussetzung für Beispiele:

            Vorwort, index, kapitel, kapitel25, korrektur5, vorwort, brief,

inhalt, kapitel2, kapitel3, tabelle

 

[erstellen; z.B. mit touch]

 

Wird in einem Kommando ein Muster (regular expression) als Parameter übergeben, so überprüft die Shell jede Datei im aktuellen (bzw. abgegebenen) Verzeichnis, ob der entsprechende Dateiname mit dem Muster übereinstimmt. Alle zutreffenden Dateinamen werden dem Kommando als Parameter übergeben.

®Muster werden durch Metacharacter (Zeichen mit besonderer Bedeutung) gebildet

ÞShell ersetzt Muster durch Dateinamen

 

*          ersetzt beliebige Zeichenfolge

           

            kapitel*

            ®kapitel kapitel2 kapitel25 kapitel3

 

Beispiel besteht aus zwei Teilen:

            Teil, der vorhanden sein muß:        kapitel

            Teile, die unterschiedlich sind:       *

 

*.txt                alle Dateien, die mit .txt enden

*                      sämtliche Dateien

*n*                  alle Dateien, die den Buchstaben n enthalten

*.*                    alle Dateien, die . enthalten

 

cp * /floppy              kopiert alle im aktuellen Verzeichnis vorhandenen

            Dateien in das Verzeichnis /floppy

cp /etc/* /tmp           kopiert alle Dateien in /etc nach /tmp

echo kapitel*           kapitel kapitel2 kapitel25 kapitel3

echo Abbildung*    Abbildung*

 

®Trifft kein Dateiname im aktuellen (bzw. angegebenen) Verzeichnis auf das Muster zu, so wird das Muster selbst als Argument übergeben.

 

DOS:

            copy A:\*.* C:\         kopiert alle Dateien aus dem

Hauptverzeichnis von A: (Floppy) in das

Hauptverzeichnis von C: (Festplatte)

 

UNIX:

            [fd0 sein an /floppy gemountet; C: sei/]

           

            cp /dev/fd0/*            /                      L

            cp /floppy/* /                        ü

 

?         ersetzt genau ein beliebiges Zeichen

           

            ls kapitel?                            kapitel2 kapitel3

 

ls ?orwort                            Vorwort vorwort

 

 


          (einfaches Anführungszeichen)

            ®Maskierung von anderen Metazeichen

 

            echo Linux ist in*              Linux ist in inhalt index

 

ÞMetazeichen werden nicht nur bei Dateinamen, sondern bei jedem Parameter ersetztz

 

echo ’Linux ist in*’                        Linux ist in*

 

echo „Linux“                      Linux

 

echo ’“Linux“’                    „Linux“

 

echo $pwd                          /home/tux (Beispiel)

 

echo ’$pwd’                                    $pwd

 

 

      führt wie ‘ eine Maskierung durch, ist aber nicht so streng

 

echo ’$pwd’                        $pwd

 

echo “$pwd“          /home/tux

 

z.B. werden Variablen ausgewertet

Standardanwendung: um Leerzeichen zwischen Worten zu maskieren

 

            Name=“Mein aktuelles Verzeichnis ist $pwd“

            echo $Name

                        Mein aktuelles Verzeichnis ist /home/tux

 

            Name=’Mein aktuelles Verzeichnis ist $pwd’

            echo $Name

                        Mein aktuelles Verzeichnis ist $pwd

 

 

            maskiert auch die Eingabetaste ¿

 

echo „Dies ist ein ¿

> über zwei Zeilen ¿

> auch über drei“ ¿

 

Dies ist ein

über zwei Zeilen

auch über drei

 

 


\          “ und ’ maskieren ganze Zeichenfolgen

            \ maskiert ein einzelnes Zeichen

 

echo ’Stern* oder nicht * Stern’                       

Stern* oder nicht * Stern

 

echo Stern\* oder nicht * Stern            

Stern* oder nicht kapitel kapitel2 index (...) stern

 

echo \’bla\’

            ’bla’

 

echo \“blubber

            “blubber

 

echo ’\bla’\ ¿

>blubb’¿

            \bla

            blubb

 

echo “bla \”bla\””

            bla “bla”

 

echo ‘bla \”’

            bla \”

 

echo \’

           

 

echo \”

           

 

echo \*

            *

 

echo \\

            \

 

echo \?

            =?

 

echo \¿

            ¿         (wird als Zeilenumbruch interpretiert, nicht als

Kommandozeilenende; ermöglicht Zeilenumbrüche

in Kommandozeilen)

 

 


`       alternativ: $(              )

die meisten Kommandos erzeugen als Ergebnis einen Text (Ausgabe)

Ausgabe soll oft weiterverwendet werden

 

            date +%d.%m.%y   identisch: $(date +%d.%m.%y)

                       20.02.01

 

            Datum=`date +%d.%m.%y`

            echo $Datum

                       28.02.01

            touch $Datum

            ls $Datum

 

            echo `date`              - nimm die eingeschlossene Zeichenfolge

(hier: date) führe diese als Kommando aus,

ersetze die ursprüngliche Zeichenfolge (hier:

date) durch die Ausgabe (Ergebnis) der

Ausführung des Programmes

 

            echo

 

 


2001-03-01

 

UNIX

 

Versteckte Dateien unter UNIX

 

Dateien, die mit . beginnen, werden beim einfachen ls (also ohne Optionen) nicht angezeigt (sind "versteckt"). Die Option -a bei ls zeigt auch Dateien an, die mit einem . beginnen (a=all). Häufig verendet für benutzerspezifische Konfigurationsdateien (.bashrc, .exrc, .xdefaults, ...) im Home Directory eines Benutzers - aus Gründen der Übersichtlichkeit.

 

            > touch .meins

            >cp .meins /tmp/meins                 ü

 

 

Shell (Fortsetzung)

 

[ ]

·        ersetzt einen Bereich

 

> ls kapitel[1-4]                               sucht zwischen kapitel1 und kapitel4

            kapitel2 kapitel3                 (mehr existieren nicht)

 

[q,x,z]                                                           ersetzt q, x oder z

 

>ls kapitel[2,4,A-Z]                         Kombination aus beidem

 

>ls kapitel[0-9][0-9]                                   sucht nach etwas zweistelligem

            kapitel25

 

{ }

Beispiel:

            die Dateien gehtnicht1, gehtnicht2, gehtnicht3 und gehtnicht4 sollen

erzeugt werden

 

> touch gehtnicht[1-4]

> ls g*

            gehtnicht[1-4]                     Þ L

 

> touch gehtdoch{1,2,3,4}

> ls g*

            gehtdoch1 gehtdoch2 ... Þ ü

 

·        es kann kein Bereich angegeben werden

·        jede Möglichkeit muß durch Komma getrennt aufgezählt werden

·        die Ersetzung des Musters erfolgt ohne Beachtung der vorhandenen Dateien

·        ganze Zeichenfolgen sind zulässig

 

>echo A{und,oder,nicht}B

            AundB AoderB AnichtB

 

·        Schachtelung ist zulässig

 

es sollen 100 neue Heimatverzeichnisse angelegt werden:

 

> mkdir /home/ueb{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}

>ls /home

            ueb00 ueb01 ueb02 ueb03 ...

 

 

 

Eingabe, Ausgabe, Umlenkung

 

·        jedes Kommando liest bzw. schreibt auf drei Dateien

 

Standardeingabe                 standard input           stdin               Tastatur

Standardausgabe                standard output         stdout             Terminal

(=Bildschirm)

Standardfehlermeldung       standard error           stderr              Terminal

 

 

 

 

 

 

 

 

 

 

 

 

 

 


            Beispiel: sort (sortieren; sortiert Daten)

                        > sort ¿

                        Eins                                       sort liest von stdin (Tastatur) bis Ende-Kenn-

                        Zwei                                       zeichen (EOF, Strg + D) kommt

                        Drei

                        Vier

                        Sieben

                        <Strg> + D

 

                        „sortiert Eingabe“

                        Drei                                        gibt Ergebnis der Verarbeitung auf stdout

                        Eins                                       aus (Bildschirm)

                        Sieben                                  

                        Vier

                        Zwei

Umlenkung (Redirection)

 

·        jede Ein- und Ausgabemöglichkeit eines Kommandos kann umgelenkt werden

 

Eingabe (stdin)

Ausgabe (stdout)

Fehlermeldung (stderr)

 

 

Eingabeumlenkung

           

            kommando < eingabedatei

 

            z.B.

            sort < /etc/passwd

 

            es existiere Datei zahlen mit folgendem Inhalt:

                        Eins

                        Zwei

                        Drei

 

            > sort < zahlen                   > cat < zahlen

            >          Drei                                        Eins

                        Eins                                       Zwei

                        Zwei                                       Drei

                        (auf Bildschirm)                    (auf Bildschirm)

 

            > grep „ei“ < zahlen          grep sucht nach einer angegebenen

Zeichenfolge

            Zwei

            Drei

 

 

Ausgabeumlenkung

 

kommando > ausgabedatei

 

> ls /bin > inhalt      schreibt Verzeichnisinhalt von /bin in Datei inhalt

> vi inhalt

 

Es wird die angegebene Ausgabedatei erstellt und dann die Ausgabe des entsprechenden Kommandos hineingeschrieben ( und nicht mehr auf stdout).

 


> cp zahlen zahlen.sav

> cat zahlen

            Eins

            Zwei

            Drei

> cat zahlen > zahlen

> cat zahlen                        leer! L

 

§         existiert die Datei bereits, so wird diese vor der Umlenkung gelöscht

 

Ausgabeumlenkung mit Anhängen:

 

>>

die Ausgabe wird bei bestehender Datei an diese angehängt; sonst wie >

 

echo „Jetzt kommt eine Liste“ > langeDatei

cat /etc/group >> langeDatei

vi langeDatei

 

> vi lange Datei

           Jetzt...

           root...

           users...

touch alt

ls alt xyz

           ls: xyz: no such file or directory

           alt

ls alt xyz > ausgabe

           ls: xyz: no such file or directory

cat ausgabe

           alt

 

Umlenkung der Fehlermeldung

 

kommando 2> datei

 

2> lenkt stderr in Datei um

 

> ls alt xyz 2> fehler

            alt                                           die Fehlermeldung (=stderr)

                                                           steht in Datei fehler

> cat fehler

            ls: xyz: no such file or directory

 

> ls alt xyz 2> fehler > ausgabe

>          (nix)                                        wie oben, aber die „richtige“ Ausgabe

(stdout) steht in Datei „ausgabe“

 

2>> Anhängen der Ausgabe auf stderr an angegebene Datei

 

 

Kombination

                        > sort < /etc/passwd > /tmp/kennwort-sortiert

                       

Beispiel

> date; ls > ausgabe

                       Do, 01.März...

> cat ausgabe

                       datei....

 

Þbei Kommandogruppe (;) werden die Kommandos Stück für Stück ausgeführt

                       Þjedes Kommando wird einzeln ausgeführt

 

> (date;ls) > ausgabe

> cat ausgabe

                       Do, 1.März

                       Datei....

 

Þdie in () gruppierten Kommandos werden als ein Kommando betrachtet

 

 

Filter, Pipeline

·        in vielen Fällen erfolgt die Bearbeitung von Daten in mehreren Schritten, wobei jeder Schritt die Ergebnisse des vorangegangenen Schrittes weiterverarbeitet

 

Eingabe ® Kommando1 ®Kommando2 ® Kommando3

 

die Daten „fließen“ von Kommando zu Kommando

®Pipeline „pipe“ (Symbol: |)

 

ls /bin | more

 

Befehl1 | Befehl2

 

Die Ausgabe von Befehl1 (stdout) wird als Eingabe (stdin) von Befehl2 verwendet.

 

     bisher:            ls /bin > datei1

                            more < datei1

 

     > cat /etc/passwd | grep „ei“ | sort | more

    

     > cat < /etc/passwd | grep „ei“ | sort | more > ausgabe

 

     > ls /bin/* | sort > Befehlsliste

 

Sind folgende Kommandos identisch? Was passiert?

 

a)     ls /bin | more          Ausgabe von ls wird als Eingabe des Kommandos

more verwendet

b)     ls /bin > more         Ausgabe von ls wird in Datei „more“ geschrieben

 

 

Anwendungen im Hintergrund

·        wird ein Kommando eingegeben, so kann das nächste Kommando erst nach Abarbeitung des eingegebenen Kommandos eingegeben werden

 

Beispiel:

     > sleep 50 ¿             sleep: Programm wartet angegebene Zeit und

terminiert dann

     50 Sekunden vergehen...

     >

 

> sort < grossedatei > grossedateisortiert &

ÞAusführung des Kommandos im Hintergrund

®Eingabeaufforderung erscheint sofort

 

> sleep 50 &

>                                 (kann sofort weitergehen)

 

> (sleep 50; echo „ausgeschlafen“) &

> date

> ls -l

...

ausgeschlafen

 

beliebig viele Kommandos können im Hintergrund abgearbeitet werden

 

Kommandos bleiben mit stdin/stdout/stderr verbunden

ÞAusgaben erfolgen weiterhin auf Bildschirm

 

> (sleep 20; ls –l /) &

> (sleep 30; ls –l /bin) &

> vi /etc/passwd                             Meldungen stören die vi-Sitzung

 

®Eingaben?

Erwartet Hintergrundanwendung Eingaben, so wird diese gestoppt

 

> sort &

> jobs                                               Anzeigen aller Hintergrundanwendungen

[1]       sort    stopped

> fg %1                                 fg = foreground; holt %1 in den Vordergrund

 

®meistens werden Anwendungen im Hintergrund mit Ein- bzw. Ausgabeumlenkung angewendet.

laufende Anwendung (=Vordergrund) kann gestoppt (nicht gleichbedeutend mit abgebrochen) werden

 

            <Strg> + Z

 

            > vi /etc/passwd

            Strg + Z

            ...

            > jobs

                        [1]       vi         stopped

                        [2]       sort    running

            > fg %1

 

            > bg %1        background (im Hintergrund weiterarbeiten lassen)

 

 


2001-03-02

 

UNIX

 

Fehlermeldungen nerven:

 

            „schwarzes Loch“:

                        /dev/null

 

                        > sort < grossedatei > /dev/null             ÞAusgabe ins Nichts geleitet

 

 

tee

·        liest von stdin

·        schreibt auf stdout und in eine Datei

 

> cat < /etc/passwd | grep „ei“ | tee zwischenergebnis | sort | more

 

 

cmp

·        byteweiser Vergleich von Dateien

·        i.d.R. für Binärdateien

 

für Textdateien: diff

 

 

cut

·        schneidet Teile aus einer Datei bzw. stdout heraus (spaltenweise Þschneidet bestimmte Teile aus allen Zeilen einer Datei Þeine oder mehrere Spalten werden herausgeschnitten)

 

> cut –d: -f1,5 < /etc/passwd | more           schneidet Spalten 1 und 5 aus

/etc/passwd und zeigt sie in more an

 

 

...aus der Praxis

Ein Benutzer behauptet, daß er keine Kommandos mehr ausführen kann. Woran kann dies liegen, d.h. welche Überprüfung nehmen Sie vor? Wie können Sie Abhilfe schaffen?

 

hugo> ls

            bash: ls: command not found

hugo> echo $PATH

            PATH=meins                                  ®aha! J

hugo> PATH= /usr/bin: ....

 

 

Ausführen eine Shell-Skriptes aus dem aktuellen Verzeichnis

. muß im Suchpfad enthalten sein

wenn nicht: PATH=$PATH:.

 

Benutzerumgebung (Environment)

·        Variablen, Alias-Liste, best. Programme sollen laufen...

·        alle Einstellungen werden durch Befehle, die auch in Dateien enthalten sein können (Shell-Skripte) durchgeführt

·        nach dem Anmelden bzw. Starten einer Shell werden bestimmte Shell-Skripte automaitsch gestartet (Login-Skripte, Profile)

 

 

Drei Arten

1.      Systemweite Login-Skripte (für alle User gleich)

2.      individuelle Skripte, die nach dem Anmelden ausgeführt werden

3.      individuelle Skripte, die für jede neue Shell gestartet werden

 

Zu 1.:

/etc/profile

 

Zu 2.:

~/.bash-profile

wenn nicht vorhanden, dann: ~/.bash-login

wenn nicht vorhanden, dann: ~/.profile

 

Beim Login wird 1. ausgeführt und dann 2.

Beim Logout: Ausführen der Datei ~/.bash-logout

 

Zu 3.:

Datei ~/.bashrc

 

> bash ¿

> bash skript ¿

 

 

Kontrollstrukturen

·        Shell besitzt eine eigene Programmiersprache

o       Schleifen (Wiederholung)

o       Bedingungen

o       Funktionsaufrufe

o       Variable

 

Schleifen

·        gleiche Aufgaben mit unterschiedlichen Daten durchführen

·        um eine Aufgabe mehrmals zu wiederholen

·        um Aufgaben zu wiederholen, bis ein bestimmter Fall eingetreten ist

 


for

·        führt für jeden angegebenen Wert die angegebenen Anweisungen durch

 

for <Variablenname> in <Werte>

do

<Kommandos>

done

 

 

Beispiel

 

for TIERE in Hirsch Schwein Rind Affe

do

echo $TIERE

done

 

 

Alle Dateien im aktuellen Verzeichnis auf “xx” untersuchen:

 

(for DATEIEN in *

do

            grep „xx“ < $DATEI

done) | more

 

 

while-Schleife

Bei der while-Schleife werden die angegebenen Anweisungen ausgeführt, bis die Bedingung nicht mehr erfüllt ist

           

            while <Bedingung>

            do

                        <Kommando>

            done

 

 

            Beispiel

                        while test `date +%s` -lt 50

                        do

                                   echo “Just wait and see…`date +%s`”

                        done

 

 

until-Schleife

die Anweisungen der Schleife werden solange ausgeführt, bis die Bedingung erfüllt ist

 

            until <Bedingung>

            do

                        <Kommando>

            done

Beispiel

            until test $(date+%A)==“Monday“                   ==: ein Vergleich

            do

                        echo “Wochenende und Sonnenschein…”

            done

 

 

Bedingungen

 

if ... then ... else

 

Beispiel

Wenn die Datei ein Verzeichnis ist... dann... ansonsten

 

if test –d /tmp

then

            echo Verzeichnis

else

            echo Datei

fi

 

 

for DATEI in ~/*

do

            if test –d $DATEI

            then

                        echo $DATEI ist Verzeichnis

            else

                        echo $DATEI ist Datei

            fi

done

 

 


2001-03-05

 

UNIX

 

Vergleichsoperationen

 

            Vergleich                 Operator                   Beispiel                               

            gleich                         ==                               if $NAME == snoopy then...

            ungleich                     !=                                if “$PWD” != “/bin” then…

                                               <>                               if “$PWD” <> $HOME then…

            größer                                    >                                 if $anzahl > 3 then…

            kleiner                                    <                                 if $anzahl < 4711 then...

            größer gleich             >=                              

            kleiner gleich             <=

 

 

Kommando test

·        stellt eine Vielzahl von Vergleichen bereit (man test)

 

Beispiel:

test –f /home                       test “Linux” = “UNIX”

echo $?                                echo$?

1                                             1

 

·        test wertet eine Bedingung aus und gibt einen Rückgabewert

 

ja         (0)                   die abgefragte Bedingung trifft zu

nein     (1)                   die angefragte Bedingung trifft nicht zu

 

·        der Rückgabewert wird in $? abgelegt

·        einige Möglichkeiten

o       test –f <Dateiname>           ja, wenn der angegebene Dateiname eine

normale Datei ist

o       test –x <Dateiname>          ja, wenn Datei ausführbar

o       test –e <Dateiname>          ja, wenn Datei existiert

o       test <text1> = <text2>          ja, wenn beide Texte gleich sind

o       test <zahl1 –gt <zahl2>       ja, wenn zahl1 > zahl2 ist (gt=greater then)

o       test <zahl1 –lt <zahl2>        ja, wenn zahl1 < zahl2 ist (lt=less then)

o       ...

 

Beispiel:

for DATEI in ~/*

do

            if test –x $DATEI

            then

                        echo $DATEI ist ausführbar

            fi

done

 

 

Case-Anweisung

 

·        in Abhängigkeit eines Wertes wird eine bestimmte Aktion durchgeführt

 

case Wort in

            Muster) Kommandos;;

            Muster) Kommandos;;

esac

 

Beispiel:

case $(date +%A) in

                                   Monday) echo “Eine schöne neue Woche beginnt“;;

                                   Wednesday) echo „die Hälfte ist geschafft“;;

                                   Friday) echo „baldWochenende“;;

                                   *) echo „unbekannter Tag“;;

                        esac

 

 

 

Wiederholung/Übung

 

1.      Schreiben Sie ein shell script, das ausgehend von Ihrer home directory folgende Aufgaben erfüllen soll:

·        Ausgabe des vollständigen Pfadnamens Ihrer home directory

·        man gehe sämtliche Einträge der home directory wir folgt durch:

o       ist ein Eintrag ein plain file, dann ist sein Name und seine Größe in einer Zeile auszugeben

o       handelt es sich bei einem Eintrag um eine directory, dann ist deren Name und ein vollständiges (long) listing auszugeben. („.“ und „..“-Einträge sind ebenfalls zu berücksichtigen)

·           zum Testen des Shell-Programms sind natürlich entsprechende plain files und directories zu kreieren (per Hand oder durch ein anderes shell script).

 


Ameissche Version:

 

cd

echo „Verzeichnis `pwd` enthaelt folgende Dateien:“

echo „“

for DATEI in * :*

do

            if test –f $DATEI

            then

                        echo `/bin/ls –sa $DATEI`

            else

                        echo „Verzeichnis $DATEI enthaelt folgende Dateien:“

                        /bin/ls –la $DATEI

                        echo „“

            fi

done

 

 

#und noch eine Moeglichkeit:

echo „Zweiter Versuch“

cd

echo „Verzeichnis `pwd` enthaelt folgende Dateien:“

echo „“

for DATEI in `/bin/ls –a`

do

            if test –f $DATEI

            then

                        echo `/bin/ls –sa $DATEI`

            else

                        echo „Verzeichnis $DATEI enthaelt folgende Dateien:“

                        /bin/ls –la $DATEI

                        echo „“

            fi

done

 

 

2.      Schreiben Sie ein Shellskript, das zu jedem in „/bin“ und „/usr/bin“ vorhandenem Kommando eine kurze Beschreibung (Hinweis: „apropos“) liefert. Die Ausgabe soll in einer Datei gesammelt werden. Die Datei soll aphabethisch sortiert sein. Desweiteren sollen evtl. doppelte Einträge entfernt werden (verwende hierzu bei Bedarf „uniq“). Einträge mit dem Hinweis „nothing appropriate“ ode „nichts passendes“ sollen entfernt werden.

 

 

Ameissche Version:

 

(for FILE in /bin/* /usr/bin*

do

            CMD=$(basename $FILE)

            apropos --e “$CMD”

done) | sort | uniq | grep –v “passend” | more

 

oder

 

echo “Zweiter Versuch”

(cd /bin

for FILE in *

do

            apropos --e “$FILE”

done

cd /usr/bin

for FILE in *

do

            apropos --e “$FILE”

done) | sort | uniq |grep –v “passend” | more

 

 

3.      Erstellen Sie ein Shellskript, das folgendes leistet: Das gesamte Dateisytem soll nach Dateien durchsucht werden, die dem Benutzer „otto“ (oder ein auf Ihrem System bekanntem Benutzer) gehören. Zu jeder gefundenen Datei ist die Größe auszugeben. Alle Ausgaben sollen in einer Datei namens „/tmp/otto.lst“ gesammelt werden. Hinweis: Verwenden Sie als Basis das Programm „find“

 

 

 

Ameissche Version:

 

find / -user ameis –exec ls –s \{\} \; > liste

 

-exec              folgender Befehl wird ausgeführt

 

find / -user otto –print > /tmp/find.ergebnis

for DATEI in `cat /tmp/find.ergebnis`

do

            ls –s $DATEI

done

 

 

find / -user hacker –exec rm \{\} \;

 

löscht alle Dateien im File System, die dem “bösen” Benutzer hacker gehören

 

 

4.      Warum kommt es bei der Eingabe des Kommandos „mkdir /tmp/x/y/z“ zu der Fehlermeldung „cannot make directory...no such file or directory“? Wie kann man Abhilfe schaffen?

 

mkdir –p /tmp/x/y/z

 

-p: bei Bedarf alle notwendigen Unterverzeichnisse anlegen

(unter X-Windows: mkdirhier /tmp/x/yz)

 

5.      Welche Bedeutung haben die Dateien „/etc/profile“ und „~/.bash_profile“? Welche Definitionen werden üblicherweise vorgenommen? Welche Befehle sind in diesen Dateien zulässig?

 

/etc/profile               

~/.bash_profile      

 

 

Reihenfolge: /etc/profile (das allgemeine), dann ~/.bash_profile (das private)

Festlegung bestimmter Einstellungen

Alle Befehle, die in der Kommandozeile möglich sind, sind auch hier zulässig.

 

 

noch ein paar Kommandos

 

clear              löscht den Bildschirm

 

setterm         erweiterte Terminaleinstellungen unter Linux

                        ®Farbeinstellungen

                        ®Bildschirmschoner

                        ®Screendump

                        ®..

                       

                        setterm –foreground white –background blue

                        setterm –default

                        setterm –dump       (Datei screen.dump wird angelegt

(Screenshot im ASCII-Code). Wenn anderer

Dateiname gewünscht: setterm –dump –file

inhalt)

 


head              Anfang einer Datei anzeigen

                        head –n <Anzahl> Datei

                        head –n 2 /etc/passwd

                        zeigt die ersten beiden Zeilen der Datei /etc/passwd an

                        ohne Angabe: die ersten 10 Zeilen

 

tail                  Ende einer Datei zeigen

                        tail –n <Anzahl> Datei

                        tail –n 10 /var/log/messages

                        zeigt die letzten 10 Zeilen der Datei /var/log/messages an

(Systemmeldungen)

tail –f /var/log/messages

-f wartet auf neue Einträge und zeigt diese dann an.

 

Terminal1:

> tail –f /var/log/messages

 

Terminal2 :

> login: falscher Benutzer

 

ÞMeldung auf Konsole

 

 

Basename

 

·        liefert den Dateinamen (ohne Pfadangabe)

 

basename /bin/ls ¿

            ls

 

 

Dirname

 

·        liefert den Pfad zu Dateiname

 

dirname /bin/ls ¿

            /bin

 

dirname /hans/hugo/meier/blubb ¿

            /hans/hugo/meier

 

 


2001-03-06

 

UNIX

 

df                    disk free         zeigt den freien Speicherplatz aller gemounteten

Dateisysteme an

 

du                   disk usage     zeigt benutzten Speicherplatz an

                                               du ~/otto

                                               du /

                                               du –s (Gesamtsumme anzeigen)

 

 

 

strings                                  stings <datei>

                                               sucht nach Zeichenketten in der angegebenen (binären)

                                               Datei (alle darstellbaren Zeichen werden herausgesucht

                                               ®Erkennung von Copyright, Hilfe/Programminterna, etc.)

                                               nicht cat /bin/ls ®führt zu Darstellungsproblemen

 

wc                  word count     zählt Wörter

                                               zählt Zeichen, Worte, Zeichen

                                               wc /etc/passwd

                                               wc –l /etc/passwd  Zeilenanzahl

                                               wc –w /etc/passwd           Wortanzahl

                                               wc  -c /etc/passwd Zeichenanzahl

 

tar                                          archiviert Verzeichnisse mit ihrem Inhalt in eine Datei bzw.

stdout

®Archive und Backups

tar cvf /tmp/sicherung.tar ~/

cvf:      c          neues Archiv anlegen (create)

            v          verbose (geschwätzig)

            f           Zieldatei wird angegeben (sonst stdout)

ÞEine neue Datei wird angegeben (/tmp/sicherung.tar), in

der alle Ordner/Verzeichnisse aus dem angegebenen

Ordner (hier: ~/) sich befinden.

tar c ~/ erzeugt neues Archiv, wird auf stdout geschrieben;

nur sinnvoll mit Ausgabeumlenkung

tar –tf /tmp/sicherung.tar zeigt den Inhalt des

(vorhandenen) Archivs

tar –x –f /tmp/sicherung.tar entpackt das Archiv

„/tmp/sicherung.tar“ ind das aktuelle Verzeichnis ( das

gesamte Archiv wird bearbeitet)

tar –x –f /tmp/sicherung.tar home/otto

®nur die angegebenen Dateien werden ausgepackt

 

 

 

 

X-Windows (Einführung)

·        X Window System Quasi-Standard für graphische Oberfläche unter UNIX

·        networkbasiertes System

 

 

Ellipse: Erde
Ellipse: Sonne
 

 

 


                                                           X11-Protokoll

X-Server

 

X-Anwendung

 
 

 

 

 

 


·        Anzeige und Anwendung sind getrennt Þkönnen auf unterschiedlichen Maschinen laufen (müssen mit Netzwerk miteinander verbunden sind)

·        X11 Gemeinschaftsproduktion von DEC (Digital Equipment Coorporation) und dem Projekt Athena am MIT

·        Erste Version X11R1 ~1987

·        heute: xfree86 4.0 (frei verfügbare X11-Implementierung für Intel-basierte Systeme)

 

 

Aufbau von X Windows

·        funktionale Schichten sind getrennt

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


X Server

·        verwaltet die „Grafik-Hardware“

o       Grafikkarte/Bildschirm

o       Tastatur

o       Maus

·        Zeichnen von Punkten, Linien, Rechtecken, Texten, etc.

·        kommuniziert mit X Clienten (Anwendungen) gemäß dem X11-Protokoll

Þnetzwerkweiter Abstraktionslayer eines grafischen Ausgabegerätes (+natürlich Eingabe) wird zu Verfügung gestellt

ÞDienste des X Servers sind über ds Netzwerk erreichbar und können in Anspruch genommen werden

 

 

X Client

·        eigentliche Anwendung; führen „sinnvolle“ Tätigkeiten durch; z.B. Schreibprogramm, Spiele, etc.

Þerzeugen keine direkten Ausgaben (Þsprechen nicht die Grafik-Hardware an); kommunizieren immer über X11-Protokoll mit beliebigem X Server, der die Ausgabe übernimmt (z.B. X Server auf erde, male bitte ein blaues Rechteck mit 700 x 800 Pixeln auf den Bildschirm und informiere mich, falls jemand in mein Reckeck klickt)

 

 

Window-Manager

·        Verwalten der Fenster der Anwendungen (welches ist im Vordergrund, welches im Hintergrund); wer bekommt die Eingaben, etc.)

·        Aussehen der Fenster:

o       Breite, Farbe, 3D-Effekt des Rahmens

o       Bedienelemente zum Verschieben oder Vergrößern des Fensters (Fensterdekoration), Titelzeile, Schriftarten

·        Übergabe von Fenstern und Raising-Verhalten (z.B. Auto Raise = automatisches Hervortreten in den Vordergrund)

·        Popup-Menüs

o       Aussehen der Menüs (Farbe, Schriftart)

o       Verhalten der Menüs

·        Bildschirmhintergrund

·        Verwalten von Icons

·        ...

·        Konfiguration: über Konfigurationsdateien (Befehle und Parameter)

·        verschiedene Windowmanager sind verfügbar:

o       fvwm             Linux-Windowmanager

o       fvwm95        Windows95 nachempfunden

o       Afterstep      verhält sich wie grafische Oberfläche NeXTSTEP

o       ...

®komplexe Windowmanager: Desktop Environment

            =Windowmanger + Anwendungen, die über einheitliches Aussehen und

            Bedienung verfügen + Desktop Objekte (Papierkorb, Startmenü, Task-

Leiste,...)

            z.B. KDE2, GNOME,...

            (relativ hoher Ressourcenbedarf; KDE ab 64MB RAM, Pentium, etc.)

 

Da Windowmanager und X Client und X Server entkoppelt sind, können mehrere Window-Manager (parallel) installiert werden und bei Bedarf gestartet werden: z.B.

 

            startx kde2              oder

            startx fvwm             oder

            startx fvwm95

XFree86 Version 4.0

·        nur noch ein kleines Programmgerüst, alles weitere wird dynamisch dazugeladen (Module) Þkein extra X Server pro Grafikkarte mehr

·        einfache Konfiguration mit sax2 (SuSE Advanced X Windows Configuration Tool) (unter SuSE Linux)

·        durch Modulkonzept einfache Integration ausgefallener, neuer Hardware (sofern Treiber vom Hersteller zur Verfügung gestellt wird)

·        im Vergleich zu XFree86 3.x: schnellere Reaktion der Maus, schnellere Ausführung aller Grafikoperationen (XAA – XFree86 Acceleration Architecture)

·        Konfigurationsdatei: /etc/X11/XF86Config – aber: Konfigurationsdatei ist nicht kompatibel mit XFree86 3.x

·        verbessertes Fehlerlogging:

/var/log/XFree86.0.0.log

®ausführlicher, übersichtlicher

·        Problem: nicht alle Grafikkartentreiber von Version 3.x konnten übernommen werden, insbesondere fehlen:

S3-Karten

Mach8, 32 und 8514 (alt, kaum noch in Verwendung)

Stand: SuSE Linux 7.0

 

 

Konfiguration mit sax2

Voraussetzung: Programmpaket sax2 und alle abhängigen Pakete sind installiert (®YAST)

 

·        sax2: läuft grafisch (Maus, etc.)

·        i.d.R. automatische Erkennung und Konfiguration der Komponenten

·        dennoch sollten bei Erstinstallation Ausstattungsmerkmale des Rechners bekannt sein::

o       Monitor (Produktname oder technische Daten)

o       Tastaturtyp

o       Maustyp und Schnittstelle

o       Hersteller und Name der Grafikkarte

·        ausführen

 

a) root#> sax2                     oder

b) root#> sax2 –f                 wie a), aber evtl. alte Konfiguration wird nicht wiederverwendet; alle Daten werden neu ermittelt

 

[evtl. Umstellen auf V4.0 auf Anfrage; Antwort mit yes]

 

 

Automatische Konfiguration

·        sax2 versucht Komponenten zu ermitteln (PCI, AGP, Maus, Tastatur)

·        wird Grafikkarte korrekt ermittelt, wird versucht, Monitor automatisch zu erkennen

o       speichern:                 speichert aktuelle Konfiguration

o       justieren                    Darstellung des Bildschirmes anpassen

o       sax starten                Überprüfung und Änderung der Konfiguration

o       Abbrechen                bricht sax2 ab

o       bei Druck auf OK wird oben gewählte Funktion ausgeführt

Hilfe: Strg +F1 (®Tastenkombinationen, Mausbedienungsfunktionen)

 

 

manuelle Konfiguration

·        gezielte Auswahl/Änderung von Komponenten, wie z.B. Maus, Tastatur, Zeichensätze, Grafikkarte, Bildschirm,...

·        notwendig: bei mehreren Grafikkarten

 

 

X Server läuft nach Starten auf Terminal 7 (unter Linux)

 

            > startx ¿

            ®schaltet auf Terminal 7 um:

            ®grauer Bildschirm, x (=Maus-Cursor)

           

            LMT ®XTerm (Eingabeaufforderung)

            umschalten auf anderes Terminal

                        Strg + Alt + F1...F6

            beenden z.B.:

                        > startx abbrechen Strg + c

                        oder auf Terminal 7: Strg + Alt + <Backspace>

                        oder mit X-Mitteln (Menü)

 

            Terminal 7:

            > xeyes &

 

 


2001-03-07

 

UNIX

 

Prozeß, Prozesssteuerung

·        Aufgabe des Betriebssystems: Durchführung vom Benutzer gewünschter Aktionen (Textverarbeitung, Backup, etc.)

 

®Programm: Beschreibung der Aktionen in maschinenverständlicher Sprache

 

nur statische Beschreibung

®es wird nicht festgelegt

·        wer das Programm startet

·        welcher Schritt gerade ausgeführt wird

®auch nicht berücksichtigt: mehrfache Ausführung des Programms zur gleichen Zeit, evtl auch von mehreren Benutzern

 

zur Lösung wird neue Verwaltungseinheit geschaffen:

 

            Prozeß (process)

 

Ein Prozeß beschreibt die Ausführung eines Programms mit allen dazugehörigen Informationen

 

Im Prozeß werden alle benötigten Informationen verwaltet, z.B.

·        das Programm, das ausgeführt werden soll

·        welcher Schritt momentan ausgeführt wird

·        welcher Benutzer das Programm ausführt

·        wo ist das Programm im Speicher

·        ...

 

Multitasking: mehrere Prozesse können „parallel“ ausgeführt werden

 

Welche Prozesse gibt es?

 

            ps (process)             zeigt Prozessinformationen

           

            > ps a            (Prozesse, die mit Terminals verbunden sind)

 

                        PID     TTY    STAT TIME  COMMAND

                        42       tty1     S         0:00    bash

                        360     tty2     R         0:00    ps a

 

·        alle Informationen über Prozeß sind im Prozeßkontrollblock zusammengefasst ®Verwaltung durch Kernel


®zur eindeutigen Identifikation wird eine Nummer vergeben ®Prozeßnummer (process identification, pid)

·        die Prozessnummer wird automatisch vergeben, wird fortlaufend gewählt:

 

Beispiel:

> ps

            42       tty2     ...         bash

            360     tty2                 ps

> ps

            42       tty2     ...         bash

            361     tty2     ...         ps

 

TTY    teletype (Terminal)               woher bezieht der Prozeß die

Eingaben?

STAT Status                                    S         sleeping (Prozeß wird von CPU

gerade nicht ausgeführt;

schläft)

                                                           R         running (Prozeß wird von CPU

                                                                       gerade ausgeführt; läuft)

 

 

Prozessüberlagerung

·        in einigen Fällen startet ein Prozeß ein neues Kommando (Programm) und stellt seine eigene Arbeit (=bisheriges Programm ein) ®es wird kein neuer Prozeß erzeugt ®PID bleibt erhalten

 

 

Beispiel ohne Überlagerung

> ps

            41       tty2     bash

            363     tty2     ps

> tcsh                                               (neue shell wird gestartet)

> ps

            41       tty2     bash

            364     tty2     tcsh

            365     tty2     ps

> exit                                     (beendet shell)

> ps

            41       tty2     bash

            366     tty2     ps

 


Beispiel mit Prozeßüberlagerung

> ps

            41       tty2     bash

            367     tty2     ps

> exec tcsh

> ps

            41       tty2     tcsh    (bash wurde durch tcsh

überlagert)

            368     tty2     ps

> exit

            login:...

 

·        exec: Das Programm des aktuellen Prozesses wird durch ein neues Programm ersetzt Þwird zur Ausführung neuer Programme verwendet, wobei das alte Programm seine Arbeit einstellen soll (u.a. Anmenden)

 

 

Prozesshierarchie

·        ein neuer Benutzer veranlasst eine Aktivität:

o       neuer Prozeß wird erzeugt; durch Verdopplung (fork) eines vorhandenen Prozesses (geht nur so)

o       der „alte“ Prozess läuft weiter

o       im „neuen“ Prozess wird das vorhandene Programm durch neues Programm ersetzt (exec) Þneues Programm läuft

o       Prozeß wird beendet

Þjedes Programm wird i.d.R. als neuer Prozeß gestartet

Þ“Haupt“-Programm und „Unter“-Programm können parallel ablaufen

 

            H: Hauptprogramm  pid 47             z.B. bash

            U: Unterprogramm   pid 48             z.B. cp

 

                                                                                              ohne neuen Prozeß

PID                 47                               48                               47

                        H1                                                                  H1

                        H2                                                                  H2

                        H3                              U1                              H3

                        H4                              U2                              U1

                        H5                              U3                              U2

                        H6                                                                  U3

                        H7                                                                  H4

                                                                                              H5

                                                                                              H6

                                                                                              H7

 

 

ÞProzeßhierarchie (Prozesse sind voneinander abhängig)

 


pstree

 

init

                        bash               pstree

                       

                        crond

 

                        inetd

           

                        lpd

 

                        syslogd

 

                        update

 

                        ...

 

·        init-Prozeß ist der 1. Prozeß unter UNIX (wird beim Booten „aus dem Nichts“ erschaffen)

·        der init-Prozeß hat eine Shell (bash) gestartet; als neuen Prozeß

·        bash hat wiederum neuen Prozeß gestartet (pstree)

 

pstree ist Kind (child) von bash

bash ist child von init

init ist der Elternprozeß von bash

bash ist der Elternprozeß von pstree

 

 

einige UNIX-Prozesse

> ps ax                                  a zeigt alle Prozesse (auch anderer Benutzer), die

mit tty verbunden sind

x zeigt auch Prozesse, die mit Terminal nicht

verbunden sind

 

PID     TTY     STAT  TIME   COMMAND

1          ?          S         0:00    init

42       1          S         0:00    getty tty1

43       2          S         0:00    getty tty2

44       3          S         0:00    getty tty3

45       4          S         0:00    bash

 

50       4          S         0:00    psax

 


init

PID 1

·        init ist der erste Prozeß, der gestartet wurd = initialisiert UNIX-System anhand von /etc/inittab

·        z.B.

o       es wird aus jedem Terminal ein Prozeß gestartet, der die Anmeldung einleitet (getty, mingetty)

 

42       tty1      /sbin/mingetty            tty1

43       tty2      /sbin/mingetty            tty2

44       tty3      /sbin/mingetty            tty3

 

·        getty bzw. mingetty bringt Willkommensmeldung auf das entsprechende Terminal; Login-Prompt erscheint; auf Tastatureingabe wird gewartet.

·        Benutzer gibt Benutzername ein: getty nimmt Eingabe entgegen und startet neues Programm (/bin/login)

·        das login-Programm wird als Überlagerung vom getty-Programm ausgeführt (Þgleiche PID)

·        Login: führt Anmeldung durch (Benutzer + Kennwort prüfen)

·        bei erfolgreicher Anmeldung wird die entsprechende shell gestartet

 

An Terminal 1:

> ps a

 

            41       2          S         getty tty2

            47       1          R         ps

 

An Terminal 2:

login: Benutzer ¿

 

An Terminal 1:

> ps a

            41       2          S         login Benutzer

            48       1          R         ps

 

An Terminal 2:

Kennwort ¿

 

An Terminal 1:

> ps a

            41       2          S         login Benutzer

            49       2          S         bash  (ÞBenutzer kann arbeiten)

            57       1          R         ps

 


update

/sbin/update

 

®die Puffer des Dateisystems werden in regelmäßigen Anständen (Standard: 30 Sekunden) auf die Festplatte geschrieben

 

 

syslogd, klogd

·        Protokollierung von Fehlermeldungen und Warnungen

 

/var/log/syslog

.../messages

...

 

 

inetd

·        Prozeß zur Kontrolle von Netzwerkaktivitäten

·        bearbeitet Anforderungen, die durch das Netzwerk kommen (z.B. Dateien kopieren)

 

 

lpd

line printer

·        überwacht Druckerwarteschlangen und schickt die darin enthaltenen Dateien an die entsprechenden Drucker

 

 

chond

·        überwacht den Terminkalender (Tabelle, in der Zeitpunkt mit Aktionen verknüpft sind) und führt entsprechende Programme aus

 

 

Daemon

·        Programm, das keine Ein- und Ausgabe vom Terminal benötigt

·        beim Start (durch init) werden diese keinem Terminal zugeordnet

·        systemspezifische Aufgaben werden erledigt

·        Name des Programms (Dateiname) endet i.d.R. mit einem d (crond, lpd,httpd,...)

 

 

ps

l           langes Format; zeigt zusätzliche Informationen

           

            UID                 user identification

            PID                 process id

            PPID              parent pid (PID des Elternprozesses)

            PRI                 Priorität

            NI                    nice (Wert zur Abänderung der Priorität)

           


STAT             Status

R         ®läuft

S         ®schläft

D         ®nicht störbarer Schlaf

            T         ®angehalten

            Z          ®Zombie (Eltern eines Prozesses ist „gestorben“;

Zustand bis Prozeß von init adoptiert wird)

            W        ®Prozeß ist ausgelastet (also nicht im RAM, d.h. auf

Swap-Speicher)

TTY                Terminal

TIME              Zeit, die Prozeß bisher verwendet hat (CPU-Zeit)

COMMAND  Programm, das mit Prozeß verbunden ist

 

 

ps u

Benutzerformat

 

·        ®Benutzername, Startzeitpunkt

 

CPU  

                        wie viel wird beansprucht (in %)

MEM

 

 

ps t <n>

zeigt Prozesse, die an Terminal <n> laufen

 

 

ps r

zeigt laufende Prozesse

 

 

top

·        Status über Prozesse anzeigen

·        wird automatisch aktualisiert

·        weitere Informationen über das System werden ausgegeben (CPU-Auslastung, MEM-Auslastung, Zahl der Prozesse,...)

·        ®zur Überwachung der Auslastung

 

 

Priorität

·        alle Prozesse werden nach deren Wichtigkeit geordnet

 

z.B. dringend, wichtig, normal, unwichtig,...

 

·        Priorität ist Zahlenwert

·        je höher die Priorität, desto früher wird Prozeß von der CPU bearbeitet („kommt häufiger ran“)

·        je höher die Priorität, desto niedriger der Zahlenwert

 

-12      kswapd         ®wichtiger

0          bash              ®normaler

 

 

indirektes Verändern der Priorität: nice

nice     ®Nettigkeit

 

Wert von nice wird verändert:

nice –n <Nettigkeit>

            Zahlenwert     >0       verschlechtert Priorität

                                   <0       verbessert Priorität

 

hugo> nice sleep 1000 &                          setzt nice auf 10

hugo> nice –n 10 sleep 1000 &              setzt nice auf 10

hugo> nice –n 19 sleep 1000 &              setzt nice auf 19

hugo> nice –n –19 sleep 1000 &*           setzt nice auf -19

hugo> ps l                                                   

           

* nur root darf negative nice-Werte geben (nicht nett)

(i.d.R. für langwierige Prozesse, die die interaktive Arbeit der Benutzer nicht allzu stark bremsen sollen)

 

 

renice

·        Verändern des nice-Wertes eines Prozesses

 

renice Wert –p <PID>

 

renice 15 –p 42                   ®Der Prozeß mit pid 42 erhält nice 15

 

renice –19 –p 42                ®Der Prozeß mit pid 42 erhalt nice –19

 

 

root                 beliebige Prozesse             +, -

selbst             nur eigene                             nur + (also schlechter)

 

 

renice 19 –u hugo             ®alle Prozesse des Benutzers hugo erhalten

nice 19 (Þlahm)

 

 

Signale

·        Mechanismus, um einem Prozeß eine Mitteilung zu machen

 

z.B. „bitte beenden“, „falsche Instruktion“, „Fenstergröße wurde verändert“, ...

 

·        Signale werden vom Prozess selbst behandelt und werden i.d.R. gemäß ihrer Bedeutung behandelt; können aber bei Bedarf abgefangen/ignoriert werden

 

verfügbare Signale

 

SIGHUP        1          Verbindung beendet

SIGQUIT       3          Quit-Signal von Tastatur

SIGKILL        9          Beendigungssignal; nicht ignorierbar, nicht abfangbar

SIGTERM     15       Beendigungssignal; ignorierbar, abfangbar

 

vollständige Liste der Signale: man 7 signal

 

 

einem Prozess ein Signal senden

 

kill -<Signal#> PID

 

kill –15 4711            ®schick dem Prozeß mit PID 4711 das SIGTERM-Signal

 

i.d.R. wird kill benutzt, um außer Kontrolle geratene Prozesse zu terminieren

 

Prozeß beenden:

            1. Versuch:    kill –15 pid               SIGTERM wird Prozeß gesandt

(®ordentliche Terminierung)

2. Versuch:    kill –9 pid                  Prozeß wird vom Kernel entfernt

(Ausnahme: PID=1)

®nur eigene Prozesse können gekillt werden (außer root)

 

 

nohup

nohup lässt ein Programm die Signale SIGHUP, SIGINT, SIGQUIT, SIGTERM, ignorieren

 

> nohup tar cf /dev/band / &

> …

> ls

> exit

 

®hier: Shell terminiert (=Abmelden), aber obige Signale werden nicht an tar weitergereicht Þtar läuft weiter, obwohl shell beendet wird

 

·        ist stdout des angegebenen Kommandos der Bildschirm, dann wird automatisch stdout/stderr in die Datei nohup.out umgeleitet (in aktuelles Verzeichnis). Ist das aktuelle Verzeichnis schreibgeschützt, dann wird nohup.out im Heimatverzeichnis erstellt.

 

 


cron

·        bestimmte Tätigkeiten sollen in regelmäßigen Abständen durchgeführt werden (z.B. Backup, Löschen überflüssiger Dateien, ...) ®Terminkalender

·        Überwachung dews Terminkalenders und Ausführung der „Termine“ /usr/sbin/crond (wird i.d.R. von init gestartet)

·        cron = Zeit

·        jeder Benutzer kann Terminkalender haben, System-Termin-Kalender

 

crontab

 

/etc/crontab             Systemterminkalender

 

·        Kommando crontab; Aufgabe: Tabelle bearbeiten

 

z.B.

crontab –l                Prüfung, ob für einen bestimmten Benutzer ein

Kalender existiert

®no crontab for otto

 

crontab –e               bearbeiten einer crontab auch z.B. mit

vi /etc/crontab

crontab –r                entfernt Benutzer-crontab

 

·        Aufbau:

crontab ist Textdatei, die aus 6 Feldern pro Zeile besteht:

 

1          Minute                        0...59

2          Stunde                       0...23

3          Tag des Monats       0...31

4          Monat                         0...12

5          Wochentag                0...7

6          Kommando               jedes Shellkommando

 

 


2001-03-08

 

UNIX

 

Fortsetzung crontab

 

In jedem Feld ist die Angabe eines Wertebereichs zulässig:

·        ein einzelner Wert:               4

·        mehrere Werte:                    10, 20, 30

·        ein Bereich:                          12-16

·        * gibt den gesamten Wertebereich an

 

Beispiele:

0          12       *          *          *          echo „jeden Tag um 12.00 Uhr“

0          15       *          *          1-4      echo „Feierabend, bis morgen“

0          15       *          *          5          echo „Wochendende, bis Montag“

10       *          *          *          *          echo „Alle 10. Minute einer Stunde”

10, 20, 30, 40, 50, 0 * * *     *          echo „Alle 10 Minuten > /dev/tty1

0          8          *          *          1-5      chmod 000 /usr/games

0          15       *          *          1-5      chmod +rx /usr/games

*          *          *          *          *          date >> ~/zeitliste 1)

 

1) jede Minute (kleinste Zeiteinheit) wird date ausgeführt und in der Datei zeitliste angehängt

 

·        alle Aktionen der crontab werden im Hintergrund ausgeführt ®nur sinnvoll mit Ein- und Ausgabeumlenkung

·        alle Ausgaben (d.h. nicht umgelenkte) werden gesammelt und als mail an den entsprechenden Benutzer versendet

 

 

at

·        ein Kommando wird zu einer bestimmten Zeit ausgeführt, aber nur einmal

 

Beispiel:

> at 11:00 ¿

> echo „Dies ist ein 11:00 Uhr Test“ > /dev/tty1

> ...

> Strg + D

 

atq      Warteschlange für at-jobs

atrm   Job aus Warteschlange löschen, über Job-Nummer

 

Ausführung durch atd

o       sorgt für Ausführung der Jobs

o       muß gestartet sein (unter Benutzer root)

 

atd –b 5        wie oft sollen Warteschlangen durchsucht werden;

hier alle 5 Sekunden

 

/etc/at.deny              Liste der Benutzer, die at nicht benutzen dürfen;

leere Liste = alle dürfen

 

alternativ

 

/etc/at.allow             ist Liste vorhanden, dürfen nur eingetragene

Benutzer at benutzen; leere Liste = niemand darf

 

 

Läuft der cron-Daemon? Wie findet man es heraus?

 

                ps ax | grep „cron“

 

                hugo> ps a

                                           49           großer Prozeß

                                          50           bash

                                          77           ps

 

                hugo> renice –n 17 49      ü

 

                hugo> renice –n –17 49   L            Benutzer darf nicht verbessern!

 

 

 

Bootkonzept von Linux

 

„Uncompressing Linux...“

 

 

init

 

®alle weiteren Prozesse werden von init bzw. von seinen „Kindprozessen“ erzeugt

 

(®“was ist zu tun?“)

®Definition der Runlevel

®was ist in runlevels zu tun?

®Standard-runlevel

ÞHochlaufen des Systems (und Herunterfahren) wird allein von init gesteuert

 

 

Runlevel

 

> init <runlevel>

®geht in Runlevel <runlevel> über

 

 

0             Halt

S             Single user mode

1             Multi-user ohne Netzwerk

2             Multi-user mit Netzwerk (Standard)

3             Multi-user mit Netzwerk, xdm

4             frei

5             frei

6             reboot

 

Beispiel:

init 0                     hutdown –h now

init 6                     hutdown –r now

init S     Übergang in single user mode

 

 

Standard-Runlevel

 

> default runlevel

                id:2:initdefault:

                hier ist Level 2 der Standardlevel

 

                niemals 0 oder 6 eintragen!

 

Achtung: /etc/inittab darf nicht zerstört werden, sonst Probleme beim Ausführen von init

 


In /etc/inittab ist auch festgelegt, auf welchem Terminal Anmeldung möglich ist:

 

> getty -programs

1:123:respawn:/sbin/mingetty tty1

2:123:respawn:/sbin/mingetty tty2

3:123:respawn:/sbin/mingetty tty3

 

 

Wechsel der Runlevel

 

Beispiel: Wechsel von runlevel 2 nach runlevel 3

 

init 3

 

®init schaut in /etc/inittab nach, was zu tun ist

ÞShellskript /sbin/init.d/rc3 ist aufzurufen

 

a)       rc führt alle Stop-Skripte des Levels 2 aus; alle Skripte, die in /sbin/init.d/rc2.d liegen und mit „K“ anfangen („K“ ®kill; alle Stopp-Skripte fangen mit K an; Zahl nach „K“ gibt Aufrufreihenfolge an)

b)       rc führt alle Start-Skripte des Levels3 aus; alle Skripte, die in /sbin/init.d/rc3.d liegen und mit „S“ anfangen („S“ ®Start; sonst wie „K“)

 

 

 

„Wechsel“ in gleichen Runlevel

Was passiert?

 

/etc/inittab wird eingelesen, auf Veränderungen geprüft und bei Bedarf entsprechende Maßnahmen gestartet (z.B. getty auf weiterer Schnittstelle starten)

 

 

 


Netzwerk

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


                               host (=Rechner) mit Hostname (=Rechnername)

 

                               Netzwerkverbindung

 

 

 

Linux unterstützt alle gängigen Netzwerkkarten (z.B. Ethernet für lokale Netze)

Linux unterstützt alle gängigen Netzwerkprotokolle (z.B. TCP/IP, IPX, AppleTalk)

 

Beispiel:

TCP/IP-Netzwerkkarte mit Ethernetkarte

 

Voraussetzung:

o        Ethernetkarte, die von Linux unterstützt wird, ist verfügbar

o        Kernel muß für das zu verwendenede Netz korrekt konfiguriert sein (Standardkernel enthält Unterstützung)

o        Test, ob Ethernetkarte korrekt erkannt wurde:

 

cat /proc/net/dev

 

ist Zeile „eth0“ enthalten, so wurde Karte korrekt erkannt

falls nicht:

YAST ®Administration des Systems ®Hardware in System integrieren ®Netzwerkkarte konfigurieren

 

Netzwerknamen wählen (z.B. eth0)

Treiber: (z.B. NE2000 (PCI))

Parameter ...

weiter

modprobe eth0 (cat /proc/net/dev)

 

modprobe lädt ladbare Module nach; hier: die dem Gerät eth0 zugeordneten Treiber

Þkein Neustart erforderlich

YaST hat lediglich Eintrag in /etc/modules.conf geändert (Schlüsselwert: eth0)

 

Konfigurationsdaten:

Rechnername:      hostname

                                               unter welchem Namen soll Rechner

angesprochen werden; eindeutig in Domain

(hier: ca10)

Konvention: kleine Buchstaben, 8 Zeichen

max.

Domainname:       domainname

                                               ®Gliederung von großen Netzen

                                               hier: ca.de

                                               Ein Rechner wird durch Angabe seines

vollen Namens angesprochen (full qualified

name)

IP-Adresse:                          Class-C-Adresse, nach RFC 1597

                                               192.168.0.10

Netzwerkmaske    Subnetmask, netmask

                                               hier: 255.255.255.0

Gatewayadresse:     IP-Adresse eines Gateway-Rechners = ein

Rechner, der mit mehreren Netzwerken verbunden ist und Weiterleitung in fremde Netze realisiert

hier: <leer>

Adresse des Nameservers: Nameserver stellt Dienst bereit, mit

dem Rechnernamen in IP-Adressen

umgewandelt werden (DNS = Domain Name

Server)

hier: <leer>, nein

 

 


Konfiguration unter Linux mit YaST

  1. YaST ®Administration des Systems ®Netzwerkkonfiguration ®Netzwerkgrundkonfiguration

 

[0]           [X]          Ethernet                eth0        192.168.0.10

 

F10 (speichern)

 

  1. Rechnername ändern

 

Hostname:                            ca10

Domainname:       ca.de

 

  1. Netzwerkdienste konfigurieren

 

inetd:                     ja

Portmap:                ja

...                            ja

 

Test auf Erfolg:

ping localhost                      (eigene Adresse)

ping 192.168.0.10

ping 192.168.0.1                (Recardos Rechner)

 

 


2001-03-09

 

UNIX

 

Zu 8

eth0 nicht in /proc/net/dev enthalten:

®keine Netzwerkkarte/Treiber o.ä. Für Device eth0 vorhanden

Ursache:

Hardwaremodul wird/wurde nicht geladen

nicht definiert

falsch definiert (falscher Treiber,...)

Abhilfe:

nicht definiert:

YaST (Hardware integrieren)

/etc/modules.conf

 

Modul nicht geladen:

modprobe eth0

 

Hostname: ca10

eingenen Hostname ermitteln:

in YaST nachschauen

hostname (Befehl)

 

ping ca10

unknown host ca10

®Host ca10 ist unbekannt (TCP/IP-Protokoll)

(arbeitet mit IP-Adressen, nicht mit Hostnamen)

ÞUmstellung notwendig:

1.DNS

2.Konfigurationstabelle

 

 

/etc/hosts

Abbildung von IP-Adressen auf Rechnernamen

 

192.168.0.01            ca01.ca.de                ca01               recardo

192.168.0.10            local host                                           frank

192.168.0.99            ca99.ca.de                ca99               dozent            ameis

IP-Adresse   fullqualified name              hostname     nicknames

 

/etc/host.conf

Wie erfolgt Namensauflösung?

order                         legt Suchreihenfolge fest

order bind,hosts    erst Nameserver fragen, dann /etc/hosts

order hosts, bind               erst /etc/hosts fragen, dann Nameserver

order hosts             nur /etc/hosts fragen

 


/etc/HOSTNAME

enthält eine Zeile und zwar den Namen des Rechners (nur Host-Teil)

 

 

Arbeiten mit Netzwerk

i.d.R. Benutzername und Kennwort

1.root muß geeignetes Kennwort haben

2.Benuter nach Bedarf einrichten (entweder kein Kennwort oder initiales Kennwort - z.B. Benutername)

 

 

Informationen über einen Benutzer

finger <Benutzer>               lokal

finger <Benutzer>@<Host>          entfernt

 

finger ca01              Informationen über den Benutzer ca01, auf demjenigen

                                   Rechner, auf dem finger ausgeführt wird (lokal)

finger ca01@ca10  Informationen über den Benutzer ca01 auf dem Rechner ca10

finger                        Liste der angemeldeten Benutzer auf dem lokalen Rechner

finger @ca10          Liste der angemeldeten Benutzer auf ca10

 

 

Fehlerfälle

connection refused/Verbindung abgelehnt

alle Programme im Netzwerk arbeiten nach Client/Server-Prinzip, z.B. finger, ftp, telnet, rcp, rlogin, rsh, ping,...

 

            Client                                                             Server

 


            > finger @ca99                                            „fingerd“

 

 

 

            caxx                                                               ca99

 

hier: finger auf caxx versucht den finger-Server auf ca99 zu erreichen; läuft dies nicht, kommt es zum Fehler (connection refused, Verbindung abgelehnt, <hängt> + Timeout,...)

 

Abhilfe:

fingerd starten

inetd (startet bei Bedarf notwenidge Daemons (=Server, hier z.B. fingerd))

 

Kontrolle:

# ps ax | grep „inetd“

®inetd nicht enthalten initd läuft nicht

 


Starten:

# /usr/sbin/inetd (jedesmal nach Systemstart)

 

YaST Administration des Systems Netzwerk konfigurieren Netzwerkdienste konfigurieren Ja,ja,ja

 

Test:

finger @<sichselbst>

            [...]                   dann fehlt nkitserv

 

 

chfn <Benutzer>

Informationen über Benutzer verändern

lokal, root

 

 

~/.plan

Inhalt der Datei (ASCII) wird bei finger angezeigt; jeder Benutzer kann eine derartige Datei haben; wenn diese nicht vorhanden ist, erschent No Plan

 

 

 

Elektronisches Telefonieren

talk (sprechen)

 

            Host ca81                                         Host ca77

 

 

 

 

 

 

 


            erwin                                                  otto

            > talk otto@ca77                                         erwin@ca81 ruft...

                                                                       > talk erwin@ca81

            Fenster teilt sich                              Fenster teilt sich

 

der Benutzer, mit dem man sprechen will, muß angemeldet sein! (da online-Kommunikation) (mit finger erwin@ca81 testen)

Beenden von Talk: <Strg> + C

Benimm-Regel: mit „oo“ Ende beantragen, mit „oo“ bestätigen (over and out)

 

 


Arbeiten auf fremden Rechner

 

            Host ca77                                                     Host ca49

 

 

 


                                          einfache Anmeldung

 

 

            otto                                                                Benutzer: root, HerrOtto, HerrHugo

 

Voraussetzung: otto muß Usernamen (Account) auf Zielrechner haben, hier: HerrOtto

 

rlogin -l <user> <host>

Anmelden auf entferntem Rechner

 

otto@ca77> rlogin -l HerrOtto ca49

            Password:...

HerrOtto@ca49> hostname

            ca49

HerrOtto@ca49> exit

otto@ca77> hostname

            ca77

 

vereinfachtes Login (ohne Benutzernamen)

rlogin ca49

 

Wird kein Benutzername (z.B. -l erwin) angegeben, so wird davon ausgegangen, daß der lokale Benutzername auch auf dem Zielrechner benutzt werden soll.

 

Rlogin (stammt aus BSD-UNIX) in UNIX-Systemen weit verbreitet

 

andere Möglichkeit

telnet

 

Standardisiert (Telnet-Protokoll) im Rahmen TCP/IP-Protokollserie

 

telnet             Client (Benutzerschnittstelle)

telnetd           Server (reagiert auf telnet-Anfragen)

 

Host: 0815                                        Host: cray

 

otto@0815> telnet

telnet> open cray

0815 login> login: HerrOtto

            password:...

HerrOtto@0815> exit         (wenn nötig: quit)

 

telnet ist in vielen Betriebssystemen verfügbar!

®Von fast jedem Rechner kann Verbindungzu Telnet-Server (z.B. UNIX) aufgebaut werden

 

auch Win98:

Start-Menü Ausführen telnet

 

 


2001-03-12

 

UNIX

 

Programme im Netzwerk funktionieren nur, wenn entsprechende Daemone auf Zielsystem laufen (hier: fingerd, talkd)

 

Þohne laufenden Server auf Zielsystem kann sich Client nicht Verbinden („Port wird nicht abgeholt, Anfrage verschwindet im Nichts“)

 

/etc/services                       Zuordnung von Port-Nummern zu Diensten (standardisiert)

 

hier in Linux:

meist läuft nur inetd (Daemon für Internet-Dienste; „Super-Server“ hört viele Ports ab und startet bei Bedarf den entsprechenden Server. (z.B. fingerd, talkd). Konfiguration über /etc/inetd.conf Þeinfache Auswahl von Server-Diensten ®„auf welche Anfragen soll mein Computer reagieren?“

 

Änderungen an /etc/inetd.conf werden bei Neustart von inetd berücksichtigt bzw. wenn das SIGHUP-Signal empfangen wird:

 

            Ermitteln der PID von inetd

            > ps aux /grep inetd

                        4711...inetd

            > kill -SIGHUP 4711                                  Signal „bitte inetd.conf neu einlegen“

                                                                                   schicken

           

finger zeigt Daten wie vollständiger Name, Telefon,... an.

Ändern mit:

            chfn <Benutzer>

 

 

Arbeiten auf /mit fremden Rechnern

 

            rlogin Anmelden auf fremden Rechner

            rcp                 Kopieren zw. Zwei Rechnern

            rsh                 Kommandos auf fremden Rechner ausführen

            rwho              angemeldete Benutzer im Netzwerk

            ruptime         Maschinen im Netzwerk

            ftp                   Dateitransfer

            telnet             Anmelden

 

 


telnet

            Client

            Server

            Protokoll

 

Standardisiert

Protokoll:                  legt fest, wie auf einen entfernten Rechner

                                    zugegriffen wird

Telnet-Client:          Benutzerschnittstelle zu Telnet-Protokoll

Telnet-Server:         (telnetd) beantwortet Anfragen/

                                    Verbindungswünsche von Telnet-Client

Zweck:                      Anmelden auf entferntem Rechner

 

/etc/issue.net

Textdatei, wird vor Login-Prompt ausgegeben (rein informativ)

 

            man 5 issue.net

 

who

wer ist auf diesem Rechner angemeldet?

 

last

            welche Benutzer sind/waren angemeldet (auch hier Ausgabe darüber,

            woher die Anmeldung erfolgt(e).

 

                        last | more

 

rlogin

            hugo@sonne> rlogin venus

            hugo@venus> hostname

                        venus

            ÞDer eigene (lokale) Rechner arbeitet als Terminal; alle Eingaben

            werden an Zielrechner geschickt, Ausgaben vom Zielrechner werden

            entgegengenommen und auf dem Bildschirm dargestelllt (auch als 

            Steuersequenzen, wie Strg+C, Strg+Z werden weitergeleitet)

           

            hugo@venus> sleep 1000

                        Strg+C

            Sleep wird abgebrochen (nicht etwa rlogin)

 

            hugo@sonne> ~<Strg>Z             Stopp-Signal wird lokal interpretiert

                                                                                  Þrlogin wird angehalten

 

            hugo@venus> vi ~hugo/meins.dat    liegt auf venus!

 


rwho

            wer ist im lokalen Netzwerk angemeldet?

            Voraussetzung: rwho läuft (Daemon)

           

            > rwhod        (root)

 

ruptime

            listet alle Rechner auf (mit rwhod) mit Angabe der durchschnittlichen

                Auslastung

            Þ Lastverteilung durch Ausführen von umfangreichen Aufgaben auf

            einen anderen Rechner

 

rcp

            rcp: remote copy

            Kopieren von Dateien im Netzwerk

           

                        rcp file1 file2

                       

            file1, file2: entweder lokaler Dateiname (z.B. /etc/passwd) oder

            Netzwerkdateiname (rname@rhost:path)

 

                        rcp ameis@sonne:/etc/passwd /tmp (von sonne)

                               Benutzername auf fremden Rechner

                                             Name des entfernten Rechners

                                                           Dateiname auf entferntem Rechner

                                                                                    lokaler Dateiname

                       

                        rcp /etc/passwd ameis@mars:/tmp/xyz

                        rcp /etc/motd ameis@mars:~/

 

            Voraussetzungen

  /etc/hosts.equiv (Liste der vertrauenswürdigen Rechner)

                        (Eingabe „+“ alle Hosts sind erlaubt)

                        man 5 host.equiv

~/.rhosts

                        hugo auf ca20:

                                   in Datei ~hugo/.rhosts                ca99

                        hugo auf ca99:

                                   in Datei ~hugo/.rhosts                ca20

                        bei unterschiedlichen Benutzernamen auf beiden Rechnern:

                        hugo auf ca20

                                   in Datei ~hugo/.rhosts                ca99 HerrHugo

                        HerrHugo auf ca99

                                   in Datei ~HerrHugo/.rhosts        ca20 hugo

 


            Beispiel:

                        venus                                               sonne

                        hugo                                                 Hhugo

                        erwin                                                Herwin

                        meier                                                Hmeier

 

            Venus und Sonne wolen mit rcp Datenaustausch (bzw. mit rsh arbeiten)

            Vertrauensstellung zwischen Venus und Sonne herstellen:

                        venus> vi /etc/hosts.equiv

                                   sonne

                        sonne> vi /etc/hosts.equiv

                                   venus

 

            Benutzerautorisierung herstellen:

                        Hhugo@sonne> vi ~/.rhosts

                                   venus hugo

                       

 

            rcp-Beispiel:

                        hugo@venus> rcp /etc/passwd Hhugo:~/bla

                       

 

            anderes Beispiel:

                        venus                                               sonne

                        root                                                   root

                        meier                                                meier

           

                        >vi /etc/hosts.equiv                      > vi /etc/hosts.equiv

                        >sonne                                             > venus

                        meier@venus> vi ~/.rhosts          meier@sonne> vi ~/.rhosts

                        >sonne                                             >venus

 

            meier@venus> rcp /etc/passwd meier@sonne:~blub

           

            meier@venus> rcp meier@sonne:/bin/ls /tmp/ls-neu

 

 

auf ca99 existiert:

            ~ca10/.rhosts

                        ca10 ca10

                        ca10 root

 

            root@ca10> rcp /etc/passwd ca10@ca99:~/xyz

 

 


rsh

            remote shell

            rsh führt Kommandos (=Befehle/Programme) auf dem entfernten Host

            aus

                        rsh [-l user] host [command]

                                   Benutzername auf Zielsystem (falls identisch: überflüssig)

                                             Zielrechner

                                                       Befehl

 

 

                        vax                                                    cray

                        hugo                                                 hugo

 

                        hugo@vax> rsh cray hostname

                                   cray

                        hugo@vax> hostname

                                   vax

                        root@ca01> rsh -l ca01 ca99 hostname

                                   ca99

                        root@ca01> hostname

                                   ca01

 

                        identisch mit:

                                   rlogin -l ca01 ca99

                                   ...

                                   hostname

                                   exit

 

                        root@ca01> rsh -l ca01 ca 99 cat /etc/passwd /tmp/xyz

                        führt Kommando cat /etc/passwd auf ca99 aus.

                        Ausgabe wird in /tmp/xyz (lokal) umgelenkt!

 

                        rsh vax cat remotefile > lokalfile

                                      auf vax ausführen

                                                                       lokal umlenken

 

                        rsh vax cat remotefile „>“ other-remotefile

                                      auf vax ausführen

                                                                      auf vax ausführen

 

                        vax> rsh cray langeMathBerechnung < Daten > Ergebnis

                        nur langeMathBerechnung wird auf cray ausgeführt; Daten

                        kommen von vax; Ergebnis wird auch auf Rechner vax

                        geschrieben

 

                        vax> rsh cray

                        Shell wird gestartet (=login)

 

            rrm      löschen von entfernten Dateien?                  Nein

            rmv    Dateien umbennenen auf entfernten?       Nein

 

            vax> mv bla blub                        lokal umbenennen

            vax> rsh cray mv bla blubb      auf cray

 

            Þkeine Notwendigkeit für weitere „r“-Befehle; jeder Befehl auf dem

            Zeilsystem kann mit rsh gestartet werden (sofern erlaubt)

 

 


2001-03-13

 

UNIX

 

Zu Frage 1:

 

Beispiel:

5000 Benutzer pro Rechner; alle Benutzernamen auf beiden Rechnern gleich

  Datei erstellen (rhosts.template) Rechner 1 Rechner2

 

            for User in /usr/home/*

            do

            echo „Bearbeite User: $USER“

                        cp /tmp/rhosts.template $USER/.rhosts

                        chmod 600 $USER/.rhosts

                        chown $USER $USER/.rhosts

                        done

 

„>“

            Ausgabe auf Fernrechner; Umlenkung wird durch „“ für den Fernrechner

            interpretiert

 

 

 

Dateien zwischen Rechnern kopieren

 

            ftp       file transfer protocol

            Datenaustausch zwischen Rechnern, standardisiert

           

            hugo@home> ftp

                        > open crack archiv

                        Name: hugo                                                           als Benutzer hugo

                                                                                                          anmelden

                        Kennwort: *****

                        >ls                                                                 Inhalt anzeigen

                        >cd /tmp                                                      Verzeichnis wechseln

                        >get entfernteDateien lokaleDateien   transferiert entfernte Dateien

                                                                                              von Rechner crack-archiv auf

                                                                                              lokalen Rechner home als

                                                                                              Datei lokaleDateien

                        > get /etc/passwd /tmp/passwd.crack-archiv

                        > pwd                                                                       aktuelles Verzeichnis

                        > close                                                         Verbindung wird geschlossen

                        > quit                                                            ftp verlassen

 

                        > put lokaleDatei entfernteDatei

                        > put /etc/passwd /tmp/bla                     lokale Datei (hier: /etc/passwd)

                                                                                              wird auf entfernten Rechner

                                                                                              als Datei /tmp/bla abgelegt

Transfer-Modus von Dateien

 

            ASCII              ascii

            Binär              binary

 

            Im Binär-Modus (Kommando binary) wird die Datei 1:1 (d.h. exakt, ohne

            Veränderung) kopiert

 

 

Verbinden mit „fremden“ Rechner

 

                                                                                  FTP-Server

 


                        Home                                                microsoft

 

                        Hugo

 

            hugo@home> ftp

            > open microsoft

            Name: anonymous

            Kennwort: hugo@home              „gute Sitte“

 

 

ftp läßt keine Benutzer ohne Kennwort zu (Ausnahme: anonymous).

ÞWer auf ca99 kein Kennwort hat, muß sich ein Kennwort einrichten

 

            lokal> rlogin -l ca10 ca99

            Name: ca10

            Kennwort:****

            >passwd

            Old: ****

            New:*****

            Repeat:*****

            >exit

 

Auf einen FTP-Server (z.B. unter UNIX) kann von jedem FTP-Client (z.B. unter

UNIX, Windows, WinNT,...) zugegriffen werden.

 

 

Konfiguration des FTP-Servers unter Linux

 

            /etc/nologin

sobald diese Datei existiert, ist FTP-Zugriff nicht möglich

Text in /etc/nologin wird entfernten Benutzern angezeigt

 

z.B. für Wartungsarbeiten (Einspielen neuer Dateien) o.ä.

 


            /etc/ftpwelcome

Textdatei; Inhalt wird nach „open“ angezeigt

 

ftp>open ca99

                                   Hallo, hier ist FTP-Server CA99

 

            /etc/motd

Textdatei; Inhalt wird nach Login angezeigt (nicht ftp-spezifisch; wird aber auch hier angezeigt)

 

            .message

3.wird beim Betreten eines Directories angezeigt

4.in jedem Inhaltsverzeichnis möglich

 

                        Beispiel:

                                   >vi /tmp/.message

                                               Dies ist zur Ablage Ihrer Dateien...

                                               :wq

                                   ftp>...

                                   >cd /tmp

                                               Dies ist zur ...

 

            /etc/ftpusers

3.Liste der Benutzer, die den ftp-Dienst nicht benutzen dürfen

 

 

Rechte

            ®es gelten die Rechte des angemeldeten Benutzers

            z.B. ftp

                        >open ca99

                        >user: frank

                        Kennwort: Gewüchzguchke

            für die ftp-Verbindung gelten die Rechte des Benutzers frank auf dem

            Rechner ca99 (also die gleichen Rechte, die er hat, wenn er lokal angemeldet

            ist)

 

 

anonymer Benutzer

            Benutzername: anonymous

            Benutzer ftp muß existieren (/etc/passwd), dessen Rechte werden

            verwendet

            ®nur das Heimatverzeichnis vom ftp-Benutzer (normalerweise /usr/local/ftp)

            ist von außen sichtbar

            /           =          /usr/local/ftp

            Þnur Daten, die in /usr/local/ftp liegen, sind sichbar

            ÞSchutz des Systems

            normalerweise: /usr/local/ftp/pub (public, öffentlich)

            Verzeichnis zum Abholen von Dateien

 

            Beispiel:

                        >ftp

                        >open ca99

                        >user: anonymous

                        Kennwort: ...

                        >cd /pub                               ®hier: /usr/local/ftp/pub

                        >ls

                                   ...

                        >quit

 

 

anonymous ftp soll nicht möglich sein

            a)        anonymous in /etc/ftpusers eintragen

            oder

            b)        Benutzer fpt in /etc/passwd entfernen

            oder

            c)         in /etc/pam.d/ftpd Zeile „#auth ... fpt“ die „#“entfernen

 

 

Xwindows im Netzwerk

           

                                               Host

 


                                               X-Client

                                                     ­

                                               „virtuelles

                                               Netzwerk

                                                     ¯

                                               X-Server

 

 

            Im Netzwerk:

 

                        Host1                                                 Host2

 


                        X-Cient                                              X-Server

 

                                               X11Protokoll

                                               TCP/IP über LAN

                                                                                                          X11Protokoll

                                                                                  Host3             TCP/IP über Richtfunk

 


                                                                                  X-Client

 

 


            Beispiel:

            X-Client und X-Server auf verschiedenen Computern ausführen:

 

                        ca99                                                  ca10

 


             >xclock -display ca10:0                                   tick tack

 

 

 

                                                                                  X-Server läuft

Client auf ca99 will auf X-Server von ca10 ausgeben/Eingabe

    entgegennehmen

auf ca10 muß X-Server laufen

ca99 muß die Berechtigung haben, auf ca10 auszugeben

 

            xhost               stellt Berechtigungen für Server-Zugriffe ein

            Þxhost auf ca10 ausführen, z.B. in xterm

                        xhost +                     Zugriff für jeden erlaubt

                        xhost -                      kein Zugriff (außer lokal)

                        xhost +ca99 ca99 erhält X-Server-Benutzungsberechtigung

                        xhost +192.168.0.99

 

            X-Client auf ca99 starten:

                        >xeyes -display ca10:0 &                       (0=Bildschirm 1)

                        >xclock -display ca10:0 &

                        >xcpustate -display ca10:0 &

                        >...

                        Fehler: can't open display                     X-Server nicht gefunden

                                                                                              (läuft nicht auf Zielsystem;

                                                                                              Zielsystem nicht erreichbar)

                        Fehler: connection refused                   keine Bereichtigung auf

                                                                                              X-Server auszugeben

 

 

            Beispiel

                        kleiner Rechner „home“ (486'er); X-Server läuft

                        großer Rechner „cray“

 

                        X-Client „xgrosserCPUBedarf“ soll auf cray in Hawaii ausgeführt

                        werden; Ein- und Ausgaben kommen von home in Klein Kleckersdorf

                                   hugo@home>xhost +cray

                                   >rsh cray xgrosserCPUBedarf -display home:0

                        ®cray ist der CPU-Server für home

                        ®home ist der X-Server (Anzeige) für cray

 


            auch mit mehreren Rechnern:

 

                        ca10> xhost +ca01 +ca02 +ca03

 

                        ca01> xeyes -display ca10:0

                        ca02> xclock -display ca10:0

                        ca03> xcpustate -display ca10:0

 

                        Þauf Bildschirm von ca10 erscheinen drei Fenster (Uhr, Augen und

                        CPU-Auslastung)

 

 

xhost

schaltet Zugriffskontrollliste ein nur registrierte Hosts dürfen

 

            xhost                         registrierte Hosts

            xhost -ca13             entfernt ca13 aus Liste

            xhost +                     schaltet Zugriffskontrolle aus (jeder darf!)

            xhost +ca14            fügt Rechner ca14 hinzu

 

 


2001-03-14

 

UNIX

 

mv auf Directories angewandt verschiebt das angegebene Directory (mit Inhalt) an den Zielort.

Am Zielort darf ein Directory mit dem angegebenen Namen nicht existieren.

Funktioniert nicht über die Grenzen des Dateisystems hinaus (auf gemountete Partitionen.

 

 

 

Druckerbetrieb

 

Drucker üblicherweise an paralleler Schnittstelle angeschlossen

 

ab Kernel Version 2.2.x

            /dev/lp0         =DOS LPT1

            /dev/lp1         =DOS LPT2

            /dev/lp2         =DOS LPT3

 

vor Kernel 2.2.x

            /dev/lp1         =DOS LPT1

            /dev/lp2         =DOS LPT2

            /dev/lp3         =DOS LPT3

 

 

Test des Druckers

 

            >echo Hallo, „Drucker“ > /dev/lp0

 

            mehrere Druckaufträge (evtl. von mehreren Benutzern)

sollen « parallel » abgearbeitet werden können

®Druckerwarteschlangen

 

 

Spooling-Betrieb

 

 

                        ca99

 


                                                                       Drucker                      ca10

 

              /var/spool/lpd/...                                                                 /var/spool/...

 

 

 

            hugo@ca99> man mount | lpr                            (Druckbefehl unter UNIX)

 

            hugo@ca10> man mount | lpr                            geht nicht (kein Drucker da!)

            hugo@ca10> man mount | rsh ca99 lpr           geht

 

 

Druckerwarteschlange

 

Definition:      /etc/printcap

Repräsentation:        Verzeichnis /var/spool/lpd

 

Linux enthält Paket:  lprold

            BSD-Spooling

grundsätzlich für Netzwerkbetrieb ausgelegt

 

 

Druckvorgang

 

·        Datendatei (=Druckauftrag vom Benutzer) wird in das Verzeichnis einer Druckerwarteschlange kopiert

·        Steuerdatei wird angelegt

·        ®Druckjob = Dateindatei + Steuerdatei

·        Steuerdatei schickt Datendatei i.d.R. durch ein Filterprogramm (Anweisungen für Drucker werden erzeugt)

 

 

lpr

·        Anwendungsschnittstelle für Druckerwarteschlange

 

hugo> lpr textdatei

hugo> lpr datei1 datei2 datei3

hugo> lpr -Pfarbe farbdatei

hugo> lpr -Pplakat -s großeFarbPlakatdatei

hugo> cat /etc/passwd | grep « users » | sort | lpr-PNadel

 

·        stellt eine oder mehrere Dateien in die Warteschlange

·        -P legt Warteschlange fest, keine: Standardwarteschlange

 

Standardwarteschlange: in Variable PRINTER definiert; wenn PRINTER nicht existiert, wird traditionelle Standardwarteschlange verwendet: lp

 

·        liest auch von Standard-Input (verwendbar mit Eingabeumlenkung: <, |)

·        -s Symbolic Link wird auf Druckdatei erzeugt (ÞDatei wird nicht kopiert)

·        sinnvoll bei großen Dateien

·        ÞDruckdatei darf nicht vor Beendigung des Druckauftrages gelöscht werden

 

 

lpq

 

line printer queue

·        zeigt Jobs in der Warteschlange

 

lpq -Pnadel

active                        tux      17       Hallo.txt        4711 Bytes

1st                   hugo  18       bla.txt                        4715 Bytes

2nd                  root    19       blub.txt         1111Bytes

 

 

lprm

 

Löschen von Jobs aus einer Druckerwarteschlange (nur Eigentümer der Druckdatei oder root darf löschen)

 

            lprm -Pnadel 19

            lprm 17                                  löscht Job 17 der Standardwarteschlange

            lprm                                       aktiven Job der Standardwarteschlange

                                                           löschen

 

(xlpq (Serie: xap); Monitor für Warteschlange)

 

 

lpc

 

line printer control programme

 

            >lpc

            >?                                                                  Hilfe

            >status <Warteschlangenname>                        Statusbericht

 

            > disable <Warteschlangenname>         keine Jobs mehr aufnehmen

 

            > enable <Warteschlangenname>          Jobs werden wieder

                                                                                  angenommen

            > stop <Warteschlangenname>              Jobs werden nicht mehr

                                                                                  ausgedruckt

            > start <Warteschlangenname>              Jobs werden wieder gedruckt

            > down <Warteschlangenname>                        disable + stop

            > up <Warteschlangenname>                  enable + start

            > abort <Warteschlangenname>             down + aktiven Job abbrechen

            > topq <Warteschlangenname> Job      schiebt Auftrag mit Jobnummer

                                                                                  Job an Anfang der

                                                                                  Warteschlange

 

 


lpd

 

·        Druck-Manager, line printer daemon

·        untersucht /etc/printcap nach Warteschlange

·        Management der lokalen Warteschlange (Sind Jobs vorhanden? Müssen diese gefiltert werden?) Übertragung zum /dev/lp...

·        Reihenfolge einhalten

·        gibt Auskunft über Status von Warteschlangen + Druckern

·        Weiterleitung von Druckaufträgen an entfernte Rechner (an dortigen lpd)

·        nimmt Druckaufträge von entfernten Rechnern entgegen oder weist sie ab (fehlende Berechtigung)

 

Autorisierung:

            /etc/hosts.lpd                      Liste der zugelassenen Rechner

oder

            /etc/hosts.equiv

 

·        lpd wird automatisch bei Systemstart gestartet, wenn in /etc/rc.config

 

START_LPD=yes

 

 

Konfiguration der Warteschlange

 

/etc/printcap

jede Warteschlange wird durch eine Zeile definiert

 

Beispiel: einfache lokale Warteschlange

 

ascii|deskjet|lp:lp=/dev/lp0:sd=/var/spool/lpd/ascii:sh:mx#10240

Name der Warteschlange (mehrere Namen (Alias) werden durch | getrennt (ascii, deskjet oder lp)

                              Daten werden an Gerät /dev/lp0 geschickt

                                                    Spoolverzeichnis; bei manueller

                                                    Konfiguration Verzeichnis erstellen!

                                                    (Eigentümer und Gruppe: lp)

                                                                                              suppress header

                                                                                                     Obergrenze

                                                                                                     f. Druckjobs:

                                                                                                     10240kB

Beispiel für entfernte Warteschlange

„Mein Rechner soll auf anderen Rechnern drucken“; d.h. Netzwerkdrucker benutzen ®in /etc/printcap

 

Netzwerkdrucker|lp1|Laser:\     Name(n) der Warteschlangen

rm=cray:\                                         Zielrechner (bei uns ca99)

rp=lokalerDrucker:\                      Name des Druckers auf Zielrechner

sd=/var/spool/lpd/lp1:\                 Warteschlange (Verzeichnis)

sh:mx#0                                          keine Titelseite, keine Größenbeschränkung

 

 

Installation unter Linux

1.lprold Paket installieren

2.lokalen Drucker mit YaST konfigurieren:

YaST ®Administration des Systems ®Hardware integrieren ®Drucker

 

farbig              [ ]

Typ:                Auswahl des Druckers

Name:            wird festgelegt

Papier:           A4

Schnittstelle:  parallel

 

Þ/etc/printcap wird erzeugt

 

3 bzw. 4 Warteschlangen werden angelegt:

            ascii               für ASCII-Dateien     (Konvertierung nach PS)

            lp                    Standard                   (Konvertierung nach PS)

            raw                 druckt ohne Konvertierung

            mono             wie lp, aber schwarz-weiß

3.Netzwerkdrucker

wie oben beschrieben (/etc/printcap ändern)