Linux Tips & Tricks

Start X auf einem Remote-Server

Shell öffnen...

  1. X :3 -> X-Server auf CTRL-ALT-F8
  2. export DISPLAY=:3
  3. xterm -> auf Session (F8) wechseln
  4. (auf neuer X-Session) ssh -X user@<serveradresse>
  5. kde starten

...siehe auch XTerminals mit dem Displaymanager bedienen!

Erzwingen von core dumps bei Programmabbrüchen

Core dumps bzw. files werden vom Kernel erzeugt und im jeweiligen Programmverzeichnis hinterlegt. Die Grösse und ob überhaupt core dumps geschrieben werden sollen, wird in der Datei /etc/profiles festgelegt mit dem Shell-Kommando ulimit [<parameter>]....

z.B. bedeutet

ulimit -c 20000

dass core dumps bis zu einer Größe von 20 MByte geschrieben werden.

ulimit -Sc 0

(⇒ Maximale Größe (soft limit), die core dumps annehmen dürfen = 0)
dass das Schreiben von core files (dumps) unterdrückt wird.

Kopieren ganzer Verzeichnisse (Konsole)

cp -Rpd verzeichnis/
Kopiert das verzeichnis komplett, d.h. inkl. aller Unterordner und Dateien (-R recursive) und Symlinks (-d no dereference) sowie unter Beibehaltung der Dateiattribute (-p preserve)
cp -a verzeichnis/
wie -Rpd (-a archive)!

Startup-Skripte

Login ShellNon-Login Shell
/etc/profile 
/etc/profile.d/etc/profile.d
~/.bash_profile 
~/.bashrc~/.bashrc
/etc/bashrc/etc/bashrc

Umleitungen

stdin/dev/tty (z.B. Tastatur)!0
 Umleitung<
stdout/dev/tty (z.B. Bildschirm)!1
 Umleitung>
stderr/dev/tty (z.B. Bildschirm)!2
 Umleitung!2>
 Verknüpfung von stderr mit stdout2>&1 nach der stdout - Umleitungsdef. oder
  1>& <Zieldatei> oder
  &> <Zieldatei>

Verkettung

cmd1 || cmd2cmd2 wird ausgeführt, sobald cmd1 fehlerhaft (Returncode ≠ 0) beendet wurde.
cmd1 && cmd2cmd2 wird ausgeführt, sobald cmd1 fehlerfrei (Returncode = 0) beendet wurde.

Shellvariablen bearbeiten

setAnzeige der Shell- und Umgebungs-Variablen mit deren Werten - Einstellungen: /etc/bashrc
set -oAnzeige aller globalen Shell-Optionen mit on/off Status.
set -o noclobberGlobale Option "noclobber" einschalten und so die Benutzung der Ausgabeumleitung (>) einschränken → kein Überschreiben existierender Dateien.
set +o noclobberGlobale Option "noclobber" ausschalten.
envAnzeige der Umgebungs-Variablen und deren Werte - Einstellungen: /etc/profile
fc
Befehls-"History" editieren und beim Beenden Befehl(e) im Buffer (in der Shell) ausführen lassen
stat <dateiname>
Dateistatus (Letzter Zugriff - wer/wann, Letzte Änderung, Inode etc.) von <dateiname> ausgeben

Shared Libraries

Aktualisieren von ld.so.cache: # ldconfig

  • ldconfig creates the necessary links and cache to the most recent shared libraries found in the directories specified on the command line, in the file /etc/ld.so.conf, and in the trusted directories (/lib and /usr/lib). The cache is used by the run-time linker, ld.so or ld-linux.so. ldconfig checks the header and file names of the libraries it encounters when determining which versions should have their links updated.
  • /etc/ld.so.conf enthält eine doppelpunkt-, leerzeichen-, tab-, zeilenumbruch- oder kommaseparierte Liste von Verzeichnissen, in denen nach libraries gesucht wird.
  • /etc/ld.so.cache enthält eine geordnete Liste von libraries, die in den in /etc/ld.so.conf spezifzierten Verzeichnissen gefunden wurden.
  • /lib/ld.so: Run-time linker/loader
  • LD_LIBRARY_PATH: Umgebungsvariable, die Pfade für hinzufügende libraries enthalten kann.

Runlevel

(Beispiel; es gibt Unterschiede zwischen den Linux-Distros!)

0 - halt (Do NOT set initdefault to this)
1 - Single user mode
2 - Multiuser, without NFS (The same as 3, if you do not have networking)
3 - Full multiuser mode
4 - unused
5 - X11
6 - reboot (Do NOT set initdefault to this! winking smiley)

(Runlevel 3 is called full multi user and Runlevel 5 is called X Window System.)

Suchprogramme

$ which [-a] <filename> [...]
  • Sucht den Befehl <filename>.
  • Liefert die Pfadnamen der Dateien, die in der aktuellen Umgebung ausgeführt werden würden, wenn <filename> [...] als Kommando in einer streng POSIX-konformen Shell eingegeben werden würde.
  • $ which durchsucht hierzu den Befehlspfad ($PATH) nach ausführbaren Dateien, deren Namen <filename> entspricht. Shell-interne Kommandos werden dabei nicht gefunden!
$ whereis [ -bmsu ] [ -BMS <directory>[...] -f ] <filename> [...]
  • Sucht die binären, Source- (Quell-) und Manual-Seiten-Dateien ("man pages") zu einem Befehl.
  • <filename> wird zunächst von führenden Pfadangaben und Extensions, z.B. .c oder .h, befreit. Präfixe wie s. (erzeugt von CVS) werden ebenfalls berücksichtigt.
  • Sucht in diversen "Standard"-Verzeichnissen nach Binär-, Quellcode-Dateien und Man-Pages deren Namen den Suchbegriff <filename> enthalten.
$ locate d <path> | --database=<path>] [-e | -E | --[nonexisting] [-i | --ignore-case] [-0 | --null] [-c | --count] [-w | --wholename] |-b | --basename] [-l N | --limit=N] [-S | --statistics] [-r | --regex ] [-P | -H | --nofollow] [-L | --follow] [--version] [-A | --all] [-p | --print] [--help] <pattern>[...] :
  • Nutzt die Datenbank /var/cache/locate/locatedb (Debian), dadurch extrem schnell!
  • Allerdings muß die Datenbank mit updatedb regelmäßig (z.B. mit cron) aktualisiert werden.
$ apropos [-dhV] [-e|-r|-w] [-m <System>[,[...]]] [-M <Pfad>] <Schlüsselwort> [...]
  • Sucht in der/den Manualkurzbeschreibung/en nach <Schlüsselwort> in der Indexdatenbank mandb, oder - falls nicht vorhanden - in der whatis-Datenbank.
  • Das Ergebnis von $ apropos <Schlüsselwort> entspricht der Ausgabe von $ man -k <Schlüsselwort>.
$ whatis [-dhV] [-r|-w] [-m <System>[,[...]]] [-M <Pfad>] <Schlüsselwort> [...]
  • Durchsucht die Indexdatenbank (mandb) oder - falls nicht vorhanden - in der whatis-Datenbank nach Kurzbeschreibungen von <Schlüsselwort>.

…und sonst noch?