Linux

From Wiki RB4
Revision as of 13:32, 9 June 2020 by UweHeuer (talk | contribs) (→‎Process Analysis and Control)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Distributionen[edit]

A graphical overview from www.huschi.net:

Difference between distributions[edit]

A distribution is a collection of software, which is distributed as a complete package. The kernel is always the same linux kernel. The specific differences are:

  1. installation, update and administration programs
  2. configuration e.g. at SuSe the configuration files are located at /etc/sysconfig, whhile at Debian they are located at /etc/default.
  3. file distribution (now mostly conform with the Linux Standard Base)

Debian[edit]

Die nächste Veröffentlichung von Debian heißt Lenny – bisher noch kein Veröffentlichungstermin

  1. Debian GNU/Linux 4.0 (Etch) – aktuelle stabile Veröffentlichung
  2. Debian GNU/Linux 3.1 (Sarge) – veraltete stabile Veröffentlichung
  3. Debian GNU/Linux 3.0 (Woody) – veraltete stabile Veröffentlichung
  4. Debian GNU/Linux 2.2 (Potato) – veraltete stabile Veröffentlichung
  5. Debian GNU/Linux 2.1 (Slink) – veraltete stabile Veröffentlichung
  6. Debian GNU/Linux 2.0 (Hamm) – veraltete stabile Veröffentlichung

Ubuntu[edit]

Umgebungsvariablen[edit]

Damit Sie überall sichtbar sind, müssen sie export werden. Die Werte-Zuweisung kann mit der gleichen Anweisung erfolgen:

export VARIABLE=0815

Unter Linux gibt es verschiedene Stellen für die Deklaration:

  1. Systemweite Änderung für alle Benutzer siehe Datei /etc/profile.
  2. Bei Debian (Bourne Again Shell bash) gilt auch /etc/environment. Sie müssen nicht exportiert werden, aber man kann nicht auf andere Variablen referenzieren.
  3. Änderung nur für einen oder wenige Benutzer siehe Datei ~/.profile (~/ = Homeverzeichnis des Benutzers). Existiert eine Datei ~/.bash_profile, so wird ~/.profile von der Bash (Standard-Shell) ignoriert. Auch die Einstellungen in ~/.bashrc überschreiben in der Bash die Einstellungen aus ~/.profile.

Programme und Prozesse[edit]

Bei einem Programm bzw. Kommando handelt es sich um eine ausführbare Datei. Prozesse laufen entweder im Vorder- oder Hintergrund. Durch den Parameter & werden sie im Hintergrund ausgeführt. Durch CTRL + Z wird ein Programm angehalten. Jeder Prozess hat eine eindeutige Nummer, die PID und eine Eltern PID. init ist das erste Programm, das nach dem Laden des Kernels ausgeführt wird. Einige Programme speichern ihre PID in files unter

\var\run\<AppName>.pid.

Prozesse haben einen Status: R Running S Sleeping T Stopped

Runlevel[edit]

Viele Betriebssysteme durchlaufen beim Start (Booten) mehrere abgestufte Systemzustände, bzw. starten in einen bestimmten Zustand, den Runlevel. Jedem Runlevel sind bestimmte System-Dienste zugeordnet, die beim Booten als Prozesse in wohldefinierter Reihenfolge innerhalb des Betriebssystems gestartet werden.

  • 0 Shutdown. Alle Netzverbindungen werden geschlossen, Dateipuffer werden geschrieben, Mounts auf Partitionen werden entfernt (d. h. die im Verzeichnisbaum eingebundenen Datenträger werden ausgehängt).
  • S Single-User-Runlevel; niedrigster Systemzustand für Wartungsarbeiten, in dem ausschließlich Systemressourcen wie Festplatten oder Dateisysteme aktiv sind.
  • 1 Einzelnutzerbetrieb ohne Netzwerk mit ausschließlich lokalen Ressourcen. In vielen Implementierungen identisch mit 'S'.
  • 2 Lokaler Mehrnutzerbetrieb incl. Netzwerk mit ausschließlich lokalen Ressourcen.
  • 3 Not used in Ubuntu. Netzwerkbetrieb, über das Netzwerk erreichbare Ressourcen sind nutzbar, eine grafische Oberfläche steht nicht zur Verfügung. Firewalls sollten aktiviert werden.
  • 4 Not used in Ubuntu. Ist normalerweise nicht definiert. Kann aber für diverse Dienste genutzt werden.
  • 5 Not used in Ubuntu. Wie 3, zusätzlich wird die grafische Oberfläche bereitgestellt.
  • 6 Reboot. Alle Netzverbindungen werden geschlossen, Dateipuffer werden geschrieben, Mounts auf die Partitionen werden entfernt.

The actual runlevel can be find out with

runlevel

Dämonen/Services[edit]

Als Dämonen (daemon) werden Hintergrundprozesse zur Systemverwaltung bezeichnet. Sie werden bereits während des Hochfahrens des Rechners im Rahmen des Init-V-Prozesses gestartet und sind einem bestimmten runlevel zugeordnet.

Init Scripts[edit]

Jeder Dienst besitzt ein Start-/Stop-Skript im Verzeichnis /etc/init.d.

Entfernen eines Dienstes:

sudo update-rc.d -f <Skript> remove 

Einfügen eines Dienstes:

sudo update-rc.d pcmciautils defaults [<Number>)]

Das Kommando erzeugt bestimmte Links nach folgendem Muster:

/etc/rc<RunLevel>.d/(K|S)<Number><ServiceName> --> ../init.d/<ServiceName>

K steht für kill und S steht für start. defaults erzeugt kill Einträge für die Level 0,1,6 und start Einträge für die Level 2,3,4,5. Kleiner Nummern werden vor größeren Nummern gestartet und nach größeren Nummern gekillt.

In den Skripts werden Standardfunktionen verwendet z.B. log_daemon_msg, die in /etc/lsb-base-logging.sh definiert sind. Der Output dieser Funktion ist unklar, daher kann man sie anpassen z.B. mit

echo "$(date) $<ENV_VAR_NAME> ..." >> /var/log/uwes.log
Include own scripts[edit]

Unter Ubuntu Kommandos in /etc/rc.local eintragen.

Upstart[edit]

Ubuntu has upstart as a replacement of init scripts since 2006, but it hasn't been used since 9.10. Whether it has been installed can be checked by test existing initctl command. Upstart uses *.conf in the /etc/init directory. You can run these scripts using the

start/stop/status <servicename without conf> 

commands which are shortcuts to

initctl [start|stop|status] <servicename without  conf>

or list all services by

initclt list

Cron[edit]

Cron ist ein Dämon zum automatischen Programmstart. Cron prüft jede Minute die crontab-Dateien und startet die dort angegebenen Programme. Die globale Konfiguration erfolgt über /etc/crontab. Bei fast allen gängigen Linux-Distributionen man die persönliche crontab verändern, indem man den Befehl crontab -e eingibt. Dann erscheint ein voreingestellter Editor (z.B vim) und zeigt u.U eine leere Datei, wenn noch keine crontab vorhanden ist. Die Datei einhält folgende Einträge in einer Zeile

Minute 0-59
Stunde 0-23
Tag 1-12
Wochentag 0-6, wobei 0 Sonntag ist
Befehl <Befehl> <Argument>

Mehrere Einträge werden durch ein Komma getrennt, * bedeutet egal

Process Analysis and Control[edit]

pstree [-p // includes process id] [-a // cmd line] [-c // expand identical subtrees]
ps -aux 
cat /proc/<PID>/cmdline
pgrep -u <User> -l -a // e.g. root

Hardware und Devices[edit]

Besondere Hardware wird ebenfalls als File behandelt und liegen unter /dev. Geräte, die beim Systemstart automatisch gemounted werden, stehen in /etc/fstab. Auflistung über:

sudo blkid

oder besser über System -> Administration -> Disk Utility

/cdrom CD-ROM-Laufwerk
/dsp* Digital Sampling Device (Soundkarte)
/fd* Floppy Disk
/hd<DiskLetter><PartitionNumber> IDE Hard Disk
/sd<DiskLetter><PartitionNumber> SCSI Hard Disk
/usb/* USB Geräte

Grafik[edit]

  • /etc/X11/xorg.conf

Dateien und Verzeichnisse[edit]

Dateisysteme[edit]

NTFS[edit]

Die NTFS-Unterstützung ist bei den meisten Distributionen inkl. Suse mit dabei. Folgende Aktionen werden unterstützt:

  • lesen

Folgende Aktionen werden nicht unterstützt:

  • erzeugen
  • löschen
  • umbenennen


Dateinamen[edit]

Regeln zu Dateinamen:

  • Unter Linux dürfen Dateinnamen maximal 255 Zeichen lang sein.
  • Dateinamen sind case-sensitiv.
  • Am besten beschränkt man sich auf ASCII-Zeichen, weil Umlaute, etc. vom aktiven Zeichensatz abhängen.
  • Dateien, die mit einem Punkt beginnen, gelten als versteckte Dateien. Ansonsten hat der Punkt keine besondere Funktion.
  • Dateinamen mit Leerzeichen müssen mit Hochkommatas eingegeben werden

Wildcards bzw. Jokerzeichen[edit]

Für die Auswertung der Jokerzeichen ist die verwendetet Shell zuständig.

? ein belieges Zeichen
* beliebig viele beliebige Zeichen
[abc] genau eines der angegebenen Zeichen
[a-f] genau ein Zeichen aus dem Bereich
[^abc] keines der angegebenen Zeichen
~ Home-Verzeichnis
. aktuelles Verzeichnis

Zugriffsrechte[edit]

Mit jeder Datei bzw. jedem Verzeichnis werden folgende Informationen gespeichert:

  • Besitzer
  • Gruppe
  • neun Zugriffsbit (rwxrwxrwx für Read/Write/(Execute|Wechselerlaubnis) des Besitzer, aller Gruppenmitglieder, und den Rest der Welt)
  • einige Zusatzbits für Spezialfunktionen


Dateitypen und Extensionen[edit]

*.a static library
*.so shared library

Verzeichnisse[edit]

Linux unterstützt verschiedene verschiedene Dateisysteme, insbesondere ext2. Der Verzeichnisbaum beginnt im Wurzelverzeichnis /. Das aktuelle Verzeichnis wird mit . bezeichnet. Das HOME-Verzeichnis mit ~.


Links[edit]

Links sind Verweise auf Dateien. Durch Links kann von verschiedenen Orten in der Verzeichnisstruktur auf dieselbe Datei zugegriffen werden, ohne dass die Datei physisch mehrfach vorliegen muss. Links werden am einfachsten über ls –l angezeigt. Intern verweisen sie auf einen sogenannten I-Node. Symbolische Links könne über Grenzen physikalischer Platten verweisen. Oft werden Programme über unterschiedliche Links gestartet, die dann unterschiedlich reagieren. Innerhalb des Programms wird der Aufrufname überprüft, und die Funktionalität davon abhängig gemacht.


Verzeichnisstruktur[edit]

In der Regel haben Linux-Systeme folgende Struktur (s. 1 S. 223):

/bin enthält alle Linux-Kommandos zur Systemverwaltung, die von allen Benutzern ausgeführt werden können (s. auch /usr/bin).
/boot enthält alle Dateien, die zum booten notwendig sind
/dev enthält alle Device-Dateien
/etc enthält Konfigurationsdateiene für das ganze System. Die Dateien steuern das Hochfahren, die Tastaturbelegung…
/home enthält die Heimatverzeichnisse aller Linux-Anwender. root hat sein Heimatverzeichnis in /root.
/lib enthält einige gemeinsame Bibliotheken
/lost+found ist normalerweise leer. Enthält es Dateien, dann handelt es sich um Fragmente, die beim Versuch, das Dateisystem zu reparieren nicht mehr zugeordnet werden konnten.
/media Suse verwendet seit 7.2 media statt mnt. USB-Festplatten werden hier (zumindest wenn Sie nachträglich angeschaltet werden) gemountet.
/mnt enthält alle Unterverzeichnisse wie cdrom oder floppy. In manchen System erfolgt die Einbindung auch direkt unter root.
/opt enthält Zusatzpakete, die nachträglich installiert werden können.
/proc enthält Unterverzeichnisse für alle laufenden Prozesse.
/root enthält Dateien des Users root.
/sbin enthält Kommandos zur Systemverwaltung
/share enthält manchmal Dateien, die unabhängig vom Prozessor sind
/tmp temporäre Dateien
/usr es enthält alle Anwendungsprogramme, das X-System, die Quellocdes zu Linux, etc.. Alle Dateien sollten eigentlich read-only sein. Die Variablen Dateien sollten unter /var liegen.
/var enthält veränderliche Dateien.

Shells[edit]

Eine Shell ist die Schnittstelle zwischen Linux und dem Anwender und stellt zudem eine leistungsfähige Programmiersprache zur Verfügung. In der Regel sind drei Shells verfügbar:

  • Bash (Bourne Again Shell) (bash, sh)
  • Korn-Shell (ksh, pdksh)
  • C-Shell (csh, tcsh)

Standardmäßig wird die bash eingerichtet. Die Shells unterscheiden sich durch eine leicht abweichende Syntax und andere Kommandos. Die aktuelle Shell erfährt man über

echo $0

Für jeden User gibt es eine Default-Shell (s. /etc/passwd letzter Eintrag pro User). Umgebungsvariablen werden mit einem $ präfixed. Ausgaben werden mit > umgeleitet. /dev/null stellt die Ausgabe im Nirwarna dar. Piping erfolgt durch |. Hintergrund bzw. background prozesse werden durch Hintenanstellung von & gestartet.


Shell Scripts[edit]

Ein Shell-Script ist also nichts anderes als eine Textdatei, in der Anweisungen für ein Programm, den Interpreter (bzw. die Shell) stehen. Die Script-Files müssen als executable (z.B. chmod 755) attribuiert sein.

Commands[edit]

Software-Installation[edit]

RPM[edit]

Software wird oft in Form von sogenannten Paketen zur Verfügung gestellt. Es gibt drei gängige Formate: das populärste von Red Hat entwickelte RPM-Format, das DEB-Format (Debian, etc.) und das TGZ-Format (Slackware). Zur Software-(De-)Installation kann man das Kommando rpm oder aber die Paketmanager der Distributionen (Red Hat: gnorpm, Mandrake: rpmdrake, SuSe: yast2) verwenden. Ein Linux Programm besteht aus einer Reihen von Dateien, die an den richtigen Ort kopiert werden müssen. Die erforderlichen Verwaltungsinformationen befinden sich im RPM-Paket. Sie helfen:

  • automatisch Veränderungen in bestehenden Files vorzunehmen.
  • alte Versionen zu ersetzen
  • Prüfung, ob alle Voraussetzungen erfüllt sind.

Bei der Installation werden dies Informationen in eine Datenbank eingetragen (/var/lib/rpm). Die meisten Paketen bestehen aus zwei Dateien: binäre Dateien im Verzeichnis RPMS und die Quellen im Verzeichnis SRPMS. Die Filenames haben in der Regel folgende Konvention: <packagename>-<version>-<rpm release>.src.rpm


rpm <Options> <Packagename> | <Filename> | ftp://<FTPServer>/<Filename>

RPM Options[edit]

entfernt ein Paket
s. –e
installiert das Paket am vorgegebenen Ort
s. –i
query
a [<Packagename>] listet alle Pakete oder testet, ob das Paket installiert ist
f <Filename> gibt das Paket zu der Datei aus
i <Packagename> genaue Beschreibung des Pakets
l <Packagename> listet alle Dateien zum Paket
p --requires <Packagename> listet alle Pakete und Bibliotheken, die für ein Paket liefert
p --requires <Packagename> listet alle Pakete und Bibliotheken, die für ein Paket notwendig sind
Installationsort
aktualisiert das Paket
s. –U
überprüft, ob irgendwelche Dateien der Originatinstallation verändert wurden

TAR[edit]

tar komprimiert nicht, sondern packt nur zusammen. tar <Options> <Archivname> TAR Options:

Inhalt des Archivs anzeigen
alle Dateien relativ zum aktuellen Verzeichnis installieren
in ein bestimmtes Verzeichnis installieren

SAMBA[edit]

Samba Client[edit]

/etc/samba/smbclient //<IP-Adresse>/<ShareName> 

-U <User> fragt nach dem Passwort und öffnet quasi eine shell, z.B.

smbclient //192.168.1.3/C$ -U O/U1728

/etc/samba/smbclient -U <User> -L <IP-Adresse> fragt nach dem Passwort und zeigt alle Devices an.

Benutzer- und Gruppenverwaltung[edit]

Linux verwaltet Benutzer bzw. User. Es gibt drei Typen von Usern:

  • Super-User alias Systemadministrator alias root (UID=0)
  • normale User (1 < UID < 500>
  • User für Domänen und Server-Dienste (499 < UID)

Die Liste aller User wird in der Datei /etc/passwd im Format

login:password:UID:GID initial group:vollständigem Namen:Home-Verzeichnis:Shell gespeichert. 

Die UID dient zur Indentifizierung des Benutzers. Jeder User ist mindestens einer (initial bzw. primary group), möglicherweise aber mehreren Gruppen zugeordnet (supplement groups). Die Datei /etc/group enthält die Liste aller Gruppen im Format

groupname:password:GID:user list

Die Angabe von usern in der user list ist nur dann notwendig, wenn die Zuordnung sich nicht aus /etc/passwd ergibt. Die Passwörter werden in der Datei /etc/shadow gespeichert.

Tools[edit]

  1. KMenu->System Settings->Computer Administration->User Management

Tools[edit]

Texteditor VIM[edit]

Vim entspricht dem VI. Texteingabe ist nur im Insert-Modus möglich. Die Eingabe der meisten Kommandos erfolgt im Complex-Command Modus, der mit : aktiviert wird.

a Insert-Modus nach dem Cursor
i Insert-Modus vor dem Cursor
u undo
ESC Insert-Modus verlassen
:w <Name> speichert den Text unter einem neuen Namen
:wq speichert und beendet den vim
:q beendet den vim ohne zu speichern
:help startet die Hilfe
? oder / Text rückwarts oder vorwärts suchen
n find again

lynx[edit]

Textbasierter Browser

unp[edit]

  • sudo apt-get install unp
  • unp <file>

W3M[edit]

w3m <URL>

Kommandos[edit]

H Hilfe Aufruf
rechte Maus Kontext Menü

WGET[edit]

Wget is a network utility to retrieve files from the Web using http and ftp, the two most widely used Internet protocols. It works non-interactively, so it will work in the background, after having logged off. The program supports recursive retrieval of web-authoring pages as well as ftp sites -- you can use wget to make mirrors of archives and home pages or to travel the Web like a WWW robot.

xterm[edit]

  • paste by SHIFT+MiddleMouse

KDE[edit]

Configuration[edit]

File Extensions[edit]

  • KMenu->System Settings->General->Default Applications
  • Add m2t

Bedienung[edit]

ALT + F2 Programm durch Eingabe eines Namens starten
CTRL + ALT + F1 Wechsel in die erste Textkonsole
CTRL + ALT + F7 Wechsel zu KDE-Desktop

Programme[edit]

kaffeine[edit]

DVB aufzeichnen[edit]

Since Kaffeine 0.8.6 only m2t (MPEG_TS) is supported.

Laufende Aufzeichnung ansehen[edit]

Um eine laufende Aufzeichnung, die z.B. per Instant Record gestartet wurde, anzusehen erscheint es möglich einfach die Datei per File-Menü zu öffnen.

kate[edit]

Editor

kedit[edit]

Editor


konquerer[edit]

Konsole[edit]

KDE-Variante von xterm


ksysguard[edit]

stellt die Systemleistungen grafisch dar


kwrite[edit]

Editor

k3b[edit]

copy dvd to iso file on disk[edit]
  • operation 'Copy DVD'
  • select 'only create image' in options tab
  • select 'ignore read errors' in advanced tab

Tips und Tricks[edit]

Rename Files[edit]

In case rename tool is available (example see here).

rename [options] [perl substition string] [file selection]

Options: -n run test, just print changes -v do it

Perl substition:

. any character
\. period
's/<old>/<new>'

Perl substituion string examples:

’s/\.m2t$/\.mpg/’

File selection examples:

*.m2t

or

mv <OldName> <NewName>

Distribution und Version/Release ermitteln[edit]

s. files /etc/issue oder /etc/*release

Kernelversion ermitteln[edit]

s. file /proc/version

CPU/Prozessinformationen[edit]

cat /proc/cpuinfo

Windows-Laufwerk mounten[edit]

mount -t cifs //192.168.13/C$ /extdata -o user=O/U1728

Netzwerk-Konfiguration erneuern[edit]

analog zu ipconfig /release und /renew unter Windows

  1. ifdown eth0
  2. ifup eth0

DVD aus AVI erstellen[edit]

  1. ffmpeg -i <File>.avi <Filename>.mpg

Split MPEG Video file[edit]

If you are comfortable with using the command line, FFmpeg will do this for you.

Your command might look something like this:

ffmpeg -i input.mpg -ss 00:00:10 -t 00:00:30 out1.mpg

-ss is the start point in hh:mm:ss from the beginning of your video file

-t is the length of time in hh:mm:ss of your new segment.

So, in the above example, you're starting 10 seconds in from the beginning of the original file and ending 30 seconds later.

If you want to create multiple parts in one pass then the following should work:

ffmpeg -i input.mpg -ss 00:00:10 -t 00:00:30 out1.mpg -ss 00:00:35 -t 00:00:30 out2.mpg

In this example, the first segment is the same as the first example, but you're also creating a second file starting at 35 seconds in and being 30 seconds long.

If you would rather use a GUI tool for this, there are a number of options too. Search for ConvertIT or Fuoco Tools on this forum. Look into WinFF, ThinLiquidFilm and Avidemux.

If you want to use a more traditional non-linear editor, then I would recommend Open Movie Editor for this job. It's easy to add a clip to the time line, split the segment you need, then render to your new format. If you'd like to know more about Open Movie Editor, I recently wrote a review of the software.

Literatur[edit]

  • Linux. Installation, Konfiguration, Anwendung; Michael Kofler;
  • SuSE Linux. System und Anwendungen im Überblick; Karl Deutsch;