|
|
Das macht Konsolen-Programme auf Linux ideal geeignet zur Systemverwaltung - automatisch und manuell. Konsolen-Programme können über SSH (Secure Shell) ferngesteuert werden. |
Konsole
|
Linux-Shell, Windows-CMD, Cygwin, ... |
| Auf dieser Webseite: | |
| Konsole | Historisch, nostalgisch, moderne Anwendung |
| Linux-Konsole | Die Standard Linux Konsole |
| Script | Script-Programme - Anweisungen in reinem Text |
| Shell | Auswahl unter Shell-Programmen und Programmiersprachen |
| Shebang | Pfad zum gewünschten Interpreter-Programm |
| Start & Stop | Von (Script)-Programmen |
| Execute | Ausführungs-Rechte |
| Links |
Ausgewählte
|
| Auf anderen Seiten dieses Webs: | |
| core | Ausgewählte Konsolen-Befehle in Linux und Windows |
| HowTo | BASH-HowTo - Stark vereinfachte Übersicht |
| Allgemein | Allgemeine Tipps zur Erstellung von Shell-Scripts, Kommentare |
| Beispiel | (Fern)-Steuerung eines LAMP-Servers |
Linux-Konsole |
|
|
►
Spezialisierte Linux-Server verzichten auf einen grafisches Desktop und
verwenden die gesamte Leistung für die Server-Programme. In diesem Fall
zeigt der Server-Bildschirm ausschließlich die Shell-Konsole. ► Mit Befehl # konsole
wird auf Linux-PC mit Desktop (Gnome, KDE) eine neue Instanz der Linux-Konsole
gestartet.Hilfe zu diesem Befehl erhält man mit # man konsole
Der Befehl ist sinnvoll, wenn er (mit Optionen) in ein Script eingebaut wird.Option -e (execute)Diese Option ordnet die Ausführung des nachfolgend angegebenen Befehls an.Beispiel: # konsole -e ifconfig >> /home/test/ifconfig.log
Diese Anweisung führt das Programm ifconfig aus
(Ausgabe der Netzwerk-Konfiguration) und speichert das Ergebnis in der angegebenen
Datei. Ohne weitere Angabe wird das Konsolen-Fenster nach dem Ende des Befehls
wieder geschlossen. Man kann die Ausgabe nicht ansehen, daher ist diese Variante
nur für Befehle geeignet, deren Ausgabe uninteressant ist oder in einer
(Log)-Datei gespeichert wird.
|
Option -nocloseDiese Option öffnet ein Konsolen-Fenster, das bis zum manuellen Schließen offen bleibt. Sie wird fast immer zusammen mit Option -e und mit einem Konsolen-Befehl als Anweisung verwendet. Diese Variante ist sinnvoll, wenn man die Ausgabe eines Befehls selbst kontrollieren will.Beispiel: # konsole -noclose -e /etc/init.d/smbd status
zeigt den aktuellen Status des Samba-Servers in einem Konsolen-Fenster an.
Das ist äquivalent zum Befehl (in einem bereits geöffneten Konsolen-Fenster):
# /etc/init.d/smbd status
Diese Variante des konsole-Befehls eignet sich besonders
für Scripts zur interaktiven System-Verwaltung.
|
BookmarkBeispiel für die Anwendung der Konsolen-Optionen:► Erstellen sie eine Text-Datei /home/test/ifconfig.sh (oder in einem anderen home-Verzeichnis). Tragen sie folgenden Text ein:
#!/bin/sh
konsole -noclose -e ifconfig • Erteilen sie Ausführungs-Rechte für sich selbst oder (für Test-Zwecke) für alle User, z.B. mit # chmod 777 /home/test/ifconfig.sh
Eine Variante dazu ist Rechtklick auf das Datei-Icon, Menü
.
Markieren sie alle 3 Häkchen der Spalte x (execute =
ausführen)• Testen sie das Script-Programm: Öffnen sie eine Shell-Konsole und geben sie ein # /home/test/ifconfig.sh
Das Programm sollte ein neues Konsolen-Fenster öffnen, darin die
Anweisung ifconfig ausführen (Ausgabe der
Netzwerk-Konfiguration) und das Fenster zur Ansicht geöffnet lassen.Wenn der Test funktioniert, dann können sie dieses Script aus beliebigen anderen Anwendungen aufrufen, z.B. • Wenn in der Taskleiste (auf jedem Bildschirm ganz unten) keine Favoriten (Bookmarks) angezeigt werden, dann rechts-klicken sie in die Taskleiste und geben die Anweisung . |
• Wenn die Favoriten (Bookmarks, gelber Stern) angezeigt werden, dann rechts-klicken sie das Icon und geben den Befehl . Rechts-klicken sie auf ein Verzeichnis-Icon, z.B. auf Bookmarks und geben sie Befehl. Rechts-klicken sie das neu angelegte Icon und befehlen sie . Tragen sie einen sinnvollen Namen ein, z.B. ifconfig Befehlen sie . Tragen sie in das URL-Feld den Pfad zu ihrem Script ein: /home/test/ifconfig.sh
Schließen sie den Bookmark Editor.• Bei Klick auf das Favoriten (Bookmarks)-Icon wird der neue Bookmark-Befehl angezeigt. Mit dieser Anweisung wird ein Konsolen-Fenster geöffnet und die Netzwerk-Konfiguration angezeigt. ♣ Tipp: Legen sie ähnliche Bookmarks und / oder Scripts für die Anzeige des Status und für den Restart aller wichtigen Server-Dienste an, z.B. für den Apache Webserver, den MySQL Datenbank Server und für den Samba Fileserver:
# /etc/init.d/apache2 status
# /etc/init.d/apache2 restart # /etc/init.d/mysql status # /etc/init.d/smbd status |
SSHbietet die Möglichkeit zur Fernsteuerung eines beliebigen PC, auf dem ein SSH-Server installiert ist. Das ist auf Linux-Server-PC immer der Fall und lässt sich auf allen anderen Linux-PC leicht nachholen.● In diesem Fall können sie den betreffenden Linux-PC von jedem anderen PC (im lokalen Netzwerk) über eine 'ferngesteuerte Konsole' bedienen. ● Jeder PC mit SSH-Server kann optional auch über das Internet gesteuert werden. Das öffnet jedoch eine gefährliche Sicherheits-Lücke und sollte erfahrenen Linux-AdministratorInnen vorbehalten bleiben. |
Beispiel: Fernsteuerung eines Linux-PC mit dem kostenfreien
Windows-Programm PuTTY: • Starten sie das Programm PuTTY • Geben sie die IP-Adresse des entfernten Linux-PC ein und bestätigen sie mit 'Open'. Sie erhalten ein Konsolen-Fenster und darin die obligate Anmeldung. • Geben sie den Linux User-Namen und danach das Passwort ein (wird nicht angezeigt). • Nach korrekter Anmeldung arbeitet die SSH-Konsole genauso wie die Shell-Konsole direkt am Linux-PC. • Beenden sie die SSH-Session mit exit • Meist ist es nicht erlaubt, sich als Administrator root anzumelden: Melden sie sich als normaler User an und wechseln sie danach mit Anweisung su ihre Identität. |
Script-Programme |
|||||||||||||
Text-DateiEin Script-Programm besteht aus Anweisungs-Texten in einer Text-Datei. Derartige Dateien enthalten ausschließlich lesbaren Text (text/plain). |
Im Gegensatz dazu bestehen direkt ausführbare Programme (Textverarbeitung,
Kalkulation, Grafik, Spiele, ...) aus binären Anweisungen in der
Maschinen-Sprache des jeweiligen PC. Derartige Programme sind für Menschen nicht lesbar. |
||||||||||||
ASCIIAls Zeichensatz werden ausschließlich die 128 → ASCII-Zeichen verwendet. Nationale Sonderzeichen sind ausgeschlossen. Für Texte, Fehler-Meldungen und Kommentare wird normalerweise Englisch verwendet.Daher sind Script-Programme auf jeden PC und auf jedes Betriebssystem portabel. Damit sie dort auch laufen, müssen jedoch einige Anforderungen erfüllt werden. |
Einzig für die Text-Ausgabe sind nationale Sonderzeichen (z.B. Umlaute) möglich, jedoch nicht empfehlenswert. Verwenden sie im Zweifel nur ASCII-Zeichen und englische Sprache, damit ihr Script international kompatibel ist. Wenn Text-Ausgabe in anderen Sprachen notwendig ist, dann werden diese Texte in professionellen Programmen in eigene nationalisierte Dateien ausgelagert (z.B. in je eine eigene Datei für de, en, fr, it usw.) |
||||||||||||
Ein Text kann von Menschen rasch und leicht gelesen oder verändert werden. |
● Texte sind nicht an bestimmte Hardware, Hersteller, Betriebssysteme oder Sprachen gebunden, bei strikter Verwendung von ASCII-Zeichen und englischer Sprache auch nicht an Kulturen, Sprachen oder Nationen. ● Die Zeit für Entwicklung oder Anpassung von Script-Programmen ist wesentlich kürzer als für compilierte Programme. Das macht Script-Programme billiger und rascher einsetzbar. ● Wer sich auf Linux noch nicht leicht zurechtfindet, kann Linux Shell-Programme auch auf einem Windows-PC lesen oder bearbeiten: Das betreffende Verzeichnis wird vom → Samba-Server des Linux-PC freigegeben und am Windows-PC als 'Netzlaufwerk' verwendet. ► Wegen der zahlreichen Vorteile erobern Script-Programme heute immer mehr Anwendungs-Bereiche. |
||||||||||||
Die Anweisungen von Script-Programmen müssen von einem Interpreter-Programm
gelesen und in ausführbare Befehle (in der Maschinen-Sprache des jeweiligen
PC) umgesetzt werden. |
● Die Interpretation eines Script-Programms kostet Zeit Alle Anweisungen sind als Text enthalten und müssen in Maschinensprache übersetzt werden. Dieser Vorgang ist bei jeder einzelnen Ausführung eines Script-Programms notwendig. ● Dieser Nachteil verliert jedoch wegen der rasch zunehmenden Leistung moderner PC ständig an Bedeutung. Script-Programme auf modernen PC arbeiten weit schneller als compilierte (fertig in Maschinensprache übersetzte) Programme noch vor wenigen Jahren. |
||||||||||||
UmbruchLeider verwenden die gängigen Betriebssysteme unterschiedliche Zeichen für den Zeilen-Umbruch (neue Zeile):
|
•
Viele Programme sind robust und funktionieren mit jedem Umbruch-Zeichen.
Daraus sollten sie sich jedoch besser nicht verlassen. • Andere (z.B. Perl Script-Programme) bestehen auf dem passenden Umbruch und müssen daher bei System-Wechsel übersetzt werden (z.B. mit Notepad++). |
||||||||||||
Datei-Namen● Verwenden sie sprechende Namen - Aus dem Namen soll auch nach Monaten noch erkennbar sein, wozu ein Script dient.● Datei-Namen sollten mit einem kleinen Buchstaben a..z beginnen. Ein führender . Punkt macht die Datei für normale Anzeige unsichtbar. ● Verwenden sie für Datei-Namen nur die Zeichen 0..9a..z und als Trennzeichen das _ underline. ● Großbuchstaben A..Z können zwar verwendet werden, führen jedoch leicht zu Fehlern, da Linux kleine und große Buchstaben streng unterscheidet (im Gegensatz zu Windows). ● Verwenden sie keine Leerzeichen, Interpunktionen, Sonderzeichen, Umlaute - Das kann im Einzelfall funktionieren, führt jedoch später immer wieder zu schwer auffindbaren Fehlern. |
● Verwenden sie Datei-Endungen im Windows-Stil, wenn sie universell portable Scripts erstellen, z.B. myscript.pl für ein Perl-Script. ● Lassen sie auf Windows-PC unbedingt alle Datei-Endungen anzeigen () ● Verwenden sie nicht die Namen bereits vorhandener Befehle. Testen sie einen Namen zumindest so
# man myscript
Nur dann, wenn sie keine Ergebnisse erhalten, ist der Name für eigene
Scripts geeignet.# info myscript # whatis myscript ● Insbesondere der oft strapazierte Name test kann nicht verwendet werden, da es einen gleichnamigen System-Befehl bereits gibt. |
||||||||||||
Ausführungs-RechteAuf Linux sind die Zugriffs-Rechte (im Gegensatz zu Windows) einfach und streng geregelt. Zur Einstellung dient u.a. das Konsolen-Programm chmod - Hilfe mit# man chmod
|
Vergessen sie nicht, die Zugriffs-Rechte (Ausführung, execute) eigener Script-Dateien einzustellen. Ansonsten wird die Ausführung unterbunden. |
||||||||||||
|
|
| Linux bietet mehrere Konsolen-Programme (Shells) zur Auswahl. Das ist für Windows-AnwenderInnen ebenso ungewohnt wie die Tatsache, dass es mehrere Desktop-Programme zur Auswahl gibt. | Die Wahl-Möglichkeit bringt natürlich auch die Nachteile einer Demokratie gegenüber einer Diktatur: Man muss sich mit mehreren (Shell)-Varianten auseinandersetzen, und bei eigenen Entwicklungen für eine der Varianten entscheiden. |
Bourne-ShellDiese Shell (sh) wurde 1978 als erste UNIX Konsole von Stephen R. Bourne entwickelt. Das Programm.war spartanisch ausgestattet, prägte jedoch die historische Entwicklung. |
Die Syntax der sh dominiert heute alle UNIX Konsolen-Programme. Allerdings werden nur mehr die Nachfolge-Versionen verwendet, z.B. die bash (weiter unten in diesem Kapitel) |
C-ShellDiese Shell (csh) wurde von Billy Joy entwickelt. Die Syntax ist stark an die Programmiersprache C angelehnt. Da fast alle UNIX-Programme in C erstellt sind, war die csh für EntwicklerInnen einfach anzuwenden.Die csh brachte viele praktische Vorteile, dieser Vorsprung ist jedoch heute durch Nachfolger der sh aufgeholt. |
Die von der traditionellen sh abweichende Syntax erwies sich jedoch als unangenehme Doppelgleisigkeit. Die Ternex C-Shell (Turbo C-Shell) tcsh ist eine Weiterentwicklung der csh Heute haben csh und tcsh nur mehr geringe Bedeutung. |
Korn ShellDavid Korn entwickelte 1986 die Korn Shell (ksh) mit dem Ziel, die traditionelle Syntax der sh mit der bequemen Bedienung der csh zu verbinden.Die ksh war anfangs ein kommerzielles Programm und wurde deshalb in der mit OpenSource verwöhnten UNIX-Welt kaum akzeptiert. |
Heute wird die ksh für die meisten größeren Skript-Projekte eingesetzt. Die Unterschiede zur bash sind gering. Daher ist es in der Praxis kein Problem, sowohl mit bash als auch mit ksh zu arbeiten. |
Bourne-Again ShellDiese Shell bash ist eine Weiterentwicklung der sh durch das GNU Projekt. Die bash hat heute die größte Bedeutung. Sie verbindet die ursprüngliche Syntax der sh mit vielen praktischen Annehmlichkeiten. |
Auf allen gängigen Linux-Systemen ist die bash als Standard-Shell eingerichtet. Sie bietet insbesondere bei direkter manueller Bedienung die größten Vorteile. |
DialekteLeider sind die UNIX bzw. Linux System-Befehle nicht ganz einheitlich. Je nach Hersteller bzw. Distributor gibt es teilweise Varianten der Befehls-Namen und Optionen. |
Deshalb müssen Shell Skript-Programme bei Übertragung auf andere Betriebssysteme sorgfältig getestet und allenfalls etwas modifiziert werden. |
Scripts in der Programmiersprache Perl werden auf Linux häufig eingesetzt.
Perl ist schon deshalb in jeder gängigen Linux-Distribution installiert. |
Wenn ein Script auf spezifische Details des jeweiligen Betriebssystems eingeht, dann müssen diese Teile bei Portierung auf andere Systeme angepasst werden. Perl ist auch auf Windows sehr vorteilhaft (kostenfrei) einsetzbar, muss dort allerdings installiert werden. ♦ Details zur Programmiersprache Perl, zur Installation von Perl auf Windows. |
kann ebenso wie Perl als Konsolen-Programm (CommandLine Interface, CLI)
eingesetzt werden und ist ebenso wie Perl gut auf Windows-Systeme portabel. |
In der Linux-Praxis werden PHP Script-Programme kaum zur Verwaltung verwendet (Perl wird bevorzugt). • Für eigene Entwicklungen kann PHP jedoch sehr vorteilhaft eingesetzt werden: PHP-Kenntnisse sind häufig bereits vorhanden, PHP ist besonders einfach anzuwenden, und PHP-Scripts harmonieren problemlos mit Shell- und Perl-Scripts. ♦ Details zur Verwendung von PHP als CLI |
Das Projekt Cygwin ist eine kostenfreie Portierung von Teilen der UNIX Shell
auf Windows. Der große Vorteil liegt in der Möglichkeit,
mächtige Shell-Programme auch auf Windows einzusetzen.
|
Cygwin bietet die meisten Linux System-Befehle und die Möglichkeit, Shell Script-Programme auf Windows zu portieren. ♦ Details zu Cygwin |
ZusammenarbeitIn der Praxis aller gängigen Linux-Systeme werden Script-Programme mehrerer Shells sowie der Programmiersprachen Perl und Python in Kombination eingesetzt.Jede Aufgabe kann mit unterschiedlichen Resourcen gelöst werden, die harmonisch miteinander arbeiten. |
Für eigene Entwicklungen besonders angenehm ist die Möglichkeit, zwischen mehreren Shell-Varianten und Programmiersprachen zu wählen. Meist ist es sinnvoll, jene Variante zu verwenden, für welche die meisten Resourcen (Kenntnisse, Erfahrung, Dokumentation, ...) vorhanden sind. |
Shebang #! |
|
Shebang #!Die Text-Dateien von Script-Programmen müssen zur Ausführung an das jeweilige Interpreter-Programm übergeben werden.Linux verwendet dazu ein genial einfaches System:
Der Pfad zum ausführbaren Interpreter-Programm wird in der ersten
Text-Zeile angegeben.
Windows-AnwenderInnen sind gewohnt, dass die Verknüpfung mit dem Programm von der Endung des Datei-Namens abhängt. In allen anderen Betriebssystemen ist der Datei-Name jedoch mehr oder weniger frei wählbar. Auch auf Linux kann man Datei-Namen im Windows-Stil (z.B. test.sh) verwenden. Der Name hat jedoch normalerweise keine spezielle Funktion, d.h. man kann die gleiche Script-Datei auch einfach test benennen. |
Die strikten Shebang-Regeln: ► Der Interpreter-Pfad muss in der ersten Zeile angegeben werden. Davor sind keine Leerzeilen, Kommentare usw. zulässig. ► Die Zeile muss mit den Zeichen #! beginnen. ► Danach folgt der Pfad zum ausführbaren Programm. ► Die Zeile wird mit LineFeed (LF, → ASCII-Zeichen #0A = 10.) abgeschlossen (nicht mit CR/LF wie auf Windows !). |
|
Beispiel:
Standard Shell-(Script)-Programm auf Linux, z.B. als
Text-Datei /home/test/test.sh
|
#!/bin/sh
echo "Hier ist die Shell !" |
|
Beispiel:
Perl-(Script)-Programm, z.B. als
Text-Datei /home/test/test.pl
|
#!/usr/bin/perl
print "Hier ist Perl !\n"; |
|
Beispiel:
PHP-(Script)-Programm, z.B. als
Text-Datei /home/test/test.php Beachten sie den Tipp zur Umleitung von PHP am Ende dieses Kapitels ! |
#!/usr/bin/php5
<?php print "Hier ist PHP !\n";
?>
|
UmleitungAus praktischen Gründen sind gängige Linux-Systeme mit Soft-Links so konfiguriert, dass häufig verwendete Scripts automatisch zum passenden Interpreter-Programm umgeleitet werden.Standard-Scripts werden daher ohne Änderung des Interpreter-Pfades ausgeführt. |
So führen Anforderungen der Shell sh auf Linux meist automatisch zur bash, auch dann wenn sich der Interpreter in einem anderen Pfad befindet. |
|
Tipp: Die meisten Linux-Distributionen enthalten keine
Umleitung für PHP. Kontrollieren sie, ob bereits eine Datei dieses Namens
vorhanden ist:
/usr/bin/php
So legen sie selbst das Alias an:
# ln -s /usr/bin/php5 /usr/bin/php
Danach funktionieren ihre Script-Programme mit diesem
Versions-unabhängigen Shebang
#!/usr/bin/php
|
Vorteil: Kein PHP Script muss bei Änderung der
PHP-Version geändert werden. Nachteil: Bei Neu-Installation des Betriebssystems müssen sie das Alias neu anlegen. Bei Wechel der PHP-Version muss das Alias angepasst werden, z.B. auf php6 |
|
|
GNU(GNU's not Linux): Bash (Bourne-Again Shell, Manual (Online oder Download ) |
Wikipedia: Unix-Shell,
Unix-Kommandos,Bash, Bourne-Shell, C-Shell, (tcsh), Korn-Shell, |
|
Linux Shell Reference:
Verwenden sie zuerst immer die integrierte Hilfe ihrer Linux-Konsole
(Befehle man,info,whatis, die integrierte Hilfe ihrer
Distribution (z.B. SuSE Hilfe) oder die online-Hilfe des Distributors.ComputerHope (en), LinuxSelfHelp (en), O'Reilly (en), SGI (en), SS64 (en), HTW Dresden (de), SS64: Bash CommandLine Index |
Linux Shell Tutorials:
EgoCrew (de),
Netzmafia (de),
LinuxCommand (en),
Steve Parker (en),
TLDP (en),
|
|
Script Beispiele
(kombinieren sie bei der Suche ihr Stichwort mit shell
und/oder script)
|
|
|