четверг, 31 мая 2018 г.

linux_konsole_farben_bedeutung

Spielekonsolen Test 2018. Die besten Konsolen im Vergleich . geeignet für. Hersteller. Vorgängermodell. Festplattenspeicher (wählbar) externe Festplatte anschließbar. HD | Full HD | 3D. WLAN | Bluetooth. Spielauswahl. Support alter Spiele. Xbox 360-Spiele, Xbox One-Spiele. Con­troller. Con­troller PS Vita Die PS Vital ist eine trag­bare Spie­le­kon­sole, die auch unter dem Namen PSP 2 bekannt ist. Con­troller Gesten- und Sprach­steue­rung (Kinect) Con­troller PS Vita Die PS Vital ist eine trag­bare Spie­le­kon­sole, die auch unter dem Namen PSP 2 bekannt ist. Con­troller PS Vita Die PS Vital ist eine trag­bare Spie­le­kon­sole, die auch unter dem Namen PSP 2 bekannt ist. Con­troller Gesten- und Sprach­steue­rung (Kinect) Hand­held-Tablet Joy-Con-Con­troller Diese Con­troller sitzen links und rechts des Hand­held-Moduls. Sie lassen sich auch separat zum Spielen nutzen. max. Controller. Vorteile. beson­ders leis­tungs­starke Hard­ware unter­­stützt 4K und HDR, beson­ders leis­tungs­starke Grafik beson­ders leise nutzt die glei­chen Con­troller und all­ge­mein das gleiche Zubehör wie das Vor­gän­ger­mo­dell, kann über­nommen werden. unter­stützt 4K und HDR sehr gute Gaming- und Sys­tem­per­for­mance VR-Spiele laufen besser als auf PS4. kann auch UHD-Blu-Rays und UHD-Videos abspielen leiser als Xbox One sehr gute Kamera viel­fäl­tige Multi­media-Funk­tionen gerin­gerer Strom­ver­brauch als Xbox One. leiser als PS4 ener­gie­spa­render als PS4 klei­nere Abmes­sungen als PS4. sehr guter Con­troller starke Farben höchstes Arbeits­tempo Fest­platte wech­selbar. starke Farben leise im Betrieb sehr gute Kamera viel­fäl­tige Multi­media-Funk­tionen geringer Strom­ver­brauch inkl. Quantum Break. inno­va­tive Spiel­steue­rung GamePad dient als zweiter Bild­schirm beson­ders gute Mul­ti­player-Spiele erhält­lich beson­ders geeignet für Fami­lien kann sowohl mobiler Hand­held als auch sta­tio­näre Kon­sole sein. Zum Angebot. Erhältlich bei* ca. 488 € ca. 499 € ca. 487 € ca. 499 € ca. 372 € ca. 428 € ca. 371 € ca. 412 € ca. 416 € ca. 420 € ca. 399 € ca. 260 € Preis prüfen. ca. 238 € ca. 378 € ca. 319 € Preis prüfen ca. 296 € ca. 324 € ca. 380 € ca. 341 € ca. 399 € ca. 335 € ca. 330 € Preis prüfen. ca. 299 € ca. 349 € ca. 329 € ca. 320 € ca. 359 € ca. 434 € ca. 329 € Jetzt Spielekonsolen bei eBay entdecken! Hat Ihnen dieser Vergleich gefallen? Vergleich empfehlen: Spielekonsolen-Kaufberatung: So wählen Sie das richtige Produkt. Mit einer Spielekonsole können Video-Games mit einem Controller auf dem Fernseher gespielt werden. Die bekanntesten und erfolgreichsten Konsolen sind die PlayStation von Sony, die Microsoft Xbox und die Nintendo Wii. Nicht alle Konsolen sind ähnlich ausgerüstet. Während die PlayStation 4 Pro, die PlayStaion 4 Slim, die Xbox One und die Xbox One S mit der neuesten Technik ausgestattet sind, handelt es sich bei der Wii U um eine technisch abgespecktere Variante, die vor allem durch ihre gesellschaftsfreundlichen Spiele für Familien geeignet ist. Konsolen haben eine große Spieleauswahl für jeden Geschmack. Zusätzlich ist das Gameplay innovativ und modern: Die Wii U kann beispielsweise mit einem Tablet-Controller gesteuert werden, die Xbox unterstützt Gesten- und Sprachsteuerung (Kinect). Die klassische Spielekonsole ist aus vielen Wohnzimmern kaum noch wegzudenken. Denn längst kann mit einer Konsole nicht nur gespielt werden. Als Herzstück des Wohnzimmers sollen die aktuellen Next-Generation-Konsolen die Aufgaben von DVD-Player und Co. übernehmen und die TV-Nutzung noch vielfältiger machen . Doch Konsole ist nicht gleich Konsole. Unser Überblick über Spielekonsolen-Tests offenbart viele Gemeinsamkeiten, aber auch gravierende Unterschiede – vor allem in Bezug auf Spielsteuerung und Multimedia-Funktionen. In unserem Konsolen Vergleich 2017 / 2018 erklären wir Ihnen, welche die beste Konsole für Ihre Ansprüche ist und worauf Sie achten sollten, wenn Sie eine Konsole kaufen möchten. 1. Playstation 2 ist bisher die erfolgreichste Spielekonsole. Ein Meilenstein in der Geschichte der Konsolen: die Super Nintendo-Konsole von 1990. Spielekonsolen für das TV-Gerät gibt es nicht erst seit PlayStation und Co. Die erste Konsole der Art, wie wir sie kennen, wurde Anfang der 1970er Jahre entwickelt und hörte auf den Namen Magnavox Odyssey. In den 80er Jahren war vor allem Atari als Marktführer bei den TV-Konsolen jedem jungen Menschen ein Begriff. Die Spieleklassiker Pong, Pac-Man und Frogger hätte es ohne die Atari-Konsolen vielleicht nie gegeben. Später griff Nintendo mit seiner Super Nintendo-Konsole nach der Gaming-Krone, ehe Sony mit seiner PlayStation in den 1990ern die Geschichte der Konsolen neu schrieb. Gerade der Konkurrenzkampf zwischen Nintendo und Sony prägte die technische Entwicklung der Spielekonsolen und der Konsolenspiele ungemein . Im neuen Jahrtausend kam mit der Xbox vom Software-Riesen Microsoft eine weitere Next-Gen-Konsole auf den Markt, die sich schnell etablieren konnte. Mittlerweile wird der Markt von PlayStation, Xbox und Wii dominiert – es gibt nur wenige erfolgreiche Alternativen, wie etwa die Ubuntu Konsole, die auf einem Linux-System basiert. Als bisher erfolgreichste Konsole gilt die PlayStation 2: Rund 155 Millionen Exemplare wurden weltweit verkauft (Statista 2016). Doch welche Konsole ist die richtige? Zocker, die bereits Vorerfahrung mit Computer- oder Konsolen-Gaming haben, sollten zur PlayStation 4 Pro, Plastation 4 Slim oder der Xbox One / Xbox One S greifen. Die Wii U aus dem Hause Nintendo kann technisch mit den zwei Next-Generation-Konsolen nicht mithalten. Für mehrere Spieler oder die ganze Familie ist die Wii U aber wie gemacht. Kleine Partyspiele und besonders Klassiker wie Mario Kart sind nur für Nintendos Konsole zu haben. Deshalb wird die Wii gerne als Zweitkonsole benutzt, während die Blockbuster-Games für PS4 und Xbox One vorgesehen sind. Wer graphisch und technisch anspruchsvoller zocken will, der ist mit der PlayStation 4 Pro und der Xbox One sowie ihren schmaleren Versionen auf der sicheren Seite. Die Vor- und Nachteile der Modelle aus den diversen Spielekonsolen-Tests hier nochmal im Überblick: alleine oder mit mehreren Spielern nutzbar große Spieleauswahl für jeden Geschmack vielfältige Multimedia-Funktionen internetfähig regelmäßige Updates für neue Funktionen ersetzt mehrere Geräte im Wohnzimmer ältere Spiele nicht immer abwärtskompatibel Internet-Zugang oft erforderlich Spiele und Zubehör sind relativ teuer. 2. Welche Spiele-Konsolen gibt es? Für wen ist welche Konsole geeignet? 2.1. PlayStation 4, Playstation 4 Slim und PlayStation 4 Pro. Weltweiter Marktführer: PlayStation 4 von Sony. Der Nachfolger der PlayStation 3 ändert nur in der angefügten Nummer seinen Titel und hört auf den Namen PlayStation 4. Die Konsole der 8. Generation ist ein echter Gaming-Klassiker und wird vom japanischen Elektronik-Riesen Sony hergestellt. Mit diesem Modell wurde die PS4-Konsole nicht nur schlanker und leichter als die PS3, sondern technisch auf den neusten Stand gebracht. Spiele und Filme kann die PS4-Konsole in Full HD-Auflösung oder sogar in 3D abspielen. Nicht nur die Grafik überzeugt: Insgesamt handelt es sich bei der PlayStation 4 um eine sehr leistungsstarke Konsole, die es auf dem (überschaubaren) Markt gibt. Die Bedienung erfolgt über kabellose Dual-Shock-Controller, die Ton- und Vibrationssignale ausstoßen können. Vielfältige Anschlussmöglichkeiten, eine große Spieleauswahl mit vielen populären Exklusivtiteln und umfangreiche Multimedia-Funktionen runden das gute Angebot ab. Die Gamer scheint es zu freuen: Bis Ende 2015 wurden rund 40 Millionen Konsolen seit dem PlayStation 4-Release weltweit verkauft. Der Hauptkonkurrent Xbox von Microsoft hinkt besonders in Deutschland – was die Verkaufszahlen anbelangt – um einiges hinterher. Tipp: Das ein oder andere Konsolen-Schnäppchen können Sie mit einem PS4 Bundle ergattern. Im Paket sind neben der Spielkonsole auch PS4 Spiele und Fan-Extras, wie beispielsweise ein PlayStation 4-Controller in einem besonderen Design. Im September 2016 ist Sony den gleichen Schritt wie Microsoft gegangen und hat eine schmalere, stromsparendere und leisere Version der PlayStation 4 herausgebracht: die Playstation 4 Slim. In Punkto Leistung und Können unterscheidet sich die Slim-Edition nicht von der ursprünglichen PS4. Daher ist anzunehmen, dass die PS4 Slim die „alte“ PS4 einfach ersetzten wird. Am 10. November 2016 hat Sony noch eine Premiumversion der PlayStaion 4 herausgebracht: die PlayStation 4 Pro . Die Konsole, die als Überbrückung zwischen den Generationen 4 und 5 dient, wartet mit erhöhter Rechenleistung auf und mit ihrem stärkeren Haupt- und Grafikprozessor erzeugt die Konsole stabilere Bildraten und kann Spiele und Streams in 4K abspielen. Vor allem für VR-Fans lohnt sich die PS4 Pro, da PlayStation VR-Spiele enorm von der höheren Rechenleistung profitieren, sodass eine detaillierte und flüssigere Darstellung möglich ist. Mit der PlayStation 4 Pro möchte Sony Besitzern von 4K-Fernsehern und Spieler erreichen, die sich eine bessere Grafik wünschen. Die PlayStation 5 soll dann im Jahr 2019 oder 2020 auf den Markt kommen . 2.2. Xbox One und Xbox One S. One Love: Die Xbox One ist die Next-Gen-Konsole aus dem Hause Microsoft. Die Spielkonsole aus dem Hause Microsoft erscheint in der 8. Generation und wird ebenfalls wie die PlayStation 4 als „Next-Gen-Konsole“ bezeichnet. Den Namenszusatz „One“ soll Microsoft gewählt haben, um darauf aufmerksam zu machen, dass es sich um eine „All-in-One“-Konsole handelt, die nicht nur für das Zocken gedacht ist, sondern auch andere Multimedia-Aufgaben im Wohnzimmer übernehmen soll. Die Benutzeroberfläche kann individualisiert werden, weshalb der erste Eindruck eher an das Menü eines Smart-TVs erinnert als an eine klassische Spielekonsole. Die Bedienung kann über einen kabellosen Controller erfolgen oder mittels der eigenen Software für Sprach- und Gestensteuerung mit dem Namen Xbox Kinect. Die Bewegungssensoren der Kinect-Technik wurden verbessert: Das Nachfolger-Modell kann auch Fingerbewegungen erkennen und selbst Drehungen wahrnehmen. Technisch betrachtet nehmen sich Xbox One und PlayStation 4 nur wenig. Schmaler und schneller als die Xbox One: die Xbox One S. Seit August 2016 ist nun die Xbox One S erhältlich, eine schlankere Version der Xbox One. Die neue Konsole ist hochwertiger verarbeitet, geräuscharmer und sparsamer. Nebenbei erfüllt sie noch die Funktion eines Ultra-HD-Players. Allerdings ist sie nicht in der Lage, Videospiele in 4K anzuzeigen. Weihnachten 2017 möchte Microsoft die leistungsstärkste Spielkonsole veröffentlichen, die der Markt je gesehen hat: die Xbox Scorpio . Diese Konsole soll mit sechs Teraflops Grafikleistung die erste Konsole für echtes 4K-Gaming und sehr realitätsnahes VR-Gaming (Spielen in einer virtuelle Realität) werden. Dabei soll sie weiterhin mit allen Xbox-Spielen und dem Zubehör kompatibel sein. Innovatives GamePad: Bei der Wii U von Nintendo steht der Controller im Vordergrund. Die Wii U kam ein Jahr früher auf den Markt als die anderen zwei Next-Gen-Konsolen und wählt einen anderen Ansatz der Spielweise. Schaut man sich die technischen Details genauer an, bemerkt man schnell, dass die Wii U auf eine andere Art ausgerüstet ist als die zwei Mitstreiter von Sony und Microsoft. Die Nintendo Konsole legt den Fokus auf eine innovative Steuerung durch einen Controller mit einem Touchscreen, der größer ist als die meisten Smartphones. Mithilfe des Tablet-Controllers, der auch durch normale Controller ersetzt werden kann, entsteht eine neue Art des Gameplay. Auch abseits der Konsole kann man mit dem GamePad Wii-Spiele zocken – fast wie früher mit Nintendos GameBoy oder dem Nintendo DS. In Sachen Hardware und Spieleauswahl kann die Wii U nicht mit den anderen zwei Konsolen mithalten – muss sie aber auch nicht. Die Nintendo-Konsole ist hauptsächlich für Gelegenheitsspieler gedacht, bietet Fitness-Programme an und kommt gerade in Familien oft zum Einsatz. Da die Spiele längst nicht so hochauflösend und realitätsgetreu sind, wie die Spiele für Xbox / Xbos S oder Playstation 4 / PlayStation 4 Slim, werden beispielsweise Ego-Shooter-Fans mit einer Wii U eher nicht glücklich. Wer vor allem Spaß an den Spielen rund um Super Mario, Luigi, Yoshi und Peach hat, für den ist die Konsole von Nintendo ein Muss. Denn nur hier werden die Kult-Spiele, wie beispielsweise Mario Kart oder Mario Party herausgebracht. Richtige Zocker sind bei den Ausführungen der PlayStation und der Xbox gut aufgehoben, vor allem wegen der größeren Spieleauswahl, der moderneren Technik und der Multimedia-Funktionen. Bewegungsspiele und Partyspiele mit mehreren Spielern machen auf der Wii-Konsole aber eindeutig mehr Spaß – die Wii-Spiele sind besser darauf ausgelegt. Wer einen Film mit der Wii schauen möchte, kann dies nur über Streaming-Portale machen – wer eine DVD oder Blu-Ray sehen möchte, sieht nur schwarz. 3. Kaufkriterien für Konsolen. Was die Hardware anbelangt, nehmen sich PlayStation und Xbox kaum etwas, dagegen sind die Unterschiede zur Nintendo Wii U gewaltig. Beim Funktionsumfang gibt es ebenfalls deutliche Unterschiede. Wer noch nicht herausgefunden hat, wo die Reise konsolentechnisch hingehen soll, kann in der folgenden Kaufberatung zu den einschlägigen Spielekonsolen-Tests die Produktdetails und Kategorien genauer unter die Lupe nehmen. 3.1. Festplattenspeicher. Beim Spiel „Wii U Party“ fungiert das Wii U-GamePad als erweiterter Bildschirm. Der Festplattenspeicher der Geräte aus den Spielekonsolen-Tests ist entscheidend für die Installation neuer Spiele, sollte aber in Zeiten der Cloud-Speichermöglichkeiten nicht mehr die allerwichtigste Rolle spielen, wenn Sie eine Spielekonsole kaufen möchten. Außerdem kann über den USB-Port eine externe Festplatte an die Konsolen angeschlossen werden. Die beiden High-End-Konsolen gibt es jeweils in einer 500 GB- und einer 1 TB-Variante, wobei 500 GB für normale Zocker definitiv ausreichen. Für echte Vielspieler eignet sich die Xbox One S, da diese sogar in einer 2 TB-Version erhältlich ist . Die Wii U kommt mit bis zu 32 GB um die Ecke, allerdings nutzen die Spiele und Apps auch nicht so viel Festplattenspeicher. Wer nachrüsten möchte, kann bei der PS4 die Festplatte selbstständig gegen eine größere austauschen, bei der Xbox und der Wii hingegen ist der interne Festplattenspeicher fest verbaut. 3.2. Auflösung und Grafik. Die Grafik von Spielen wie Call of Duty lässt sich auf einem Full-HD-Fernseher am besten genießen. Was Auflösung und Grafik anbelangt, setzen die PlayStation 4 und die PS4 Slim das Maß aller Dinge in unserem Spielekonsole Vergleich. Viele PS4-Spiele laufen in Full HD, während Gamer sich bei der Xbox One mit HD-Qualität zufrieden geben müssen. Doch hat Microsoft mit der Xbox One S diesen Rückstand wieder aufgeholt, denn diese kann 4K-Videos streamen und Filme in Ultra-HD abspielen. Die Wii U schafft eine maximale Auflösung in HD-Qualität, dafür sind die meisten Spiele jedoch auch nicht so hoch aufgelöst. Achten Sie darauf , dass Sie einen hochauflösenden Fernseher oder Smart-TV besitzen, damit Sie den vollen Grafik-Umfang der Videospiele und der Geräte aus unserem Konsolen Vergleich voll ausnutzen können. 3.3. Datenkommunikation und Updates. Der Xbox One-Wireless Adapter ermöglicht es beispielsweise, den Xbox One-Controller ohne USB-Kabel für den PC zu nutzen. Um alle Vorzüge der Spielekonsolen genießen zu können, ist eine Internetverbindung von großer Bedeutung. Zur ersten Inbetriebnahme benötigen die Xbox-Konsolen und die PlayStation Konsolen zwingend eine Internetverbindung über WLAN , um wichtige Updates und Patches herunterzuladen. Bei der Xbox One wird z. B. ein Paket heruntergeladen, das einige anfängliche Kritikpunkte (Gebrauchtspielsperre und Online-Zwang) aufhebt. Generell leisten sich beide Next-Gen-Konsolen einen ständigen Konkurrenzkampf um den besten Platz im Gamer-Herzen, weshalb sowohl Sony als auch Microsoft ihre Spielkonsolen regelmäßig mit neuen Updates und Erweiterungen wie Abwärtskompatibilitäten, speziellen Gadgets oder neuen Apps ausstatten. 3.4. Multimedia-Qualitäten. In Sachen Multimedia-Funktionen liegen in den verschiedenen Spielekonsolen Test die beiden Xbox One-Konsolen vorne . Die Konsolen möchten Multimedia-Schaltzentrale im Wohnzimmer sein und alle Heimkino- und TV-Komponenten unter einem Dach versammeln. Mit den beiden Konsolen aus dem Hause Microsoft lassen sich Blu-Rays (auch 3D-Blu-Rays), DVDs und CDs abspielen oder Videos, Musik und Fotos über den USB-Eingang von einem externen Datenträger präsentieren. Diese sinnvollen Multimedia-Features gibt es aber auch auf der PlayStation. Den Unterschied macht Microsoft, indem ein besonders großer Wert auf die Verbindung zum TV-Gerät bei der Xbox gelegt wird: An die Konsolen lassen sich Kabel- oder Sat-Receiver anschließen, sodass alles über den Controller oder die Kinect-Sprach- und Bewegungssteuerung bedient werden kann. Alle Produkte aus den unterschiedlichen Konsolen-Tests 2017 / 2018 haben eine Benutzeroberfläche für Multimedia-Apps wie Netflix, YouTube und Co. Die Wii U kann jedoch keine DVDs und Blu-Rays abspielen, auch Videos von externen Datenträgern laufen dort nicht. 3.5. Spieleauswahl. Ein echter Klassiker: das Rennspiel Mario Kart. Bei der Wii U ist die Spieleauswahl etwas begrenzt und zielt vor allem auf eine familiäre Zielgruppe. Die Plattform von Nintendo liefert jedoch spannende Exklusivtitel und hat viele Wii Spiele, die sich in der Geschichte der Spielekonsolen zu echten Klassikern entwickelt haben. Vor allem die Welt um Mario, Luigi, Yoshi und Co. hat eine treue Fangemeinde. Die PlayStation 4 und die Xbox One haben ebenfalls eine große Anzahl an Exklusiv-Titeln – viele bekannte und erfolgreiche Spiele laufen jedoch auf beiden Plattformen gleichermaßen. Die Xbox One hat ein paar Exklusiv-Spiele mehr im Angebot als die PlayStation ; die bloße Anzahl sagt aber natürlich noch nichts über die Qualität der Spiele aus. Insgesamt werden die meisten Spiele für PS4 und Xbox One entwickelt , während die Auswahl für die Wii Konsole nicht ganz so umfangreich ist. Die beliebtesten Titel und Genres sind aber für alle Modelle aus unserem Spielkonsole Vergleich erhältlich – Sie werden garantiert fündig. Einen guten Einblick, welche Szenarien in verschiedenen Spielen für die Geräte aus unserem Spielekonsolen Vergleich behandelt werden, gibt es in folgendem Video: 3.6. Abwärtskompatibilität. Lassen sich meine alten Konsolenspiele auch auf der neuen Spielekonsole zocken? Ein großes Thema für Besitzer der Vorgängermodelle PlayStation 3, Xbox 360 und Wii ist die Spielbarkeit älterer Spiele auf der neuen Konsole. Zum Verkaufsstart waren weder die Xbox One noch die PlayStation 4 abwärtskompatibel. Durch Software-Updates ist Microsoft vorgeprescht und hat die Xbox One abwärtskompatibel gemacht : Die meisten Spiele der Xbox 360 lassen sich auch auf der neuen Konsole zocken. Jeden Monat kommen neue Xbox Spiele hinzu, die auf der neueren Konsole spielbar sind. Bei der PlayStation von Sony sieht es diesbezüglich hingegen düster aus: Nur Spiele der PlayStation 2 können auf der PS4 / PS4 Slim gespielt werden , was vor allem Nostalgiker und ältere Gamer interessieren wird. Besitzer einer PS3 schauen hingegen in die Röhre. Bei der Wii U sind nahezu alle Spiele des älteren Bruders Wii kompatibel. Dafür gibt es auf der Wii U einen eigenen Wii-Modus, der die neue Konsole in eine herkömmliche Wii verwandelt. Ganz alte Konsolen-Spiele (z. B. Spiele von Retro-Konsolen wie der Atari-Konsole oder der Sega-Konsole) können aufgrund der veränderten Technik auf keiner der Spielekonsolen gespielt werden. 3.7. Controller. Konsolen-Zubehör: Die Controller von PS4 und Xbox One nehmen sich grundsätzlich nicht viel. Beide wurden im Hinblick auf die Controller von PS3 und Xbox 360 ergonomisch aufgerüstet und liegen besser in der Hand. Die Signalübertragung erfolgt über Bluetooth, deshalb gehören Kabelsalat und geringe Kabellängen der Vergangenheit an. Auf dem Controller der PlayStation von Sony gibt es neuerdings einen Share-Button, der es erlaubt, das Gameplay in Echtzeit über Gaming-Seiten zu streamen und einem Publikum zugänglich zu machen. Dort können dann andere Spieler oder Freunde zuschauen oder weiterhelfen, wenn man nicht mehr weiterkommt. Außerdem können mit der Share-Taste Bilder und Videos direkt in soziale Netzwerke hochgeladen werden. PlayStation 4 Controller. Auf der Vorderseite der PS4-Controller befinden sich LED-Lämpchen, die in unterschiedlichen Farben leuchten können. So erhält jeder Spieler seine eigene Farbe oder die Farbe ändert sich je nach Spielverlauf, z. B. wenn der gesteuerte Charakter in eine neue Welt eintritt oder sein Leben verliert. Durch die LED-Leuchte kann eine Kamera, die als PlayStation 4-Zubehör dazugekauft werden kann, die Position des Controllers im Wohnzimmer orten, was für manche Spiele wichtig sein kann. Außerdem besitzt der PS4-Controller ein kleines Touchpad, eingebaute Lautsprecher und einen Headset-Anschluss. Tipp: Die Akkulaufzeit des PS4-Controllers kann verlängert werden, wenn Sie die Helligkeit der LED-Lampen dimmen. Unter den Menüpunkten „Einstellungen“, „Geräte“ und „Controller“ lässt sich die Leuchtleiste anpassen. Der Xbox One-Controller ist ähnlich aufgebaut, wirkt insgesamt aber etwas klobiger. Die angesprochenen neuen Features der PS4-Controller sind ähnlich oder genauso beim Xbox One-Controller hinzugefügt worden. Während der Controller der PlayStation per USB-Kabel regelmäßig aufgeladen werden muss, können in die Xbox Controller auch zwei handelsübliche AA-Batterien eingesetzt werden. Innovative Spielsteuerung via Touchscreen: das GamePad der Wii U. Der Controller der Wii U von Nintendo ist ein echtes Alleinstellungsmerkmal in den diversen Spielkonsolen-Tests und erinnert viel mehr an ein Tablet. So entsteht ein „Second Screen“, auf dem zusätzliche Inhalte zum Spiel auf dem Fernseher verfügbar sind. Der 6,2 Zoll-Touchscreen kann neben den normalen Bedienelementen, wie Steuerkreuz und Tasten, zur Steuerung des Spiels eingesetzt werden. Bei einigen Spielen lassen sich kleine Mini-Games auf dem Controller selbst spielen, bei anderen Spielen wird der Controller klassisch genutzt. Mit eigenem Lautsprecher, Mikrofon, NFC-Kontaktstelle und Kamera ausgestattet, kommt dem Spieler der Controller eher wie ein Smartphone vor. Die von Nintendo eingebauten Beschleunigungssensoren ermöglichen eine intuitive Bewegungssteuerung. Einen vergleichbaren Controller oder eine ähnliche Steuerung gibt es auf dem Konsolen-Markt bisher noch nicht. Wer nicht so gerne mit dem Touchpad spielen möchte, kann neben den üblichen Wii-Fernbedienungen den Wii U Pro Controller als Wii U-Zubehör dazukaufen. Er erinnert stark an die Xbox One-Controller. 3.8. Online-Abo. Um den vollen Umfang der Konsole und ihrer Spiele genießen zu können, lohnt es sich, die Spielekonsole mit dem Internet zu verbinden. D ie Hersteller aus den verschiedenen Konsolen Tests haben ihre eigenen Online-Portale, bei denen durch eine Mitgliedschaft und Zahlung eines Beitrags für einen zeitlich begrenzten Zutritt viele Features und Extras zur Verfügung stehen und heruntergeladen werden können. Bei der Wii ist kein Online-Zugang nötig, es kann auch ohne Registrierung gespielt werden. Doch um die Blockbuster-Spiele der Next-Gen-Konsolen aus unserem Konsolen Vergleich spielen zu können, benötigen Sie in der Regel einen kostenpflichtigen Account. Sie können die Mitgliedschaft entweder im Voraus bezahlen (z. B. für drei oder zwölf Monate) oder Ihren Account mit einem Guthaben ausstatten. Die Basis-Funktionen erhalten Sie mit einem kostenlosen Account, der verpflichtend für das Spielen der meisten Games und spiele-Neuheiten ist. Für Mehrspieler-Modi, Erweiterungen, Extras und Apps wird der Nutzer des Online-Netzwerks der Spielkonsolen jedoch an die Kasse gebeten. Eine Mitgliedschaft kostet ca. 5 Euro pro Monat. PlayStation und Xbox haben ein umfangreiches Angebot in ihrem Online-Portal: Zusätzlich gibt es regelmäßig Angebote und Rabatte für Playstation-Spiele , kostenlose Games zum Download und die Möglichkeit, die Spielstände in einer Cloud zu speichern. Während die kostenlosen Playstation-Spiele mit dem Ablauf der Mitgliedschaft verschwinden, also nur geliehen werden, lassen sich die gebührenpflichtigen Games weiterhin spielen. Ohne die Gold-Mitgliedschaft können die Videochat- oder Mehrspielerfunktionen nicht benutzt werden. Mit dem Programm Games with Gold bekommen Mitglieder zwei Spiele pro Monat für die Xbox One kostenlos zum Download angeboten. Am Anfang eines jeden Monats erscheint ein neues Spiel, das nach zwei Wochen durch ein weiteres Spiel ersetzt wird. 4. Fragen und Antworten rund um das Thema Konsolen. 4.1. Wo kann ich Konsolen kaufen? Wenn Sie Spielekonsolen kaufen möchten und sich bereits für eine Spielekonsole nach Ihrem Geschmack entschieden haben, gibt es verschiedene Möglichkeiten, den potenziellen Spielekonsolen Vergleichssieger fürs Wohnzimmer zu ergattern: In Elektro-Fachmärkten, Gaming-Läden oder im Internet können Sie die PlayStation, Xbox oder Wii kaufen. Tipp für Sparfüchse: Wir empfehlen im Hinblick auf Spielekonsolen Tests die so genannten Bundles. Gemeinsam mit Spielen, Zubehör oder Fan-Gadgets kann mit einem Xbox One-Bundle, Nintendo Wii U-Bundle oder PlayStation 4-Bundle eine Menge Geld gespart und so ein Konsolenschnäppchen samt Zubehör ergattert werden. 4.2. Kinder und die Wii U: Ab welchem Alter eignet sich die Konsole? Weil die Nintendo Wii U als kinder- und familienfreundliche Konsole gilt, findet sie immer öfter Einzug in die Kinderzimmer. Doch auch wenn die Wii-Spielekonsole als beste Spielekonsole für Familien, Kinder und Minderjährige geeignet ist: Es kommt nicht auf die Konsole an sich an, sondern auf die Spiele . Ein guter Indikator dafür, ob ein Spiel für Ihr Kind geeignet ist, bietet das Siegel der USK, das auf jedem Game prangt. Die Spiele werden von der USK regelmäßig auf ihre Jugendfreigabe untersucht, bevor sie auf den Markt kommen. Wichtig für die Entwicklung eines Kindes ist zudem die tägliche Spieldauer, egal mit welchem Modell aus den einschlägigen Konsolen Tests gespielt wird. Generell wird von Pädagogen empfohlen, dass die tägliche Spieldauer für Kinder unter sechs Jahren 20 bis 30 Minuten am Stück nicht überschreiten sollte. Für ältere Kinder bis 12 Jahren sollte die Spielzeit pro Tag maximal 30 bis 45 Minuten betragen. 4.3. Welcher Fernseher eignet sich für Konsolen am besten? Full-HD- und 4K-Fernseher eignen sich ideal zum Zocken mit den Spielekonsolen. Wer ein technisch anspruchsvolles Produkt aus den Spielekonsolen-Tests in seinem vollen Umfang genießen möchte, sollte die richtigen Rahmenbedingungen schaffen. Selbst die besten Spielekonsolen bringen nicht viel, wenn Sie das Gerät an einen alten Röhrenfernseher anschließen. Die Spiele-Konsolen von Sony und Microsoft können Spiele und Filme in Full HD und sogar 3D abspielen – dementsprechend sollten Sie mindestens einen HD-Fernseher besitzen. Vor allem Smart-TVs und 4K-Fernseher eignen sich ideal zum Zocken, um die für Sie beste Spielekonsole auch voll ausnutzen zu können. 4.4. Was sagt die Stiftung Warentest? Die Stiftung Warentest hat die neueren Modelle der Spielkonsolen bisher noch nicht getestet, deshalb können wir Ihnen keinen Konsolen Vergleichssieger der Stiftung präsentieren. In einem Konsolen Test aus der Ausgabe 05/2011 wurden jedoch die Vorgänger-Typen PlayStation 3, Xbox 360 und Wii auf Herz und Nieren geprüft. Das wenig überraschende Ergebnis: Spaß kommt bei allen Produkten aus dem Spielkonsole Test auf. Besonders gelobt wurde die Gestensteuerung durch die Kinect-Technologie bei der Xbox , dafür hält das Prüfinstitut die PlayStation für vielseitiger. Ein aktueller Spielkonsolen Vergleich der Stiftung Warentest mit den neueren Modellen aus unserem Konsolen Test 2017 / 2018 steht allerdings noch aus. Jetzt Spielekonsolen bei eBay entdecken! Hey, cooler Konsolenvergleich! Es wird auf eine xbox herauslaufen bei mir. Wir haben ein großen Wohnzimmer und einen Beamer, wie weit reichen die Controller der xbox so ungefähr? Wisst ihr das? die Controller der Xbox sind laut Herstellerangaben für eine Reichweite bis zu 10 m ausgelegt. Viel Spaß beim Zocken wünscht. Ihr Vergleich.org Team. Ähnliche Tests und Vergleiche - Gaming. Gaming Gamepad. Ein Gamepad wird auch Joypad genannt und ist ein Eingabegerät für Konsolen- und auch Computerspiele… Gaming Gaming-Mousepad. Gaming-Mauspads zeichnen sich durch eine sehr gleitfähige Oberfläche aus, sodass der Spieler seine Maus besonders präzise führen kann. Damit er auch … Gaming Gaming-Stuhl. Für das erfolgreiche Zocken am Computer sind verschiedene Faktoren ausschlaggebend. Neben dem Hardware-Equipment ist ein guter Gaming-Sessel für den … Gaming Joystick. Legen Sie Wert auf ein authentisches Fluggefühl, sollten Sie einen Joystick mit separatem Schubregler wählen. Ein separater Schubregler hat den … Gaming Lego Dimensions. Lego Dimensions ist der neueste Streich der Spielefirma, der in Kooperation mit Warner Bros. erfolgte und beliebte Formate wie Herr der Ringe, … Gaming Wii-Controller. Nintendo bietet seinen Fans zwei Arten von Wii-Controllern: Neben einem klassichen Controller gibt es für die Wii und die Wii U einen weiteren … Gaming PC-Lenkrad. Ein PC-Lenkrad mit Pedalen für Gas, Bremse und produktabhängig auch Kupplung bringt das Rennfeeling weitaus besser zum Tragen als ein Gamepad oder die… Gaming PS4-Bundle. Mit PS4 Bundles lässt sich einiges an Geld sparen: Meistens mit einem Spiel ausgestattet, kommen Sie mit einem PlayStation Bundle günstiger weg als … Gaming PS4-Headset. Ein PS4-Headset ist eine Kombination aus Kopfhörern und Mikrofon. Die Kopfhörer geben inzwischen oftmals bis zu 7.1-Surround-Sound wieder; das … Gaming PS4 Lenkrad. Ein PS4-Lenkrad gilt besonders unter Rennspiel-Fans als praktisches Zubehör für die PlayStation 4, mit dem beim virtuellen Fahren ein realistisches … Gaming PS4-Spiele. Mittlerweile gibt für die Playstation 4 allein 435 Exklusivtitel – also Spiele, die ausschließlich für die Playstation 4 erschienen sind… Gaming Xbox-One-Bundle. Die Xbox One ist seit dem 22. November 2013 (und damit genau 7 Tage Länger als die PlayStation 4) auf dem europäischen Markt erhältlich. Die vielen … Test: Samsung Galaxy Nexus i9250 (Handy) Die nexte Generation. Samsung Galaxy Nexus i9250. Hightech-Smartphone mit brillantem Display, guter Performance und brandneuem, leistungsstarkem OS. Kamera und Akustik sind nur Durchschnitt. Preis: 530 Euro HD-Super-AMOLED-Display mit "Wow"-Effekt Enorm schnelles Internet per WLAN Top-OS Android 4.0 mit virtuellen Tasten Ausdauernder Akku Schlank und leicht Unzдhlige Spezial-Features Nur durchschnittliche Kamera Schlechter Freisprecher Bestenlisten Platzierung: Samsung Galaxy Nexus i9250. Eine Auflösung von 1.280 x 720 Pixel auf einem knapp 4,7 Zoll großen Super-AMOLED-Display ist auf dem Smartphone-Markt bislang einzigartig. Die Darstellung wirkt erstklassig: Top-Schärfe und -Kontrast kombiniert mit beeindruckenden Farben sind die Merkmale dieses AMOLEDs. Das Betrachten von HD-Inhalten ist auf dem großen Nexus-Bildschirm ein Augenschmaus. Eine weitere Stärke des Touchscreens: Er reagiert schnell und präzise auf Fingereingaben. Im Galaxy Nexus arbeitet ein 1,2 GHz starker Dualcore-Prozessor. Kein Novum, im Galaxy S2 arbeitet eine gleichwertige CPU. Auch der RAM-Speicher misst bei beiden Smartphones 1 GByte. Und auch bei der Grafikleistung zeigt sich das Galaxy Nexus auf Augenhöhe mit den Ausnahme-Smartphones Galaxy S2 und iPhone 4S. Laut Google können Sie zudem via Bluetooth oder USB einen Game-Controller mit dem Nexus zu verbinden. Über den MHL-kompatiblen USB-Anschluss und einen optional erhältlichen HDMI-Adapter (etwa 25 Euro) übertragen Sie das Display-Bild auf einen HD-TV: Fertig ist die Spiele-Konsole. Im Browsermark-Test (brmark) schlägt das Galaxy Nexus mit 99.312 Punkten die in dieser Kategorie bislang führenden Geräte iPhone 4S und HTC Sensation XL deutlich. Auch im Vellamo-Benchmark für Android-Modelle erzielt es einen neuen Bestwert. 1.071 Punkte trotz einer Nullrunde in der Flash-Kategorie (wird laut Google und Adobe im Dezember nachgereicht) sprechen für ein optimales Zusammenspiel zwischen Hard- und Software. Augenscheinlich bewahrheitet sich Googles Versprechen, Android 4.0 werde eine deutlich verbesserte Hardware-Beschleunigung bieten. Der Online-Speed des Galaxy Nexus verdient volles Lob: Via WLAN baut der Browser unsere 600 KByte große Testseite nach gerade mal 1,8 Sekunden auf - neuer Bestwert! Übers Mobilfunknetz arbeitet das Nexus mit HSPA+ und lässt sich 5,1 Sekunden Zeit, bis es die Seite vollständig auf dem Bildschirm zeigt. Beim Öffnen von Browser, Kontakten und Nachrichten entpuppt sich das Smartphone mit Zeiten von maximal einer Sekunde zwar nicht als rekordverdächtig schnell, bewegt sich aber auf konstant hohem Niveau. Android ist erwachsen geworden! Die ersten Anzeichen deuteten sich bereits an, als der kunterbunte Wirrwarr namens Android-Market vor wenigen Monaten ein neues Design bekam. Ähnlich gestaltet sich das auch bei Ice Cream Sandwich. Gediegene, souverän und erwachsen wirkende Farben und Symbole prägen das neue Android-Bild. Die untere Menütaste verschwand komplett, in die Einstellungen gelangen Sie jetzt über ein On-Screen-Symbol, das Google in sämtlichen Anwendungen sinnvoll platzierte. Das Besondere am Galaxy Nexus: Die verbliebenen Tasten „Zurück“, „Home“ und die neue „Recent Apps“-Taste sind komplett virtuell. Sowohl funktional als auch hinsichtlich des Designs eine gute Entscheidung. Bei aller Euphorie über HD-Display, Grafik-Prozessor und Betriebssystem: Ein Handy muss aber auch die Grundanforderungen der Nutzer erfüllen. Beginnen wir mit der Kamera. Auf Software-Seite gibt es eine Verbesserung zum Nexus S, die Kamera löst deutlich schneller nun aus. Die Qualität der Fotos jedoch ist nur Durchschnitt. Zwar produziert die 5-Megapixel-Cam bei Tageslicht durchaus scharfe und hübsche Bilder. Schwierige Lichtverhältnisse und dunkle Umgebung verursachen jedoch verrauschte und unscharfe Fotos, wie unsere Testfotos zeigen. Das Testvideo des verbauten 1080p-Camcorders fällt etwas rauschig, aber sehr scharf und farbecht aus. Das Galaxy Nexus ist in erster Linie ein Hightech-Spielzeug - und in zweiter ein Handy. Das bislang technisch innovativste Android-Smartphone mag in Sachen Sprachqualität und Kamera eher durchschnittlich sein, doch die Top-Features machen dies wieder wett. Das schlanke und große Smartphone brilliert mit einem beeindruckenden Display und der brandneuen Android-4.0-Version. Mit dem Nexus erhalten Sie ein außergewöhnliches Smartphone mit unzähligen Apps fürs Surfen, Zocken und jeder Menge Extras. Google liefert im dritten Anlauf einen echten Android-Riesen ab. wenn auch noch für satte 530 Euro (Stand: 9.12.11). Die Alternative liegt auf der Hand. Das Samsung Galaxy S2 liefert sich einen harten Schlagabtausch mit dem Galaxy Nexus. Letztlich ist es Geschmackssache, für welches der beiden Smartphones Sie sich entscheiden. Die harten Fakten: Kamera und die Gesamt-Performance toppen das Nexus, zudem können Sie den Speicher erweitern. Auch der mit unter 400 Euro deutlich günstigere Preis spricht für das S2. Bleibt nur die Frage, ob und in welcher Form Android 4.0 auf das Smartphone kommen wird. Darüber schweigt Samsung hartnäckig. Top-Handys im Test. CHIP Handy-Videos. Die beliebtesten Handys. Apple iPhone 8 64GB. Samsung Galaxy S8. Samsung Galaxy S7. Samsung Galaxy S8 Plus. Alle Angebote anzeigenQuelle: BestCheck Preisvergleich. Die beliebtesten Produkte. Apple iPhone 8 64GB. Microsoft Windows 10 Pro 32/64Bit DE (FQC-08922) Samsung Galaxy S8. Samsung Galaxy S7. Alle Angebote anzeigenQuelle: BestCheck Preisvergleich. Top HTC Vive-Downloads aller Zeiten. Virtual Desktop 1.0.5. Mit der Kauf-App "Virtual Desktop" sehen Sie Ihren PC-Desktop mittels den VR-Brillen "HTC Vive" und "Oculus Rift" in 3D. Revive - Oculus-Spiele mit HTC Vive. Das kostenlose Tool "Revive" ist für Sie von essenzieller Bedeutung, wenn Sie Oculus-exklusive Games auf Ihrer HTC Vi. Job Simulator für HTC Vive. Im "Job Simulator" für das HTC-Vive VR-Headset verbreiten Sie Chaos in vier verschiedene Berufen. FCAT VR (VR Benchmark) 3.9.0.0. Nvidia bringt mit "FCAT VR" eine kostenlose Benchmark-Software für VR Games auf den Markt. Surgeon Simulator VR für HTC Vive 1.0. Im "Surgeon Simulator VR" führen Sie in der virtuellen Realität selbst eine Herztransplantation durch. Dabei ist der . SPACE (VR Desktops) Beta #17.12.16. Mit der kostenlosen Beta-Version von SPACE holen Sie sich den Browser und andere Funktionen mittels Oculus Rift oder . Cloudlands: VR Minigolf für HTC Vive 0.7.3. In "Cloudlands: VR Minigolf" spielen Sie alleine oder gegen Ihre Freunde Minigolf am PC. Raspberry Pi: Die 8 häufigsten Probleme einfach lösen. 06.02.2016 | 10:01 Uhr | Stephan Lamprecht. Wer achtsam mit dem kleinen Platinenrechner umgeht, wird lange seine Freude am Raspberry Pi haben. Aber wie jede Hardware hat auch dieser seine typischen Fehlfunktionen. Wir haben Probleme, Ursachen und Lösungen zusammengestellt. Bei einem typischen Bastler-Board wie dem Raspberry Pi lassen sich Fehlfunktionen und Probleme nie völlig ausschließen. Die Suche nach der Ursache ist nicht immer ganz leicht, da im Zweifel auch ein externes Bauteil Schuld am aufgetretenen Problem sein kann. Im Folgenden besprechen wir die nach unserer Erfahrung häufigsten Fehlerquellen. Ein Tipp vorneweg: Sollte ihr alter Raspberry sich trotz aller Versuche nicht wiederbeleben lassen, greifen Sie am besten gleich zum neuen Modell für das gleiche Geld. 1. Kein Systemstart: Der Datenträger scheint beschädigt. Wenn sich der Raspberry Pi, Model A oder Model B spielt hier keine Rolle, weigert, überhaupt zu starten, sind Probleme mit der SD-Karte die wahrscheinlichste Ursache. Wenn Sie den Minicomputer gerade erstmals in Betrieb nehmen wollen und er nicht reagiert, prüfen Sie zunächst, ob Sie beim Aufspielen des Betriebssystems einen Fehler gemacht haben. Wird die Karte in das Lesegerät eines PCs gesteckt, müssen Sie dort die Bootpartition für den Raspberry sehen. Diese besteht unter anderem aus den Dateien „start.elf“ und „kernel.img“. Fehlen diese Dateien, kann der Pi definitiv nicht starten. Versuchen Sie in diesem Fall, das Image des Betriebssystems zurückzuspielen (siehe Kasten „Backup der SD-Karte“). Raspberry 2 Model B. Beobachten Sie bei Startproblemen ferner genau die LEDs der Platine: Der Raspberry gibt mit dem Blinken der LEDs Hinweise auf die Problemursache. 2. Raspberry-Display bleibt dunkel. Sie haben einen externen Monitor angeschlossen, aber nach dem Start des Systems ist darauf nichts zu sehen? Dann wiederholen Sie den Startvorgang, und behalten Sie die LED im Blick. Liefert das System auf diesem Weg keine Hinweise, kann auch schlicht ein Fehler in der Kommunikation mit dem Display die Fehlerursache sein. Da der Raspberry kein Bios im üblichen Sinn besitzt, nehmen Sie auf einem Linux- oder Windows-Rechner Einstellungen in einer Textdatei vor, die auf der Speicherkarte liegt. Öffnen Sie die Datei „config.txt“ auf der Karte mit einem Texteditor Ihrer Wahl. Fügen Sie die Zeile. hinzu. Speichern Sie die Datei, und legen Sie die Karte wieder ein. Verbinden Sie danach das Kabel des externen Geräts mit der Platine. Kontrollieren Sie dabei den Sitz des Kabels. Einige Gehäuse setzen das Kabel unter Zug und verhindern damit die optimale Übertragung. Verbinden Sie den Raspberry dann mit der Stromversorgung, und kontrollieren Sie, ob das Problem damit behoben ist. 3. Wacklige Stromversorgung. Wenn die rote LED des Raspberry blinkt oder unregelmäßig leuchtet, stimmt etwas mit der Stromversorgung nicht. Ein anderes Symptom mit der gleichen Ursache zeigt sich in einem Abbruch der Netzwerkverbindung, sobald ein Gerät in den USB-Anschluss gesteckt wird. Wenn die Stromversorgung nach dem berüchtigten „Blinkerprinzip“ arbeitet, kontrollieren Sie das Kabel zunächst auf einen Bruch. Nutzen Sie zur Stromversorgung des Pi ein externes Netzteil, das stabil fünf Volt abliefert. Andere Anschlüsse, auch wenn diese passend erscheinen, wie die Verbindung mit einem aktiven USB-Hub, liefern nicht ausreichend Energie. Schließen Sie Maus und Tastatur immer direkt an den Raspberry an. Wollen Sie einen starken Verbraucher wie eine externe Festplatte am Raspberry einsetzen, verbinden Sie dieses Gerät mit seiner eigenen externen Stromversorgung oder einem USB-Hub mit eigener Stromversorgung. Hegen Sie den Verdacht, dass ein Schaden auf der Platine schuld ist, nutzen Sie ein Voltmeter. Das Modell der ersten Generation besitzt zwei Messpunkte TP1 und TP2. Die gemessene Spannung sollte nicht unter 4,97 Volt liegen. Die beiden Punkte sind ordentlich beschriftet und befinden sich direkt neben dem Videoausgang und unterhalb des Flachbandanschlusses unter dem Raspberry-Logo. Auf dem Board des Pi 2 sind statt der Buchsen zwei Pads auf der Rückseite vorhanden. Sie sind mit PP3 und PP7 markiert und liegen in der rechten unteren Ecke der Platinenrückseite. Kleines buntes Quadrat auf dem Display: Der neue Raspberry 2 signalisiert eine unzureichende Stromversorgung mit dem Löschen der Power-LED. Nutzen Sie etwa Raspbian als Betriebssystem, wird das Signal des Pi aufgegriffen und in Form eines bunten kleinen Vierecks in der rechten oberen Ecke des Monitors ausgegeben. Es handelt sich nicht um einen Pixelfehler, sondern um die Visualisierung der Systemmeldung. Ein besseres USB-Ladekabel, eine Reduzierung des Stromverbrauchs durch externe Komponenten oder der Einsatz eines besseren Ladegeräts sollten das Quadrat zum Verschwinden bringen. Die Raspberry-LED-Signale beim Startvorgang. Gerät ohne Strom. Verkabelung überprüfen. Anderes Netzteil einsetzen. An/aus im Wechsel. Störung (rote LED „blinkt“ nicht) Netzteil liefert nicht stabil Strom: Netzteil wechseln oder Peripherieverbraucher anderweitig versorgen. kein bootfähiges Image. Karte auf Bootimage überprüfen. Problem mit Peripherie-Gerät. Raspberry ohne Peripherie starten. Wenn grüne LED für 20 Sekunden blinkt, Peripherie Stück für Stück anschließen und neu booten. „Loader.bin“ nicht gefunden. Inhalt der SD-Karte kontrollieren. „Loader.bin“ nicht geladen. Start erneut versuchen. Anderes Image ausprobieren. „start.elf“ nicht gefunden. Inhalt der Karte kontrollieren. „start.elf“ nicht geladen. neues Image erstellen. „kernel.img“ kann nicht geladen werden. buntes Display und Wechsel zur Konsole deutet auf inkompatibles System. Verwenden Sie ein anderes OS. 4. Artefakte, Schleier, Balken auf dem HDMI-Display. Wenn sich auf dem Monitor Artefakte, also gröbere quadratische Pixel oder Schleier zeigen, deutet das auf eine zu lange Signalstrecke. Einfachste Lösung: Sie verbinden den Rechner mit einem kürzeren HDMI-Kabel mit dem Monitor oder TV-Gerät. Ist kein kürzeres Kabel vorhanden oder eine Verringerung der Distanz nicht möglich, dann verstärken Sie zumindest das Signal mit einer Systemeinstellung. Dazu müssen Sie die bereits erwähnte Datei „config.txt“ bearbeiten. Folgende Konfigurationszeile. erlaubt Werte zwischen 1 und 7. Versuchen Sie es zunächst mit einer moderaten „4“. Diese Lösung kann auch der richtige Weg sein, wenn auf dem Monitor Falschfarben dargestellt werden oder das Bild verschwindet. Wenn Sie einen DVI-Monitor mit einem Adapterkabel anschließen und dabei eine falsche Darstellung erhalten, probieren Sie es ebenfalls mit dieser Option. Der Raspberry Pi 2 in der Detail-Ansicht (Bild 1 von 5) Raspberry Pi 2 Auf dem neuen Raspberry Pi 2 lässt sich sogar Windows 10 betreiben. 5. Teile des Raspberry-Desktops sind außerhalb des Bildschirms. Wenn die Ränder unscharf dargestellt werden oder ganze Teile des Bildschirms nicht abgebildet werden, sondern sich außerhalb des Displays zu befinden scheinen, editieren Sie ebenfalls die „config.txt“. In diesem Fall ändern Sie die Werte für den Overscan ab. Probieren Sie es dann einmal mit positiven Werten, um das Bild „zu verkleinern“. Dazu tragen Sie positive Werte ein. Experimentieren Sie mit den Werten so lange, bis die Darstellung zufriedenstellend ist. 6. Kein Sound über HDMI. Das am HDMI-Anschluss hängende Gerät spielt keinen Ton ab? Wenn die Verkabelung keine Auffälligkeiten aufweist, kann wieder ein Griff in die Konfiguration Abhilfe schaffen. Tragen Sie dort die Zeile. ein. Bringt auch das nach einem Neustart keinen Erfolg, editieren Sie die Datei erneut und tragen zusätzlich. ein. Diese Anweisung kann auch helfen, wenn sich beim Verbinden des Raspberry mit einem HDMI-Monitor nichts tut, beide Geräte aber sonst korrekt funktionieren. 7. HDMI-Bildauflösung des Raspberry Pi stimmt nicht. Das Zusammenspiel von Fernsehgeräten und dem kleinen Ein-Platinen-PC wird häufig durch falsche Auflösungen getrübt. Wenn Sie ein HDMI-Gerät erstmals an das System anschließen, schalten Sie es am besten als Erstes ein und starten erst danach den Raspberry-PC. Haben Sie die Optionen aus dem Abschnitt „Kein Sound bei der HDMI-Übertragung“ in der Konfigurationsdatei eingetragen (also die Kommentarzeichen davor entfernt) und kommt es zu einer sichtlich falschen Auflösung, kann es sinnvoll sein, in der „config.txt“ den HDMI-Modus zu verändern. 8. Wenn dem Bild die Farbe fehlt. Wann immer möglich, sollten Sie beim Anschluss eines externen Displays der aktuellen HDMI-Technik den Vorzug geben. Wenn allerdings über den Composite-Ausgang des Raspberry Pi eine Darstellung ohne Farben erfolgt, kommt der Bildschirm offensichtlich nicht mit dem NTSC-Format klar (Standard des National Television Systems Committee). Dann wirkt die Einstellung. Wunder. Diese setzt das Ausgangssignal auf das ältere PAL-Format. Störungsfreier Raspberry Pi - so geht's. Wenn Sie nach der Lektüre dieses Artikels den Eindruck gewonnen haben, dass die meisten Probleme beim Raspberry Pi durch die Stromversorgung und im Zusammenspiel mit HDMI-Komponenten hervorgerufen werden, liegen Sie richtig. 95 Prozent aller Störungen sind durch folgende Maßnahmen zu beheben: Die Investition in ein gutes Netzteil lohnt sich: Anwender berichten allzu häufig, wie sich nach dem Wechsel auf eine andere Stromquelle unerklärliche Probleme und Phänomene in Luft auflösen. Das Raspberry-Netzteil sollte das Gerät möglichst alleine versorgen. Ein USB-Stick ist noch vertretbar, aber externe Stromnehmer wie USB-Festplatten ohne eigenes Netzteil sollten Strom über einen USB-Hub erhalten. Ein qualitativ hochwertiges und möglichst kurzes HDMI-Kabel ist Voraussetzung für gute Bildqualität (sofern der Raspberry Monitor oder TV-Gerät beliefern muss). Im Dauerbetrieb drohen jedem Platinenrechner Schäden, wenn er ohne Gehäuse betrieben wird: Der Staub setzt sich auf den Leiterbahnen fest, und das unabsichtliche Überbrücken von Kontakten kann zu einem irreparablen Kurzschluss führen. Die Investition in ein Gehäuse (unter zehn Euro im Handel) lohnt sich auf alle Fälle. Retro-Spielekonsole im Eigenbau - so geht's. ab 52, 95 € bei ebay bestellen! 20 Angebote von 52,95 Euro - 35,99 Euro. Hier klicken. Computer & Technik - aktuell. PC-WELT Specials. Beste iTunes-Alternative. iPhone Backup ohne iTunes (Giveaway) Dell macht Laptops flotter. XPS 13 und Inspiron - Neue CPUs: mehr Leistung. Neujahr-Kino auf Abruf! Save-TV 3 Monate GRATIS. Wir HASSEN Getting over it - ALWAYS HARDCORE #4. Es ist wieder Zeit für ALWAYS HARDCORE: Wir battlen uns in dem Mega-Frust-Spiel "Getting over it with Bennet Foddy". Viel Spaß! Angebote für PC-WELT Leser. WOW! Angebote. Die aktuellen WOW! Angebote bei eBay. Die Magazin Flatrate für 9,99 € im Monat. Bitdefender 2017. Hier geht es direkt zum Download. PC-WELT Marktplatz. PC-WELT Hacks - Technik zum Selbermachen? Raspberry Pi erfreut sich gerade unter Bastlern einer großen Beliebtheit. Kein Wunder, denn mit der 35-Euro-Platine lassen sich viele spannende Projekte realisieren. Vom Mediacenter, Netzwerkspeicher, Fotomaschine bis hin zum Überwachungssystem ist alles möglich. Dieser Bereich ist aber nicht nur dem Raspberry Pi gewidmet, sondern bietet auch viele Tipps, Tricks und Anleitungen für andere spannende Bastelprojekte. © IDG Tech Media GmbH - Content Management by InterRed. 1. Überblick über Unix. 1.1 Was ist Unix, was ist Linux. Unix ist ein portables, einfach aufgebautes Betriebssystem Multitasking-BS (Multiprocessing-BS) Multiuser-BS (Mehrbenutzer-BS) dialogorientiert Unix ist ein Werkzeugkasten viele hundert Dienstprogramme (dadurch wird es so kompliziert) flexibel: kleine Tools sind schnell erstellt: "small is beautiful" Unix ist geeignet für Mikrocomputer der Oberklasse Mini-Computer Großrechner Unix ist schrecklich Befehlsname sind kryptisch (ls, pwd, cat, awk, grep, . ) Motto 1: "Keine Nachricht ist eine gute Nachricht!" Motto 2: "Wer will schon schlechte Nachrichten?" Das Betriebssystem Unix ist aus diesem Grunde ein System von Programmierern für Programmierer, die wissen was sie tun. Unix gehört historisch gesehen zu den älteren Betriebssystemen. Dennoch ist es gleichzeitig ein modernes Betriebssystem, das von Anfang an mit Merkmalen ausgestattet war, die von anderen Systemen erst viel später in einer vergleichbaren Form angeboten wurden. Unter Unix gab es von Anfang an echtes Multitasking, eine Trennung der Prozesse voneinander (d. h. hohe Stabilität), klar definierte Zugriffsrechte für Dateien (d. h. hohe Sicherheit im Multiuser-Betrieb), ausgereifte Netzwerkfunktionen etc. Allerdings bot Unix vor ein bis zwei Jahrzehnten nur eine kommandozeilenorientierte Benutzeroberfläche und stellte hohe Hardware-Anforderungen. Deshalb wurde es fast ausschließlich auf teuren Workstations im wissenschaftlichen und industriellen Bereich eingesetzt. Was ist Linux? Linux ist im Prinzip nichts anderes als eine neue Unix-Variante. Zu den Besonderheiten von Linux zählen die freie Verfügbarkeit des gesamten Quelltexts und die große Hardware-Unterstützung. Genau genommen bezeichnet der Begriff Linux nur den Kernel : Der Kernel ist der innerste Teil (Kern) eines Betriebssystems mit ganz elementaren Funktionen wie Speicherverwaltung, Prozessverwaltung und Steuerung der Hardware. Als Linux-Distribution wird die Einheit bezeichnet, die aus dem eigentlichen Betriebssystem (Kernel) und seinen Zusatzprogrammen besteht. Eine Distribution ermöglicht eine rasche und bequeme Installation von Linux. Distributionen werden zumeist in Form von CD-ROMs oder DVDs verkauft. Viele Distributionen sind darüber hinaus auch zum Download im Internet verfügbar. Wegen der riesigen Datenmengen (oft mehrere GByte) ist das Kopieren einer Distribution via Internet bzw. eine direkte Installation über das Netz aber nur bei einer ausgezeichneten Internet-Anbindung möglich. Manche behandeln die Distributionen sogar so, als seien sie eigene Betriebssysteme. Die Frage, welche Distribution die beste sei, welche wem zu empfehlen sei etc., artet leicht zu einem Glaubenskrieg aus. Wer sich einmal für eine Distribution entschieden und sich an deren Eigenheiten gewöhnt hat, steigt nicht so schnell auf eine andere Distribution um. Ein Wechsel der Distribution ist nur durch eine Neuinstallation möglich, bereitet also einige Mühe. Um Linux herum existieren auch etliche Behauptungen und Vorurteile: Linux ist schneller/langsamer als Windows: Diese Aussage ist so weder in der einen noch in der anderen Form richtig. Tatsächlich gibt es einzelne Programme, die unter Linux oder unter Windows schneller laufen. Daraus lassen sich aber keine allgemein gültigen Schlussfolgerungen ziehen. Das Ergebnis hängt unter anderem davon ab, für welches Betriebssystem das Programm optimiert wurde, welche Linux- und Windows-Versionen miteinander verglichen werden, welche Hardware für den Vergleich verwendet wurde etc. Linux benötigt weniger Ressourcen als Windows: Grundsätzlich stimmt es, dass Sie Linux auf einem 486-er PC mit einigen MByte RAM betreiben können. In dieser Konfiguration läuft Linux zwar nur im Textmodus, bietet ansonsten aber sicher viel mehr Funktionen als eine alte Windows-Version, die auf einem derartigen Rechner ebenfalls noch läuft. Wenn Sie dagegen eine aktuelle Linux-Distribution von Red Hat oder Suse mit einer aktuellen Windows-Version vergleichen, sind die Unterschiede weniger deutlich. Für ein komfortables Arbeiten in einer grafischen Benutzeroberfläche (KDE oder Gnome) stellt Linux ähnliche Hardware-Ansprüche wie Windows. Linux ist sicherer als Windows: Leider kranken alle zurzeit populären Betriebssysteme an Sicherheitsproblemen. Linux schneidet in den meisten Vergleichen relativ gut ab, dennoch finden sich immer wieder neue Sicherheitslücken. Wie sicher Linux ist, hängt aber auch von seiner Verwendung ab: In Desktop-Anwendungen ist Linux fast vollständig virensicher. Es hat bis jetzt keinen einzigen nennenswerten Virenbefall unter Linux gegeben, während Windows-Viren in regelmäßigen Abständen ganze Firmen tagelang lähmen. Der Hauptgrund besteht darin, dass die Zugriffsverwaltung unter Linux verhindert, dass gewöhnliche Anwender großen Schaden am System anrichten können. Außerdem sind Webbrowser und E-Mail-Programme unter Linux generell viel sicherer als die entsprechenden Windows-Programme. Bei der Anwendung von Linux als Netzwerk- oder Internet-Server hängt die Sicherheit sehr stark von der Wartung des Systems ab. Beinahe zu allen Sicherheitsproblemen der vergangenen Jahre gab es bereits Updates, bevor diese Sicherheitsrisiken allgemein bekannt und von Hackern ausgenutzt wurden. Wenn Sie also die auf Ihrem Rechner eingesetzte Software regelmäßig aktualisieren, haben Angreifer wenig Chancen, in Ihr System einzudringen. Die Sicherheit von Linux-Systemen hängt schließlich sehr stark von Ihrem eigenen Wissen ab. Wenn Sie als Linux-Einsteiger rasch einen Internet-Server konfigurieren und ins Netz stellen, ist nicht zu erwarten, dass dieser Server bereits optimal abgesichert ist. Es mangelt aber nicht an Literatur zu diesem Thema! Linux ist stabiler als Windows: Mittlerweile hat Microsoft mit Windows 7 durchaus respektable und stabile Windows-Versionen zustande gebracht. Der Linux-Kernel an sich ist außerordentlich stabil. Wenn Sie mit Linux aber das Gesamtsystem der mitgelieferten Software meinen (also eine ganze Distribution), dann sieht es mit der Stabilität gleich erheblich schlechter aus. Insbesondere relativ neue Programme stürzen immer wieder ab. Server-Programme laufen dagegen meist vollkommen fehlerfrei. Je stärker Sie sich anwendungsorientierten Programmen zuwenden und Linux als Desktop-System einsetzen, desto eher werden Sie die negativen Seiten kennen lernen. Linux ist billiger als Windows: Diese Aussage ist leicht zu untermauern - Linux ist schließlich kostenlos erhältlich. Bei Microsoft hat man mit dieser Argumentation natürlich keine Freude - dort weist man darauf hin, dass auch Schulungskosten etc. berücksichtigt werden müssen. (In solchen Rechenbeispielen wird Windows-Wissen meist als gottgegeben vorausgesetzt, Linux-Kenntnisse natürlich nicht.) Außerdem ist nicht jede Linux-Distribution tatsächlich kostenlos. Linux ist kompliziert zu installieren: Wenn man einen PC kauft, ist Windows meist schon vorinstalliert. Insofern stellt es natürlich einen Mehraufwand dar, Linux zusätzlich zu installieren. Wie Sie im nächsten Kapitel feststellen werden, ist eine Linux-Installation aber mittlerweile kinderleicht - und sicher nicht schwieriger als eine Windows-Installation. Problematisch ist lediglich die Unterstützung neuer Hardware, die unter Windows besser ist: Jeder Hersteller von Computer-Komponenten stellt selbstverständlich einen Windows-Treiber zur Verfügung. Vergleichbare Treiber für Linux müssen dagegen oft von der Open-Source-Gemeinschaft programmiert werden. Das dauert natürlich eine gewisse Zeit. Linux ist kompliziert zu bedienen: Dieses Vorurteil ist alt, aber nicht mehr bzw. nur noch in einem sehr geringen Maß zutreffend. Linux ist einfach anders zu bedienen als Windows, so wie auch Apples Mac OS anders zu bedienen ist. Wirklich schwieriger ist die Handhabung von Linux zumeist nicht, lediglich die Umgewöhnung von Windows kann manchmal mühsam sein. 1.2 Unix-Historie. Als Ken Thompson 1969 bei Bell Laboratories, die Entwicklung eines neuen Betriebssystems begann, waren die meisten der vorhandenen Systeme ausgesprochene Batch-Systeme. Der Programmierer gab seine Lochkarten oder Lochstreifen beim Operator ab, diese wurden in den Rechner eingelesen und ein Rechenauftrag nach dem anderen abgearbeitet. Der Programmierer konnte dann nach einiger Zeit seine Ergebnisse abholen. Ziel von Ken Thompsons Entwicklung war es deshalb, ein System zu schaffen, auf welchem mehrere Programmierer im Team und im Dialog mit dem Rechner arbeiten, Programme entwickeln, korrigieren und dokumentieren konnten, ohne von einem Großrechner mit allen seinen Restriktionen abhängig zu sein. Dabei standen Funktionalität, strukturelle Einfachheit und Transparenz sowie leichte Bedienbarkeit im Vordergrund der Entwicklung. Dieses erste System mit dem Namen Unix lief auf einer DEC PDP-7. Unix ist vom Betriebssystem "Multics" inspiriert, so auch der Name. Brian Kernighan schlug vor, das neue Betriebssystem "Unics" zu nennen. Irgendwer hat es dann mit "X" am Schluss buchstabiert und dabei blieb es dann. Schon bald findet sich eine kommerzielle Anwendung: Die Patentabteilung der Bell Labs sucht ein System zum Erstellen, Bearbeiten und Formatieren von Patentformularen. Mit dem auf die PDP-11 portierten und erweiterten Text-Prozessor "roff" (heute noch als "nroff" für die Formatierung der Manual-Pages zuständig) nimmt Unics Mitte 1971 seinen ersten kommerziellen Dienst auf. Währenddessen arbeiten die Entwickler an Erweiterungen und neuen Programmen auf derselben Maschine. Am 3. November 1971 ist schließlich das "Unix Time-Sharing System", First Edition fertig. Die erste Version von Unix war in der Assemblersprache der PDP-7 geschrieben. Von Anfang an wollte Thompson das System in einer hardwareunabhängige Hochsprache programmieren. Zuerst entwickelt er eine einfache Sprache auf Basis von BCPL (Basic Combined Programming Language), die er schlicht "B" nennt. B ist als Interpreter-Sprache für ein Betriebssystem aber nicht schnell genug. Dennis Ritchie erweitert die Syntax um strukturierte Typen und schreibt 1971 den fehlenden Compiler. Brian Kernighan, späterer Koautor von AWK (Aho, Weinberger, Kernighan) steuert die Dokumentation zur neuen Sprache bei, die "C" genannt wird. Unix wurde 1972 in C umgeschrieben und auf die PDP-11 übertragen. Von nun an erfolgte die Weiterentwicklung des Systemkerns sowie der meisten Dienstprogramme in dieser Sprache. Die Kompaktheit und strukturelle Einfachheit des Systems ermunterte viele Benutzer zur eigenen Aktivität und Weiterentwicklung des Systems, so daß Unix recht schnell einen relativ hohen Reifegrad erreichte. Dies ist deshalb bemerkenswert, da kein Entwicklungsauftrag hinter diesem Prozess stand und die starke Verbreitung von Unix nicht auf den Vertrieb oder die Werbung eines Herstellers, sondern primär auf das Benutzerinteresse zurückzuführen ist. Eine ähnliche Entwicklung zeigt sich seit einigen Jahren bei den freien Unix-Varianten. Mitte 1973 erscheint Unix V4, fast vollständig in C geschrieben. Damit ist das System auch sehr portabel. Wo immer ein C-Compiler existiert, kann Unix implementiert werden. Schon 1973 erhält die UCB (University of California, Berkeley) eine Kopie von Unix V4 und beginnt umgehend mit Erweiterungen - die Wurzel des heute noch aktiven BSD-Unix. Da das 1956 erlassene Consent Decree AT&T kommerzielle Aktivitäten außerhalb des Telefonmarktes verbietet, gibt die Firma Unix-Quellen und -Binaries zum geringen Preis an Universitäten ab. 1977 veröffentlicht der Student Bill Joy die Berkeley-Erweiterungen als Berkeley Software Distribution (BSD), 1978 folgt 2BSD und der legendäre Editor "vi". 3BSD und 4BSD werden zur Grundlage für die Entwicklung von TCP/IP - und damit des Internets. Die für Universitäten erschwinglichen PDP-Nachfolgerechner VAX und das darauf portierte 4.xBSD steigern die Verbreitung. Im Lauf der Zeit sind zwei Entwicklungszweige entstanden, da Unix sowohl bei Bell Labs (AT&T) als auch an der Universität von Berkley weiterentwickelt wurde: "BSD" und "System V". Kommerzielle Unix-Versionen von Sun (SunOS/Solaris), DEC (Ultrix) und andere folgen. Als 1979 nach der Freigabe von Unix V7 das Consent Decree fällt, will AT&T Unix kommerziell nutzen. Als eine der ersten Firmen lizenziert Microsoft 1979 den Code von Unix V7. Seine Portierungen auf Intels 8086 erscheinen 1980 unter dem Namen "Xenix OS". Obwohl Microsoft bereits 1987 Xenix an SCO verkauft, die es weiterführt, hat dieses kurze Intermezzo Folgen: Die Unix-Erfahrungen bilden schon den Hintergrund des DOS-2.0-Dateisystems und die Grundlage für Windows NT. Auch die TCP/IP-Implementierung erinnert stark an BSD-Unix. AT&T entwickelt Unix weiter, es folgen die Systeme III, IV und V. Ihnen entstammen viele Derivate diverser Hersteller. Auch entwickelt AT&T die freien UNIXe V8, V9 und V10 weiter, doch ohne sich um die Verbreitung zu bemühen. Die Nachfolge tritt 1987 Plan 9 an. Daneben wurden zahlreiche weitere Unix-Derivate entwickelt, z. B. die frei erhältlichen Systeme Net-BSD; Free-BSD, Minix und "Linux". Die allerersten Teile des Linux-Kernels wurden von Linus Torvalds (Helsinki) entwickelt, der den Programmcode im September 1991 über das Internet freigab. In kürzester Zeit fanden sich weltweit Programmierer, die an der Idee Interesse hatten und Erweiterungen dazu programmierten: ein verbessertes System zur Dateiverwaltung, Treiber für diverse Hardware-Komponenten, Zusatzprogramme wie den DOS-Emulator etc. All diese Einzelkomponenten wurden ebenfalls kostenlos zur Verfügung gestellt. Das Gesamtsystem wuchs mit einer atemberaubenden Geschwindigkeit. Die Entstehung dieses neuen Betriebssystems wäre ohne die weltweite Kommunikation der Programmierer via Internet unmöglich gewesen. Ein wesentlicher Faktor dafür, dass Linux frei von den Rechten der großen Software-Firmen ist und dennoch derart schnell entwickelt werden konnte, war die zu diesem Zeitpunkt schon frei verfügbare Software. Linux ist nicht aus dem Nichts aufgetaucht, wie das manchmal fälschlich dargestellt wird, sondern baut auf einer breiten Basis freier Software auf. Für die ersten Schritte war das freie (aber im Funktionsumfang sehr eingeschränkte) Minix eine praktische Grundlage. So verwendeten die ersten Linux-Versionen noch das Dateisystem von Minix. In ihrer Bedeutung wohl noch wichtiger für Unix und Linux waren und sind die zahlreichen GNU-Programme ( GNU is Not Unix ). GNU-Programme wurden auf vielen Unix-Systemen als Ersatz für diverse (teuere) Originalkomponenten verwendet - etwa der GNU-C-Compiler, der Texteditor Emacs und viele andere GNU-Utilities. Sobald der Kernel von Linux dann so weit entwickelt worden war, dass der GNU-C-Compiler darauf zum Laufen gebracht werden konnte, stand praktisch mit einem Schlag die gesamte Palette der GNU-Tools zur Verfügung. So wurde aus einem Kernel plötzlich ein recht vollständiges System, das dann für eine noch größere Entwicklergemeinde zu einer attraktiven Umgebung wurde. GNU-Programme sind ebenso wie Linux (unter gewissen Einschränkungen) frei kopierbar - und zwar nicht nur als Binärprogramme, sondern mit sämtlichen Codequellen. Das ermöglicht es allen GNU-Anwendern, die Programme bei Problemen oder Fehlern selbst zu erweitern oder zu korrigieren. Aus diesen änderungen resultieren immer bessere und ausgereiftere Versionen der diversen GNU-Programme. Nicht zuletzt aufgrund der freien Verfügbarkeit des Programmcodes stellt der GNU-C-Compiler den Standard in der Unix-Welt dar: Der Compiler ist praktisch auf jedem Unix-System verfügbar - und nicht nur dort. Erst die Kombination aus dem Linux-Kernel, den zahlreichen GNU-Komponenten, der Netzwerk-Software des BSD-Unix, dem ebenfalls frei verfügbaren X Window System des MIT (Massachusetts Institute of Technology) und dessen Portierung XFree86 für PCs mit Intel-Prozessoren sowie aus zahlreichen weiteren Programmen macht eine Linux-Distribution zu einem kompletten Unix-System. Das Ziel der Entwickler von GNU und Linux war es also, ein System zu schaffen, dessen Quellen frei verfügbar sind und es auch bleiben. Um einen Missbrauch auszuschließen, ist Software, die im Sinne von GNU entwickelt wurde und wird, durch die GNU General Public License (kurz GPL) geschützt. Hinter der GPL steht die Free Software Foundation (FSF). Diese Organisation wurde von Richard Stallmann (der unter anderem auch Autor des Editors Emacs ist) gegründet, um qualitativ hochwertige Software frei verfügbar zu machen. 1.3 Die Struktur von Unix. Die Dialogschnittstelle zur Kommunikation mit dem Benutzer (zeichenorientiert) wird dabei als Shell bezeichnen. Diese Shells unter Unix haben dabei zwei Funktionen, sie werden als Kommandointerpreter und als Programmiersprache verwendet. Die zweite Funktion ist unter Unix deshalb so bedeutend, da die gesamte Verwaltung (Administration) des Betriebssystems mit Skripten in dieser "Shell-Programmiersprache" erfolgt. Diese Möglichkeit wird in den Kapiteln 2 und 9 behandelt. Es gilt also: Kommandointerpreter = Shell: sh: Bourne Shell an die Programmiersprache ALGOL 68 angelehnt csh: C-Shell an die Programmiersprache C angelehnt ksh: Korn-Shell vereinigt Bourne- und C-Shell bash: Bourne-Again-Shell (Erweiterung der Bourne Shell) . 1.4 Der Kernel. 1.4.1 Aufgaben. Prozess-Scheduling Prozess-Umschaltung Prozess-Kommunikation Dateisystem verwalten Ein-/Ausgabesteuerung Gerätesteuerung (device driver) Zugangskontrolle und Abrechnung alle Systemdienste für Programmier-Schnittstellen der Kernel ist relativ klein (ladbare Treiber) alle Interrupts und I/O-Operationen werden über den Kernel abgewickelt. 1.4.2 Erste Schritte. Damit jeder dieser Benutzer seine Daten vor dem Zugriff der anderen Benutzer schützen kann, muß man sich, bevor man mit einem Unix-System arbeiten kann, erst einmal anmelden , das heißt, einen speziellen Benutzernamen und ein Passwort eingeben. Dadurch erfährt das System, welcher Benutzer da gerade die Arbeit aufnehmen möchte, und kann diesem Benutzer seine persönliche Arbeitsumgebung (inclusive aller privater Daten) zur Verfügung stellen. Nach dem Einschalten des Terminals bzw. nach Aufnahme der Verbindung mit dem Unix-Rechner meldet sich das BS mit der Aufforderung, sich zu identifizieren: Der Benutzer gibt darauf den ihm zugewiesenen Login-Namen ein. Dann erscheint die Abfrage des Paßwortes: Nun muß der Benutzer sein Passwort eingeben. Das Passwort wird im Gegensatz zu den üblichen Eingaben nicht auf dem Bildschirm ausgegeben. Wenn alles gutgeht, sind Sie jetzt beim System angemeldet (man sagt auch: eingeloggt ). Sie erkennen die erfolgreiche Anmeldung daran, daß die Eingabeaufforderung des Systems, der sog. Prompt erscheint. Der Prompt sieht etwa so aus: und dahinter ist ein Cursor sichtbar (die Texteinfügemarkierung) und das System erwartet nun die Eingabe eines Kommandos. Hat sich der Benutzer vertippt, erscheint die Meldung: und die o. g. Prozedur muß wiederholt werden. Neue Benutzer haben noch kein Passwort, sie drücken nur die RETURN-Taste bei der Frage nach dem Passwort. Bei vielen Systemen wird der Benutzer beim ersten Login zur Eingabe des Passwortes aufgefordert. Zum Ändern und Eingeben des Passworts gibt es ein eigenes Kommando: Das Passwort muß einigen Bedingungen genügen: Mindestlänge 6 Zeichen Je nach BS-Version muß mindestens eine Zahl und/oder ein Sonderzeichen darin enthalten sein. User und Superuser. Beenden der Arbeit am Computer. Start und Stop des Systems. Beim Einschalten des Rechners werden zunächst Systeminitialisierungsroutinen durchlaufen und die einzelnen Platten des Systems in das Dateisystem eingebunden ("mount"). Je nach BS-Version gelangt das BS dann gleich in den Mehrbenutzerbetrieb oder in den Einzelbenutzerbetrieb (single user mode). Dieser Modus ist speziell für die Systemwartung notwendig, wenn kein anderer Benutzer den Rechner verwenden darf (z. B. Generieren einern neuen Systemversion, Benutzerverwaltung, Datensicherung, etc.). Vom Einzelbenutzerbetrieb wird dann der normale Mehrbenutzerbetrieb gestartet. Beim Abschalten des Systems wird umgekehrt verfahren. Alle noch laufenden Prozesse werden gestoppt (normalerweise mit vorheriger Warnung der noch aktiven Benutzer, damit diese ihre Arbeit in Ruhe beenden können), das Dateisystem aktualisiert (Schließen offener Dateien, Wegschreiben von Pufferbereichen) und in den Einzelbenutzerbetrieb übergegangen. Danach kann abgeschaltet werden. Kommandosyntax (Befehlsaufbau) Fast jedem Kommando kann eine Liste von Dateien mitgegeben werden, auf die das Kommando dann angewendet wird. Fehlt die Dateiliste, wird in der Regel die Standardeingabe - normalerweise die Tastatur - als Eingabedatei verwendet. Wie spater noch genauer gezeigt wird, verwendet Unix die Jokerzeichen (Wildcards) Stern (*) und Fragezeichen (?), um beliebige Zeichen innerhalb eines Dateinamens zu kennzeichnen. DOS und Windows haben diese Methode übernommen. Im Gegensatz zu DOS und Windows werden diese Wildcards jedoch nicht vom Programm, sondern von der Shell zu Dateinamen expandiert . Deshalb "sieht" jedes Unix-Programm nur eine mehr oder weniger lange Dateiliste. Grundlagen des X-Window-Systems. Nahezu jedes Fenster hat unter X einen Rahmen. Mit Hilfe dieses Rahmens kann man die Dimensionen und die Position des Fensters verändern. Zunächst kann man durch "Klicken und Ziehen" auf die Titelleiste des Fensters das Fenster als Ganzes bewegen und an einer anderen Stelle des Bildschirms "loslassen". "Klicken und Ziehen" bedeutet, daß man mit dem Mauspfeil auf die Titelleiste zeigt, dann die linke Maustaste drückt, festhält, und bei gedrückter Taste die Maus bewegt. Wenn das Fenster die erwünschte Position erreicht hat, läßt man die linke Maustaste wieder los. Wenn man jetzt mit der Maus die untere rechte Ecke des Fensters ansteuert, verwandelt sich der Mauspfeil selber in eine "Ecke" (ausprobieren!). Wenn der Mauspfeil so aussieht, dann kann man durch klicken+ziehen (s.o.) die Fenstergröße verändern. Es ist nicht ratsam, die Größe der zwei Textfenster zu ändern, die gleich am Anfang erscheinen, weil viele Programme davon ausgehen, daß diese Fenster eine feste Größe haben (nämlich 80 Zeichen Breite und 25 Zeilen Höhe). Weiterhin sind am oberen Rand des Fensters, direkt rechts neben der Titelleiste, zwei Knöpfe zu sehen: einer enthält ein großes und einer ein kleines Quadrat. Durch einmaliges, kurzes Klicken auf den Knopf mit dem großen Quadrat bewirkt man, daß das Fenster seine volle Größe annimmt, d.h. es wird in der Regel über den ganzen Bildschirm vergrößert. Ein weiteres Klicken auf diesen Knopf setzt die Fenstergröße wieder auf die Normalgröße zurück. Der zweite Knopf, der mit dem kleinen Quadrat, bewirkt, daß das Fenster zum Symbol verkleinert wird. Das Symbol landet dann in der "Icon-Box", die in der Abbildung des gesamten X-Window-Bildschirms (oben) in der linken unteren Ecke zu sehen ist. Ein Doppelklick auf ein Icon führt dazu, daß das entsprechende Fenster wieder geöffnet und im Vordergrund angezeigt wird (d.h. ohne daß es durch andere Fenster überdeckt wird). Man kann also diese Icons auch dazu benutzen, unsichtbare (weil verdeckte) Fenster wieder in den Vordergrund zu holen. Den Inhalt einiger Fenster (xterm) kann man mit Hilfe der Rollbalken auf der rechten Seite bewegen, und so auch bereits nach oben weggerollte Zeilen wieder sichtbar machen. Dazu plaziert man den Mauszeiger auf den schwarzen Bereich des Rollbalkens und hält die mittlere Maustaste gedrückt, während man die Maus nach oben oder unten bewegt. Das X-Window-System wird verlassen, indem man mit der Maus auf den Hintergrund des Bildschirms klickt, dabei die linke Maustaste aber nicht losläßt, sondern bei gedrückter Taste die Maus nach unten zieht. Es erscheint ein Menü und man kann den Punkt "Exit" oder "Quit" ansteuern und dann die Maustaste loslassen. Nach einer weiteren Abfrage ("OK") ist man dann wieder auf der grünen Kommandozeile und kann mit dem Kommando "exit" die Sitzung beenden. Bei Linux geht das auch durch Drücken von Ctrl-Alt-Backspace. 1.5 Das Dateisystem. 1.5.1 Struktur und Zugriffsrechte. Da Unix ein Multiuser-System ist, muß der Zugriff auf einzelne Dateien und Verzeichnisse vom System schon so geregelt werden, daß kein Benutzer die Daten der anderen Benutzer manipulieren oder vertrauliche Daten unbefugterweise einsehen kann. Das wird dadurch gewährleistet, daß jede Datei und jedes Verzeichnis einen Besitzer (Owner) hat, und dieser Besitzer kann mit Hilfe bestimmter Befehle festlegen, welcher der anderen Benutzer auf welche Weise auf seine Dateien zugreifen darf. Die meisten Dateien und Verzeichnisse in einem Unix-System gehören natuergemäß dem Systemverwalter (der den Usernamen "root" trägt) und jeder Benutzer kann auf diese Dateien lesend zugreifen, sie aber nicht verändern (zu dieser Art von Dateien gehören zum Beispiel alle Anwendungsprogramme, die das System zur Verfügung stellt). Man unterscheidet grob drei Dateitypen (weitere Typen weiter unten): Normale Dateien (normal files) Dateien im üblichen Sinn: Text- oder Binärdateien Das System unterstützt keine Dateistruktur (keine Datei-Header) Dateien sind Bytefolgen (Strukturierung nur durch das Programm) Zugriffsarten: sequentiell random access (Bytepositionierung) Verzeichnisse (directories) Strukturierung des Dateisystems Zugriff auf normale Dateien auch über mehrere Namen Verzeichnisse werden auf der Platte wie Dateien gespeichert Spezialdateien (special files) E/A-Geräte werden als Spezialdatei eingetragen Zugriff auf Gerät <--> Zugriff auf eine Datei gleicher Schutzmechanismus wie für normale Dateien es gibt blockorientierte und zeichenorientierte Geräte Platte /dev/hda1 Drucker /dev/lp Speicher /dev/mem Terminal /dev/tty. Unix arbeitet mit einem Filesystem, das auf den ersten Blick dem von DOS sehr ähnlich ist (nur auf den ersten). Also gibt es eine Baumstruktur von verschiedenen Verzeichnissen (Directories), in der sich jede Datei irgendwo befindet. Beachten Sie aber, daß ein Directory beim Anzeigen zunächst genauso aussieht, wie eine Datei!. Die einzelnen Verzeichnisnamen werden durch normale Schrägstriche ('/') getrennt, NICHT durch Backslashes ('\') wie bei DOS/Windows! Nach dem Einloggen landen Sie in Ihrem sogenannten Homedirectory (Meist '/home/username'). Es gehört Ihnen ganz alleine, damit können Sie machen, was Sie wollen. Zum Beispiel können Sie dort Dateien oder weitere Verzeichnisse anlegen. An dieser Stelle gleich einige wichtige Punkte: Dateinamen Dateinamen können bei Unix aus Groß und Kleinbuchstaben bestehen, wobei die unterschiedliche Schreibweise auch unterschiedliche Dateinamen bezeichnet. Die Datei 'test' ist also eine andere als 'Test' oder gar 'TEST'. Dateilisten Wo Dateieingaben erwartet werden, können in der Regel beliebig viele Dateinamen stehen. Sonderzeichen Dateinamen können ausser dem '/' so ziemlich alle Zeichen enthalten. Auch Leerzeichen oder Steuerzeichen. relativer Pfadname, beginnend beim aktuellen Verzeichnis (kurzer Pfad), zum Beispiel: Das aktuelle Verzeichnis ist immer jenes, dessen Inhalt wir gerade bearbeiten. Das aktuelle Verzeichnis läßt sich jederzeit wechseln, aber ein Verzeichnis ist zu einem bestimmten Zeitpunkt immer das aktuelle und alle unsere Kommandos beziehen sich dann auf dieses eine, aktuelle, Verzeichnis. Eine besondere Erwähnung verdienen die beiden Verzeichnis-Einträge "." und "..". Das sind Stellvertreter für Verzeichnisnamen, die man statt der realen Namen (abkürzend) benutzen kann. Und zwar bezeichnet "." das jeweils aktuelle Verzeichnis, und ".." das dem aktuellen Verzeichnis übergeordnete Verzeichnis. Schutzmechanismen. Jeder Unix-Benutzer hat eine Benutzerkennung (user id, kurz: uid) mit der er sich gegenüber dem BS identifizieren kann. Jeder Unix-Benutzer gehört einer Gruppe an und besitzt damit eine Gruppen-ID, kurz:gid) Jede Datei hat einen Eigentümer und eine Gruppe, die bei der Erzeugung der Datei eingetragen werden Jeder Benutzer kann seine Dateien explizit einem anderen Benutzer (bzw. einer anderen Gruppe) "schenken". Jede Datei besitzt 12 voneinander unabhängige Schutzbits. Bedeutung der drei Schutzbits SUID, SGID und STICKY. Alle Benutzer sind in einer speziellen Datei gespeichert, die nur der Superuser ändern darf - sonst könnte ja jeder einen neuen Benutzer eintragen. Jeder Benutzer kann aber sein Passwort ändern, das auch in dieser Datei steht. Dazu muß er schreibend auf die Datei zugreifen - obwohl er dazu keine Berechtigung besitzt. Das Programm "passwd" gehört dem Superuser, hat das SUID-Bit gesetzt und kann so auf die User-Datei schreibend zugreifen. Wenn das SGID-Bit (Set Group ID) gesetzt ist, hat das Programm die Rechte der Gruppe, zu der es gehört. Dieses Feature wird z. B. beim Drucker-Spooling verwendet. Bei Dateien ohne Ausführungsrecht sorgt dieses Bit dafür, daß die Datei nur von einem Prozess geöffnet werden kann (Vermeiden von Verklemmungen). Bei Verzeichnissen hat das SGID-Bit eine andere Aufgabe. Dateien, die in ein SGID-Verzeichnis kopiert werden, erhalten automatisch die Gruppe des Verzeichnisses (man muß also nicht mehr explizit die Gruppe setzen, um den Mitgliedern einer Gruppe Zugriff zu ermöglichen). Setzen durch das Kommando: "chmod g+s datei". Anzeige: "s" statt "x" bei den Gruppen-Rechten ("l" bei Daten-Dateien). Das STICKY-Bit sollte früher den Systemdurchsatz verbessern. Programme, bei denen dieses Bit gesetzt ist, verbleiben nach dem ersten Aufruf im Speicher und starten bei den folgenden Aufrufen schneller. Heute ist das nicht mehr nötig. Bei Verzeichnissen dient dieses Bit der Systemsicherheit. Auch wenn im Verzeichnis für alle User Schreibrecht existiert (= Löschen und Anlegen von Dateien), können bei gesetztem Sticky-Bit nur Dateien gelöscht werden, die einer folgenden Bedingungen genügen: die Datei gehört dem Benutzer, der sie löschen will das Verzeichnis, in dem die Datei liegt, gehört dem Benutzer der Benutzer hat Schreibrecht für die Datei der Superuser will die Datei löschen Setzen durch das Kommando : "chmod +t datei". Anzeige: "t" statt "x" bei den "Others"-Rechten. Historisches: Das System der Zugriffsrechte, insbesondere SUID, SGID und STICKY, wurden von den Entwicklern patentiert. Interessant an der Patentschrift (Bild der ersten Seite) war, das alles als Digitalschaltung dargestellt wurde, denn Software war damals noch nicht patentierbar. Das Patent wurde ein Jahr nach Erteilung von den Entwicklern freigegeben. Die Implementierung des Dateisystems. Schaut man sich ein physisches Dateisystem genauer an, so erkennt man den Betriebssytemblock als kleinste Einheit (im Bereich von 512 Byte bis 16 kByte). Das physische Dateisystem wird in in vier Bereiche aufgespalten: Boot-Block: Er enthielt im root-Dateisystem ein Urlader-Programm, welches das eigentliche Unix-System (Betriebssystemkern) in den Arbeitsspeicher lädt. Dieser Bereich ist bei heutigen Systemen leer. Super-Block: Er enthält alle relevanten Verwaltungsinformationen zu einem physischen Dateisystem: Name und Größe des physischen Dateisystems Größe der nachfolgenden Bereiche des physischen Dateisystems (Inodeliste, Nutzdatenbereich) Verweise auf die Liste der freien Datenblöcke und die Liste der freien Inodes Datum der letzten Sicherung und Modifikation und weitere Angaben Inodeliste: Sie stellt ein Inhaltsverzeichnis aller in dem Dateisystem existierenden Dateien dar. Sie besteht aus einer Folge von Inodes (Dateiköpfen), die die Verwaltungsdaten zu jeder Datei enthalten. Nutzdatenbereich: Hier befinden sich die freien Blöcke, Datenblöcke (Inhalte von Dateien und Verzeichnissen) und Referenzblöcke, die zur Adressierung der Datenblöcke eingesetzt werden. Die Größe der einzelnen Bereiche wird bei der Initialisierung eines physischen Dateisystems festgelegt und kann im nachhinein nicht mehr dynamisch verändert werden (außer im Unix-System AIX von IBM). Das dazu notwendige Kommando ist 'mkfs' (make file system). Die Bereiche eines physischen Dateisystems sind auf die Kapazität eines logisch Datenträgers und damit maximal auf die Gesamtkapazität eines Festplattenlaufwerks beschränkt, d. h. festplattenübergreifende physische Dateisysteme sind nicht möglich. Die Verwaltungsinformation über Dateien steht also nicht wie bei DOS oder Windows in den Dateien selbst, sondern in den Inodes. Jede Datei besitzt einen eigenen Inode (eine eigene Datei-Nummer). Der Zugriff erfolgt entweder sequentiell (Datei ist ein Strom von Bytes ohne weitere Strukturierung) oder wahlfrei (random access) durch Positionierung auf ein bestimmtes Byte in der Datei. Das BS hat einen Cache-Mechanismus implementiert, der einen Teil der Datei im Speicher hält. Ziel: Reduzierung der Plattenzugriffe. Problem: Dateien müssen regelmäßig aktualisiert werden (Cache-Inhalt auf die Platte schreiben), Gefahr der Inkonsistenz von Daten bei Prozess-Abbruch oder Stromausfall. Inodes (I-Knoten) Zu beachten ist, daß der Name der Datei nicht aufgeführt wird. Diese Systemarchitektur ermöglicht es, unter mehreren (verschiedenen) Namen als Einträge von Verzeichnissen die gleiche Datei (genauer gesagt Inode und Dateiinhalt) anzusprechen. Der Inode fungiert somit als Bindeglied zwischen dem Namen und dem Inhalt einer Datei. Für die Adressierung der Inhalte einer Datei ergibt sich eine bestimmte Verweisstruktur. Eine Datei mit bis zu 10 Plattenblöcken (Blockgröße 512 oder 1024 Bytes) kann also direkt angesprochen werden. Größere Dateien haben zusätzlich einen Verweis (einfach indirekt) auf einen Datenblock, der seinerseits 128 Verweisfelder enthält. Reicht das noch nicht, wird zweimal (128 Blöcke mit je 128 Verweisen) oder dreimal indiziert (Dateigröße bis 2 GByte bei 512-Byte-Blöcken, bis 16 GByte bei 1KByte-Blöcken). Das System der Links wird generell verwendet. So gibt es unter Unix keinen Systemaufruf zum Löschen einer Datei, sondern lediglich einen Unlink-Call. Wenn der Link-Zähler einer Datei auf Null gesunken ist (durch entsprechend viele Unlink-Aufrufe), wird deren Inode und der durch die Datei belegte Plattenplatz freigegeben. Der Superblock. Gerätedateien dienen zur Abwicklung des Datenverkehrs zwischen den Programmen und der Peripherie. Da sie, wie die abstrakten Komponenten (normale Dateien, Verzeichnisse, usw.) einheitlich in den Systembaum integriert werden, sind auch für sie die Zugriffsschutzmechanismen und Ein- /Ausgabeumleitung gültig. Die Geräte werden durch logische Namen angesprochen, die die Gerätetreiber der Peripheriegeräte bezeichnen. Intern wird jedes Gerät durch eine Treiber-Nummer (major device number) und eine Geräte-Nummer (minor device number) markiert. Diese Nummern sind im ls -l Eintrag in dem Feld enthalten, das die Dateigröße angibt. Major Device Number: Angabe des Gerätetyps (Platte,Terminal, Drucker, etc.) Minor Device Number: Angabe über die E/A-Schnittstelle oder nähere Umstände der Ansteuerung (z.B. Band zurückspulen/nicht zurückspulen) Die Major Device Number gibt an, welcher Treiber des Linux-Kernels für die Verwaltung zuständig ist. Bei vielen Treibern kann durch die Minor Device Number zwischen verschiedenen (verwandten) Einzelgeräten unterschieden werden, etwa beim Treiber für die seriellen Schnittstellen. Der Zugriffstyp gibt an, ob die Geräte gepuffert sind (das ist bei allen blockorientierten Geräten wie Festplatten etc. der Fall) oder nicht (zeichenorientierte Geräte wie serielle oder parallele Schnittstellen). Ein Gerät kann durchaus auch über verschiedene Treiber angesprochen werden. Normalerweise werden die Geräte vom Benutzer nicht direkt, sondern über Dienstprogramme angesprochen. Wenn jemand z. B. den Drucker direkt anspricht, während ein anderer Benutzer über den Spooler ausdruckt, gibt es "Datenmüll" auf dem Papier. Zwei interessante Geräte können jedoch alle Benutzer ansprechen: /dev/null. Daten, die an dieses Gerät geschickt werden, landen in einem "schwarzen Loch" - ideal für Ausgaben eines Programms. Wenn von diesem Gerät gelesen wird, liefert es immer "End Of File". /dev/zero ist das zweite "Spezialgerät". Beim Lesen von diesem Gerät werden beliebig viele Nullbytes geliefert. Man verwendet es z. B. zum Füllen von Dateien oder wenn man eine "Dummy-Engabe" benötigt. Es gibt bei Unix prinzipiell zwei Typen von Treibern: Zeichentreiber Für zeichenorientierte Geräte (Terminal, Drucker, etc.). Eingehende Daten werden in der Regel gepuffert und dann vom Programm aus dem Puffer gelesen, beim Schreiben erfolgt analog die Pufferung in Ausgangsrichtung. Blocktreiber für blockorientierte Geräte (z. B. Platte). Hier ist meist noch ein Software-Cache (Schreib-Lesepuffer mit entsprechenden Zugriffsroutinen) zur Beschleunigung der E/A-Operationen implementiert. Zur Einrichtung von Treibern und Zuweisung der "device numbers" existiert ein passendes Kommando (mknode), das nur vom Superuser aufgerufen werden kann. Die Gerätedateien enthalten selbst keine Treiber, sondern legen nur fest, welcher Treiber im Kernel über die Gerätedatei angesprochen werden soll. Wenn Sie mit ls -l das Inhaltsverzeichnis von /dev betrachten, werden statt der Dateigröße die Device-Nummern (major und minor) ausgegeben. Das erste Zeichen der Zugriffsbits lautet b oder c (block- oder zeichenorientiert). Neue Device-Dateien können mit dem Kommando mknod eingerichtet werden. Manche Dateien im /dev -Verzeichnis sind in Form von Links realisiert. So zeigt beispielsweise /dev/mouse auf die Device-Datei, die für die Schnittstelle zuständig ist, an der die Maus tatsächlich angeschlossen ist ( /dev/ttyS0 oder /dev/psaux bei PS/2-Mäusen). Um gezielt steuern zu können, welcher Benutzer auf welche Devices zugreifen darf, sind den Devices unterschiedliche Benutzergruppen zugeordnet. Beispielsweise sind die Devices /dev/ttyS* für die seriellen Schnittstellen üblicherweise der Gruppe uucp zugeordnet. Wenn der Systemadministrator möchte, dass die Userin gundel über die serielle Schnittstelle direkt auf ein Modem zugreifen darf, fügt er gundel zur Gruppe uucp hinzu (mit dem Kommando usermod -G oder durch Bearbeiten der Datei /etc/group ). Eine vollständige Beschreibung aller unter Linux zurzeit definierten Devices samt der dazugehörigen Device-Nummern finden Sie in der Datei /usr/src/linux/Documentation/devices.txt (nur, wenn der Kernel-Quellcode installiert ist). Die Zukunft des Device-Systems. Die größte Neuerung in Kernel 2.6 ist die Vergrößerung der Device-Nummern auf 64 Bits. Bereits vorhandene Device-Nummern sollten sich dadurch nicht ändern; ganz sind Kompatibilitätsprobleme aber nicht auszuschließen. Offen ist noch, ob sich am prinzipiellen Umgang mit Device-Dateien in Zukunft etwas ändern wird. Im Verzeichnis /dev befinden sich normalerweise Gerätedateien (Device Nodes), die, wie oben beschrieben, den Zugriff auf Geräte (z. B. Festplatten, Maus, Soundkarte) erlauben. Diese Gerätedateien werden normalerweise mit MAKEDEV angelegt, denn ohne Gerätedatei ist kein Zugriff auf ein Gerät möglich. Aus diesem Grunde existieren normalerweise Unmengen von Gerätedateien für größtenteils nicht vorhandene Geräte. Das udev -Dateisystem legt diese Gerätedateien dynamisch an, der Einsatz von MAKEDEV ist nicht mehr nötig und es existieren nur noch Gerätedateien für existierende Geräte mit Treiber. Mit andren Worten: nie wieder nach nicht existierenden Geräten suchen oder Device Nodes anlegen müssen. Salopp gesagt erstellt und entfernt es Einträge in /dev , basierend auf der aktuellen Systemkonfiguration. Prinzipiell ist udev ein modulares System zur automatischen Erstellung von Gerätedateien in /dev . Dies wurde erreicht durch überwachen der vom Programm hotplug generierten Ereignisse im System und Auslesen von Informationen zu diesen Ereignissen aus dem Dateisystem sysfs . udev arbeitet unter Benutzung von hotplug -Aufrufen des Kernels, wann immer ein Gerät zum Kernel hinzugefügt oder daraus entfernt wird. Die Namensgebung und Zugangsberechtigungen werden im User-Space ausgeführt. Die Ziele des udev Projekts sind: Läuft im User-space Erstellt/entfernt dynamisch Gerätedateien Liefert konsequente Benennung Liefert ein User-space API. Um diese Funktionen zu liefern, wird udev in drei unterschiedlichen Projekten entwickelt: namedev , libsysfs und natürlich udev . namedev erlaubt es, Geräte unabhängig vom udev -Programm zu benennen. Dies ermöglicht flexible Benennungsrichtlinien und Namensschemata. Das Subsystem zur Gerätebenennung liefert ein Standardinterface, das udev benutzen kann. Derzeit gibt es nur ein einzelnes Benennungsschema von namedev , LANANA, das auch von der Mehrheit der Linux-Systeme verwendet wird. namedev verwendet eine fünfstufige Prozedur, um den Namen eines bestimmten Gerätes herauszufinden. Wenn in einem dieser Schritte der Gerätename gefunden wird, verwendet es diesen Namen. Diese Schritte sind: Beschriftung oder Seriennummer Bus-Gerätenummer Bus-Topologie Statisch vergebener Name Vom Kernel gelieferter Name. Der erste Schritt überprüft, ob das Gerät ein einzigartiges Identifikationsmerkmal hat. Zum Beispiel haben USB-Geräte eine einzigartige USB-Seriennummer und SCSI-Geräte eine einzigartige UUID. Wenn namedev eine übereinstimmung zwischen dieser einzigartigen Nummer und einer gegebenen Konfigurationsdatei findet, dann wird der von der Konfigurationsdatei gelieferte Name verwendet. Der zweite Schritt überprüft die Bus-Gerätenummer. Für nicht-hot-swappable Umgebungen ist diese Prozedur ausreichend, um ein Hardware-Gerät zu identifizieren. Zum Beispiel verändern sich PCI-Busnummern selten in der Lebenszeit eines Systems. Findet namedev eine übereinstimmung mit dieser Position und einer gegebenen Konfigurationsdatei, wird der von der Konfigurationsdatei gelieferte Name verwendet. Auch die Bus-Topologie ist ein eher statischer Weg zur Definition von Geräten. Wenn die Position des Gerätes zu einer vom Benutzer gelieferten Einstellung passt, wird der beiliegende Name verwendet. Der vierte Schritt ist eine einfache Stringersetzung. Wenn der Kernel-Name (der Standardname) des Device zu einem gegebenen Ersatzstring passt, wird der Ersatzname stattdessen verwendet. Der letzte Schritt nimmt den vom Kernel gelieferten Standardnamen. In den meisten Fällen ist dies ausreichend, da es zur augenblicklich üblichen Gerätebenennung passt. udev interagiert mit dem Kernel durch das sysfs -Pseudodateisystem. Das libsysfs-Projekt liefert ein Standard-API, um auf die durch das sysfs-Dateisystem gegebenen Informationen zuzugreifen. Dies erlaubt eine Abfrage aller Art von Hardware, ohne dass man Vermutungen über die Art der Hardware anstellen muss. Jedes Mal, wenn der Kernel ein Update in der Gerätestruktur feststellt, ruft er das Programm hotplug auf. Hotplug führt die Anwendung aus, welche im Verzeichnis /etc/hotplug.d/default verlinkt ist. Hotplug übergibt die Informationen vom Kernel an das udev -Programm, das die notwendigen Aktionen (Erstellen oder Entfernen von Gerätedateien) in /dev ausführt. 1.5.2 Unix-Dateistruktur. Stimmt, das Bild war weiter oben schon zu sehen. Wenn wir uns ein Verzeichnis mit dem Kommando "ls -l" ansehen, erhalten wir eine solche Liste: Betrachten wir diese Ausgabe von rechts nach links . Ganz rechts in jeder Zeile steht der Dateiname, jede Zeile ist der Eintrag für eine Datei. Links davon steht in drei Feldern Datum und Uhrzeit der letzten Modifikation der Datei. Im fünften Feld (links vom Monat) steht die Größe der Datei in Bytes (1 Byte entspricht einem Zeichen, also z.B. einem Buchstaben). Die weiteren zwei Felder links von der Dateigröße geben den Besitzer der Datei und dessen Gruppe an. Alle Dateien in diesem Verzeichnis gehören dem Benutzer "root", der Mitglied der Gruppe "root" ist. Schließlich stehen ganz links (in der ersten Spalte) die Zugriffsrechte. Das erste Zeichen dieser ersten Spalte zeigt an, ob es sich beim entsprechenden Eintrag um eine normale Datei ("-"), um ein Verzeichnis ("d"), um ein Character-Device ("c"), um ein Blockdevice ("b") oder um einen Link ("l") handelt. Verzeichnisstruktur. 1.5.3 Sonderzeichen der Tastatur. Ctrl-S und Ctrl-Q waren früher bei langsamen, seriellen Terminals noch als Reaktionstest brauchbar. Heute sind sie nicht mehr zum Steuern der Ausgabe verwendbar, weil die Bildschirmanzeige zu schnell durchläft. Trotzdem kann Ctrl-S Ärger machen, wenn Sie versehentlich auf die Taste kommen. Dann bleibt die Ausgabe stehen und man hat das Gefühl, der Rechner reagiert nicht mehr. Also erstmal versuchsweise Ctrl-Q drücken. 1.5.4 Dateikommandos. Die ersten Kommandos. pwd (Print Working Directory) Gibt das aktuelle Verzeichnis aus - damit man weiß, wo man überhaupt rumpfuscht. cd (Change Directory) Navigieren im Dateibaum - Wechsel des aktuellen Verzeichnisses. Wechsel nur in Verzeichnisse mit Execute-Permission möglich. Es gibt zwei Aufrufformen: cd Wechsel ins Home-Directory cd [Verzeichnis] Wechsel in das angegebene Verzeichnis Es können beliebige Pfade angegeben werden, z. B.: cd /usr/hans/daten. ls [-Parameter] [pfadname] Auflisten von Dateien und Verzeichnissen mit der zugehörigen Information (Eselsbrücke: "laß sehen"). Durch Parameter wird die Ausgabe gesteuert. ls ohne Dateispezifikation listet das aktuellen Verzeichnis, sonst muß der Pfad angegeben werden. ls / listet z. B. das Wurzelverzeichnis auf Parameter: ls kennt sehr viele Parameter, die wichtigsten sind: -d nur Verzeichnisse auflisten -a alleEinträge auflisten -l Langform (alle Infos) -i Inode-Nummer anzeigen -n UID-, GID-Nummer anzeigen -R alle Unterverzeichnisse auch anzeigen -C mehrspaltige Ausgabe (sinnvoll bei Kurzform) -F Kurzformat -p / nach Verzeichnisnamen anzeigen (passt zu -C) ls -al listet z. B. alle wichtige Informationen. ls -CF liefert eine übersichtliche Kurzliste. Brauchen Sie zu einem Befehl eine Erläuterung, geben Sie 'man Befehl' ein, statt 'Befehl' natürlich den Namen des zu erklärenden Befehls. Diese Manual-Seiten sind für fast alle Kommandos vorhanden. Je nach Implementierung ist seitenweises Blättern mit der Leertaste möglich - oder ein Reaktionstest mit CTRL-S und CTRL-Q. Sehen Sie sich z. B. einmal die Infos über den Befehl 'ps' ('Prozess Status') an. Der ist auch sehr nützlich. Auch die hier vorgestellten Befehle können noch viel mehr - alles steht in dem Manual-Seiten. Es ist auch unmöglich, in diesem Skript bei jedem Kommando alle Parameter aufzuzählen. Auch werden sicher nicht alle wichtigen Kommandos besprochen. Aus diesem Grund ist für den Anfänger wie für den Profi das man-Kommando wichtig und Voraussetzung für die Arbeit. Interaktives Ändern des Paßworts. Zunächst muß das bisherige Paßwort eingegeben werden.Bei der Eingabe der Paßwörter werden diese auf dem Bildschirm nicht angezeigt. Damit Eingabefehler abgefangen werden können, ist das neue Passwort zweimal einzugeben. Programmamblauf: $ passwd. old passwd: Josef1. retype new passwd: Maria2. Das Kommando gibt aus, wer alles im System aktiv ist. Es werden Login-Name, Terminal und Datum/Uhrzeit der Anmeldung angezeigt. Zum Beispiel: Wer nur wissen will, an welchem Terminal er sitzt, tippt: who am i Das Kommando kennt etliche Parameter, die wichtigsten sind: -p Anzeige der Prozesse, die gerade laufen -T Terminal-Status (mit "write" erreichbar?) gibt den Namen des aktuellen Terminals (eigentlich jenen des Device-Treibers) aus. Direkte Ausgabe auf dem Bildschirm können auf dieses Device geleitet werden. Sie gelangen dann auf jeden Fall aus den Bildschirm, auch wenn die Eingabe umgeleitet wird (näheres später). finger Info über User. Informationen über einen User erhält man mit 'finger user' - einfach mal ausprobieren. Unter der Idle-Time versteht man übrigens die Zeit, seit der der Mensch nichts gemacht hat. write (Write Message) Mit diesem Kommando kann man einem anderen Benutzer, der gerade am Rechner arbeitet, eine Nachricht auf den Bildschirm schicken (Nachrichten an nicht eingeloggte Benutzer später). Die Nachricht erscheint sofort auf dem Bildschirm des Partners. Als Parameter wird der Benutzername des Partners angegeben. Anschließend kann der Text zeilenweise eingegeben werden. Abgeschlossen wird die Eingaben mit den EOF-Zeichen CTRL-D. Zum Beispiel: Bei Karl erscheint dann auf dem Bildschirm: mesg (Message) Solche Nachrichten sind zwar recht nützlich, können aber auch stören - wenn man z. B. gerade Texte schreibt. Denn die Nachricht zerstört ja das Bild auf dem Schirm. Mit dem mesg-Kommando kann man das Terminal gegen Nachrichten von außen sperren. mesg n sperrt das Terminal mesg y gibt das Terminal frei. 1.6 Das Prozesskonzept. Ein neuer Prozess kann nur von einem bereits laufenden Prozess erzeugt werden. Dadurch werden, ähnlich wie beim Dateibaum, die einzelnen Prozesse im Betriebssystemkern in einer baumartigen, hierarchischen Struktur verwaltet. Jeder Kind-Prozess ist genau einem Eltern-Prozess untergeordnet. Ein Eltern-Prozess kann jedoch beliebig viele Kind-Prozesse besitzen. Die Wurzel der Prozessstruktur wird durch den Systemstart geschaffen und als init-Prozess (PID 1) bezeichnet. In der Regel wartet der Eltern-Prozess auf die Beendigung seiner Kind-Prozesse. Diese Art der Prozesssynchronisation wird als synchrone Ausführung bezeichnet, der Kind-Prozess wird als Vordergrundprozess ausgeführt. Bezogen auf einen Benutzer ist die Shell (Login-Shell) der Eltern-Prozess. Alle Kommandos, die der Benutzer startet, sind Kind-Prozesse. Während diese abgearbeitet werden ruht der Eltern-Prozess. Als asynchroner Prozess oder Hintergrundprozess werden solche Prozesse bezeichnet, bei denen der Eltern-Prozess nicht auf das Ende seines Kind-Prozesses wartet, sondern parallel (quasiparallel auf einer Ein-Prozessor-Maschine) asynchron weiterläuft. Auf der Shell-Ebene kann jeder Prozess durch Anfügen von '&' (kaufm. UND) in der Kommandozeile als Hintergrundprozess gestartet werden. Jeder Prozess kann beliebig viele neue Prozesse erzeugen Die Kindprozesse erben die gesamte Prozess-Umgebung (Home-Directory, Standard-Pfadnamen, Terminal-Typ, etc.) Eltern- und Kindprozesse laufen asynchron (ElternProzess kann auf Ende des/der Kindprozess(e) warten --> Synchronisation) Eltern- und Kindprozesse können miteinamder kommunizieren Prozess-Generierung mit fork() Zwei Prozesse können miteinander kommunizieren und sich untereinander synchronisieren Ein Prozess kann einen NachfolgeProzess starten: exec() 40 externe Prioritätsebenen, 2 interne Prioritätsebenen (System/User) 1.6.1 Der Scheduler. Über einen Scheduling-Algorithmus zur Berechnung der Priorität erhält jeder einzelne Prozess einen bestimmten Teil der Rechenzeit zugewiesen. D.h. der Prozess mit der zur Zeit höchsten Priorität erhalt die CPU, wird nach einen Zeitintervall suspendiert und, falls noch nicht beendet, zu einem späteren Zeitpunkt wieder reaktiviert. Die aktuelle Priorität eines Prozesses setzt sich aus dem Produkt des CPU-Faktors und der Grundpriorität zusammen. Die Prozessverwaltung und Prioritätssteuerung ist recht komplex. In Stichpunkten: Round Robin mit Multilevel Feedback (siehe Kap. 1) Neuberechnung aller Prioritäten einmal pro Sekunde - Hohe CPU-Auslastung: Priorität sinkt länger nicht gerechnet: Priorität steigt --> einfach, effizient, gerecht. 1.6.2 Swapping und Paging. Wächst ein laufender Prozess dynamisch, werden andere Prozesse auf Platte ausgelagert; zunächst blockierte P., dann erst bereite P. Steht wieder Speicher zur Verfügung, werden erst die bereiten P. und dann die blockierten P. zurückgeholt. Je nach Hardware kann auch virtuelle Speicherverwaltung verwendet werden (Paging); bei anderen Maschinen gibt es nur Swapping. 1.6.3 Speicheraufteilung eines Prozesses im Arbeitsspeicher. 1.6.4 Prozesskommunikation und -Synchronisation. Dateien Ein oder mehrere Prozesse schreiben in Dateien, die von anderen Prozessen gelesen werden (wenig effizient). Pipes (Datenkanäle) Eine Pipe ist ein FIFO-organisierter Speicher, in den ein Prozess schreibt und aus dem ein anderer Prozess liest (FIFO = first in, first out). Pipes werden wie Dateien angesprochen, sind jedoch in der Regel als Pufferbereich im Hauptspeicher organisiert (auf Datei muß erst ausgewichen werden, wenn der Puffer überläuft). Signale sind Software-Interrupts, die asynchron auftreten. Hauptsächlich zur Kommunikation Benutzerprogramm <--> BS. Auslösung z. B. durch: Aktionen des Benutzers (CTRL-C) Programmfehler durch andere Prozesse Im Prozess muß explizit festgelegt werden, welche Aktion auf ein bestimmtes Signal erfolgen soll: Ignorieren Bearbeiten durch eine Service-Routine Ist nichts entsprechendes definiert, wird der Prozess abgebrochen. Named Pipes Bei einfachen Pipes gelten zwei Einschränkungen: Lebensdauer an die Lebensdauer der beteiligten Prozesse gebunden Kommunikation nur für Prozesse mit gemeinsamen ElternProzess oder zwischen Eltern- und Kindprozess Named Pipes werden als Spezialdateien angelegt (siehe Dateitypen), die sich wie Gerätedateien verhalten und beliebig lange leben können. Named Pipes können nur einmal gelesen werden und natürlich arbeiten sie als FIFO. Message Queues dienen dem Austausch von strukturierten Nachrichten über eine Dienstleistung des BS. Semaphore sind Zustandsvariablen als elementarer Mechanismuns zur Synchronisation von Prozessen. Shared Memory ist ein gemeinsamer Datenbereich im Hauptspeicher, der von zwei Prozessen genutzt werden kann (sehr viel effizienter als Dateien). 1.6.5 fork(), exec() und wait() fork() erzeugt einen Kindprozess, der ein vollständiges Abbild des Elternprozesses ist und der beim gleichen Stand des Befehlszählers fortgesetzt wird. Eltern- und Kindprozess wird jedoch die Möglichkeit geboten, festzustellen, ob es sich um Eltern- oder Kindprozess handelt: Der Kindprozess bekommt als Rückgabewert 0, der ElternProzess die PID des Kindprozesses. Durch bedingte Verzweigung nach dem Schema (".. if ElternProzess then . else . ") können beide Prozesse dann unterschiedlich weiterarbeiten. Etliche Systemprozesse schließen stdin, stdout und stderr, treten also in den Hintergrund. Solche Prozesse nennt man 'demon' (Daemonprozesse). Terminiert der ElternProzess vor dem Kindprozess, wird dieser zum 'Waisenkind'. Normalerweise wird er dann vom Init-Prozess 'adoptiert'. Hat der Kindprozess dann auch noch den Kontakt zum Terminal (Standardausgabe und -eingabe) wird er zum 'Zombie'. Einzelschritte beim Aufruf von fork(): Prozesstabelle überprüfen (Platz frei?) Speicher für Kindp. allokieren ElternProzess-Speicher --> Kindprozess-Speicher kopieren Prozesstabelleneintrag es Elternprozesses aktualisieren PID für Kindp. wählen, Kindp. in Prozesstabelle eintragen Kernel und Dateisystem über Kindprozess informieren Fertigmeldung an Eltern- und Kindprozess senden. wait() ermöglicht dem ElternProzess das Warten auf die Beendigung des/der Kindprozess(e). Der ElternProzess wird verdrängt und erst durch das Ende eines Kindprozesses wieder "aufgeweckt". Zur Unterscheidung mehrerer Kindprozesse liefert die Funktion wait() die PID des "gestorbenen" Kindprozesses zurück. Gibt es keinen Kindprozess, ist das Ergebnis -1. Beheben des Waisenkind/Zombie-Problems: ElternProzess ruft wait() zu spät auf: Beim Wait-Aufruf wird zuerst die Prozesstabelle nach terminierten Kindprozessen durchsucht und diese dann gelöscht. ElternProzess ist terminiert: Beim Terminieren des Elternprozesses werden dessen Kindprozesse zu Kindprozessen des Systemprozesses Init. Bei exec() wird der ursprüngliche Prozess durch einen neuen Prozess ersetzt (eine Rückkehr zum aufrufenden Prozess ist daher logischerweise nicht möglich). exec() ist der komplizierteste Aufruf, da der komplette Prozessadreßraum ersetzt werden muß. Dieser Aufruf ist auch als Kommando verfügbar (exec [Programmname]). Der Ablauf im Schema: Zugriffsrechte prüfen (Datei ausführbar?) Größe der Speichersegmente feststellen Aufrufparameter und Umgebung des Aufrufers festhalten Speicher des Aufrufers freigeben, neuen Speicher allokieren Neues Programm in den Speicher laden UID-, GID-Bits bearbeiten Prozesstabelle aktualisieren Bereitmeldung an den Kernel senden. Schließlich gibt es noch eine Systemfunktion, welche die zeitweise Blockierung eines Prozesses erzwingt: Mit sleep() kann ein Prozess für eine definierte Zeit "eingeschläfert" werden. Nach Ablauf der vorgegebenen Zeit, wird der Prozess wieder auf "bereit" gesetzt und kann weiterlaufen. Auch sleep() ist als Kommando verfügbar (sleep [Zeit in Sekunden]). 1.6.6 Die Programme init und getty. Alle Prozesse, die auf dem Rechner laufen sind Kindprozesse von init (wobei "Kind" hier auch für alle weiteren Nachkömmlinge steht). Im Single-User-Modus werden von init nur noch einige Prozesse gestartet, im Multi-User-Modus sind wesentlich mehr Prozesse zu aktivieren (z. B. der Drucker-Spooler, die Abrechnung, etc.). Alle zu startenden Prozesse sind in der Datei /etc/inittab aufgeführt. init holt sich die Informationen über zu startende Prozesse aus der Datei /etc/inittab. Für uns ist eigentlich nur das Programm getty interessant, den dieses Programm sorgt für den Kontakt mit den Terminals. Was geschieht nun weiter? getty wird von init für jedes angeschlossene Terminal gestartet. getty wartet, bis das Terminal eingeschaltet wird, liest den Usernamen ein und ruft dann mittels exec das login-Programm auf, das seinerseits das Passwort einliest. Wenn sich nun ein Benutzer anmeldet, wird das in der Benutzerliste spezifizierte Programm per exec aktiviert (in der Regel der Kommandointerpreter, die Shell). Die Shell (oder das anstelle der Shell aufgerufene Programm) arbeitet, bis es terminiert (bei der Shell durch Eingabe von EOF = CTRL-D). Da auch die Shell immer noch Kindprozess von init ist, erhält nun init ein Signal, daß der Kindprozess terminiert ist (siehe fork). Nun "wacht init auf", stellt fest, welcher seiner Kindprozesse terminiert ist und durchsucht die Datei /etc/inititab - uns interessiert wieder nur getty. In init itab steht beim Prozess getty die Steuerinformation respawn (spawn = "laichen"). Das heißt für init , daß dieser Prozess nach seiner Terminierung neu gestartet werden soll - und genau das geschieht. 1.6.7 Vorbemerkung zur Shell. 1.6.8 Einflußnahme des Benutzers auf Prozesse. Der Benutzer kann Prozesse erzeugen (siehe vorher) Der Benutzer kann eigene Prozesse jederzeit terminieren Prozesse können "im Hintergrund" laufen (mit hoher oder niedriger Priorität) Prozesse können als Batch (d.h. ohne Bindung an ein Terminal) laufen Prozesse können regelmäßig zu bestimmten Zeiten gestartet werden (z. B. jede Nacht, jede Woche, etc.) Prozesse können zu einem bestimmten Zeitpunkt gestartet werden Alles wird später im Detail behandelt! 1.6.9 Das /proc-Verzeichnis. Die Dateien im /proc -Verzeichnis sind keine echten Dateien und beanspruchen daher auch keinen Platz auf der Festplatte. Das gilt auch für die scheinbar sehr große Datei /proc/kcore , die den Arbeitsspeicher abbildet. Vielmehr handelt es sich bei diesem Verzeichnis um ein virtuelles Dateisystem, das der Linux-Kernel zur Verfügung stellt. Die meisten der /proc -Dateien liegen im Textformat vor. Um die Dateien zu lesen, müssen Sie unter Umständen cat statt less verwenden. (Manche less -Versionen kommen mit den virtuellen Dateien des /proc -Verzeichnisses nicht zurecht.) Ein paar interessante /proc-Dateien /proc/bus/pccard/* ¯ /proc/n/* Informationen zum Prozess mit der PID=n. /proc/devices Nummern von aktiven Devices. /proc/ide/* IDE-Laufwerke und -Controller. /proc/interrupts Nutzung der Interrupts. /proc/iomem Nutzung des IO-Speichers. /proc/ioports Nutzung der IO-Ports. /proc/modules Aktive Module. /proc/mounts Aktive Dateisysteme. /proc/net/* Netzwerkzustand und -nutzung. /proc/partitions Partitionen der Festplatten. /proc/scsi/* SCSI-Laufwerke und -Controller. /proc/sys/* System- und Kernel-Informationen. /proc/uptime Zeit in Sekunden seit dem Rechnerstart. über das /proc/sys -Verzeichnis können Sie sogar Kernel-Parameter im laufenden Betrieb verändern. Eine sehr ausführliche Beschreibung aller /proc -Dateien finden Sie im Buch zur Linux-Kernel-Architektur. 1.7 Grundlagen der Benutzerverwaltung. so war es jedenfalls bei den früheren Systemen (siehe unten). Deshalb gibt es seit einiger Zeit: /etc/shadow nimmt das Passwort auf und ist nur von root lesbar /etc/group nimmt die Gruppenzugehörigkeit auf. Beim Login (und beim Wechsel des Benutzerkennzeichens während einer Terminalsitzung) wird auf diese Dateien zugegriffen - sie sind übrigens für alle Benutzer lesbar. Schreiben darf jedoch nur der Superuser und das Programm passwd. Da passwd von jedem Benutzer aufgerufen werden kann, ergibt sich hier eigentlich ein Widerspruch. Gelöst wird das Problem durch das UID-Bit von passwd: während das Programm läuft, nimmt der Prozess die Identität seines Eigentümers an - und der darf schreiben. Anmerkung: Ab der Unix-Version System V, Version 3 steht das Paßwort nicht mehr in /etc/passwd, sondern in einer eigenen Datei /etc/shadow. Da /etc/passwd für alle lesbar sein muß (z. B. für die Anzeige des Benutzernamens im ls-Kommando), kann man mit entsprechenden Programmen versuchen, die Paßwörter zu 'knacken'. Durch die Verlagerung der Paßwortinfo in /etc/shadow, die nur von Superuser-Prozessen gelesen werden kann, wird diese Sicherheitslücke geschlossen. 1.7.1 Was geschieht beim Login? Das Programm login erhält vom getty-Prozess den eingegeben Benutzernamen (Login-Namen) und sucht nun in der Datei /etc/passwd nach einer passenden Zeile. Wird nichts gefunden --> Benutzer nach Paßwortabfrage abweisen. Ist der Benutzer gefunden, wird überprüft, ob ein Paßwort eingetragen ist. Falls vorhanden, wird das Paßwort abgefragt und bei fehlerhafter Eingabe der Benutzer abgewiesen. Danach wird das im Benutzereintrag spezifizierte Programm gestartet. In der Regel ist dies die Shell. Wichtig: Das Paßwort ist in der Datei /etc/passwd verschlüsselt gespeichert. Die Verschlüsselung erfolgt beim Ändern des Passworts mit dem Programm passwd oder bei der Eingabe im Login-Programm. Verglichen werden immer nur die verschlüsselten Passwörter. Auch der Superuser kann das Paßwort nicht entschlüsseln. Wenn Sie Ihr Paßwort vergessen haben, kann er nur ihr altes Paßwort löschen, damit Sie dann ein neues eintragen können. Um das "knacken" von Login-Name und Paßwort zu erschweren, fragt das Login-Programm auch dann das Paßwort ab, wenn schon der Benutzername falsch war. Außerdem wird beim Eingeben des Passworts nichts auf dem Bildschirm angezeigt. 1.7.2 Aufbau der Datei /etc/passwd. Der Login-Name (3 .. 6 Zeichen) ist der Name, unter dem der Benutzer dem BS bekannt ist. Er kann Großbuchstaben enthalten. Besteht er vollständig aus Großbuchstaben, schaltet Unix auf Großschreibung um (historisch bedingt). Das Paßwort ist verschlüsselt und es ist stets 13 Zeichen lang. Ist das Feld leer muß kein Paßwort eingegeben werden (nur RETURN-Taste). Der Superuser kann zusätzlich ein Komma und zwei weitere Zeichen eintragen, die die Gültigkeitsdauer festlegen (später mehr). Anmerkung: Ab Version 5.3 steht hier nur ein "x" und das Paßwort in /etc/shadow. Das Paßwort darf nicht mit dem Login-Namen übereinstimmen, muß mindestens 6-8 Zeichen lang sein und muß mind. zwei Buchstaben und eine Ziffer enthalten. UID = User Ident: In diesem Feld wird die Benutzernummer festgehalten (Wertebereich 0 bis 50000). Jeder Benutzer muß eine individuelle UID besitzen. Die 0 ist für den Superuser reserviert, die UIDs 1 - 99 für interne Zwecke. Reguläre Benutzer beginnen ab UID 100. GID = Group ID: In diesem Feld wird festgehalten, zu welcher Gruppe der Benutzer gehört (Wertebereich 0 bis 50000). I. A. wird die GID 100 als Sammelgruppe verwendet (für alle Benutzer die keiner anderen Gruppe zugeordnet werden). Kommentar: In diesem Feld (max. Länge 30 Stellen) werden allgemeine Hinweise zum Benutzer eingetragen (normalerweise der vollständige Name des Benutzers, Abteilung, etc). Dieses Feld wird beispielsweise von Mail- und News-Programmen abgefragt, um automatisch den Absender einzutragen. Home Directory: Beim Eintragen eines Benutzers wird ihm auch ein Arbeitsverzeichnis, das Home Directory, eingerichtet. In dieses Verzeichnis wird beim Login verzweigt. Der Pfad muß vollständig eingegeben werden. Programm: Hier wird das Programm angegeben (vollständiger Pfadname, max. 256 Zeichen), das nach Beendigung von login gestartet werden soll. Bei normalen Benutzern ist dies der Kommandointerpreter, die Shell. Sie wird auch gestartet, wenn dieser Eintrag fehlt. Je nach Anwendung des Rechners können hier aber auch andere Programme eingetragen werden, z. B. für die Buchhaltung gleich das Buchhaltungsprogramm. Es gibt auch die Auswahl zwischen den verschiedenen Shells (C-Shell, Bourne-Shell, Korn-Shell) oder der restricted Shell, die einen eingeschränkten Befehlsumfang besitzt. Beispiel für einen Eintrag in /etc/passwd: Gültigkeitsdauer des Paßworts: Die Zeitdauer wird in Wochen gezählt; der Punkt "." bedeutet 0 Wochen, der Schrägstrich "/" 1 Woche, dann folgen Ziffern und Buchstaben: 0..9: 2 bis 11 Wochen A..Z: 12 bis 37 Wochen a..z: 38 bis 63 Wochen. Sonderfälle: .. (zwei Punkte) Der Benutzer muß beim nächsten Login sein Paßwort ändern - danach lebt es ewig (für neu eingerichtete Benutzer). ./(Punkt, Schrägstrich) Der Benutzer kann sein Paßwort nicht mehr ändern. Sinnvoll bei einer "Gast"-Kennung, denn der Gast soll das Paßwort nicht ändern können. 1.7.3 Aufbau der Datei /etc/group. Gruppenname: Maximal 8 Buchstaben/ziffern, die den Namen der Gruppe festlegen. Paßwort: Zwar ursprünglich konzipiert, bleibt dieses Feld leer, denn es gibt keine Möglichkeit, das Paßwort verschlüsselt einzutragen. GID = Group ID: In diesem Feld wird festgehalten, zu welcher Gruppe der Benutzer gehört (Wertebereich 0 bis 50000). Die Nummern 0 bis 99 sind für interne Zwecke reserviert, GID 100 wird als Sammelgruppe verwendet. Benutzernamen: Hier werden alle Login-Namen der zur Gruppe gehörenden Benutzer, getrennt durch Komma, eingetragen. Einträge für die Standardgruppe, die in der Datei /etc/passwd festgelegt ist, sind nicht nötig. Beispiel für einen Eintrag in /etc/group: 1.7.4 Aufbau der Datei /etc/shadow. Name: Derselbe Benutzername, wie er in /etc/passwd steht Paßwort: Normalerweise 13-stelliges, verschlüsseltes Paßwort, in dem die ersten beiden Stellen die Verschlüsselungsmethode (eine aus 4096) kennzeichnen. Anstelle des Paßworts kann hier auch ein Sperrvermerk stehen. letzte Änderung: Der Tag der letzten Änderung des Paßworts. Gezählt wird in Tagen ab dem 1.1.1970 (offizieller Entstehungstag von Unix). Min: Minimale Gültigkeitsdauer des Paßworts in Tagen (vorher ist kein Ändern möglich). Max: Maximale Gültigkeitsdauer des Paßworts in Tagen. Der Benutzer muß vor Ablauf dieser Frist sein Paßwort ändern. Vorwarnzeit: Anzahl der Tage, wie lange der Benutzer vor Verfall seines Paßworts auf die notwendige Änderung hingewiesen wird. Inaktiv: Anzahl der Tage, die es dem Benutzer gestattet ist, seinen Account unbenutzt zu lassen. Verfall: Absolutes Datum, an dem die Verwendung des Accounts gesperrt wird. Kennzeichen: Reserviert für künftige Verwendung. Derzeit auf 0 gesetzt. Damit nun nicht alle Diese Daten beim Anlegen eines Benutzers von Hand eingegeben werden müssen, wird - so vorhanden- die Datei /etc/default/passwd herangezogen, in der Standardwerte gespeichert sind. 1.7.5 Voreinstellungsverzeichnis /etc/default. Standardwerte für das Paßwort und seine Gültigkeitsdauer. Einige wichtige Werte sind: MAXWEEKS='maximale Zeit, bis das PW geändert werden muß' MINWEEKS='minimale Zeit, in der das PW nicht geändert wird' WARNWEEKS='Vorwarnzeit' PASSLENGTH='minimale Passwortlänge' 1.7.6 Anlegen eines Benutzers. Normalerweise ist der Account nach dem Anlegen noch gesperrt, indem ein * oder ! im Passwortfeld des /etc/shadow-Eintrags eingetragen wurde. Man muss also noch perr passwd-Kommando ein Passwort vergeben. Bei useradd kann zwar mittels der Option -p ein Passwort eingetragen werden, aber es muss sich dabei schon um das verschlüsselte Passwort handeln - wenig praktikabel. 1.7.7 Benutzeraccount modifizieren. Einen Benutzer sperren. 1.7.8 Löschen eines Benutzers. Um alle Dateien (nicht Directories) eines Benutzers zu löschen, kann das Kommando find (siehe später) verwendet werden (für UID wird die User-ID des Benutzers eingesetzt): find / -user UID -type f -exec rm -f <> ";" Probleme können durch Dateien des zu löschenden Benutzers verursacht werden, auf die andere Benutzer ein Link gesetzt haben. Man kann diese Dateien z. B. den betroffenen Benutzern zuordnen. deluser. 1.8 Starten und Stoppen des Systems. Die Zuordnung der Level kann auch von der oben angeführten abweichen. Der Wechsel des Levels wird durch spezielle Kommandos erreicht, z. B. shutdown, telinit, (re)boot oder halt. So ist beispielsweise auch ein Bootstrap von einem bestimmten Datenträger (Floppy, CD-ROM, . ) möglich. Beispiel: Reboot des Systems nach 2 Minuten (Solaris): shutdown -g120 -i6 -y Shutdown sendet eine Nachricht an alle eingeloggten Benutzer, bevor der eigentliche Prozess beginnt. Nach dem Einschalten des Rechners und dem Durchlaufen des Power On Self Test wird normalerweise der Bootsektor der ersten Festplatte ausgeführt. Unter Linux wird hierfür meistens der Bootmanager GRUB verwendet. Dieser Bootmanager kann auch unterschiedliche Betriebssysteme von beliebigen Festplatten oder anderen Speichermedien (CD-ROM, DVD etc.) starten. Bei Linux ist der Ablauf noch etwas komplexer. Der Bootmanager lädt den zu bootenden Kernel. Dieser braucht zum Fortsetzen des Bootvorgangs ein Root-Dateisystem. Deshalb legt er eine "initiale Ramdisk" an, indem die Datei initrd in den Speicher geladen und als Dateisystem montiert wird. (Ja, Linux kann eine Datei als "Hülle" eines Dateisystems verwenden und wie eine Platte bzw. Plattenpartition verwenden.) Damit läft ein minimales Linux, das nun alle folgenden Aufgaben ausführen kann. Egal, ob der Reboot-Vorgang durch einen Shutdown oder durch Einschalten des Rechners ausgelöst wurde, sind die Systemaktivitäten im Prinzip immer gleich: Hardware-Erkennung (CPU, Grafikinterface, Schnittstellen, Platten usw.) Testen der Dateisysteme (Platten) Montieren (mount) der Platten (Info aus /etc/fstab bzw. /etc/vfstab). Säuberungsaktionen (z.B. Löschen von temporären Dateien, Aufheben von eventuell beim Shutdown gesetzten Sperren, etc. Starten der Systemprozesse (Scheduler, init, getty, cron, Printer-Daemon, Mail, Accounting, etc. Start der Netzwerk-Programme, montieren von Remote-Platten (NFS) User-Login freigeben. Diese doch relativ komplexen Aktionen werden wieder über spezielle Shell-Scripts gesteuert. Bei BSD-Unix war der Aufbau dieser Scripts relativ einfach. Die Datei /etc/rc enthält alle beim Systemstart auszuführenden Kommandos. Innerhalb von rc werden eventuell weitere rc-Dateien aufgerufen, z. B.: Später wurde das System dahingehend erweitert, daß es für jeden Runlevel eine eigene rc-Datei gab (rc0, rc1, rc2, usw.). Ab System V ist das System der rc-Dateien vereinheitlicht worden. Für jeden Runlevel exisitiert ein Verzeichnis unter /etc, wobei der Name der Verzeichnisse einheitlich /etc/rcx.d ist (x steht für den Runlevel, es gibt also rc0.d, rcs.d, rc2.d, usw.). Im Verzeichnis /etc/init.d (manchmal auch /sbin/init.d ) sind alle Programme (oder Shell-Scripts) gespeichert, die beim System-Boot aufgerufen werden könnten. In den Verzeichnissen rcx.d sind nun nur noch Links auf diese Programme enthalten. Alle Links folgen ebenfalls einer festen Namenskonvention: der erste Buchstabe ist entweder ein "S" oder ein "K" danach folgt eine zweistellige Zahl zum Schluß folgt der Name des Programms in /etc/init.d. Die so entstandenen rc-Scripts werden in lexikalischer Reihenfolge aufgerufen und zwar zuerst die K-Dateien, dann die S-Dateien. Die Zahl im Namen legt also die Reihenfolge innerhalb der K- oder S-Gruppe fest. Die K-Dateien dienen zum Löschen (Kill) von Prozessen, die S-Dateien zum Starten von Prozessen. Angenommen, es existieren folgende Dateien in /etc/rc.d : K30tcp S20sysetup S85lp K40nfs S40nfs S75cron. Dann ist die Aufruf-Reihenfolge: K30tcp K40nfs S20sysetup S30tcp S40nfs S75cron S85lp. Dabei sind K-und S-Dateien mit ansonsten gleichem Namen lediglich Hinweise darauf, dasselbe Programm aufzurufen. So wird z. B. bei den Dateien K30tcp und S30tcp das Programm oder Script /etc/init.d/tcp einmal mit dem Parameter "stop" und einmal mit dem Parameter "start" aufgerufen. Man kann also durch Anlegen von Links das Hochfahren des Systems sehr gezielt steuern. Das entsprechende rc-Script wird dann auch sehr einfach, es läßt sich folgendermaßen skizzieren: Ein von der rc-Datei aufgerufenens Script in /etc/init.d könnte dann z. B. so aussehen: Natürlich muss es einen Prozess geben, der die Ausführung der oben beschriebenen Scriptdateien vornimmt. Dazu wird vom Kernel die Root-Partition der Platte im Read-Only-Modus montiert und dort nach dem Programm /sbin/init gesucht und ausgeführt (andere Aufgaben von init wurden jan schon besprochen). Das Init-Programm liest seine Konfiguration aus der Textdatei /etc/inittab . In dieser Datei werden der Standard-Runlevel und das Script festgelegt, das beim Starten des Rechners ausgeführt wird: Dieses Script sorgt für Basisaktionen, z. B. das Überprüfen der Dateisysteme, das Montieren der Platten, das Stellen der Systemuhr usw. Anschließend folgen die Script-Aufrufe für die einzelnen Runlevel, der jeweils in der zweiten Spalte angegeben ist. Dabei können auch mehrere Runlevel bei einem Startscript angegeben werden. Die inittab enthält auch die Startbefehle fü die sechs virtuellen Konsolen: Sie erinnern sich, "respawn" heißt für init , daß der getty -Prozess nach seiner Terminierung neu gestartet werden soll. In der Datei /etc/inittab können prinzipiell beliebige Programme gestartet oder auch das Verhalten beim Drücken der als "Affengriff" bekannten Tastenkombination [Strg]+[Alt]+[Entf] geregelt werden: Es geht sogar noch weiter. Bei Embedded Systems (etwa einem DSL-Router) kann anstelle von init gleich die (einzige) Anwendung gestartet werden. Das Booten erfolgt in diesem Fall aus dem ROM und das ganze System läuft in der Ramdisk ab. Es sind auch alle Zwischenstufen zwischen diesem Minimalsystem und dem Standard-Desktop-System möglich, etwa ein System, das zwar mit init startet, aber dann nicht als Multiusersystem weiterbootet. Mit den Kommandos init <Runlevel> oder telinit <Runlevel> kann der Runlevel gewechselt werden. Dazu fährt init den aktuellen Runlevel herunter (Ausführen aller K-Scripten) und dann den neuen Runlevel hoch (Ausführen aller S-Scripten). Der aktuelle Runlevel kann mit dem Befehl /sbin/runlevel abgefragt werden. Aufgrund seiner Konzeption startet der SysV-Init die Prozesse immer in einer vorgegebenen Reihenfolge und er startet einen Prozess fast immer erst, wenn der vorherige Prozess fertig abgeschlossen wurde. Dieses schrittweise Vorgehen macht den Bootvorgang zwar zuverlässig, aber auch relativ langsam. Inzwischen werden beim Bootewn eies Unix- oder Linux-Systems so viele Dienste gestartet, dass der Bootvorgang relativ lange dauert. Man kann natürlich die nicht notwendigen Dinge lahmlegen, indem man einfach das entsprechende Script in /etc/init.d umbenennt (z. B. durch Anhägen von ".inaktiv"). Schon seit einiger Zeit gibt es Versuche, dieses Konzept zu überarbeiten oder wenigstens zu modifizieren. So werden zum Beispiel bei einigen Linux-Distributionen alle Prozesse in einem Runlevel gleichzeitig gestartet. Alternativen zu init waren u. a. InitNG, eINIT und Launchd in Mac OS X. All diese Konzepte haben eines gemeinsam: sie sind zielorientiert. Es wird also vorher festgelegt, welche Dienste am Ende des Startvorganges laufen sollen. Die Abhängigkeiten werden durch eine sinnvolle Startreihenfolge definiert. Upstart ist ein Ubuntu-Projekt, das den Systemstart von Ubuntu (bzw. Linux) beschleunigt. Upstart verwendet dabei einen neuen Ansatz. Programme und Dienste werden nicht mehr zielorientiert, sondern ereignisbasiert geladen und gestartet, wodurch mehrere Dienste parallel und voneinander unabhängig gestartet werden können. Hierdurch wird die Startgeschwindigkeit verbessert. Dabei ersetzt Upstart den klassischen Init-Prozess. Mittel- bis langfristig soll Upstart zum zentralen System von Ubuntu zur Verwaltung von Ereignissen ausgebaut werden. Dann könnte Upstart auch andere ereignisbasierte Dienste wie at oder cron ablösen. Sowohl Upstart als auch SysV-Init werden vom Kernel als erster Prozess mit der Id 1 gestartet, sobald dieser gebootet und etwaige Boot-Skripte aus der Initial Ramdisk abgearbeitet hat. Viele Dienste hängen vom Funktionieren bestimmter Hardware ab. So kцnnen manche Dienste erst gestartet werden, wenn die dazu nцtige Hardware intitalisiert wurde. Oder es können, um ein anderes Beispiel zu nehmen, Netzdienste erst gestartet werden, wenn die Verbindung zum Netzwerk steht. Die Entwicklung steht noch am Anfang, aber Ubuntu verwendet Upstart schon seit einiger Zeit und auch die "testing"-Version von Debian setzt es ein. Um den reibungslosen Betrieb der Distributionen zu ermöglichen, erfolgen etliche Teile der Initialisierung mit Hilfe des Kompatibilitätsscriptes in /etc/init.d/rc durch die üblichen Init-Dateien. Die Ausweitung auf Teile des Systemstarts erfolgt kontinuierlich in jeder neuen Ubuntu-Versionen, wobei temporale Events noch nicht integriert sind. Upstart wartet also auf bestimmte Events. Sobald ein Ereignis eintritt, führt Upstart alle passenden Aktionen in der Form spezieller Scripten aus. Diese wecken wiederum alle notwendigen Dienste oder richten die Hardware ein. Die einzelnen Scripte, die beim Eintreffen eines Events ausgeführt werden sollen, werden bei Upstart "Jobs" genannt und enden in der Regel auf " .conf ". Die Scripte befinden sich alle im Verzeichnis /etc/init (anfangs in /etc/event.d ). Wie beim Init wird auch bei Upstart das Programm /sbin/init als erster Prozess gestartet. Die Datei /etc/inittab gibt es bei Upstart nicht mehr. Viele der Upstart-Scripte sind noch im Kompatibilitätsmodus geschrieben. So wird man bei vielen Job-Scripte (Runlevel-Scripte), derzeit feststellen, dass sie nichts anderes tun, als das entsprechende rc-Skript aufzurufen. Das zentrale Werkzeug ist nun initctl , das Init-Jobs startet oder stoppt, Signale verschickt und den Status abfragt. So gibt beispielsweise der Befehl initctl list eine Liste aller Init-Jobs und deren Status aus. Mit initctl [start | stop] Job werden Init-Jobs gestartet bzw. beendet. Wie sieht nun ein solcher Job aus? Im Prinzip handelt es sich natürlich wieder um eine Art Shellscript - jedoch mit einigen Besonderheiten. Das sieht man am Besten an einem Beispiel: Hiermit wird einfach der Text "Bonjour Monde" in die Datei /var/log/HalloWelt.log geschrieben. Die Bedingungen fü den Event sind hier sehr einfach, bei Runlevel 2 und 3 wird es gestartet und beim Wechsel in einen anderen Runlevel beendet. Beachten Sie, dass in die eigentlich Aufgabe (im Beispiel echo ) per exec gewechselt wird. In einer Upstart-Job-Description steht hinter den Schlüsselworten "start on" das Ereignis, bei dem das hinter exec eingetragene Programm startet. Die Prozesse laufen allesamt im Vordergrund und nicht wie bei SysV-Init im Hintergrund. Umgekehrt werden die Prozesse gestoppt, wenn die Bedingung hinter "stop on" erfüt ist. Es lassen sich auch mehrere Events, auf die der Job reagieren soll, logisch miteinander verknüpfen, z. B.: Vor bzw. nach der eigentlichen Ausführung des Scripts lassen sich noch beliebige Befehle einfügen, die zwischen "pre-start script" und "end script" hinterlegt werden. Auch für die Ausführung nach dem Starten des Haupt-Scripts lassen sich auf die gleiche Weise Befehle zwischen "post-start script" und "end script" unterbringen. Fall nun jemand einwirft, dass nach einem exec das Script verlassen wurde: Das exec läuft unter der Kontrolle von Upstart ab. Mit Hilfe der Schlüsselwцrter "pre-stop script" und "post-stop script" lassen sich Befehle angeben, die Upstart vor und nach dem Beenden des Dienstes ausführen soll - etwa für Aufräumarbeiten, z. B.: Für unser Bonjour-Script hätte ich beispielsweise noch für das Vorhandensein der Datei sorgen können: Beim Stoppen eines Jobs bearbeitet Upstart nur den per exec gestarteten Prozess. Dieser erhält zuerst ein Terminate-Signal (SIGTERM). Beendet sich der Prozess nicht, wird er kurz danach per Kill-Signal (SIGKILL) abgebrochen. Da es /etc/inittab nicht mehr gibt, müssen auch die Terminalkonsolen per Upstart eingerichtet werden. Deshalb gibt es auch hier ein "respawn". Da der Job rc , nach dem Aufruf der Init-Skripte des jeweiligen Runlevels terminiert, starten die tty-Jobs nach Beenden des rc -Jobs und nicht etwa bei dessen Start, z. B.: Das Programm getty läuft im Vordergrund und wird (wie früher von Init) von Upstart überwacht. Durch das Schlüsselwort "respawn" weiss Upstart, das der Prozess immer wieder neu gestartet werden muss, wenn er sich beendet. Um eine Überlastung des Systems zu verhindern, wenn ein Prozess amok läuft und immer wieder startet, kann die "Startgeschwindigkeit" beschränkt werden: Das Limit für den Neustart wird hier mit "respawn limit" auf 10 Versuche innerhalb von 120 Sekunden festgelegt. 1.9 Sicherheitsmaßnahmen bei Arbeiten mit Root-Rechten. 1.10 Das X Window System. Das X Window System. Dabei können Client und Server über ein Netzwerk miteinander kommunizieren. Es ist also unerheblich, ob die Informationen, die auf einem Bildschirm dargestellt werden, auf dem lokalen Rechner laufen oder auf einem anderen Rechner im Netz. Client und Server verständigen sich mit einem Protokoll, dem sogenannten X-Protokoll . Dieses Protokoll nutzt als Transportbasis meist TCP/IP, aber der Betrieb auf reinen Unix-Sockets ist ebenso möglich (lokaler Betrieb). Technisch gesehen ist das X-Protokoll die eigentliche Definition des X-Window-System. Zur Verdeutlichung noch ein Hinweis: bei den meisten anderen Client-Server Systemen (beispielsweise Datenbanksystem, Mailsystem usw.) befindet sich der Client näher am Benutzer als der Server. Bei X ist das naturgemäß umgekehrt, da der Server Tastatur und Bildschirm verwaltet und den Clients zur Verfügung stellt. X begann auch als Protokollspezifikation. Nachdem vor einigen Jahren immer schnellere Rechner mit Bitmap-Grafikdisplays erhältlich waren, ging das MIT mit der Unterstützung von einigen Firmen (dem X Consortium) daran, das Windowsystem für die Zukunft zu spezifizieren. Es wurde dabei zuerst ein Protokoll festgelegt. Danach begann das MIT mit einer Beispielimplementierung des Protokolls, um zu zeigen, wie es funktioniert und welche Möglichkeiten es bietet. Nach einigen Jahren begannen dann Firmen mit dem Vertrieb von kommerziellen Implementierungen des X Protokolls. Da das Protokoll allerdings recht aufwendig war - es teilt sich der Klarheit wegen in mehrere streng getrennte Schichten - waren die anfänglichen Implementierungen relativ langsam. Wesentlich langsamer jedenfalls als solche Windowsysteme, die direkt auf das Bitmap-Display zugreifen. Es folgten dann immer mehr Programme, die auf dem X Window System aufbauen. Das X Window System ist jedoch keine einheitliche Benutzeroberfläche, die ein bestimmtes "Look-and-Feel" bietet. X könnte aussehen wie der Macintosh Finder oder wie Microsoft Windows. Dieses deshalb, weil das X-Protokoll sehr einfach ist. Man kann lediglich grafische Elemente (Linien, Kreise, Widgets etc.) und Zeichen auf dem Bildschirm anzeigen. Das Protokoll enthält keine komplexeren Grafikelemente wie Buttons oder Menus. Deshalb gibt es auch keine Aussagen über Aussehen von Anwendungsprogrammen (Style Guide), so daß sich mehrere Standards gebildet haben. Möchte man zum Beispiel einen Knopf (Button) mit einer Aufschrift, so muß dieser aus Linien und Text selbst zusammengesetzt werden. Dies kann dem Programmierer aber auch durch ein Toolkit abgenommen werden. Diese Toolkits bestimmen dann hauptsächlich das Look-and-Feel. Komponenten von X. Das Pointing-Device muß nur zum Zeigen auf Punkte fähig sein. Es könnte zum Beispiel auch ein Touch-Screen sein. Oder eine Maus mit nur einer Taste. Soll ein Programm konform zur X-Spezifikation sein, müssen alle Funktionen mit nur einer Maustaste ausführbar sein. Dies kann man z. B. erreichen, indem man beim Drücken der Maustaste auch noch gleichzeitig gedrückte Tasten (Control, Meta, etc.) abfragt. Softwareseitig gibt es folgende Prozesse: Die Rahmen und Titelbalken, die die einzelnen Fenster verzieren, sind nicht Teil des jeweiligen Clients, sondern werden vom Windowmanager um die Fenster herumgezeichnet, damit durch ihre Betätigung Funktionen des Windowmanagers ausgelöst werden können. Der Windowmanager bestimmt somit auch "look-and-feel" der Benutzeroberfläche. Beachten Sie aber, daß der Window-Manager aber auch nur ein ClientProzess ist. Es gibt alle möglichen Window-Manager: Anmerkung: "Cut-and-Paste" konnte X schon immer. Einfach in einem Fenster den Text markieren und dann im anderen Fenster die mittlere Maustaste drücken - geht immer und überall. Was ist das Besondere an X? X ist netzwerkfähig. Clients können ihre Grafikausgabe auch auf Server machen, die auf anderen Rechnern im Netz laufen. Als Netzwerkprotokolle können dabei verschiedene Protokolle eingesetzt werden. Bei Unix ist dies meist TCP/IP. Wie benutzt man X über ein Netzwerk. Auf dem Zielrechner muß dem Server mitgeteilt werden, daß er Requests vom Senderechner zulassen darf. Das geschieht mit dem Kommando: Auf dem Senderechner muß man dem Client mitteilen, daß die Ausgabe nicht auf dem eigenen Display erscheinen soll, sondern beim Zielrechner. Dazu setzt man entweder die Environment-Variable oder man schreibt beim Aufruf des Programms Zum Beispiel startet man auf einem fernen Rechner in einem Terminal mit dem Kommando den Browser und leitet dessen Ausgabe auf den eigenen Bildschirm (myhost:0.0). Die Zahl hinter dem Rechnernamen gibt die Nummer des Displays an. Sie kann auch eine Nachkommastelle haben, z.B. 0.0. Normalerweise haben aber die Rechner nur ein Display mit der Nummer 0. Noch einfacher geht es mit SSH. Ein xterm mit einer Shell auf einem Remote-Rechner erhält man mit dem Kommando: ssh -X [SSH_OPTIONS] [USER@]HOST SSH regelt automatisch die Verwendung von X-Window. Man muß also auf dem Remote-Rechner weder eine X-Window-Authorisierung noch die Environment-Variable DISPLAY setzen. Die X Session. Der Mechanismus funktioniert folgendermaßen: von Systemprozessen wird eine Prozedur aufgerufen, welche die Session steuert. Wenn sich die Prozedur beendet, übernehmen wieder die Systemprozesse die Steuerung. Bei xdm heißt die Benutzer-Session-Prozedur ".xsession" und die zusätzliche Session-Prozedur ".xsession+". Man sollte darauf achten, daß diese Dateien ausführbar sind. Außerdem wird die Session beendet, wenn sich die Prozedur beendet. In der Prozedur sollten also alle Kommandos im Hintergrund gestartet werden, außer dem letzten, das während der gesamten Session laufen muß. Dies ist meist der Window-Manager. Wird dieser dann mit Exit beendet, wird auch die Session mit allen anderen Clients beendet. X und Sicherheit. Ein anderes Problem liegt am Konzept des TCP/IP-Protokolls. Da nicht alle Rechnertypen, die am Internet hängen, das Konzept einer Benutzer-ID haben, ist diese auch bei TCP/IP nicht vorgesehen. Auf den X-Server kann also nicht nur der augenblickliche Benutzer der Konsole zugreifen, sondern alle Benutzer des Rechners. Und das in beliebiger Form. Ein anderer Benutzer kann zum Beispiel den gesamten Bildschirminhalt überschreiben. Bei jedem Anmelden an einem Rechner generiert das Programm xdm , das die Anmeldemaske zur Verfügung stellt, einen Schlüssel und legt ihn in der Datei .Xauthority im HOME-Verzeichnis des Benutzers ab. Jedes X-Programm, das der Benutzer dann startet, sucht in dieser Datei nach dem Schlüssel und gibt ihn dem Server beim Aufbau der Verbindung an. Nur wenn dieser Schlüssel mit dem übereinstimmt, der beim Login generiert wurde, wird die Verbindung tatsächlich aufgebaut, ansonsten wird der Aufbauversuch vom Server zurückgewiesen. Auf diese Art wird verhindert, daß jeder Benutzer seine Fenster auf den Bildschirm eines anderen Benutzers legen und diesen dadurch bei seiner Arbeit behindern kann. Voraussetzung für die Sicherheit des Systems ist natürlich, daß die Rechte für die Datei .Xauthority richtig gesetzt sind. Nur der Eigentümer der Datei darf dafür das Lese- und Schreibrecht haben, alle anderen Benutzer nicht einmal das Leserecht, da sie sonst den Schlüssel aus der Datei herauslesen könnten. X ermöglicht unter anderem jedem Programm, das eine Verbindung zum X-Server aufbauen kann, das Mitlesen von Tastatureingaben, die auf dem Rechner vorgenommen werden. Darunter können natürlich auch Paßworteingaben sein (zum Beispiel bei einem rlogin ). Daher darf der Zugriff auf den Server auf keinen Fall unkontrolliert freigegeben werden. Der Terminalemulator xterm. Optionen: -e name [parameter] : Das Programm name wird sofort ausgeführt, wenn sich das Fenster öffnet. Am Ende des Programms wird das Fenster wieder geschlossen. Die angegebenen Parameter werden dem Programm übergeben. Der Fenstertitel und Iconname heißen dann auch name (soweit keine Option -T oder -n verwendet wurde). Die Option muß als letzte in der Optionenfolge eingegeben werden, da alles, was der gesamte Zeilenrest als Teil des auszuführenden Befehls betrachtet wird! Beispiel: xterm -e vi main.c -l : Jede Ausgabe in xterm wird in der Datei XtermLog.nnnn ( nnnn entspricht der Prozessnummer) abgespeichert und gleichzeitig im Fenster angezeigt. +l : Kein Logging. -lf Dateiname : Die Logging-Ausgabe wird in der Datei Dateiname abgelegt. -sb : Erzeugt den Scroll-Balken am linken Fensterrand. +sb : Kein Scroll-Balken. -sl nn : nn gibt an, wieviele Zeilen nach dem Herausrollen aus dem Anzeigebereich gespeichert werden sollen. Voreinstellung: 64 Zeilen. -T string : setzt string als Fenstertitel. -n string : setzt string als Fensternamen für den Iconmanager. -rv : Tausche Vordergrund- und Hintergrundfarbe. -geometry expression : gibt an, wie groß das Fenster sein soll und wo es plaziert werden soll. Das Format für expression: breite x höhe +xkoord +ykoord. 'breite' und 'höhe' geben die Fenstergröße (in Buchstaben) an, 'xkoord' und 'ykoord' die Position (in Pixeln). Ein xterm -Fenster hat gemäß Voreinstellung 24 Zeilen mit 80 Zeichen Breite. -iconic : Das aufgerufene Fenster wird sofort iconifiziert. Es erscheint also nur als Eintrag im Iconmanager (falls vorhanden) und/oder als einzelnes Icon. Die Datei .xsession. Die Datei .xxxwmrc. Die Datei .rhosts. Die Datei .Xdefaults. Konfiguration von X-Clients über die Kommandozeile. Die Auswahl der Schriftart erfolgt mit dem Parameter -fn . Die Schriftnamen unter X11 sind etwas komplex; weiter unten wird diese Nomenklatur noch etwas erlätert.Momentan genügt das Wissen, dass es ein Programm gibt, das alle im System vorhandenen Schriften auflistet: xlsfonts . Sein Aufruf listet alle Schriften auf: Mit xfontsel kann man sich die Schriften sogar ansehen. Um ein xterm mit einer bestimmten Schrift zu starten, ruft man es mit Parameter auf: X11 verwaltet den Bildschirm als zweidimensionale Fläche mit kartesischem Koordinatensystem. Die obere linke Ecke entspricht der Position 0,0 . Die untere, linke Ecke wird durch die maximale Auflösung bestimmt. Ein X-Client kann mit dem Parameter -geometry Größe und Position des Fensters auf dem Schirm angeben. Beginnen wir mit der Größe. Das xterm -Fenster soll anstatt der Standardgröße von 80 Spalten und 24 Zeilen nun 90 Spalten und 30 Zeilen besitzen: Nach dem -geometry folgt die Angabe von Spalten und Zeilen (mit einem "x" dazwischen). Wem das Wort "geometry" zu lang ist, kann es auch mit "g" abkürzen (meistens). Achtung: Die Angabe von Zeilen und Spalten bezieht sich beim xterm auf Zeichen, nicht auf Pixel. Graphikorientierte Programme rechnen hier mit Pixeln, zeichenorientierte Programme mit Zeichen. Um also etwa ein Programm wie xclock in der Größe zu ändern, muss in Pixeln gerechnet werden. Die zweite Aufgabe von -geometry ist die Positionierung eines Fensters auf dem Schirm. Dazu wird der Offset zum Rand des Schirms angegeben, ein Pluszeichen meint den oberen bzw. den linken Rand, ein Minuszeichen den unteren bzw. rechten. Je nach verwendeten Zeichen + oder - ergibt sich die Ecke des Bildschirms und des Fensters, auf die sich die Koordinaten jeweils beziehen. Es gibt vier Möglichkeiten: +0+0 obere, linke Ecke -0+0 obere, rechte Ecke -0-0 untere, rechte Ecke +0-0 untere, linke Ecke Dazu ein Beispiel: positioniert die obere linke Ecke des Terminalfensters 10 Pixel vom linken Rand und 50 Pixel vom oberen Rand entfernt. Bei dieser Angabe sind übrigens immer Pixel die Masseinheit. Um sich z. B. auf die untere linke Ecke zu beziehen schreiben Sie: Es ist sogar möglich, die Bezugskanten zu mischen. Die Zeile positioniert das Fenster so, dass sein linker Rand 10 Pixel vom linken Rand des Bildschirms entfernt ist und seine untere Begrenzung 100 Pixel vom unteren Rand. Die Angaben von Größe und Position lassen sich kombinieren, wobei immer die Größe zuerst angegeben wird, danach folgt (ohne Leerzeichen aber mit Vorzeichen + oder -) die Positionsangaben. Um ein xterm mit 90 Spalten und 30 Zeilen an der Position 10,100 zu erhalten schreiben Sie: Wird keine Angabe zur Position gemacht, so übernimmt der Window-Manager die Positionierung. Zur Einstellung der Farbe dienen in der Regel die Parameter -fg für die Vordergrundfarbe (foreground) und -bg für den Hintergrund (background). Das Farbmodell von X wird weiter unten besprochen. Auch hier existiert ein Programm, das die Namen aller bekannten Farben auflistet: showrgb . Es liest einfach nur die Datei /var/X11R6/lib/rgb.txt , in der die Farbnamen und Farben definiert sind. Um ein xterm mit blauem Hintergrund und gelber Schrift zu erhalten, geben Sie folgendes Kommando ein: Mit Font, Geometrie und Farben kann man schon sehr viel Individualität in seine X-Oberfläche bringen. Die Festlegung der Programmeigenschaften über die Kommandozeile kann zu recht langen Kommandos füren, wie das folgende Beispiel zeigt: Deshalb gibt es noch einen andere Möglichkeit: Konfiguration von X-Clients über Resourcen. Ressourcen sind hierarchisch aufgebaut. Jedes Programm greift auf eine Klasse von Resourcen zu ( xterm zum Beispiel auf Xterm ). Darunter können sich Komponenten des Programms befinden und am Ende der Hierarchie stehen Eigenschaften. Teile der Hierarchie können auch durch Wildcards ('*') ersetzt werden. Was kann man nun überhaupt mit Ressourcen festlegen? Eigentlich alles! Welche Ressourcen ein Client versteht, kann in der Regel in seiner Manualpage nachgelesen werden. Die grundsätzliche Form eines Eintrags ist immer die Gleiche: Es gibt noch einen netten Trick, für ein Programm mehrere Alternativ-Ressourcen zu erstellen: die Verwendung von symbolischen Links. Sie können beispielsweise folgende Zeilen in der Datei .Xresources aufnehmen: Jetzt erstellen Sie noch zwei symbolische Links auf /usr/X11R6/bin/xterm : Damit gibt es nun zwei neue Programme, gelbterm und gruenterm. Nachdem die Datei .Xresources neu geladen wurde (Neustart des X-Servers oder Aufruf von xrdb -merge .Xresources ) können Sie die Programme aufrufen. In der Regel haben Clients sehr viele Resourcen, wesentlich mehr als mögliche Kommandozeilenparameter. So kann einem Xterm beispielsweise durch die Resource XTerm*scrollbar:true eine Scrollbar hinzugefügt werden. Damit alle diese Resourcen auch über die Kommandozeile möglich sind, gibt es den Parameter -xrm , dem ein Resourcenstring folgen kann. Damit ist es möglich, Programmeinstellungen über die Kommandozeile vorzunehmen, für die es zwar Resourcen gibt aber keine Parameter. Das Farbmodell von X11. Diese Datei hat ein leicht zu überblickendes Format. Jede Zeile repräsentiert eine Farbe, die ersten drei Felder der Zeile enthalten die dezimalen Werte für die Rot-, Grün- und Blauanteile, das vierte Feld den Namen der Farbe. Jeder Wert für die Farbanteile kann von 0 bis 255 reichen (24-Bit-Darstellung mit 16 Millionen Farben). Bei Grafikmodi mit weniger möglichen Farben werden die Werte umgerechnet. Zum Beispiel: Um eigene Farben zu definieren, müssen Sie nur diese Datei entsprechend erweitern. Nach einem Neustart des X-Servers existiert die neue Farbe. Zum Beispiel fügen Sie die fiolgende Zeile hinzu: Nach einem Neustart des Display-Servers kann nun mit xterm -bg KotzeGruen ein X-Terminal aufgerufen werden, dessen Hintergrund in dieser Farbe gestaltet ist. Im gesamten X11-System steht diese Farbe jetzt zur Verfügung. Aber Vorsicht: Sollte einmal eine Anwendung auf einem anderen Server laufen, dessen Datei rgb.txt diese Zeile nicht enthält, kann er mit der Farbe nichts anfangen. Fontdefinition bei X11. Hersteller: Meist die Herstellerfirma der Schriftart, manchmal aber auch nur eine weitere Schublade wie misc oder bitstream. Schriftart: Die "Schriftfamilie" also etwa Times, Helvetica, Palatino, Utopia, . Gewicht: Das "Gewicht" der Schwärze wie black, bold, demibold oder medium. Neigung: Die Schräge der Schrift. "i" steht für "italic" (kursiv), "r" für "roman" (aufrecht). Breite: Die Breite einer Schrift wie normal, narrow oder condensed. Stil: Zusätzliche Stilangaben. Pixels: Das Höhenmaß der Schrift in Pixel (in einer bestimmten Punktgröße und Auflösung) Punkte: Die Größe der Schrift in typographischen Punkten (1/72 Zoll) angegeben in Zehntel-Punkten. X-Auflösung: Horizontale Auflösung in Dots per Inch (DPI) in der die Schrift ursprünglich erstellt wurde. Y-Auflösung: Vertikale Auflösung in Dots per Inch (DPI) in der die Schrift ursprünglich erstellt wurde. Spacing: Die Beschreibung der Raumaufteilung einer Schriftart. Mögliche Werte sind hier "p" für "proportional", "m" für "monospaced" und "c" für "charactercell" (nicht proportional). Durchschnittsbreite: Die durchschnittliche Breite eines Zeichens dieser Schrift. Zeichensatz: Die ISO-Standard, die diese Schrift enthält. Optionen des Zeichensatzes: Die Nummer der ausgewählten Zeichensatzseite des Standards. Oft werden statt einzelner Angaben auch ein Sternchen angegeben, dann wird die erste passende Einstellung genommen. So wird ein * bei der Angabe der Neigung automatisch zu einem "i". 1.11 UNIX-Dдmonen. In der Regel werden Daemons nicht durch einen Benutzer gestartet, sondern automatisch beim Wechsel in einen anderen Runlevel oder beim Systemstart. Dadurch stellen Daemons einen wesentlichen Anteil des Bootprozesses dar, da bei den meisten UNIX-Systemen. Typische Daemon-Programme sind bei auch Prozesse, die die Hardwarekonfiguration bzw. -Ьberwachung vornehmen. Auch periodische Aufgaben oder zu festgelegten Zeiten anfallende Aufgaben werden mit Hilfe von Daemons realisiert (crond). Es gibt beim BSD-UNIX ein Bild des BSD-Daemons (Teufelchen mit Turnschuhen und Dreizack), das auch die Titelleiste dieses Skripts ziert. Das Wort leitet sich vom griechischen Wort "Daimon" ab. "Daimon" stand in der griechischen Mythologie fьr "Geist der Abgeschiedenen". Bei den alten Griechen und auch bei den frьhen Christen waren Dдmonen Schutzgeiser und Zuteiler des Schicksals, weshalb man "eudaimon" (glьcklich) und "kakodaimon" (unglьcklich) sein konnte. Erst im frьhen Mittelalter wurden die Dдmonen "damonisiert", als verteufelt. In ganz дhnlicher Bedeutung existiert im Deutschen das nur selten gebrauchte Wort "Schemen" fьr Geister, Gespenster und Spukgestalten. Der Dдmon ist auch verwandt mit "daimonion", dem Gewissen oder Schicksal. Interessant sind die weiteren Beziehungen von "daimon": einerseits zu dem griechischen Wort fьr Volk "dдmos", was eigentlich "abgeteiltes Gebiet" bedeutet. Wir finden es als Wortstamm wieder im deutschen Wort "Demokratie".

Linux konsole farben bedeutung

Hier finden Sie Tipps und Tricks zu R . Oft sind nьtzliche Informationen “irgendwo” im Text oder Programmcode vergraben und hier werden sie tabellarisch aufgefьhrt! Funktionsmodell, apply-Familie, Funktionsmodell, Aufruf Funktionsmodell, data.frame “Globale” Variable if-Variante Interpolation OpenOffice PDF-Date i, Grafik umlenken Verzeichnis anzeigen Zeit, Berechnung mit der - Grafik: Legende (Achsenbeschriftung) Legende. Enthдlt Ihr z. B. Datensatz (data.frame) eine Gruppierungsvariable ( Faktor ) und Sie mцchten bezogen auf die Ausprдgungen der Gruppierungsvariablen eine Funktion, wie z. B. mean() um den Mittelwert zu schдtzen, anwenden, kцnnen Sie dies ьber die Funktion ave() erreichen. In dem folgenden Beispieldatensatz Daten ist die Variable x4 die Gruppierungsvariable. 1 1.0 0.5 0.03 0.20 ja. 2 2.1 1.2 0.07 0.45 ja. 3 3.1 1.5 0.13 0.60 nein. 4 3.9 2.1 0.22 0.80 ja. 5 5.0 2.6 0.30 1.00 nein. 6 5.8 3.0 0.32 1.20 nein. 7 7.3 3.6 0.41 1.50 ja. 8 8.1 4.1 0.46 1.76 ja. 9 9.2 4.6 0.55 1.90 ja. 10 10.3 5.5 0.62 2.10 nein. Fьr die Beobachtung (Variable) x1 soll in Abhдngigkeit von x4 der Mittelwert geschдtzt werden. D. h., es soll der Mittelwert fьr die x1-Ausprдgungen geschдtzt werden wenn x4 = ja und wenn x4 = nein ist: > # Daten$x1: Daten zur Auswertung, Daten$x4: Daten zur Gruppierung. > ave(Daten$x1, Daten$x4, FUN = mean) [1] 2.683333 2.683333 3.150000 2.683333 3.150000 3.150000 2.683333 2.683333. [9] 2.683333 3.150000. Der Mittelwert 2.683333 wird fьr x1 geschдtzt, wenn x4 = ja ist und der Mittelwert 3.15 wenn x4 = nein ist. Eine hilfreiche Funktion zur Positionsbestimmung bestimmter Merkmalsausprдgungen in z. B. einem Datensatz ( data.frame ) ist die Funktion which() . Das folgende Beispiel zeigt die Funktionsweise von which() und dazu wird ein Datensatz erzeugt, der aus 3 Merkmalen mit jeweils 20 zufдllig erzeugten Ausprдgungen belegt ist: > Beispiel <- data.frame( x = runif(20), y= runif(20), rquadrat=runif(20)) 1 0.695944964 0.33340255 0.05648682. 2 0.335060718 0.78721482 0.10211375. 3 0.701246433 0.08936092 0.32834186. 4 0.840534915 0.04369990 0.99060051. 5 0.882632007 0.51493374 0.71436534. 6 0.766589350 0.04808933 0.07897418. 7 0.322027628 0.08919613 0.61421645. 8 0.042117008 0.68832552 0.49323367. 9 0.892709922 0.03483853 0.26909765. 10 0.638105145 0.43091092 0.29311086. 11 0.554493116 0.75929405 0.47527830. 12 0.766329948 0.83179695 0.96407855. 13 0.096861294 0.38246252 0.42363210. 14 0.748016488 0.61555482 0.84409710. 15 0.875217988 0.34498665 0.95382735. 16 0.007668596 0.53227877 0.28647352. 17 0.934916985 0.26000911 0.54084940. 18 0.406965658 0.57286062 0.58137832. 19 0.788763390 0.90584668 0.25628689. 20 0.976127625 0.56602188 0.87808397. Wir mцchten nun beispielhaft wissen, fьr welche Zeilen das Merkmal rquadrat mit einer Ausprдgung > 0,8 belegt ist: [1] 4 12 14 15 20. Ьber die Funktion which() mit obigen Argumenten werden 5 Indizes ( 4 12 14 15 20 ) ausgegeben und zur schnelleren Identifizierung wurden sie im obigen data.frame Beispiel gelb markiert. Argumente einer Funktion. Sind Ihnen die Argumente zum Funktionsaufruf nicht mehr gelдufig und Sie mцchten sich auch nicht durch die Hilfefunktion zur Funktion arbeiten, hilft das Argument args( Funktion ) weiter. Die Argumente zur Funktion kontingenz() ( Kontingenzanalyse ) ьber die Funktion args() aufgerufen, sind folgende: function (x, P = 0.95, info = TRUE) Oder fьr die Funktion rnorm() werden folgende Argumente benцtigt: function (n, mean = 0, sd = 1) Wenn Sie eigene Funktionen schreiben und in dieser Funktion z. B. die argumentreiche Funktion plot() verwenden, besteht bei Ihnen sicher der Wunsch nicht alle fьr plot() nцtige Argumente formal anzugeben. Um dennoch die Mцglichkeiten von plot() nutzen zu kцnnen, bietet R das . -Punkte-Argument an. D. h., Sie kцnnen ьber das . -Punkte-Argument die nцtigen Argumente an die plot() -Funktion weiterleiten. Diese Funktionsweise wird am Beispiel der Funktion mean() gezeigt: Beinhaltet Ihr Datensatz Daten mindestens ein NA (z. B.: 95 94 96 NA 97 93) liefert folgender Funktionsaufruf dreipunkte(Daten) kein brauchbares Ergebnis. Aber durch das . -Punkte-Argument liefert dieser Aufruf dreipunkte(Daten, na.rm = T) das richtige Ergebnis 95. Das Argument na.rm = T durch die . -Punkte zur Funktion mean() “durchgeleitet”! Amazon Web Services EC2. Ist Ihr Computer-System mit der aktuellen R -Aufgabe ьberfordert oder Sie mцchten es einfach nur entlasten, bietet sich das Auslagern der Aufgabe in Cloud an. Verschiedene Internet-Provider oder auch Amazon bieten Computer-System-Kapazitдten zur Miete an. Amazon macht es dem Cloud-Anfдnger besonders leicht, weil die mirco -Cloud-Kapazitдt fьr 365 Tage kostenfrei angeboten wird. Das bedeutet, Sie kцnnen in Ruhe Cloud -Erfahrung sammeln! Im Folgenden wird das Einrichten und Nutzen einer R -Umgebung unter Windows in einer Amazon-mirco-Cloud als Ьbersicht beschrieben. Die Beschreibung und Aussagen, besonders zu Kosten, sind ohne Gewдhr! Wie angedeutet, werden nur die wesentliche Schritte beschrieben und der erste wesentliche Schritt ist das Anlegen eines Kontos ьber das Amazon Web Service Portal und hierzu benцtigen Sie eine Kreditkarte! Wenn Sie sich fьr die kostenfreien Konfigurationen unter Linux oder Windows entscheiden, fallen Kosten im Centbereich an, die aber wahrscheinlich nie beglichen werden mьssen! Die Amazon-Beschreibung zum Anlegen einer Instanz (in diesem Beispiel die Windows-Umgebung) wird zurzeit nur in englischer Sprache angeboten, ist aber recht gut. Der zweite Schritt im Anlegen einer Instanz, ist die Auswahl des Betriebssystems (Bild 1). Die Betriebssystem, die mit eienm Stern gekennzeichnet sind, sind kostenfrei! Geben Sie der anzulegenden Instanz einen Namen (hier R-Umgebung ) und ebenso fьr den Schlьssel (hier R-EC2 ), den Sie zum spдteren Zugang benцtigen. Nach Continue wird Ihnen die Auswahl zur Bestдtigung dargestellt (Bild 2). Unter Type kцnnen Sie erkennen, dass es sich um die kostenfreie micro -Instanz handelt! Mit Launch wird die Instanz angelegt (Bild 3): Bild 3 zeigt noch weitere Informationen, wie die wichtige IP-Adresse ( DNS -Name)! Fьr dieses Beispiel lautet sie bei Auswahl der Region Irland ec2-54-216-114-224.eu-west-1.compute.amazonaws.com . Legen Sie eine weitere oder neue Instanz an, wird eine weitere oder neue IP-Adresse erzeugt. Diese lange IP-Adresse kann auch gegen eine elastische IP-Adresse ausgetauscht werden. Sie sieht wie eine gewohnte IP-Adresse, z. B. 46.51.189.215 , aus und kann der angelegten Instanz zugeordnet werden. Die Adresse (egal welcher Typ) wird noch zur Verbindungsherstellung benцtigt! Amazon empfiehlt die Einstellung der Security Groups , was aber fьr die ersten Gehversuche nicht unbedingt notwendig ist! Im nдchsten Schritt schaffen wir die Voraussetzung zur Verbindungsherstellung ьber das Windows-Programm Remotedesktop . Der schnelle Weg ist, indem Sie mit der rechten Maustaste in einen freien Bereich des Instanzьbersicht (Bild 3) klicken und einen Remotedektop-Shortcut erstellen (Bild 4): Im Bild 4 ist der Bereich “Retrieve Password” gelb markiert! Diese Funktion benцtigen Sie, um aus dem erzeugten Schlьssel R-EC2 das lesbare Passwort zu erzeugen, das Sie zum Aufbau der Remotedesktop-Verbindung benцtigen. Nach dem Ausfьhren des Remotedesktop-Shortcuts muss das Herstellen der Verbindung noch bestдtigen werden und dann wird Ihnen auf Ihrem Computer die Oberflдche der angelegten micro-Instanz zur Nutzung angezeigt (Bild 5): Wenn dann noch die Amazon-Instanz auf Ihren Computer zugreifen kann (Laufwerkfreigabe im Remotedesktop-Programm!) steht dem Kopieren der R -Installationsdatei nichts mehr im Wege (Bild 6): Nach dem Kopieren auf die Amazon-Instanz kцnnen Sie R wie gewohnt installieren und nutzen (Bild 7): Fertig! Aber noch einen Hinweis: Beenden Sie die Remotedesktop-Verbindung, wird nicht das laufende R -Programm beendet und auch nicht die laufende Instanz (ist ja auch so gewollt)! Sie kцnnen also R “arbeiten” lassen und Ihren Computer runterfahren! R und auch die Amazon-Instanz muss explizit beendet und terminiert werden! Die Funktion aggregate() verschafft Ihnen einen zusammenfassenden Ьberblick ьber Datenobjekte bezьglich statistischer Parameter. Was sich ein wenig holperig anhцrt, lдsst sich durch ein simples Beispiel beschreiben! Dabei wird auf das R-Datenobjekt ChickWeight zurьckgegriffen. Verschaffen wir uns einen Ьberblick ьber die Datenstruktur : Classes ‘nfnGroupedData’, ‘nfGroupedData’, ‘groupedData’ and 'data.frame': 578 obs. of 4 variables: $ weight: num 42 51 59 64 76 93 106 125 149 171 . $ Time : num 0 2 4 6 8 10 12 14 16 18 . $ Chick : Ord.factor w/ 50 levels "18"<"16"<"15"<. 15 15 15 15 15 15 15 15 15 15 . - attr(*, "formula")=Class 'formula' length 3 weight. Der Datensatz beinhaltet zwei nummerische Variablen: weight (das Huhngewicht) und Time (eine zeitliche Klassifikation - Lebenszeit der Hьhner). Ьber die Lebenszeit der Hьhner ( Time ), mцchten wir nun das mittlere Huhngewicht ( weight ) schдtzen: Time, data = Hьhner, FUN = "mean") Das mittler Huhngewicht fьr die Zeitperiode 12 betrдgt 129,24 . Die Funktion aggregate() bitte noch einige Mцglichkeiten, rufen Sie dazu die Hilfe auf! Sie verfьgen z. B. ьber einen Datensatz (data.frame), der doppelte Eintrдge enthдlt und diese mцchten Sie vor der weiteren Analyse entfernen. Hier hilft die Funktion duplicated() weiter! Hier ein Beispiel: > Daten # Duplikate sind gelb markiert! 1 1.0 0.5 0.03 0.20. 2 2.1 1.2 0.07 0.45. 3 3.1 1.5 0.13 0.60. 4 3.1 1.5 0.13 0.60. 5 3.9 2.1 0.22 0.80. 6 5.0 2.6 0.30 1.00. 7 5.8 3.0 0.32 1.20. 8 5.8 3.0 0.32 1.20. 9 7.3 3.6 0.41 1.50. 10 8.1 4.1 0.46 1.76. 11 9.2 4.6 0.55 1.90. 12 10.3 5.5 0.62 2.10. 1 1.0 0.5 0.03 0.20. 2 2.1 1.2 0.07 0.45. 3 3.1 1.5 0.13 0.60. 5 3.9 2.1 0.22 0.80. 6 5.0 2.6 0.30 1.00. 7 5.8 3.0 0.32 1.20. 9 7.3 3.6 0.41 1.50. 10 8.1 4.1 0.46 1.76. 11 9.2 4.6 0.55 1.90. 12 10.3 5.5 0.62 2.10. Die “fehlenden Indizes 4 und 8 zeigen, wo sich vor dem Entfernen die Duplikate befunden haben! Mцchten Sie dem Anwender einer Funktion die Auswahl der zu ladenden Datei ьberlassen, hilft Ihnen die Funktion choose.files() weiter. Wird die Funktion aufgerufen, wird das vom Betriebssystem abhдngige Dateiauswahlmenь gezeigt: Folgenden R -Code kцnnten Sie in Ihrer Funktion nun nutzen: Inhalt <- read.table(Datei, header = T, sep=";") Durch obige Filtereinstellung ( filters ) , werden nur “.txt”-Dateien angezeigt. Diese Einstellung kann natьrlich geдndert werden: Die Variable Datei enthдlt nach der Auswahl die komplette Pfad-Angabe und nach dem Einlesen der Datei in das Objekt Inhalt kцnnte die Ausgabe wie folgt aussehen: Eine Variante zum z. B. eine Tabellenkalkulationsdatei einzulesen ist: Die . sind Platzhalter fьr die read.csv2 - Funktionsargumente. Daten einlesen mit dem ff-Paket, Mit den Funktionen des ff-Paketes kцnnen sogenannte BigData -Dateien sequenziell in die R -Umgebung geladen werden. Das Paket bietet viele Funktionen, die nicht nur des Datenladens dienen, sondern eine direkte Datenbearbeitung ermцglichen. Wegen der Vielfдltigkeit der Mцglichkeiten fьr diese Funktionen, wird allerdings auf die Dokumentation zum Paket verwiesen. In dieser Beschreibung wird unter einer BigData-Datei eine so groЯe Datei verstanden, dass sie nicht mehr in den Speicher des Ihnen zur Verfьgung stehenden Computers geladen werden kann verstanden. Die folgenden Beispiele sind ьberschaubar und es werden jeweils nur 100 Zeilen einer kleinen Datei eingelesen. Die Beispieldatei ist weit entfernt vom "BigData-Datei"-Anspruch. Ьber die Funktion read.csv2.ffdf() werden die ersten 100 Zeilen der Datei Alle_Weindaten.csv ( P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis, Modeling wine preferences by data mining from physicochemical properties, In Decision Support Systems, Elsevier, 47(4):547-553. ISSN: 0167-9236. ) eingelesen und in dem ff-Objekt TeilMenge abgelegt: > TeilMenge <- read.csv2.ffdf(file = "Alle_Weindaten.csv", header = TRUE, nrows = 100) $ virtual: 'data.frame': 13 obs. of 7 variables: .. $ AsIs : logi FALSE FALSE FALSE FALSE FALSE FALSE . .. $ VirtualIsMatrix : logi FALSE FALSE FALSE FALSE FALSE FALSE . .. $ PhysicalIsMatrix : logi FALSE FALSE FALSE FALSE FALSE FALSE . .. $ PhysicalElementNo: int 1 2 3 4 5 6 7 8 9 10 . .. $ PhysicalFirstCol : int 1 1 1 1 1 1 1 1 1 1 . .. $ PhysicalLastCol : int 1 1 1 1 1 1 1 1 1 1 . $ physical: List of 13. .. ..- attr(*, "physical")=Class 'ff_poi. Ausgabe aus Darstellungsgrьnden abgebrochen! Lassen Sie Sie sich den Inhalt des Objektes auf der Konsole anzeigen, werden Ihnen neben reichlich Objektinformationen die ersten und letzen Datenzeilen des Datensatzes angezeigt: ffdf (all open) dim=c(100,13), dimorder=c(1,2) row.names=NULL. ffdf virtual mapping. PhysicalName VirtualVmode PhysicalVmode . Ausgabe aus Darstellungsgrьnden gekьrzt! Type FixedAcidity VolatileAcidity CitricAcid ResidualSugar Chlorides FreeSulfurDioxide. 1 r 7.4 0.700 0.00 1.9 0.076 11. 2 r 7.8 0.880 0.00 2.6 0.098 25. 3 r 7.8 0.760 0.04 2.3 0.092 15. 4 r 11.2 0.280 0.56 1.9 0.075 17. 5 r 7.4 0.700 0.00 1.9 0.076 11. 6 r 7.4 0.660 0.00 1.8 0.075 13. 7 r 7.9 0.600 0.06 1.6 0.069 15. 8 r 7.3 0.650 0.00 1.2 0.065 15. 93 r 8.6 0.490 0.29 2.0 0.110 19. 94 r 7.7 0.490 0.26 1.9 0.062 9. 95 r 5.0 1.020 0.04 1.4 0.045 41. 96 r 4.7 0.600 0.17 2.3 0.058 17. 97 r 6.8 0.775 0.00 3.0 0.102 8. 98 r 7.0 0.500 0.25 2.0 0.070 3. 99 r 7.6 0.900 0.06 2.5 0.079 5. 100 r 8.1 0.545 0.18 1.9 0.080 13. . Ausgabe aus Darstellungsgrьnden gekьrzt! Auf den Inhalt der TeilMenge kann mit den bekannten R -Anweisungen zugegriffen werden: Type FixedAcidity VolatileAcidity CitricAcid ResidualSugar Chlorides FreeSulfurDioxide. 1 r 7.4 0.70 0.00 1.9 0.076 11. 2 r 7.8 0.88 0.00 2.6 0.098 25. 3 r 7.8 0.76 0.04 2.3 0.092 15. . Ausgabe aus Darstellungsgrьnden gekьrzt! Auf die nдchsten 100 Elemente kann ьber das Argument skip = 100 zugegriffen werden. Allerdings wird hier auf das Auslesen der Kopfzeile mit header = FALSE verzichtet: > TeilMenge2 <- read.csv2.ffdf(file = "Alle_Weindaten.csv", header = FALSE, skip = 100, nrows = 100) V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13. 1 r 8.1 0.545 0.18 1.9 0.080 13 35 0.9972 3.3 0.59 9.0 6. 2 r 8.3 0.610 0.30 2.1 0.084 11 50 0.9972 3.4 0.61 10.2 6. Auf diese Art und Weise kann die BigData-Datei sequenziell analysiert werden. Mit der read -Funktion sind Sie ьber das Argument skip= 1 + nrow in der Lage, sich sequentiell durch die Datei zu "arbeiten". Daten einlesen, aus dem Internet (url) Ьber die read -Funktion kцnnen Sie Daten aus dem Internet in die R -Umgebung laden. Dazu bietet die read -Funktion diverse Protokolle an und in diesem Beispiel wird die Datei Eurostat_tsdec420.csv ьber das http -Protokoll in die R -Umgebung geladen. Diese Tabelle (Code tsdec420 ) beschreibt die Beschдftigungsrate in der EU fьr die Geschlechter mдnnlich/weiblich (Darstellungssicht des EU-Servers): Diese Datei kцnnen Sie als csv-Datei ьber die folgende Variante der read -Funktion auf Ihren Computer laden: Die Prьfung mit str() sollte folgende Ausgabe zeigen: 'data.frame': 39 obs. of 23 variables: $ geo.time: Factor w/ 39 levels "Belgien","Bulgarien". 8 7 10 9 1 2 34 3 4 6 . $ X1992 : num NA NA NA NA 61.3 NA NA 75.7 68.9 NA . $ X1993 : num NA NA NA NA 60.8 NA NA 74 67.7 NA . $ X1994 : num NA NA NA NA 60.7 NA NA 74.1 67.5 NA . $ X1995 : num NA NA NA NA 61.2 NA NA 75 67.6 NA . $ X1996 : num NA NA NA NA 61.4 NA NA 75.5 67.2 NA . $ X1997 : num NA 65.1 62.9 62.9 62.1 NA NA 76.4 66.9 NA . $ X1998 : num NA 65.5 63.5 63.5 62.7 NA 73.4 76.8 67.2 71.2 . $ X1999 : num NA 66.2 64.6 64.6 64.5 NA 71.5 77.7 68.3 68.5 . $ X2000 : num NA 66.6 65.5 65.5 65.8 55.3 71 78 68.8 66.6 . $ X2001 : num NA 66.9 66.2 66.2 65 54.8 71.2 78.3 69.1 67.4 . $ X2002 : num 66.7 66.7 66.5 66.5 65 55.8 71.6 77.7 68.8 68 . $ X2003 : num 67 67.1 66.9 66.9 64.7 58 70.7 77.3 68.4 69.6 . $ X2004 : num 67.4 67.4 67.3 67.3 65.6 60.1 70.1 77.6 68.8 70.3 . $ X2005 : num 67.9 68 67.9 67.9 66.5 61.9 70.7 78 69.4 72 . $ X2006 : num 68.9 69 69 68.9 66.5 65.1 71.2 79.4 71.1 75.9 . $ X2007 : num 69.8 69.9 69.9 69.8 67.7 68.4 72 79 72.9 76.9 . $ X2008 : num 70.3 70.3 70.2 70.2 68 70.7 72.4 79.7 74 77.1 . $ X2009 : num 69 69 68.8 68.8 67.1 68.8 70.9 77.5 74.2 70 . $ X2010 : num 68.5 68.6 68.4 68.4 67.6 65.4 70.4 75.8 74.9 66.8 . $ X2011 : num 68.5 68.6 68.5 68.5 67.3 62.9 70.9 75.7 76.5 70.6 . $ X2012 : num 68.4 68.5 68 68 67.2 63 71.5 75.4 76.9 72.2 . $ X2013 : num 68.4 68.5 67.7 67.7 67.2 63.5 72.5 75.6 77.3 73.3 . Schreiben Sie eigene Funktionen, kann es passieren, dass Sie mehrere “Versionen” dieser Funktion auf Ihrer Festplatte/Server gespeichert haben. Die Grьnde kцnnen natьrlich vielfдltig sein, aber der hдufigste Grund ist sicher in der “Entwicklungsfolge” zu sehen. Eine Entwicklungsfolge beschreibt den Entwicklungsprozess aus Versuch und Irrtum und der resultierenden Datensicherung. Um hier nicht den Ьberblick zu verlieren, kann ein Vergleichsprogramm wie z. B. UltraCompare weiterhelfen. Mit diesem Programm wird der Inhalt von zwei Textdateien dargestellt, verglichen und Unterscheidungen dargestellt: Sie kцnnen dann die unterschiedlichen Inhalte in das linke oder rechte Fenster durch “Knopfdruck” ьbernehmen. Mцchten Sie sich einen schnellen Ьberblick ьber einen Datensatz (Datenrahmen, data.frame) verschaffen, kцnnen die Funktionen head() und tail() hilfreich sein. Ьber diese Funktionen werden Ihen jeweils die ersten 6 bzw. letzten 6 Datensдtze auf der Konsole ausgegeben: 'data.frame': 50 obs. of 2 variables: $ speed: num 4 4 7 7 8 9 10 10 10 11 . $ dist : num 2 10 4 22 16 10 18 26 34 17 . Fьr beide Funktion ist die Ausgabe von 6 Datensдtzen die Standardeinstellung. Ьber das Argument n kцnnen Sie eine beliebige Anzahl Datensдtze ausgeben, z. B. 10 Datensдtze: head(cars, n = 10) . Daten ergдnzen, with() Sie mцchten ein Merkmal eines Datensatzes (data.frame) transformieren , z. B. potenzieren, und dieses transformierte Merkmal direkt in den Datensatz aufnehmen, hilft die Funktion with() weiter: 1 1.0 0.5 0.03 0.20. 2 2.1 1.2 0.07 0.45. 3 3.1 1.5 0.13 0.60. 4 3.9 2.1 0.22 0.80. 5 5.0 2.6 0.30 1.00. 6 5.8 3.0 0.32 1.20. 7 7.3 3.6 0.41 1.50. 8 8.1 4.1 0.46 1.76. 9 9.2 4.6 0.55 1.90. 10 10.3 5.5 0.62 2.10. # data.frame mit x3^2 ergдnzen: > Daten$x_quadrat <- with(Daten, x3^2) y x1 x2 x3 x_quadrat. 1 1.0 0.5 0.03 0.20 0.0400. 2 2.1 1.2 0.07 0.45 0.2025. 3 3.1 1.5 0.13 0.60 0.3600. 4 3.9 2.1 0.22 0.80 0.6400. 5 5.0 2.6 0.30 1.00 1.0000. 6 5.8 3.0 0.32 1.20 1.4400. 7 7.3 3.6 0.41 1.50 2.2500. 8 8.1 4.1 0.46 1.76 3.0976. 9 9.2 4.6 0.55 1.90 3.6100. Die Funktion transform() transformiert Daten in eine andere Form. Was bedeutet das? Das wird am Beispiel des airquality -Datensatzes erklдrt: 'data.frame': 153 obs. of 6 variables: $ Ozone : int 41 36 12 18 NA 28 23 19 8 NA . $ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 . $ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 . $ Temp : int 67 72 74 62 56 66 65 59 61 69 . $ Month : int 5 5 5 5 5 5 5 5 5 5 . $ Day : int 1 2 3 4 5 6 7 8 9 10 … Ozone Solar.R Wind Temp Month Day. 1 41 190 7.4 67 5 1. 2 36 118 8.0 72 5 2. 3 12 149 12.6 74 5 3. 4 18 313 11.5 62 5 4. 5 NA NA 14.3 56 5 5. Der Datensatz beinhaltet die Beobachtung Temp in Grad Fahrenheit . Diese Temperatur wird in Grad Celsius transformieren und als Objekt Temp_C zum Datensatz Daten addiert: > Daten <- transform(airquality, Temp_C = round((Temp-32)/1.8, digits = 1)) 'data.frame': 153 obs. of 7 variables: $ Ozone : int 41 36 12 18 NA 28 23 19 8 NA . $ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 . $ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 . $ Temp : int 67 72 74 62 56 66 65 59 61 69 . $ Month : int 5 5 5 5 5 5 5 5 5 5 . $ Day : int 1 2 3 4 5 6 7 8 9 10 . $ Temp_C : num 19.4 22.2 23.3 16.7 13.3 18.9 18.3 15 16.1 20.6 … Ozone Solar.R Wind Temp Month Day Temp_C. 1 41 190 7.4 67 5 1 19.4. 2 36 118 8.0 72 5 2 22.2. 3 12 149 12.6 74 5 3 23.3. 4 18 313 11.5 62 5 4 16.7. 5 NA NA 14.3 56 5 5 13.3. 6 28 NA 14.9 66 5 6 18.9. 7 23 299 8.6 65 5 7 18.3. 8 19 99 13.8 59 5 8 15.0. 9 8 19 20.1 61 5 9 16.1. Daten, fehlende Werte (NA’s) Ihre Beobachtungen (Datensдtze, Merkmale, . ) beinhalten unter Umstдnden fehlende Werte , so genannte NA ’s. Auch wenn viele R -Funktionen interne Routine zum Umgang mit NA’s haben, sollten Sie sich immer ьberlegen, wie Sie mit fehlenden Werten umgehen. Diese Ьberlegung kann ich Ihnen an dieser Stelle nicht abnehmen, aber einige Mцglichkeiten in dem R -seitigen Umgang mit NA’s in R beschreiben. Als Beispieldatensatz wird der Datensatz mtcars , abgelegt in carData , verwendet. Sie importieren Daten aus einem anderen Statistikprogramm ьber eine csv-Datei in die R -Umgebung. Diese Daten beinhalten fehlende Werte, die als -99 kodiert sind. Damit R sie erkennt, soll -99 in NA umkodiert werden. Hier die Sicht auf die Daten ьber den Dateneditor (Abb. 1): 'data.frame': 32 obs. of 11 variables: $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 . $ cyl : num 6 6 4 6 8 6 8 4 4 6 . $ disp: num 160 160 108 258 360 . $ hp : num 110 110 93 110 175 105 245 62 95 123 . $ drat: num 3.9 3.9 -99 3.08 3.15 -99 -99 3.69 3.92 3.92 . $ wt : num 2.62 2.88 2.32 3.21 3.44 . $ qsec: num 16.5 17 18.6 19.4 17 . $ vs : num 0 0 1 1 0 1 0 1 1 1 . $ am : num 1 1 1 0 0 0 0 0 0 0 . $ gear: num 4 4 4 3 3 3 3 4 4 4 . $ carb: num 4 4 1 1 2 1 4 2 2 4 . Ьber folgende R -Anweisungen werden fьr carData$drat die Ausprдgung -99 gegen NA ’s ausgetauscht: > is.na(carData$drat) <- which(carData$drat == -99) 'data.frame': 32 obs. of 11 variables: $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 . $ cyl : num 6 6 4 6 8 6 8 4 4 6 . $ disp: num 160 160 108 258 360 . $ hp : num 110 110 93 110 175 105 245 62 95 123 . $ drat: num 3.9 3.9 NA 3.08 3.15 NA NA 3.69 3.92 3.92 . $ wt : num 2.62 2.88 2.32 3.21 3.44 . $ qsec: num 16.5 17 18.6 19.4 17 . $ vs : num 0 0 1 1 0 1 0 1 1 1 . $ am : num 1 1 1 0 0 0 0 0 0 0 . $ gear: num 4 4 4 3 3 3 3 4 4 4 . $ carb: num 4 4 1 1 2 1 4 2 2 4 . Sie kцnnen die NA ’s natьrlich auch gegen Werte austauschen. In dem folgenden Beispiel, werden die NA ’s gegen -99 ausgetauscht (ist vielleicht nicht das beste Beispiel): 'data.frame': 32 obs. of 11 variables: $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 . $ cyl : num 6 6 4 6 8 6 8 4 4 6 . $ disp: num 160 160 108 258 360 . $ hp : num 110 110 93 110 175 105 245 62 95 123 . $ drat: num 3.9 3.9 -99 3.08 3.15 -99 -99 3.69 3.92 3.92 . $ wt : num 2.62 2.88 2.32 3.21 3.44 . $ qsec: num 16.5 17 18.6 19.4 17 . $ vs : num 0 0 1 1 0 1 0 1 1 1 . $ am : num 1 1 1 0 0 0 0 0 0 0 . $ gear: num 4 4 4 3 3 3 3 4 4 4 . $ carb: num 4 4 1 1 2 1 4 2 2 4 . Da der Umgang mit fehlenden Werten immer ein wenig kritisch ist, kцnnen auch alle Datensдtze mit fehlenden Werten mit der Funktion na.exclude( Daten ) aus dem Datensatz entfernt werden! D. h., alle Zeilen, die NA’s beinhalten, werden aus dem Datensatz entfernt: 'data.frame': 28 obs. of 11 variables: $ mpg : num 21 21 21.4 18.7 24.4 19.2 17.8 16.4 17.3 15.2 . $ cyl : num 6 6 6 8 4 6 6 8 8 8 . $ disp: num 160 160 258 360 147 . $ hp : num 110 110 110 175 62 123 123 180 180 180 . $ drat: num 3.9 3.9 3.08 3.15 3.69 3.92 3.92 3.07 3.07 3.07 . $ wt : num 2.62 2.88 3.21 3.44 3.19 . $ qsec: num 16.5 17 19.4 17 20 . $ vs : num 0 0 1 0 1 1 1 0 0 0 . $ am : num 1 1 0 0 0 0 0 0 0 0 . $ gear: num 4 4 3 3 4 4 4 3 3 3 . $ carb: num 4 4 1 2 2 4 4 3 3 3 . - attr(*, "na.action")=Class 'exclude' Named int [1:4] 3 6 7 9. Ihnen fдllt auf, dass der Datensatz 4 Zeilen weniger enthдlt als die str() -Ausgabe weiter oben? Vergleichen Sie Abb. 2 mit Abb.1 und Ihnen wird auffallen, dass die Zeilen mit NA fehlen (Abb. 2): Daten unter dem Mengenaspekt. Sie mцchten den Inhalt zweier Vektoren unter den Begriffen der Mengenlehre vergleichen und behandeln? Dann helfen Ihnen die Funktionen intersect() , union() , setdiff() , und setequal() weiter: Durchschnitt (gleiche Werte in a und b ): [1] 1 2 3 4 5 6 7 8 9 10 12. Ist es nцtig, z. B. in einem Datensatz die Ausprдgung eines Faktor -Merkmals (z. B. mit der Ausprдgung ja und nein ) in eine numerische Ausprдgung umzuwandeln, kцnnen Sie dies elegant mit der Funktion recode() aus dem car -Paket erledigen. In dem folgenden Beispiel soll zur Ausprдgung ja/nein des Merkmals x4 des folgenden Datensatzes Daten eine neues Merkmal aufgenommen werden, dass in Abhдngig zur Ausprдgung von x4 ein entsprechendes numerisches Datum enthдlt: 1 1.0 0.5 0.03 0.20 ja. 2 2.1 1.2 0.07 0.45 ja. 3 3.1 1.5 0.13 0.60 nein. 4 3.9 2.1 0.22 0.80 ja. 5 5.0 2.6 0.30 1.00 nein. 6 5.8 3.0 0.32 1.20 nein. 7 7.3 3.6 0.41 1.50 ja. 8 8.1 4.1 0.46 1.76 ja. 9 9.2 4.6 0.55 1.90 ja. 10 10.3 5.5 0.62 2.10 nein. y x1 x2 x3 x4 x4_num. 1 1.0 0.5 0.03 0.20 ja 1. 2 2.1 1.2 0.07 0.45 ja 1. 3 3.1 1.5 0.13 0.60 nein 0. 4 3.9 2.1 0.22 0.80 ja 1. 5 5.0 2.6 0.30 1.00 nein 0. 6 5.8 3.0 0.32 1.20 nein 0. 7 7.3 3.6 0.41 1.50 ja 1. 8 8.1 4.1 0.46 1.76 ja 1. 9 9.2 4.6 0.55 1.90 ja 1. 10 10.3 5.5 0.62 2.10 nein 0. Sie kцnnen natьrlich auch Daten$x4 mit dem gewandelten Wert ьberschreiben, empfohlen wird dies aber nicht! Daten, Tabellen mit ftable. Kontigenztabellen / Kreuztabellen zeigen Beziehungen zwischen Daten. Ihnen ist sicher die Funktion table() bekannt, aber deren Ausgabe kann unter Umstдnden unьbersichtlich sein. Ein Beispiel dazu ist der Datensatz Titanic : table [1:4, 1:2, 1:2, 1:2] 0 0 35 0 0 0 17 0 118 154 . Lassen Sie sich die obige Tabelle auf dem Bildschirm ausgeben, benцtigen Sie ein wenig Zeit, um einen Ьberblick zu erhalten! Die Funktion ftable() macht aus dieser komplexeren Tabelle eine flache Tabelle: Weiter Informationen, z. B. zur Variablen-Selektion, erhalten Sie ьber die Hilfe-Funktion. Daten, transformieren in wide/long-Format. Die Daten liegen im "wide"-Format vor, d.h., die Messpunkte MP1 bis MP4 die hier als Beispiel gewдhlt wurden, befinden sich in einer Daten zeile : Merkmal MP1 MP2 MP3 MP4. 1 A 10.00 10.30 9.80 10.40. 2 B 30.20 28.90 29.50 30.50. 3 C 0.98 1.02 1.03 1.01. Durch die Funktion gather des tidyr -Paketes kцnnen die Daten ьber die Messpunkte MP1 bis MP4 in das "long"-Format, d. h., pro Messpunkt eine Datenzeile , transformiert werden: > Daten_long <- gather(Daten_wide, key = MP, value = value, MP1:MP4) Merkmal MP value. In diesem Format sind dann auch zusammenfassende Analysen wieder mцglich. Hier wird der Mittelwert fьr die drei Merkmalsausprдgungen A , B und C geschдtzt: Merkmal, data = Daten_long, FUN = mean. Der Rьckweg vom "long"-Format ins "wide"-Format erfolgt ьber die Funktion spread statt: > Daten_wide_neu <- spread(Daten_long, key = MP, value = value) Merkmal MP1 MP2 MP3 MP4. 1 A 10.00 10.30 9.80 10.40. 2 B 30.20 28.90 29.50 30.50. 3 C 0.98 1.02 1.03 1.01. Das Paket Hmisc bietet einige nьtzliche Funktionen an und eine davon ist die Funktion describe() . Ьber diese Funktion werden Informationen zum R-Datenobjekt, z. B. eines Datensatzes ( data.frame() ) ausgegeben. Hier ein Beispiel zu einem Datensatz: Wirkstoff.A Wirkstoff.B Wirkstoff.C Pruefer Datum. 1 99.1 97.3 95.3 Karl 2008-08-10. 2 99.3 97.5 95.1 Karl 2008-08-11. 3 98.8 96.9 95.6 Peter 2008-08-12. 4 98.9 97.2 95.7 Karl 2008-08-13. 5 99.3 97.4 95.1 Peter 2008-08-14. 6 99.2 97.1 95.5 Peter 2008-08-15. 7 99.5 97.0 95.6 Karl 2008-08-16. 8 99.4 96.9 95.4 Peter 2008-08-17. 9 99.0 97.4 95.8 Peter 2008-08-18. Und hier die Information ьber die Funktion describe() : n missing unique Mean. Frequency 1 1 1 1 1 2 1 1. % 11 11 11 11 11 22 11 11. n missing unique Mean. Frequency 2 1 1 1 1 2 1. % 22 11 11 11 11 22 11. n missing unique Mean. Frequency 2 1 1 1 2 1 1. % 22 11 11 11 22 11 11. n missing unique. n missing unique. Frequency 1 1 1 1 1 1. % 11 11 11 11 11 11. 2008-08-16 2008-08-17 2008-08-18. Frequency 1 1 1. Ьber die Funktion comment() sind Sie in der Lage, einer z. B. kryptischen Variablenbezeichnung einen erklдrenden Kommentar anzuheften. Hierzu ein kleines Bespiel: Der obige Kommentar “ Mein Kommentar ” wurde dem Objekt x zugeordnet. Lassen Sie sich wie gewohnt den Inhalt von x anzeigen oder verwenden ihn in Berechnungen, merken Sie davon nichts. Sie kцnnen sich den Kommentar mit comment(x) oder auch ьber str() anzeigen lassen: atomic [1:100] -0.0776 0.7635 0.5122 -0.8217 -0.9334 . Die Erweiterung desObjektes x lдsst sich auch ьber die Funktion attributes() zeigen: Datenbankanbindung ьber ODBC und dem Paket RODBC. In diesem Beispiel wird die Datenbankanbindung einer Excel-Datei beschrieben. Ob Sie diesen Dateityp als “Datenbank” ansehen, soll nicht diskutiert werden. In diesem Beispiel geht es um die Vorgehensweise ьber ODBC Zugriff auf eine Datei zu erhalten. Bevor unter dem Betriebssystem MS-Windows© 7 auf eine Excel-Datei ьber ODBC zugegriffen werden kann, muss ьber den ODBC-Datenquellen-Adiminstrator eine Verbindung zu diesem Dateityp installiert werden (In den allermeisten Fдllen ist dieser Schritt nicht notwenig, da Excel als Datenquelle schon bekannt sein sollte!). Dazu rufen Sie wie in Bild 1 gezeigt Programm Datenquellen (ODBC) auf: Im Bereich Benutzer-DSN prьfen wir den Eintrag der Excel Files als Datenquelle (Bild 2): Sollte der Eintrag, insbesondere fьr Datenbanken, nicht vorhanden sein, muss der Treiber der Datenbank vor dem Aufruf des ODBC-Datenquellen-Adiminstrator installiert werden. Die Datenquelle kann dann ьber die Schaltflдche Hinzufьgen zugefьgt werden. SchlieЯen Sie die ODBC-Datenquellen-Adiminstration ab und laden in die R -Umgebung (nur 32 Bit) das Paket RODBC . Um nun mit der Datenbank zu arbeiten, muss eine Verbindung zur Datenbank aufgebaut werden. Dazu dient die Funktion odbcConnect() : > Verbindung <- odbcConnect(dsn = "Excel Files") Nach Enter kцnnen Sie die gewьnschte Excel-Datei auswдhlen (Bild 3). . und sich ggf. die Verbindungsdaten anzeigen lassen: RODBC Connection 2. Mit der Funktion sqlTables() kцnnen Sie sich die verwendeten Tabellen der Excel-Datei darstellen lassen: TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS. 1 C:\\USERS\\. DATENBANK\\Test.xlsx <NA> Blatt1$ SYSTEM TABLE <NA> Die Excel-Datei Test.xlsx enthдlt ein Tabellenblatt mit dem Namen Blatt1 . Eine Ьbersicht ьber die Spalten der Tabelle Blatt1 erhalten Sie mit der Funktion sqlColumns(Verbindung, sqtable = "Blatt1") , die aber hier nicht ausgefьhrt wird (die Ausgabe ist sehr Umfangreich). Den Tabelleninhalt von Blatt1 kцnnen Sie zur weiteren Bearbeitung in R mit der Funktion sqlFetch() als data.frame laden: > Inhalt <- sqlFetch(Verbindung, sqtable = "Blatt1") 'data.frame': 9125 obs. of 26 variables: $ Ereignis: num 0 0 1 1 0 0 0 1 1 1 . $ Einfluss: num 10.2 12.1 14.7 14.9 14.9 . $ Nr#1 : num 2 1 2 1 2 2 2 2 1 2 . $ Nr#2 : num 79 29 61 70 24 63 78 87 62 84 . $ Nr#3 : num 0 0 0 0 0 0 0 0 1 0 . $ Nr#4 : num 55 55 29 65 60 60 60 36 20 66 . $ Nr#5 : num 46.1 204.2 59.9 91 161.1 . $ Nr#6 : num 35.22 4.4 69.24 13.55 1.22 . Das ::-Argument ist hilfreich, wenn Sie eine bestimmte Funktion aus einem Paket verwenden mцchten, ohne das gesamt Paket in die R -Arbeitsumgebung zu laden. Das Paket wird nicht im Suchpfad der Arbeitsumgebung angezeigt. Das folgende Beispiel zeigt den Funktionsaufruf der Funktion kurtosis() aus dem Paket e0171 ohne das Paket in die Arbeitsumgebung zu laden: Fehler: konnte Funktion "kurtosis" nicht finden. Die apply -Funktionsfamilie beinhaltet Funktionen, die es ermцglichen, R -Funktionen wie z. B. mean() auf einem Datenobjekt wie z. B. einem Array, einer Matrix oder einem Datensatz anzuwenden, ohne das Schleifen-Kontrollstrukturen verwendet werden mьssen. Dabei kann die R -Funktion auf das gesamte Daten-Objekt oder nur auf einem Teil angewendet werden. Das hцrt sich ein wenig komplex an, wird aber in den folgenden Beispielen anschaulich beschrieben. Natьrlich wird die apply -Familie in der R -Literatur behandelt und dieser Beitrag dient nur als praktische Ergдnzung! Die tapply -Funktion ermцglicht die elementweise Anwendung einer R -Funktion auf Beobachtungen, gesammelt in einem Datensatz ( data.frame ). Als Beispieldatensatz wird der airquality -Datensatz verwendet. Der Datensatz beinhaltet die Variablen Temp und Month . In diesem Beispiel werden wir die Durchschnittstemperatur pro erfassten Monat ьber die Funktion mean() schдtzen: 'data.frame': 153 obs. of 6 variables: $ Ozone : int 41 36 12 18 NA 28 23 19 8 NA . $ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 . $ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 . $ Temp : int 67 72 74 62 56 66 65 59 61 69 . $ Month : int 5 5 5 5 5 5 5 5 5 5 . $ Day : int 1 2 3 4 5 6 7 8 9 10 . 65.54839 79.10000 83.90323 83.96774 76.90000. Ein z. B. lineare Modell wird ьber den Funktionsaufruf lm(y. x) geschдtzt. Mцchten Sie diesen Aufruf auf beispielsweise folgende Funktion. anwenden, muss die arithmetische Bedeutung im Modell berьcksichtigt werden. Ein Aufruf in dieser Form. zeigt folgendes Ergebnis: Obiges Ergebnis ist sicher nicht das gewьnschte Ergebnis. (Intercept) x I(x^2) -0.27000 1.14679 -0.01607. Durch die Funktion I() wird die arithmetische Bedeutung beibehalten. Im obigen Beispiel wurde der Funktion lm() mit dem Aufruf jede unabhдngige Variable explizit genannt. Liegen Ihre Daten als data.frame vor und sollen alle unabhдngigen Variablen in das zu schдtzende Modell einflieЯen, mьssen Sie diese nicht einzeln eingeben, sondern kцnnen den . -Operator nutzen: > Daten # Beispiel data.frame. 1 1.0 0.5 0.03 0.20. 2 2.1 1.2 0.07 0.45. 3 3.1 1.5 0.13 0.60. 4 3.9 2.1 0.22 0.80. 5 5.0 2.6 0.30 1.00. 6 5.8 3.0 0.32 1.20. 7 7.3 3.6 0.41 1.50. 8 8.1 4.1 0.46 1.76. 9 9.2 4.6 0.55 1.90. 10 10.3 5.5 0.62 2.10. # Nun kommt der .-Operator zum Einsatz: (Intercept) x1 x2 x3. 0.2199 0.3829 3.8614 2.6589. Ьber den . -Operator werden bequem alle unabhдngigen Variablen in das Modell eingebunden. Mцchten Sie eine Variable (Datenstruktur) auch auЯerhalb einer Funktion dem Anwender zur Verfьgung stellen, kцnnen Sie dies ьber das Zuweisungszeichen “ <<-” erreichen. Hierbei sollten Sie aber die Eindeutigkeit um nicht in Konflikt mit anderen Objekten zu kommen bedenken. Empfehlen mцchte ich Ihnen z. B. folgendes Konstrukt: Funktion ist die Funktionsbezeichung und GlobaleVariable die Bezeichnung der globalen Variable. Diese Zusammensetzung der globalen Variable stellt eine halbwegs eindeutige Mцglichkeit dar. Grafik, Ausgabe als Datei. Mцchten Sie die grafische Ausgabe nicht auf den Bildschirm darstellen, sondern als Datei ausgeben, verwenden Sie die Funktionen jpeg() , bmp() oder png() : > jpeg(filename = "Boxplot.jpg") # Es wird ein Boxplot erzeugt. > boxplot(x) # Erzeugung des Boxplots. > dev.off() # SchlieЯen des Ausgabegerдtes. Die Ausgabedatei befindet sich nun in dem zuvor eingestellten Verzeichnis: Grafik, Ausgabe mehrere Grafiken in einer Darstellung. Die simple Frage “Wie kцnnen z. B. 2 Grafiken zusammen dargestellt werden?” kann wie folgt beantwortet werden: Der Schlьssel ist hier das Argument add=TRUE ! Grafik, Ausgabe mehrere Darstellungen. Mцchten Sie mehrere Grafiken in einem Grafikfenster ausgeben, kцnnen Sie dies ьber das Argument fig der der Funktion par() erreichen. Mit dem Argument fig werden die Ausgabebereiche des Grafikfensters angesprochen. Folgendes Beispiel soll dies verdeutlichen: Das Objekt x beinhaltet die darzustellenden Daten. Ьber par() mit dem Argument fig wird festgelegt, dass unten 35% der Grafikflдche fьr den Boxplot zur Verfьgung gestellt wird. Der Boxplot wird horizontal ausgegeben: Ьber die nдchste par() -Funktion werden die restlichen 75% des Grafikfensters zur Ausgabe des Histogramms festgelegt. Das Histogramm wird als Dichtefunktion ( prob )mit einer gestrichelten Linie ( lines ) dargestellt: Grafik, Streudiagramm und Boxplot. Die Grafikfunktion boxplot() verfьgt ьber das Attribut add und damit sind Sie in der Lage, ein Boxplot zur ergдnzenden Darstellungen z. B. zu einem Streudiagramm zusдtzlich anzuzeigen. Diese Mцglichkeit ist eine Variante zu der hier beschriebenen. Beispiel: > boxplot(x,range = 0, add = T, boxwex = 5, col = "grey", at = -1) Ьber das Attribut add = T wird der Boxplot zur Grafik addiert, mit dem Attribut boxwex = 5 wird die “Breite” des Plots und ьber at = -1 wird die Position (ein bisschen ausserhalb der dargestellten Daten) festgelegt: Grafik, mehrere Histogramme darstellen. Mцchten Sie mehrere Histogramme darstellen, hilft die Funktion multhist() des Paketes plotrix weiter: > Daten <- list(rnorm(50, mean=3),rnorm(50,mean=5, sd=2),rnorm(50,mean=4)) > multhist(main="3 Histogramme", Daten) Gr afik, mehrere Histogramme darstellen , 2. Mцglichkeit. Eine weitere Mцglichkeit zur Darstellung von mehreren Histogrammen in einer Darstellung, zeigt folgendes Beispiel: # Darstellung des 1. Histogramms: > hist(Histogramm_1, col=rgb(0.1,0.1,0.1,0.5),xlim=c(0,10), ylim=c(0,250), main="Ьberlappende Histogramme", xlab="Wertebereich", ylab="Hдufigkeit") # Ьber das Funktionsargument add = True wird es zum bestehenden Histogramm addiert: > hist(Histogramm_2, col=rgb(0.8,0.8,0.8,0.5), add = T) Der Ьberlappungsbereich wird in einem “mittleren” Grau dargestellt. Grafik, Ausgabe Histogramm-Daten. Mцchten Sie zusдtzlich beispielhaft zu einem Histogramm die Anzahl der Beobachtungen in einer Klasse ausgeben, kann als “Anregung” Ihnen sicher folgendes Code-Schnipsel weiterhelfen (Siehe auch hier !): > hx <- hist(x, breaks=50, plot=FALSE) > plot(hx, col=ifelse(abs(hx$breaks) < 1.96, 3, 2), main="Histogramm", xlab="Ihre z-normierte Daten", ylab="Hдufigkeit") > text(hx$mids, hx$counts+2, label=c(hx$counts), pos = 3) Die Anzahl der Klasseninhalte wird ьber die Funktion text() ausgegeben. Dabei bestimmt der Parameter pos die Textausgabeposition. Experimentieren Sie mit diesem Parameter und schauen Sie auch in die Hilfe zur Funktion text() . Grafik, Bereiche unterschiedlich “einfдrben” Es kann hilfreich sein, z. B. in einem Histogramm Bereiche unterschiedlich farblich darzustellen. Als “Anregung” soll Ihnen folgendes Code-Schnipsel dienen: > hx <- hist(x, breaks=50, plot=FALSE) > plot(hx, col=ifelse(abs(hx$breaks) < 1.96, 3, 2), main="Histogramm", xlab="Ihre z-normierte Daten", ylab="Hдufigkeit") Interessant ist hier die ifelse() -Funktionalitдt! Ist der Absolutwert kleiner als 1,96 wird der Farbwert 3 fьr grьn (= yes) und wenn grцЯer als 1,96 wird der Farbwert 2 fьr rot (= no) verwendet. Grafik, Balkendiagramm, geordnet. Daten kцnnen anschaulich ьber ein Balkendiagramm visualisiert werden. Als Beispiel wird hier der Datensatz mtcars verwendet: 'data.frame': 32 obs. of 11 variables: $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 . $ cyl : num 6 6 4 6 8 6 8 4 4 6 . $ disp: num 160 160 108 258 360 . $ hp : num 110 110 93 110 175 105 245 62 95 123 . $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 . $ wt : num 2.62 2.88 2.32 3.21 3.44 . $ qsec: num 16.5 17 18.6 19.4 17 . $ vs : num 0 0 1 1 0 1 0 1 1 1 . $ am : num 1 1 1 0 0 0 0 0 0 0 . $ gear: num 4 4 4 3 3 3 3 4 4 4 . $ carb: num 4 4 1 1 2 1 4 2 2 4 . Die Variable mpg (Miles/(US) gallon) soll als Balkendiagramm dargestellt werden. Um eine ьbersichtliche Grafik zu erhalten, wird eine Tabelle mit selbst definierten Klassen erstellt: > Tabelle <- table(cut(mtcars$mpg, breaks = 10)) 2 4 6 6 5 3 1 1 2 2. Auf Basis dieser Tabelle wird in den meisten Fдllen vom Datenanalyst folgende Grafik erzeugt: > barplot(Tabelle, main = "Verbrauch in Meilen pro Gallone", xlab = "Verbrauchklasse", ylab = "Anzahl Fahrzeuge", ylim = c(0,7)) Mцchten Sie aus Ihnen bekannten Grьnden die Klassen nach fallenden Hдufigkeiten von links nach rechts sortieren , lдsst sich das wie folgt erreichen: > Tabelle <- sort(Tabelle, decreasing = TRUE) > barplot(Tabelle, main = "Verbrauch in Meilen pro Gallone", xlab = "Verbrauchklasse", ylab = "Anzahl Fahrzeuge", ylim = c(0,7)) Die obige Darstellung lдsst sich noch ausbauen. Mцchten Sie noch die Hдufigkeit (Anzahl der Fahrzeuge) ьber den Balken darstellen ( Label ), lдsst sich dies wie folgt erreichen: > # Label erstellen, wobei die Labels die Hдufigkeit darstellen. Diese kцnnen wir. ebenfalls als y-Position nutzen. > # Um die x-Achsen-Koordinaten zu erhalten, wird der barplot in Diagramm abgelegt: > Diagramm <- barplot(Tabelle, main = "Verbrauch in Meilen pro Gallone", xlab = "Verbrauchklasse", ylab = "Anzahl Fahrzeuge", ylim = c(0,7)) > # Nun werden die labels ьber die text-Funktion hinzugefьgt: > text(Diagramm[,1], Label + 0.1, labels = Label, pos = 3) Grafik, Bereich unter einem Polygonzug einfдrben. Besteht der Wunsch, die Flдche unter z. B. einem Polygonzug einzufдrben, kцnnen Sie dieses ьber die Funktion polygon () erreichen: Hier das Resultat: Mцchten z. B. Grafiken mit unterschiedlichen Farben erzeugen, stellen Sie sich vielleicht die Frage, welche vordefinierte Farben R Ihnen zur Verfьgung stellen kann! Hier hilft Ihnen die Funktion colors() weiter. Ьber die Konsole eingegeben gibt Sie Ihnen zur R -Version 2.10.1 1965 Farben aus. Mцchten Sie Ihre eigene Farbe kreieren, kцnnen Sie die ьber die Funktion rgb() erledigen: > Farbe <- rgb(43,33,235, alpha = 200, maxColorValue = 255) Die ersten 3 Werte beschreiben den Farbton, hier ein blau, und der alpha -Wert gibt die Helligkeit wieder. Als Beispiel werden ein paar Punkte grafisch ausgegeben: > plot(1:6, pch = 20, col = Farbe) Funktion auswerten und darstellen. Dieser Hinweis zeigt, wie Sie eine Funktion grafisch ьber R darstellen lassen kцnnen: Im ersten Schritt erzeugen Sie eine Zeichenkette, die neben der darzustellenden Funktion die R -Funktion curve zur grafischen Ausgabe beinhaltet: > FunkGraph = "curve(sin(cos(x)*exp(-x/2)),from = -8, to = 7, n = 2001, main = 'Funktionsgraph')" # Ihre Funktion: sin(cos(x)*exp(-x/2)) # Parameter zur Funktion curve: from = -8, to = 7, n = 2001, main = 'Funktionsgraph' # Achten Sie auf ‘-Zeichen fьr den Grafiktitel! Im zweiten Schritt wird die Zeichenkette FunkGraph ьber die Funktion parse aufgelцst/analysiert und ьber eval ausgewertet: U nd hier das Resultat: Grafik, “Errorbar”, Abweichungen darstellen. Oft besteht der Wunsch, neben der Ausgabe einer z. B. linearen Funktion auch die Residuen grafisch darzustellen. Ohne Aufwand kцnnen Sie dies mit der Funktion errbar() aus dem Paket Hmisc erreichen. Ausgehend von folgendem Beispieldatensatz. . wird Ihnen ьber den Funktionsaufruf. > errbar(Beispiel$X, Beispiel$Y, Beispiel$Ymax, Beispiel$Ymin, xlab="X-Daten", ylab="Y-Daten", main="Residuen-Beispiel") . neben den X-Y-Werten die Abweichungen (Ymin und Ymax) grafisch ausgegeben: Ьber das D3-JavaScript-Network kцnnen ansehnliche interaktive Grafiken als html-Dateien erzeugt werden. Ein Beispiel dazu, finden Sie in der Paket-Bibliothek. Grafik, Legende (Achsenbeschriftun g) Grafikfunktionen wie plot() nehmen Ihnen in der grafischen Darstellung Ihrer Daten schon viel Arbeit ab, indem Sie sich keine Gedanken ьber die Achsenformatierung und -beschriftung machen mьssen. Mцchten Sie irgendwann aber Ihre eigene Achsenbeschriftung vornehmen, ist diese Automatismus stцrend. In dem hier beispielhaft verwendeten Datensatz wьrde in der grafischen Darstellung ьber plot() der Index als x-Achsenbeschriftung dargestellt. Als Beschriftung soll aber der zeitliche Verlauf der Zeitreihe als x-Achse ausgegeben werden, wie in der Grafik gelb markiert. Dies kann in zwei Schritten erreicht werden. Im 1. Schritt wird die durch plot vorgegebene x-Achsenbeschriftung ьber den Parameter xaxt="n" ausgeschaltet: Das x-Achsenlabel Zeitraum wurde aus Platzgrьnden in obiger Grafik nicht dargestellt. Im 2. Schritt wird ьber die Funktion axis() die 98 Labelwerte aus dem Vektor Rohoel$Monat der x-Achse ( 1 ) zugeordnet und dargestellt: Die von Ihnen gewьnschte Achse wird ьber den ersten Parameter, hier 1 fьr die x-Achse, der Funktion axis() angesprochen. Grafik, Legende (Achsenbeschriftun g, Schriftyp) Mцchten Sie einen Teil der Legende besonders hervorheben, kцnnen Sie dieses wie im Folgenden Beispiel gezeigt erreichen: Mьssen Sie griechische Buchstaben im Legendentext darstellen, kцnnen Sie dieses ьber die Funktion expression() erreichen: > plot(Daten, xlab <- Legende) Mцchten Sie z. B. die Daten der X-Achse z. B. mit einem Tausender-Trennzeichen versehen, kцnnen Sie dieses ьber die Funktion prettyNum() erreichen. Folgendes Beispiel zeigt die Funktionsweise: Die x-Daten sollen die zukьnftige X-Achse darstellen: [1] 10000 20000 30000 40000. Die x-Daten werden zu Label-Daten ьber prettyNum() aufgehьbscht: Die y-Daten werden grafisch ausgegeben und dabei wird wie im obigen Beispiel die X-Achse zuerst unterdrьckt. . und nun als X-Achse die Labels ausgegeben: > axis(1, at=seq(1:4), labels=x_label) Hier das Resultat: Hilfe, zusдtzliche Unterstьtzung. Ьber das Paket SOS erhalten zusдtzliche nьtzliche Hilfefunktionen. Nach dem Laden des Paketes erhalten Sie ьber die . -Funktion Informationen in welchen Paketen (wenn mцglich) die gesuchte Funktion enthalten ist. Suchen Sie z. B. die spline -Funktion gehen Sie wie folgt vor: Das Suchergebnis wird in dem Objekt Ergebnis abgelegt und die Anzahl der Treffer ausgegeben: found 1280 matches; retrieving 20 pages, 400 matches. 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20. Rufen Sie das Ergebnis auf . . wird Ihnen das Suchergebnis im Browser angezeigt: Klicken Sie im linken Bereich Description and Link auf einen entsprechenden Link , wird Ihnen die HTML-Hilfe zum Paket bzw. zur Funktion angezeigt! Sie kennen die Hilfe-Funktion apropos() ьber der Sie, wenn Sie nur Bruchstьcke einer Funktion kennen, eine Auflistung der mцglichen Funktionen auf der Konsole ausgegeben bekommen. Eine interessante neue Mцglichkeit (getestet ab den Versionen 2.13.0 / 2.14.1) die Tab-Tasten-Funktion. Das folgende Beispiel geht davon aus, dass Sie nur die ersten beiden Buchstaben “me” der gesuchten Funktion kennen. Um die mцglicherweise passenden Funktionen angezeigt zu bekommen, geben Sie me auf der Konsole ein und drьcken dann die Tab-Taste. Ihnen werden dann die Funktionen angezeigt, die mit me anfangen: mean mean.data.frame mean.Date. mean.default mean.difftime mean.POSIXct. mean.POSIXlt median median.default. medpolish mem.limits memCompress. memDecompress memory.limit memory.profile. memory.size menu merge. merge.data.frame merge.default mergeMethods. message metaNameUndo method.skeleton. methods methodSignatureMatrix methodsPackageMetaName. Entscheiden Sie sich beispielsweise fьr die Funktion mean , geben Sie einfach die fehlenden Zeichen an ein. Mit der Zeicheneingabe wird die Ausgabe der mцglichen Funktion automatisch gelцscht! Sie kцnnen auch die gewьnschte Funktion mit der Maus markieren, kopieren und dann hinter dem Eingabeprompt einfьgen. Ьber die weitere Zeicheneingabe in Verbindung mit der Tab-Taste kцnnen Sie das “Angebot” der mцglichen Funktionen verfeinern. Im Folgenden wird eine verkьrzte if-Abfrage beschrieben. Aber Vorsicht! Denken Sie hier bei der Verwendung an die Lesbarkeit des Codes! Die Variable Daten beinhaltet z. B.: "a" "b" "b" "b" "c". Daten soll auf b ’s geprьft werden und wenn vorhanden, gegen z ’s ausgetauscht werden: Eine einfache aber dennoch oft gestellte Frage: Wie werden in R Zwischenwerte interpoliert? Sie erreichen dies ьber die Funktion approx() . Im Folgenden Beispiel werden die Werte zwischen 1 und 10 linear interpoliert: [1] 0.0000000 0.2040816 0.4081633 0.6122449 0.8163265 1.0204082. [7] 1.2244898 1.4285714 1.6326531 1.8367347 2.0408163 2.2448980. [13] 2.4489796 2.6530612 2.8571429 3.0612245 3.2653061 3.4693878. [19] 3.6734694 3.8775510 4.0816327 4.2857143 4.4897959 4.6938776. [25] 4.8979592 5.1020408 5.3061224 5.5102041 5.7142857 5.9183673. [31] 6.1224490 6.3265306 6.5306122 6.7346939 6.9387755 7.1428571. [37] 7.3469388 7.5510204 7.7551020 7.9591837 8.1632653 8.3673469. [43] 8.5714286 8.7755102 8.9795918 9.1836735 9.3877551 9.5918367. [49] 9.7959184 10.0000000. Durch den Vorgabewert n = 50 werden 50 Zwischenwerte interpoliert. Die Hilfe zur Funktion approx() zeigt weitere Mцglichkeiten. Mцchten Sie in einer Funktion dem Anwender ein Auswahlmenь anbieten, hilft hier die Funktion menu() weiter: Auswahl <- c(menue_text_1, menue_text_2) switch(menu(Auswahl, title = "Menьbeispiel"), Auswahl <- 1, Auswahl <- 2) In einer Funktion eingebunden, kцnnte die Auswahl wie folgt aussehen: Obige Beispielfunktion kцnnen Sie hier downloaden. als Bestandteil des GUI-Menьs. Mцchten Sie das GUI-Menь der R -Konsole mit einem eigenen Menь erweitern, kцnnen Sie dies ьber die Funktionen windMenuAdd() bzw. winMenuAddItem() erreichen: Ьber die Funktion winMenuAddItem() wurde die Menь-Ьberschrift Zusatz Menь , der Menь-Punkt Starte Grafik der mit der Funktion run.GrapheR() verknьpft ist, zugefьgt: Das Ganze lдsst sich noch so verfeinern, dass das Zusatz-Menь direkt mit dem Starten der R -GUI eingebaut wird (siehe hier)! Das hinzugefьgte Menь lдsst sich ьber die Funktion winMenuDel() wieder entfernen: Mцchten Sie eine grafische Ausgabe als PDF-Datei speichern, kцnnen Sie die grafische Ausgabe ьber die pdf() -Funktion als PDF-Datei in das eingestellte Verzeichnis umleiten: Das Objekt Daten beinhaltet die Beispieldaten und ist nicht weiter spannend. Hier geht es nur darum, die Ausgabe des Histogramms umzuleiten, Die offene PDF-Datei, die hier die Bezeichnung Test.pdf trдgt, wird durch die Funktion dev.off() geschlossen. Danach kann die PDF-Datei Acrobat geцffnet werden: Funktionsaufruf mit GUI-Start. Mцchten Sie mit dem Start der R -GUI, der R -Konsole, direkt eine Funktion in die Arbeitsumgebung laden, kцnnen Sie das ьber die Datei Rprofile.site erreichen: In diesem Beispiel soll ein Zusatz-Menь dem R -GUI-Menь hinzugefьgt werden. Das Menь soll den Anwender in die Lage versetzten, ьber das Menь Start Grafik die Funktion run.GrapheR() aufrufen. Dazu wird der Funktion .First die entsprechend ausgeprдgten Funktion winMenuAddItem() ьbergeben (nдchste Abbildung). Vorher wird das Paket GrapheR ьber die Funktion library() in die Arbeitsumgebung geladen. Mit dem Start der R -GUI wird die Datei Rprofile.site durchlaufen und das Zusatz-Menь Zusatz Grafik installiert und angeboten: Das Laden des Paketes GrapheR und des notwenigen Paketes tcltk wird in der GUI als Info ausgegeben. Sie entwickeln eine Funktion, die eine vom Nutzer anzugebende Datei цffnen und verarbeiten soll. Dabei kann es passieren, dass der Nutzer sich verschreibt. Der Dateiname oder das Verzeichnis entspricht nicht der Erwartung, somit lдsst die Datei sich nicht цffnen und die Ausfьhrung der Funktion wird mit einer entsprechenden Meldung abgebrochen. Das Abbruchverhalten kцnnen Sie ьber die Behandlung von Ausnahmen steuern! Die folgende kleine Beispielfunktion Test soll eine csv -Datei einlesen und den Dateiinhalt auf der Konsole ausgeben: + stop("Datei kann nicht geцffnet werden! Datei: ", Datei) Ьber die Funktion file.exists() wird auf das Vorhandensein der Datei geprьft. Ist die Datei nicht vorhanden, wird die stop() -Funktion im else -Teil ausgefьhrt. Die stop() -Funktion bricht die Abarbeitung der Funktion Test ab. Ist dieses Verhalten nicht nцtig, kann die stop() -Funktion durch die warning() -Funktion ersetzt werden. In diesem Falle, wird die Funktion durchlaufen und zum Schluss einen Warnmeldung ausgegeben. Zuerst soll das normale Verhalten - der Nutzer hat alles richtig eingegeben - gezeigt werden: Wirkstoff.A Wirkstoff.B Wirkstoff.C Pruefer Datum. 1 99.1 97.3 95.3 Karl 10.08.10. 2 99.3 97.5 95.1 Karl 11.08.10. 3 98.8 96.9 95.6 Peter 12.08.10. 4 98.9 97.2 95.7 Karl 13.08.10. 5 99.3 97.4 95.1 Peter 14.08.10. 6 99.2 97.1 95.5 Peter 15.08.10. 7 99.5 97.0 95.6 Karl 16.08.10. 8 99.4 96.9 95.4 Peter 17.08.10. 9 99.0 97.4 95.8 Peter 18.08.10. Und nun das Verhalten, wenn die Datei Wirkstoff.csv nicht in dem angegebenen Verzeichnis vorhanden ist: Fehler in Test(Datei) : Datei kann nicht geцffnet werden! Datei: C:/Users/Gьnter/Documents/Statistik/Zwischen/Wirkstoff.csv. Name des ьbergebenen Datensatzes. Mцchten Sie die Bezeichnung des an einer programmierten Funktion ьbergebenen Datensatzes auslesen und z. B. in der Funktionsausgabe ausgeben, hilft die Funktionkombination deparse(substitute(x)) weiter: Die Ausgabe kann dann wie folgt aussehen: > Untertitel <- paste(Untertitel, " (Datensatz: ", Fakt.Daten.Namen, ")") Das Beispiel wurde in der Funktion Faktorenanalyse realisiert. Der ьbergebene Datensatz trдgt die Bezeichnung Fakt.Beispiel : Die grafische Ausgabe zeigt dann die Bezeichnung des Datensatzes im Untertitel: Programmier-Tipp: Nutzer-Eingabe abfragen. Mцchten Sie dem Nutzer wдhrend der Funktionsausfьhrung Gelegenheit geben, den Funktionsablauf zu beeinflussen oder Eingaben durchzufьhren, bietet R Ihnen die Funktion winDialog() an. Mцchten Sie dem Anwender Mцglichkeiten zur Beeinflussung des Programmablaufes geben, kцnnen Sie die Funktion winDialog() wie folgt nutzen: > Nachricht <- "Meine Nachricht!" #Nachricht fьr den Nutzer. > # In dem Objekt Eingabe wird die Eingabe abgelegt: > Eingabe <- winDialog(type = c("yesnocancel"),Nachricht) Durch obige Funktion wird dem Nutzer folgendes Dialog-Fenster dargestellt: Wie Sie erkennen kцnnen, bestimmt das Argument type die angebotenen Schaltflдchen. Es stehen Ihnen die Mцglichkeiten “ok”, “okcancel”, “yesno” und “yesnocancel” zur Verfьgung. Die durch den Nutzer gedrьckte Schaltflдche - das Ereignis - wird in der Variablen Eingabe abgelegt: Im hier dargestellten Beispiel wurde die Schaltflдche Ja gedrьckt und damit “ YES ” als Zeichenkette in der Variable Eingabe abgelegt. Die Variable lдsst sich nun prьfen und z. B. dementsprechend eine Programmverzweigung durchfьhren. Es kцnnen vom Nutzer auch konkrete Eingaben ьber die Funktion winDialogString() abgefragt werden. Im Folgenden soll der Nutzer eine Eingabe in dem Wertebereich von 0 bis 10 durchfьhren, wobei 1,5 als Vorgabewert festgelegt wird: > Nachricht <- "Bitte geben Sie den Wertebereich von 0 bis 10 ein:" > Eingabe <- winDialogString(Nachricht, Vorgabe) Der Funktionsaufruf zeigt dann folgendes Dialog-Fenster: Geben Sie z. B. 2,3 ein, ist der Inhalt der Variablen Eingabe gleich “2.3” . Mцchten Sie die Eingabe tatsдchlich in einer weiteren Berechnung verwenden, denken Sie an die Typwandlung: Umfangreichere Berechnungen (Schдtzungen) benцtigen entsprechende Systemkapazitдten Ihres Computers. Mцchten Sie nicht im Unklaren ьber den Status sein, kцnnen Sie sich ьber einen Fortschrittsbalken ьber den Berechnungs -Fortschritt machen: Sie kennen derartige Funktion aus diversen Programmen und mцchten Sie diese Funktionalitдt in Ihren R -Funktionen nutzen, laden Sie hier die Beispielfunktion auf Ihren Computer runter! beliebiger Programmaufruf / URL Aufruf. Besteht die Notwendigkeit aus einer Funktion z. B. ein Windows-Programm aufzurufen, kцnnen Sie dies ьber die shell.exec() -Funktion erreichen. Im Folgendem Beispiel wird der Eitor Ultraedit aufgerufen: > shell.exec("C:/Program Files/IDM Computer Solutions/UltraEdit-32/uedit32.exe") Ьber diese Funktion lassen sich auch URL’s aufrufen: Das URL-Beispiel kцnnen Sie direkt ohne Anpassungen ausfьhren! Mit dem Paket odfWeave kцnnen Sie Ihre Daten oder Grafiken immer aktuell in einem OpenOffice-Dokument einbinden. D. h., Sie kцnnen aus der R -Umgebung Informationen an ein OpenOffice-Textdokument schicken und verfьgen dadurch immer ьber einen aktuellen Bericht. Dazu sind einige wenige Schritte erforderlich. Im 1. Schritt muss das Paket odfWeave installiert werden. Nutzen Sie die R -Version 2.5.1 sollten folgende Pakete geladen sein: Mit dieser Anweisung mьssen Sie auch die Zieldatei Test2.odt angeben! Die odfWeave-Funktionalitдt erstellt eine neue Datei, die Zieldatei, um dort den Inhalt von Test.odt und die R -Informationen abzuspeichern. So kцnnte die Zieldatei Test2.odt aussehen: Hier kцnnen Sie die Datei Test.odt zur Ansicht laden . Das Paket odfWeave bietet noch weiter Mцglichkeiten, schauen Sie einfach mal. R im Batch-Modus. Mцchten Sie R ohne Benutzeroberflдche ausfьhren, bietet sich der R -Batch-Modus an. Im Folgenden wird ein kleines Beispiel Schritt-fьr-Schritt fьr das OS Windows gezeigt: Um den Batchmodus R-Verzeichnisunabhдngig aufrufen zu kцnnen, stellen Sie sicher, dass die Betriebssystem-Umgebungsvariable PATH so eingestellt ist, dass R.exe gefunden werden kann (Bild 1 & 2): Die R -Funktionen, die Sie im Batch-Modus ausfьhren mцchten, legen Sie in einem Editor Ihrer Wahl fest (Bild 3) . In der Windows-Batch-Datei legen Sie fest, in welchem Verzeichnis sich die Batchskript.txt -Datei befindet und wo die Ausgabe gespeichert werden soll (Bild 5, Zeile 6). Wesentlich ist natьrlich der R -Aufruf mit den Eingabe- und Ausgabe-Dateien (Bild 5, Zeile 8): Mit einem Doppelklick auf das Symbol (Icon) R-Batch.BAT (Bild 6), wird in das angegebene Verzeichnis c:\statistik\batchmode gewechselt, R im stillen Modus aufgerufen ( -- vanilla ), dabei die Batchskript.txt -Datei eingelesen ( < Symbol) und die Datei Ergebnis.txt (> Symbol) erzeugt. Der R -Prozess wird danach beendet. Das R -Skript (Bild 3) enthдlt die Anweisung, eine Ergebnis.csv -Datei zu schreiben und in der Windows-Batch-Datei haben wir ebenfalls explizit eine Ergebnis.txt -Datei angegeben (wenn Sie das nicht machen, erzeugt R eine Datei). Das Verzeichnis Batchmode sollte bei Dateien beinhalten, was durch eine Prьfung bestдtigt wird (Bild 7): Fertig! Das obige Beispiel lдsst sich natьrlich noch deutlich ausbauen! Von Zeit zu Zeit wird die Frage diskutiert, wie einem Batch-Aufruf Parameter fьr das aufzurufende R -Script mitgegeben werden kцnnen. Wird im Internet nach Mцglichkeiten gesucht, finden sich einige Hinweis, die allerdings auch vom verwendeten Betriebssystem abhдngen. Meines Erachtens , bietet sich an, eine eigene Parameter-Datei zur Parameterьbergabe durch das R -Script einzulesen. Diese Parameter-Datei kann jederzeit ьberarbeitet werden, ohne dass die Batch-Datei oder das R -Script angefasst werden muss. Ausgehend vom obigen Beispiel kann die Parameter-Datei wie folgt aussehen (als csv-Datei, Bild 11): Die R -Script-Datei muss dann natьrlich angepasst werden (Bild 12, gelbe Markierung): Dieser Hinweis ist natьrlich nur ein DenkanstoЯ! R im Batch-Modus zeitgesteuert ausfьhren. Im Hinweis “ R im Batch-Modus” wurde bereits gezeigt, wie man mittels einer Batch Datei ein R -Programm auch ohne gestartete R -Konsole ausfьhren kann. Diese Batch-Datei wird normalerweise mit einem Doppelklick oder Shell-Aufruf gestartet. Hier wird nun beispielhaft fьr das Betriebsystem Windows 7, 64 Bit gezeigt, wie man die Batch-Datei automatisiert vom Betriebssystem zu einem bestimmten Zeitpunkt starten lassen kann. Rufen Sie Aufgaben planen ьber Systemsteuerung -> System und Sicherheit -> Verwaltung auf. Erstellen Sie ьber Aktion -> Einfache Aufgabe erstellen. eine neue Aufgabe. Vergeben Sie einen Namen und eine Beschreibung fьr die neue Aufgabe. Dann legen Sie fest, wann die Aufgabe gestartet werden soll. In diesem Beispiel tдglich . Wenn Sie das R -Programm mehrmals tдglich ausgefьhrt wollen, legen Sie einfach mehrere Aufgaben an! Legen Sie das Datum fьr die erste Ausfьhrung fest und die Uhrzeit fьr die wiederkehrende Ausfьhrung. Legen Sie fest, dass ein Programm ausgefьhrt werden soll. Als auszufьhrendes Programm wird nicht die R -Skript/Program m-Datei eingetragen, sondern cmd.exe ! Die Batchdatei wird als Argument angegeben! Mein konkretes Beispiel: Hier ein beispielhaftes Argument ! Nach Weiter wird Ihnen eine Zusammenfassung angezeigt und hier betдtigen Sie die Fertig stellen -Schaltflдche! Theoretisch sind Sie fertig, Sie mьssen allerdings noch die Berechtigungen zur Ausfьhrung des Programms einstellen! Dazu markieren Sie in der Ьbersicht Ihr R-Skript und betдtigen die rechte Maustaste und rufen die Eigenschaften auf: Wдhlen Sie “ Unabhдngig von der . ” aus und nach OK werden Sie nach Ihrem Passwort gefragt. Nun sind Sie fertig und kцnnen die Ausfьhrung testen! Markieren Sie Ihr R-Skript in der Aufgabenьbersicht, drьcken die rechte Maustaste und wдhlen den Menьpunkt Ausfьhren . Die Skript-Ausfьhrung werden Sie nicht wahrnehmen, aber das Resultat wird wie im Beispiel R im Batch-Modus im entsprechenden Verzeichnis abgelegt: Fertig! Das R -Programm wird auf Basis der von Ihnen festgelegten Parametern nun automatisch ausgefьhrt! Gewцhnlich wird das Funktionsresultat ьber return(x) an die Konsole zurьckgegeben. Diese Rьckgabe ist natьrlich keine Verpflichtung, wie schon in einigen Funktionen gezeigt. Als Zwischenlцsung kann die Funktionsrьckgabe ьber invisible(x) betrachtet werden. D. h., dass komplette Funktionsergebnis kann an ein Objekt (z. B. a) ьbergeben werden: Das Objekt a beinhaltet, wie gewцhnlich, das Funktionsresultat. Wenn Sie nur funktion(x) aufrufen, erhalten Sie keine Ausgabe! Sie wird durch invisible(x) unterdrьckt. Schreiben Sie eigene Funktionen, sind Editoren mit Syntaxhervorhebung sehr hilfreich. Syntaxhervorhebung bedeutet, dass der Editor Ihren eingegeben Code auf R -Funktionen und Schlьsselwцrter/Zeichen ьberprьft und diese farblich besonders darstellt (siehe . -Argument ): Nun kommt ein bisschen Werbung: Ich nutze den Editor UltraEdit-32 und dieser bietet eine Wortlistendatei (rechte Maustaste -> Ziel speichern unter. ) fьr R zur Syntaxhervorhebung an. Diese Datei wird unter Extras -> Optionen wie gezeigt in den Editor eingebunden: R bietet Ihnen Funktion zum Einlesen eines Verzeichnisses z. B. ьber die Funktionen dir() oder list.files() . Ьber das Attribut pattern kann der auszulesende Dateityp festgelegt werden. Mцchten Sie nun Dateien vom Typ “ csv ” auslesen, gehen Sie sicher wie folgt vor: Die Datei 7 (gelbe Markierung) ist allerdings nicht vom Typ “ csv ” sondern trдgt csv in der Dateibezeichung. Um auch diese Dateien auszuschlieЯen, mьssen das Argument pattern um “ \\ ” ergдnzen: Die Datei “ linda csv .lda.R ” wird ausgeschlossen. Berechnungen mit der Zeit. Die Systemzeit, einschlieЯlich Ihrer Zeitzone, wird ьber die Funktion. ausgegeben ( CET = Central European Time). Ьber die Funktion ISOdate() und dem Parameter tz zur Einstellung der Zeitzone ( tz=”” -> Zeitzone Ihres Computers), belegen Sie Variablen mit den von Ihnen gewьnschten Zeiten: Mцchten Sie Zeitdifferenzen berechnen, bietet R Ihnen die Funktion difftime() an: Time difference of 1407.257 days. > difftime(Zeit_2, Zeit_1, units="weeks") Time difference of 201.0367 weeks. Mцchten Sie eine Datenobjekt mit einer Sequenz von beispielsweise 10 Tage erzeugen, kцnnen Sie dies mit der Funktion seq(as.Date()) erreichen: Angeboten werden Ihnen folgende Varianten: Als Parameter fьr den by -Parameter sind neben den bereits gezeigten Argumente days und weeks auch die Argumente months und years zulдssig. Hat der Inhalt Ihnen weitergeholfen und Sie mцchten diese Seiten unterstьtzen? Blogverzeichnis Bloggerei.de. Willkommen im. Bloggerei.de. Hier findest Du die neusten, Г¤ltesten, besten, schlechtesten, coolsten, aktuellsten, größten, kleinsten und bekanntesten deutschen Blogs Гјbersichtlich nach Rubriken, Bewertungen und Tags geordnet. Das Blogverzeichnis wird redaktionell betreut, das heiГџt alle Blogs im Verzeichnis sind vor der Freigabe ГјberprГјft worden. Computerblogs. Was gibt es Neues? Mehr Komfort und Leistung durch UnterstГјtzung von WLAN-Mesh Grafische Mesh-Гњbersicht fГјr mehr Transparenz, Komfort und Leistung im Heimnetz Alle FRITZ!Box-Einstellungen zu WLAN-Mesh werden automatisch Гјbernommen weiterlesen. Ich habe ein Problem! Und zwar habe ich seit heute den Asus FX553VD-DM603*und wollte Windows 7 aufspielen. Mein Usb ist bootfГ¤hig und funktioniert auch auf meinem anderem laptop. Auf dem Adus kommt allerdings "A problem has been detected and Windows has been shut down." Auf einem wunderschГ¶nen Bluescreen … Dr. Windows – Windows . weiterlesen. Reiseblogs. Nach Gran Canaria und Fuerteventura nun wieder auf Teneriffa: Wie schon in den letzten Jahren hat man sich auch in diesem Jahr fГјr den Fernsehgarten mit Andrea Kiewel wieder einen Ort auf den Kanarischen Inseln ausgesucht. Die drei Ausgaben im Jahr 2018 werden am 13.14. und 15. 03. jeweils von 13.30 Uhr bis ca. 15.45 Uhr am Traumstrand Playa del . weiterlesen. Post-Holiday-Symptom: Schon mal was davon gehГ¶rt? Nach der (Traum-) Reise kommt Dir Dein altes Leben plГ¶tzlich ganz anders vor Quelle: Reisende erzГ¤hlt von den Problemen, wieder daheim im Alltag anzukommen – aus: FOCUS Online Hast Du auch schon einmal das GefГјhl gehabt, zuhause fehlt Dir etwas – nach einer langen Reise? Ich . weiterlesen. Blog der Woche. seit 03.01.2018 18:50 Xfce.space. seit 03.01.2018 18:36 Tourists in dubai. seit 03.01.2018 18:33 ein Schauspieler. seit 03.01.2018 18:29 der Sailor bloggt. seit 03.01.2018 18:28. Design 100% AktualitГ¤t 100% Postings 100% heelphakdi.de - LPВґs & mehr! Design 100% AktualitГ¤t 100% Postings 100% heelphakdi.de - LPВґs & mehr! Design 100% AktualitГ¤t 100% Postings 100% Internetblogs. Sparen auf Outlet46.de: PUMA FuГџball-Shorts Innenslip Trainingshose Rot fГјr 9.99 € Gesticktes PUMA Cat Logo auf dem linken Bein elastischer Bund mit Kordelzug aus atmungsaktiven, feuchtigkeitsregulierendem dryCELL Material mit Innenslip Passform: locker anliegend Materialkonstruktion: Jersey Material: 100% Polyester Versandkosten 4.99 . weiterlesen. Hier klicken "Gegen den Strom" und "Leben" sind hier erhГ¤ltlich: https://lnk.to/nTUQ3 Abonniere kostenlos 3pTV: http://www.youtube.com/user/3pTV/ http://www.3-p.de/ http://tiny.cc/3pTV_GooglePlus Tweets by . weiterlesen. Hobbyblogs. Im Jahr 2009 wurde im Rahmen eines Internet-Fotowettbewerbs der Slender Man kreiert. Seither gilt der schlanke Mann als bekanntes Meme in der. Trailer zur Verfilmung des InternetphГ¤nomens „Slender Man“ weiterlesen. Am Neujahrstag hat niemand Geringerer als der berГјhmtberГјchtigte Graf Olaf (Neil Patrick Harris) die Netflix-Zuschauer mit einer erschГјtternden. Teaser zur 2. Staffel „Eine Reihe betrГјblicher Ereignisse“ weiterlesen. Stadtblogs. Kennt ihr den SLENDERMAN? Der gefГјrchtete Slenderman ist eine Gruselgestalt, die seit einigen Jahren stark an PopularitГ¤t gewonnen hat. Jetzt kommt der SLENDERMAN ins Kino und der erste Trailer ist . Weiterlesen . Der Beitrag SLENDERMAN der Film erschien zuerst auf MILLUS. weiterlesen. Leicht verletzt ins Krankenhaus gekommen Meuselwitz: Am Neujahrsmorgen, gegen 06:40 Uhr kam es zu einer KГ¶rperverletzungshandlung zum Nachteil eines 47-jГ¤hrigen Mannes. Er und ein 43-JГ¤hriger befanden sich auf dem Parkplatz des TOOM-Marktes in der Ernst-Grube-StraГџe, als diese von 2 unbekannten MГ¤nnern angegriffen wurden sein sollen. Die MГ¤nner . weiterlesen. Kulturblogs. Woran wollen wir bitte erkennen, ob wir in der tatsГ¤chlich echten RealitГ¤t leben, oder lediglich in einer Computersimulation? Sind wir nur in einem Computerspiel? Diese Fragen werden nicht erst seit „The Matrix“ gestellt und sind noch immer aktuell (s. „Black Mirror“). Das Interessante daran ist, dass man beide Varianten . weiterlesen. Und wieder einmal widme ich mich einem Science-Fiction-Roman, der wieder einmal Basis fГјr eine hoffentlich nicht minder groГџartige Serie sein darf, die wieder einmal bei Netflix zu sehen sein wird, allerdings erst im Februar. Bis dahin lГ¤sst sich die Zeit aber gar wunderbar mit der Buchvorlage verbringen, wie ich euch flГјstern darf. Und im Detail . weiterlesen. Musikblogs. Spotify steht juristischer Г„rger ins Haus. Ein Musikverlag hat beim US-amerikanischen Bundesgericht in Los Angeles (Kalifornien) eine Milliardenklage gegen den Streaming-Dienst eingereicht.В KlГ¤ger ist der Musikverlag Wixen Music Publishing, der Songwriter und ihre Verlage im Spotify-VergГјtungssystem stark benachteiligt sieht. Wixen ist kein . weiterlesen. Der Beitrag Papa Roach – Traumatic Video erschien zuerst auf tongues of destruction. Views: 28Papa Roach haben vom aktuellen Album Crooked Teeth den Song Traumatic ein Video spendiert. Produzent und Regisseur ist Bryson Roach. Schaut euch hier das Traumatic Video an. Papa Roach – Traumatic (Official Video) Official music video for . weiterlesen. Politikblogs. 00324 Tage! Solange sitzt der Welt-Journalist Deniz YГјcel inzwischen in einem tГјrkischen GefГ¤ngnis, 290 Tage davon in zermГјrbender Einzelhaft. Und was hГ¶rt man im BlГ¤tterwald dazu? Wo und wie dokumentiert sich die SolidaritГ¤t mit dem Journalistenkollegen? Nach meinem Empfinden liest und hГ¶rt man erschreckend wenig zu dieser unertrГ¤glichen Causa. . weiterlesen. Amerika bibbert durch einen historischen Polar-Winter – derzeit sind 100 Millionen Menschen vom Frostwetter betroffen: Und jetzt droht ein Blizzard. The post Blizzard schaufelt kГ¤lteste Luft des Polar-Winters heran: -26 C in New York angesagt appeared first on Amerika-Report. weiterlesen. Gourmetblogs. Das Catering auf größeren Veranstaltungen wie SportbГ¤lle, Konzerte oder andere Events nimmt bei uns stark zu. So hatten wir das Catering in den vergangenen Jahren immer auf dem Visbeker Sportball, dass in der schГ¶n geschmГјckten Sporthalle ausgerichtet wird. Foto: Da Cappo/J. Kendlinger Ein musikkalischer HГ¶hepunkt ist das Konzert der K&K . weiterlesen. Heute habe ich fГјr euch ein Rezept fГјr leckere WurzelbrГ¶tchen. Diese WurzelbrГ¶tchen sind super einfach nachzubacken und somit auch fГјr BackanfГ¤nger prima geeignet. Denn sie mГјssen nicht speziell geformt werden, sondern es werden nur lГ¤ngliche Teiglinge abgestochen und in sich verdreht. Dadurch entsteht die rustikale „Wurzel-Optik“. Der . weiterlesen. Freizeitblogs. Junge Junge, wer viel Datenverbrauch hat, kommt bei Logitel voll auf seine Kosten. Hier gibt es die Vodafone Allnet Flat mit 6GB LTE Datenvolumen. Zum Angebot gibt es auch hier Top Apple PrГ¤mien. Die monatliche GrundgebГјhr belГ¤uft sich a. weiterlesen. Im Marc O’Polo Onlineshop gibt es aktuell seinenВ Sale mit bis zu 50% Rabatt und zusГ¤tzlich nochmal 15% Extrarabatt auf bereits reduzierte Artikel.   Die Versandkosten liegen bei fairen 3,95 Euro pro Bestellung. Da die 15% Extra. weiterlesen. VerlegungThe post AG Natursteinwerke – Europaweite Design-Verlegung mit einer durchgehend fugenlosen Optik – BodenbelГ¤ge, Treppen, Waschtische, usw. appeared first on Eventfotos von Events in KГ¤rnten. weiterlesen. Welche Bildagentur ist die Beste fГјr mich? Die mit den billigsten Preisen, oder die mit der größten Bildauswahl? Es gibt viele Kriterien nach denen ich meine Bildagentur aussuchen kann. GrundsГ¤tzlich gilt es zu unterscheiden zwischen klassischer Bildagentur oder gГјnstiger Microstock Agentur. Durch die fortgeschrittene Technik der . weiterlesen. Spieleblogs. Football Manager 2018 вљЅ FC Schalke 04 Football Manager 2018 вљЅ FC Schalke 04 вљЅ UNTERSTГњTZE MICH! вљЅ bit.ly/HeelPhakdiFan в˜… Liken в˜† Kommentieren в˜… Abonnieren в˜† Teilen в˜… в–¬в–¬в–¬в–¬в–¬в–¬в–¬в–¬ Alles zum Video в–¬в–¬в–¬в–¬в–¬в–¬в–¬в–¬в–¬ вљЅ WERDE FAN UNSEREN VEREINS: www.youtube.com/user/HeelPhakdiLP/featured вљЅ ODER LUST AUF MEHR SPIELE?: www.youtube.com/user/HeelPhakdiGames вљЅ ERSTE . weiterlesen. Eine News von Gamecontrast, dem Spielemagazin fГјr Konsolen, PC und mobilem Gameing. PC-Spieler mГјssen erneut einen herben RГјckschlag in Kauf nehmen: Wie der Publisher Capcom nun offiziell bestГ¤tigt hat, wird das RPG Monster Hunter: World erst im Herbst 2018 fГјr den PC erscheinen. Als Grund fГјr die VerzГ¶gerung geben die Entwickler an, dass sie die . weiterlesen. Privateblogs. Hier ein Foto von Django Reinhardts letzter Selmer-Gitarre mit der Seriennummer 503, die sich heute in der MГ©diathГЁque der CitГ© de la Musique in Paris befindet. weiterlesen. So, mit localhost/phpmyadmin kann man/frau sich bei gestartetem Apache2 (geht mittels /etc/init.d/apache2 restart ) bei phpMyAdmin anmelden und so die fГјr ein CMS erforderliche Datenbank administrieren. Jetzt muГџ ich mich noch mit Joomla auseinandersetzen. weiterlesen. Als WГјrmerbezeichnet man eine ganze Reihe zum Teil nur sehr entfernt verwandter Gruppen wirbelloser Tiere. Sie zeichnen sich durch einen langgestreckten, schlauchfГ¶rmigen KГ¶rperbau aus. UrsprГјnglich wurde von der Zoologie alle wurmfГ¶rmigen Tiere aufgrund ihrer Г¤uГџeren Merkmale in der Klasse der … Weiterlesen → weiterlesen. Einem JГ¤ger ist in einem WaldstГјck zwischen Affeltrangen und Thundorf im Kanton Thurgau ein ungewГ¶hnlicher Fehler unterlaufen: Statt wie beabsichtigt Wildschweine zu erlegen, hat er aus Versehen vier Schafe getГ¶tet. Der Vorfall ereignete sich in der Nacht auf Samstag, wie ein Sprecher der Kantonspolizei Thurgau gestern sagte. Der JГ¤ger habe noch . weiterlesen. Funnyblogs. Ihre Insel wird angegriffen! Das ist immer ein Grund zur Sorge, nehme ich an, aber es lohnt sich definitiv, diese Insel zu verteidigen, da es die schГ¶nste Insel ist, die Sie je besitzen werden. Und Bad North ist eines der hГјbschesten isometrischen Spiele, die ich je gesehen habe. Das ist fast sicher Oskar StГҐlbergs Mitarbeit zu . weiterlesen. Immer wenn ein Motto-Monat endet, bin ich einerseits froh, dass ich jetzt wieder schreiben kann, was mir eben gerade sprichwГ¶rtlich vom Hintern in den Kopf steigt. Gleichzeitig denke ich, wahrscheinlich war das ohnehin das letzte Mal, dass dir zu einem Thema soviel Geschwurbel einfГ¤llt, dass du damit drei oder sogar vier Artikel mit rund 1500 . weiterlesen. Wirtschaftsblogs. Seit dem Ausbruch der Finanzkrise im Jahr 2008 haben die internationalen Notenbanken die Zinsen auf den tiefsten Stand seit 5.000 Jahren abgesenkt und finanzieren die inzwischen weltweit exponentiell wachsenden Schuldenberge per Inflationspolitik. weiterlesen. Am heutigen Mittwoch konnte derВ DAXВ (WKN: 846900 / ISIN: DE0008469008)В endlich einmal die gute Stimmung an den US-BГ¶rsen fГјr sich nutzen. Richtiggehend bejubelt wurde zudem die Entspannung an der WГ¤hrungsfront.В Das war heute los. Nachdem sich der Euro in den vergangenen Wochen im Vergleich zum US-Dollar deutlich gestГ¤rkt gezeigt und damit den DAX . weiterlesen. Sportblogs. Bin ich Skinny Fat? Was tun bei einer Figur mit wenig Muskeln und hohem KГ¶rperfett Anteil? Wir haben alle Antworten auf eure Fragen! Skinny Fat ist ein Wort, das inzwischen weit verbreitet ist. Das Modewort stand erstmal im Mittelpunkt, als die britische Presse das Model Kate Moss als zu dick und schwabbelig bezeichnete, obwohl sie schlank war. . weiterlesen. Zwei Dortmunder Kumpels und zwei RГјckkehrer schaffen zum Jahresbeginn den größten Sprung bei den Marktwerten. Aber auch der beste Abwehrspieler legt noch einmal ordentlich zu. weiterlesen. Wissenschaftsblogs. Der erste Mittwoch des Jahres weiterlesen. Das Kriminologische Forschungsinstitut in Niedersachsen (KFN) hat im Auftrag des BMFSFJ etwas herausgefunden. Ja – wirklich! Das BMFSFJ hat das KFN beauftragt, herauszufinden, wie sich die Gewalt in Deutschland entwickelt. Herausgefunden haben die KFNler Christian Pfeifer (schon immer PR-Abteilung), Dirk Baier (frГјherer der, der die Arbeit gemacht . weiterlesen. Medizinblogs. Ein Jahr ist schon wieder vorГјber. 2018 hat begonnen und bietet uns nun wieder neue Chancen und MГ¶glichkeiten, die wir nicht verpassen sollten zu nutzen. Die Zeit zieht irgendwie immer, immer schneller an uns vorbei. Jedenfalls kommt es mir so vor. Und so dachte ich mir, dass ich einen RГјckblick auf das Jahr 2017 werfe […] weiterlesen. NatГјrlich wollen wir jetzt mГјhelos abnehmen, um im Sommer unsere Bikinifigur zu haben. Wie Sie Ihren KГ¶rper in eine Fettverbrennungs-Maschine verwandeln. в†’ WEITER LESEN Der Beitrag Wie Sie satt und mГјhelos abnehmen. erschien zuerst auf Ogaenics. weiterlesen. Literaturblogs. Ihr Lieben, ♥ wow, das Jahr 2017 hatte es schon in sich, oder? Ich kann nochВ nicht ganz fassen, was ich alles erlebt habe und wie schnell es vorbei gewesen ist. Noch jetzt sehe ich mich manchmal mit meiner Baby-Kugel, voller Ungeduld darauf, unseren Sohn endlich in die Arme schlieГџen zu dГјrfen. Oder die Vorfreude und Aufregung auf unsere . weiterlesen. Historischer Roman mit Leseprobe Band Eins aus der Roman-Trilogie Гјber die Teilungen Polens Polen heute Polen – kaum ein Land im Bund der EuropГ¤ischen Gemeinschaft erregt seit geraumer Zeit, konkret nach dem letzten Regierungswechsel im. weiterlesen. Man darf jetzt nicht mehr Neger sagen und Halbneger natГјrlich auch nicht. Eine mathematische Reduktion der Nutzung des Wortes "Halbneger" auf halbverboten und damit erlaubt, dГјrfte vor Gericht keinen Erfolg haben. Гњber den Twitter-Account von Jens Maier (AfD) war gestern folgende Botschaft Гјber Boris Beckers Sohn, Noah Becker, verbreitet worden, . weiterlesen. 1. Wird ein mit einer Vertragsstrafe bewehrter Baufertigstellungstermin einvernehmlich verschoben, wird die Vertragsstrafe, bezogen auf den ursprГјnglich vereinbarten Fertigstellungszeitpunkt, nicht verwirkt. 2. FГјr den einvernehmlich neu festgelegten Fertigstellungs-termin gilt die im Vertrag vorgesehene Vertragsstrafe nicht automatisch, sondern . weiterlesen. Corporateblogs. Ob Neuvorstellungen, JubilГ¤en oder sportliche HГ¶hepunkte – 2017 war fГјr Porsche ein spannendes Jahr. Die Redaktion hat aus jedem Monat eine Meldung ausgesucht. Alle Highlights zeigt der filmische JahresrГјckblick (oben). Januar Dynamisch, komfortabel und effizient. Mit den neuen GTS-Modellen baut Porsche zu Beginn des Jahres die 911-Produktpalette . weiterlesen. Wenn Sie Ihren GlГјhwein bereits auf der angenehm gewГ¤rmten Terrasse trotz eines leistungsstarken Infrarot Heizstrahlers bei KerzenlichtatmosphГ¤re trinken, dann haben Sie sie bereits: die endlich lieferbaren neuen Infrarotstrahler IR 2010 und IR 2050 reduzieren dank verminderter Lichtausstrahlung das hГ¤ufig als stГ¶rend wahrgenommene helle Rotlicht . weiterlesen. В Maximilian Betz, 23 Jahre alt, sehnte sich nach Abschluss seiner ersten Ausbildung nach neuen Erfahrungen, so hat er sich kurzerhand bei Travian Games in MГјnchen beworben und ist dort nun Azubi fГјr Fachinformatik Systemintegration.В Heute hat er hat sich den … Weiterlesen → weiterlesen. Die Idee Inspiriert durch einen frГјheren Truckercast, hat ein Berufskraftfahrer eine Idee. Vier Berufskollegen sind davon so sehr begeistert, dass … weiterlesen. Kunstblogs. Zuerst mal: allen Besuchern ein sehr gutes Jahr 2018!Und dann: die letzte Zeichnung im Jahre 2017 will ich euch nicht vorenthalten. Ihr Titel "17 Uhr 56 (der Tropfen)". Ausnahmsweise auch mal sehr weit durchgezeichnet und unter uns: Haare - achja Haare, die zeichne ich momentan auch ein "Haufen", meine, es sind wieder viele, sehr viele. Na auch . weiterlesen. Gleich zum Start des neuen Jahres kommt eine groГџe Ausstellung von Гјber 120В Bildern mit Motiven von Gonzenheim/Bad HomburgВ von Jutta Gehm und mirВ . Wir haben gemeinsam das letzteВ Jahr an diesem Projekt gearbeitet. В SeitВ zwei Tagen hГ¤ngen wir die Гјber 120 Bilder im MuseumВ Kitzenhof auf. Wir freuen uns schon sehr auf die ErГ¶ffnung dieser . weiterlesen. Umweltblogs. Wie bei anderen elektrischen GerГ¤ten auch machen sich viele Menschen Gedanken Гјber die mГ¶gliche Strahlenbelastung. Besonders Babyphone Strahlung, die von vielen GerГ¤ten ausgeht, stellt eine nicht zu unterschГ¤tzende Gefahr dar. SchlieГџlich stehen die GerГ¤te oft viele Stunden ganz in der NГ¤he der Kleinen – eigentlich zu deren Sicherheit. Babyphone . weiterlesen. Im September vergangenen Jahres musste ich mir den Frust von der Seele schreiben. Ich konnte die inszenierten Berichte der Lokalmedien meiner Region nicht mehr lesen: Pressetermine werden ohne kritische Fragen abgearbeitet, Fotos von Veranstaltern erdachten Motiven geschossen und unreflektiert berichtet. Heraus kam der bewusst Гјberspitzt . weiterlesen. Knapp eine Stunde war WhatsApp am Silvesterabend nicht verfügbar. Das Ungewöhnliche daran: Der Messenger fiel wieder einmal genau zum Monatsende aus. Experten rätseln über die Gründe. Doch zumindest für den Silvester-Ausfall gibt es eine Erklärung.Von FOCUS-Online-Redakteur Ludwig Obermeier weiterlesen. Search engine optimization has changed a lot in the past few years. Things that used to work great in the past do not work anymore. Other techniques that delivered great results in the past. weiterlesen. Feedworker RSS-Import: heute, 20:10 Uhr В· nГ¤chster Import in ca. 44 Minuten.

Комментариев нет:

Отправить комментарий

Related Posts Plugin for WordPress, Blogger...