|
Technische Hinweise II - Linux AdministrationTechnische Hilfe für die Installation gibt es grundsätzlich am besten auf den Webseiten der genannten Kommandos oder Tools, denn nur dort werden die Hinweise auf dem aktuellen Stand gehalten.
Inhalt: Technische Hinweise zur Linux Administration
EinleitungWir haben für einige Installationen, die wir auf Messen oder für den Eigenbedarf selbst ausprobiert haben, an dieser Stelle einige kurze Hinweise zusammengestellt. Aus Kapazitätsgründen können wir diese Seite bei Updates nicht aktuell halten und übernehmen deshalb keine Garantie für eine aktuelle Korrektheit. Ausführliche Hilfe bieten die Webseiten der verschiedenen Linux-Distributionen
und/oder allgemeine Hilfe-Seite für Linux
Allgemeine Hinweise für Linux/UNIXEs gibt beliebig viele Varianten, sogenannte Distributionen, von Linux, so z.B. Suse, Fedora und RedHat (u.v.m.) mit einer RPM-Paketdatenbank und die Debian Distrubutionen, wie Debian, Ubuntu, Mint (u.v.m.) mit einer Paketdatenbank, die man mit dem Programm apitude bedienen kann. Wir haben uns hier zufälligerweise auf Ubuntu spezialisiert, ohne den anderen Böses zu wollen. Ein paar generelle Fragen, bevor wir uns einzelnen Kommandos widmen. UpdateUm ein System manuell aktuell zu halten, gibt ma in der Kommandozeile ein apt-get update oder mit dem Programm apitude aptitude update Will man wirklich ein Upgrade zu einer neueren Version machen, so heißt das Kommando aptitude upgrade Hierbei ist zu beachten , dass zwischen normalen Versionen und solchen mit LTS (Long Time Support) zu unterscheiden ist. LTS-Versionen halten dann auch mal 4 Jahre.
Eine mehr als zufällige Auswahl von Kommandos (aber wenigstens alfabetisch sortiert)Zu allen Befehlen gibt es auf der Kommandozeile Hilfe mit dem Befehl man (für Manual), also z.B. man awk at - ZeitsteuerungKommandos zu einem bestimmten Zeitpunkt ausführen lassen:
Für wiederkehrende Aufgaben siehe cron
awk - Ein Stream-Editor
cp - Kopieren
cron - Wiederkehrende Aufgaben zu bestimmten ZeitenZum Einrichten der Aufgaben crontab -e aufrufen. Als Eingabe wird jeweils eine zeile der Form erwartet: m h dom mon dow command Dabei ist
Mehrere Angaben werden durch Komma getrennt, also z.B. 0,15,30,45 für eine viertelstündliche Ausführung. Als Trennzeichen zwischen den Argumenten werden Leerzeichen oder Tabs akzeptiert.
date - Datum und Zeit
dd - disk dump Hardware-nahes kopieren
Auch über das Netz kann kopiert werden: Diesmal komprimiert: dd if=/dev/sda1 | pv| gzip -c | ssh user@host “cat > img.gz” Zurückspielen eines Images aus einer Datei in die Partiion sdb1: dd if=image of=/dev/sdb1 Hinweise zu dd z.B. bei
find - Suchen nach Dateien |
find <pfad> -name <begriff> -print | sucht im Pfad pfad rekursiv durch alle Unterverzeichnisse nach Dateinamen die den Suchbegriff enthalten und gibt diese aus |
find <pfad> -name <begriff> -exec rm '{}' \; | sucht im Pfad pfad nach Dateinamen die den Suchbegriff enthalten sind und löscht diese |
find . -name thumbnail* -exec rm '{}' \; | z.B. sucht im aktuellen Verzeichnis nach Datein, die mit thumbnail beginnen und löscht diese |
Es gibt viele weitere Optionen bei der Verwendung von find. Durch die Verwendung der Option -exec oder durch das Hintereinanderausführen von Kommandos über eine Pipe | können komplexe Vorgänge damit ausgeführt werden, z.B. ein vollständiges Backup.
find /daten -hidden -depth -print | cp -rp /tmp/backup Hier werden alle Dateien, auch versteckte, aus dem Verzeichnis /daten unter Beibehaltung ihres Besitzers und der Rechte (-rp) nach /tmp/backup kopiert.
find . -mtime +0 | findet Dateien, die vor mehr als 24 Stunden verändert wurden |
find . -mtime 0 | findet Dateien, die innerhalb der letzten 24 Stunden verändert wurden |
find / -inum 4567 -ls | findet Hardlinks auf inode 4567 |
find / -name "*treff*" | findet alle Dateiennamen, die treff enhalten |
find / -perm 4000 –ls | findet alle Dateien in denen das s-Bit gesetzt ist |
find . -name '*' -print0 | xargs <befehl> | findet beliebig viele Dateien (mehr als ls schafft) und übergibt diese an das Kommando xargs, um einen Befehl darauf auszuführen |
In allen Unix/Linux-Betriebssystemn gibt es die Befehle find und grep, um entweder nach Dateinamen oder nach Texten in Dateien zu suchen.
grep <begriff> <datei> | sucht nach Begriff in der Datei |
grep –n <begriff> <datei> | suche Begriff mit Angabe der Zeilennummer |
grep -n <begriff> <datei> | listet die Zeilennummern mit dem gesuchten Begriff |
grep -v <begriff> <datei> | alle Zeilen ohne den gesuchten Begriff |
So findet grep -w # datei.txt in der Datei datei.txt alle zeilen ohne das Kommentarzeichen (#). Besteht der Suchbegriff aus mehreren Wörtern, so ist er in " einzuschließen.
Glücklicherweise muss niemand mehr seine Firewall mit einzelnen iptables Befehlen aufbauen. In Ubuntu gibt es dazu grafische Tools wie gufw (https://wiki.ubuntuusers.de/ufw/), andere Alternativen sind firestarter oder das Monumentalwerk fwbuilder (http://www.fwbuilder.org/ ).
Wer sich dennoch mal die installierten Regeln anschauen möchte oder damit spielen will ...
iptables -F | löscht alle Regeln |
iptables --append -A input -p tcp -s ANY/0 -d ANY/0 --dport 22 -j ACCEPT | fügt zur input-Kette die Erlaubnis für tcp-Pakete von jeder Adresse an jede Adresse mit dem Zielport 22 (ssh) hinzu. -j das Sprungziel kann sein ACCEPT, LOG, DENY, ... |
iptables -N chain | fügt eine neue Kette hinzu; mindestens sollten die Ketten INPUT und OUTPUT existieren |
iptables -L | listet die bestehenden Regeln; mit -nL werden die Regeln mit IP-Nummer statt DNS Namen gelistet |
Beim Aufbau einer oder mehrerer Firewalls im eigenen (Haus-) Netz sollte man sich überlegen, welche Geräte welchen Schutz benötigen. Was will ich damit erreichen?
Dabei helfen die beiden folgenden Links:
Einige Audioprogramme (z.B. audacity bei CD-Quellen) und auch einnige Brennprogramme können .wav Dateien in mp3 oder das freie .ogg Format umwandeln.
Es geht auch direkt mit dem Programm lame. Die Installation erfolgt mit apt-get install lame.
lame -h -b 192 sound.wav sound.mp3 | -h=hohe Qualität, -b gibt die Bitrate an, hier 192kb/s |
weitere Parameter: -m mode | mode kann folgende Werte annehmen: s, j, f, d, m, l, r |
-S oder --silent oder --quiet --verbose | ohne Ausgabe viele Ausgaben |
-q
-b | q liegt zwischen 0 (super) und 9 (schlecht) Bitrate (mögliche Werte in kb/s): -b 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 |
rsync kann lokal Dateien sichern aber auch über das Netz.
rsync -av Datei1 Datei2 Verz/ | Die angegebenen Dateien werden in das Verzeichnis Verz kopiert, wenn sie dort nicht oder nur in einer älteren Version existieren. |
rsync -av Verz1/ Verz2 | Alle Inhalte von Verzeichnis Verz1 werden mit den Inhalten von Verz2 abgeglichen. -a archivieren, also ältere Versionen überschreiben |
rsync -av --partial --progress --rsh="ssh" --exclude ./privat* Verz1/ user@remotehost:Verz2 | Alle Inhalte von Verzeichnis Verz1 werden mit den Inhalten von Verz2 auf dem entfernten Host abgeglichen. --partial bei Unterbrechungen wird die Übertragung ohne Fehler fortgesetzt |
rsync -av --partial --progress --rsh="ssh" user@remotehost:Verz1/ ./Verz2 | Abgleichen der Verzeichnisse nur in die andere Richtung, vom entfernten Host zum lokalen. |
Ab Linux Mint 19 steht das Programm timeshift für ein vollständiges Backup des Systems zur Verfügung. Damit kann zu alten Installationszuständen zurückgegangen werden.
Hat man bei der Administration eines Linux-Rechners nur einen Terminalzugang, so sind die komfortablen Editoren mit grafischer Oberfläche, wie pluma, gedit, u.ä. nicht nutzbar. Neben dem einfachen nano, gibt es dann immer noch den uralten vi.
Seine Steuerung ist mindestens gewöhnungsbedürftig, aber er bietet viele Möglichkeiten. Hier eine kleine Liste der wichtigsten Kommandos:
Beginn einer vi Session
vi file | Edit file |
vi -r file | Edit last saved version of file after System or editor crash |
vi +n file | Edit file and place Cursor at line n |
vi + file | Edit file and place Cursor on last line |
vi file1 file2 | Edit file1 and file2; After saving changes in file1, enter :n for next |
vi +/str file | Edit file and place Cursor at line containing str |
Text speichern und vi verlassen
:wq or : x | Save file and exit vi |
:w file | Save file but do not exit |
:w! file | Save file overriding normal checking |
:q | Leave vi, saving changes before last write (you may be prompted to save first) |
:q! | Leave vi without saving any changes since last write |
Status Kommandos
: .= | Print current line number |
: = | Print number of lines in file |
Text einfügen
i | input mode; insert before Cursor |
a | input after cursor |
o | Append after end of current line; new line |
O | Insert before beginning of current line |
:r file | Insert file at current position |
To leave the insert mode, press ESC.
Rückgängig machen und wiederholen
u | Undo last command |
U | Restore current line to original state |
np | Retrieve last nth delete (last 9 deletes are in a buffer) |
1pu.u. | Scroll through the delete buffer until you retrieve desired delete (repeat u.) |
n | Repeat last / or ? search command |
N | Repeat, in reverse direction, last / or ? search command |
; | Repeat last f F t or T search command |
, | Repeat, in reverse direction, last f F t or T search command |
. | Repeat last text change command |
Cursor-Bewegung steuern
k or | CTRL K~P~ | Up |
^ or Return | Down |
k | Up |
j | Down |
h or Backspace | Left |
l or Space | Right |
w or W | Start of next word; W ignores punctuation |
b or B | Start of previous word; B ignores punctuation |
e or E | End of next word; E ignores punctuation |
0 or | | First column in current line |
n| | Column n in current line |
^ | First non-blank character in current line |
$ | Last character in current line |
+ or Return | First character in next line |
- | First non-blank character in previous line |
1G | First line in file |
G | Last line in file |
G$ | Last character in file |
nG | Line n in file |
( | Back to beginning of sentence |
) | Forward to beginning of next sentence |
{ | Back to beginning of paragraph |
} | Forward to beginning of next paragraph |
Text löschen
nx | Delete n characters beginning with current; omit-ting n deletes current character |
nX | Delete previous n characters; omitting n deletes previous character |
xp | Switch character at Cursor with following character |
ndw | Delete next n words beginning with current; omitting n deletes current word |
ndb | Delete previous n words; omitting n deletes previous word |
ndd | Delete n lines beginning with current; omitting n deletes current line |
:n,md | Delete lines n through m |
db | Delete word |
Muster erkennen und finden
:set magic | Allow pattern matching with special characters (default) |
: set nomagic | Allow only " and $ as special characters |
^ | Match beginning of line |
$ | Match end of line |
. | Match any single character |
\< | Match beginning of word |
\> | Match end of word |
[str] | Match any single character in str |
[~str] | Match any character not in str |
[a-n] | Match any character between a and n |
* | Match zero or more occurrences of previous character in expression |
\ | Escape meaning of next character (e.g., \$ lets you search for $) |
\\ | Escape the \ character |
Text einrücken
:set ai | Turn on auto-indentation |
:set sw=n | Set shift width to n characters |
Suchen und Finden
% | Search to beginning of balancing ( ) [ ] or { } |
fchar | Search forward in current line to char |
Fchar | Search backward in current line to char |
tchar | Search forward in current line to character before char |
Tchar | Search backward in current line to character after char |
/str +Return | Find str |
?str +Return | Search in reverse for str |
:set ic | Ignore case when searching |
:set noic | Pay attention to case when searching (default) |
Globales Suchen und Finden
:n,ms/str1/str2/opt | Search from n to m for str1. Replace str1 with str2, using opt. opt can be g for global change, c to confirm change (press y to acknowledge, Return to suppress), and p to print changed lines. |
:n,ms/searchtext/newtext/g | Replace searchtext by newtext between line n and m globally |
:%s/searchtext/newtext/gc | Replace searchtext by newtext everywhere with confirmation |
& | Repeat last search command |
:g/str/cmd | Run cmd on all lines that contain str |
:g/str1/s/str2/str3/ | Find line containing str1, replace str2 with str3 |
:v/str/cmd | Execute cmd on all lines that do not match str |
Text kopieren und verschieben
(a-z)nyy or (a-z)ndd | Copy or delete n lines into named buffer; omit n for current line |
nyy or nY | Yank n lines (place in buffer); omitting n yanks current line |
ycursor_cmd | Yank from Cursor to cursor_cmd (e.g., yG yanks current line to last line in file) |
p | Put yanked text after Cursor (print buffer); also prints last deleted text |
P | Put yanked text before Cursor; also prints last deleted text |
(a-z)p or (a-z)P | Put lines from named buffer a through z after or before current line |
Text ersetzen
Gibt man einen Zahl n vor dem Kommando an, so wird es n-mal wiederholt.
rchar | Replace current character with char |
Rtext | Replace current character(s) with text |
stext | Substitute text for current character |
S or cc text | Substitute text for entire line |
cwtext | Change current word to text |
Ctext | Change rest of current line to text |
Zeilen verbinden
J | Join next line to end of current line |
nJ | Join next n lines |
Cursor auf dem Fenster bewegen
H | Move Cursor to top line of screen |
nH | Move Cursor to line n from top of screen |
M | Move Cursor to middle of screen |
L | Move Cursor to bottom line of screen |
nL | Move Cursor to Line n from bottom of screen |
z Return | Make current line top line on screen |
nz Return | Make line n top line on screen |
z. | Make current line middle line |
nz. | Make line n middle line on screen |
z- | Make current line bottom line |
nz- | Make line n bottom line on screen |
Shell Escape Kommandos
: ! cmd | Execute Shell command cmd; you can add these special characters to indicate: |
% name of the current file | |
# name of last file edited | |
: ! ! | Execute last Shell command |
: T ! cmd | Read and insert Output from cmd |
: f file | Rename current file to file |
: w ! cmd | Send currently edited file to cmd as standard input and execute cmd |
:cd dir | Change the current working directory to dir ($HOME is default) |
: sh | Start a sub-shell (CTRL-d returns to editor) |
: so file | Read and execute commands in file (file is a Shell script) |
Mit dem Befehl init n wird das System in verschiedene Zustände versetzt (nur als Superuser).
init 0 | ausschalten |
init S | single User mode |
init 1 | multi User ohne Netz |
init 2 | multi User mit Netz |
init 3 | multi User mit Netz und GUI |
init 4,5 | unbenutzt |
init 6 | reboot |
Wichtige Dateien:
/etc/rc.local | diese Startskripte werden als letztes ausgeführt |
/etc/inid.d/ | dort befinden sich alle aktiven Startskripte |
/etc/passwd | Datei mit allen Usern des Systems |
/etc/group | Zuordnung der User zu Benutzergruppen |
/etc/shadow | Passwörter der User |
/etc/sudoers | Liste der User, die Rootrechte erhalten dürfen |
/etc/fstab | Liste der Geräte, die gemounted werden |
/etc/hosts | Liste bekannter Hosts, deren Namen nicht über DNS aufgelöst werden muss |
/etc/services | Zuordnung von Diensten und Portnummern (z.B. smtp 25 ...) |
Wir wollen hier ein paar Erfahrungen wiedergeben, die wir bei unseren Vermessungen der Welt gemacht haben.
Eingaben in Open Street Map haben wir mit josm, dem Java Open Street Map Editor gemacht.
Zur Aufteilung und zum Zusammenfügen von OSM-Karten, den sogenannten Tiles, für Garmin GPS Geräte verwenden wir das Garmin Mapper Tool gmt. Funktionen:
Landkarten für Garmin's Mapsource oder für QT-Landkarte kann man mit MakeMap aus OSM-Karten erzeugen, z.B. java -jar mkgmap-r3419/mkgmap.jar beispielkarte.osm
splitter.jar , der Tile splitter für mkgmap
Gute Anleitung zur Nutzung dieser Programme gibt es bei http://stefan-felten.blogspot.de/2009/03/ganz-europa-als-openstreetmap-karte-auf.html
Wem diese Möglichkeiten zur Erzeugung von Karten für Garmin GPS-Geräte zu kompliziert sind, findet fertige Karten der ganzen Welt z.B. hier
Wer sich ein eigenes Navi mit OSM Karten bauen möchte, braucht nur ein RaspberryPi und muss ein wenig basteln können. Man benötigt:
... wird fortgesetzt ...
Wir sind für Hinweise auf (Schreib-)Fehler sehr dankbar.
CC Lizenz Mitglied im European Civil Liberties Network Bundesfreiwilligendienst Wir speichern nicht World Beyond War Tor nutzen HTTPS nutzen Kein Java Transparenz in der Zivilgesellschaft |