Berny's Knowledgebase als Newsfeed

CD brennen (Kommandozeile)

Image erstellen

für 1:1-Kopie

dd if=/dev/cdrom1 of=test.iso

oder aus Filesystem

mkisofs -iso-level 3 -o test.iso ./bin
Image brennen
cdrecord -eject -v dev=2,0,0 test.iso

oder

cdrecord -eject -v dev=/dev/cdrom test.iso

gelöschte Partitionen wiederherstellen

Knoppix (http://www.knoppix.org/) booten
testdisk verwenden
Typ der Platte: intel

Booten im Single-User-Mode

Falls die Root-Partition nicht schreibbar ist:

mount -o remount,rw /

Nicht alle CPUs nutzen

Auf einem System sollen nicht alle vorhandenen CPUs benutzt werden, z. B. aus Lizenzgründen

in /etc/grub/grub.conf den Paramer maxcpus verwenden, z. B.

kernel /vmlinuz-2.4.9-e.62smp ro root=/dev/cciss/c0d1p1 maxcpus=2

weiter Infos siehe:

man bootparam

Swap-Space vergrößern

Wieviel swap wird aktuell benutzt?

free

Auf welcher Partition bzw. welchem Volume liegt der Swap-Space?

grep swap /etc/fstab

Jetzt kommt es darauf an, ob man logical Volumes verwendet.

Vorgehen mit LVM
swapoff -a

Volume mit Hilfe von LVM vergrößern, siehe http://tldp.org/HOWTO/LVM-HOWTO/extendlv.html

mkswap <Device>
swapon -a
free
Vorgehen ohne LVM

mit fdisk eine zusätzliche Swap-Partition anlegen, dabei mit t den Type auf 82 (für swap) ändern und anschliessend mit w abspeichern. Ggf. ist danach ein Reboot nötig.

neue swap-Partion zusätzlich in /etc/fstab eintragen (entsprechend dem schon vorhandenen Eintrag)

mkswap <neue Swap Partition>
swapon -a
free

ulimit

Diverse Limits sollen geändert werden.

ulimit -a

Alle Limits fuer den aktuellen Benutzer anzeigen

ulimit -n

(oder andere Optionen) ein speziellen Limit anzeigen

ulimit -n 32000

(oder andere Optionen) setzen

Wie hoch ein nicht privilegierter User die einzelnen Werte setzen darf ist definiert unter

/etc/security/limits.conf

Prozeß nachträglich nice machen

top

aufrufen, r drücken, PID eingeben, Prio eingeben

Tastatur-Emulation

wenn Funktionstasten über Telnet/SSH nicht funktionieren:

Esc-3 entspricht F3 usw.

Whois

rausfinden, auf wen eine Domain oder ein Netzwerkbereich reserviert ist

whois -h whois.internic.net <domain>.(com)|(net)|(org)
whois -h whois.denic.de <domain>.de

Server-Anwendung direkt ansprechen

Wenn wir eine beliebige Server-Anwendung (HTTP, SMTP, …) zu Testzwecken direkt ansprechen wollen, tun wir das üblicherweise mit

netcat <hostname> <port>

oder (je nach Distribution) auch mit

nc <hostname> <port>

hilfsweise auch

telnet <hostname> <port>

Handelt es sich um eine SSL/TLS-verschlüsselten Dienst, hilft

openssl s_client -connect <hostname>:<port>

DHCP leases

Leases die in DHCP-Client von einem DHCP-Server erhalten hat, stehen in

/var/state/dhcp/dhcpd.leases

Das File sollte nicht manuell geändert werden, kann aber problemlos gelöscht werden, um den Client dazu zu zwingen, bei der nächsten Anfrage ein (vollständig) neues Lease anzufordern.

Runlevel-Editoren

Um Daemons zu Runlevels hinzuzufügen oder sie zu entfernen, können (statt manuell Symlinks in /etc/rc?.d/ zu setzen oder zu entfernen) auch Runlevel-Editoren eingesetzt werden.

Bei Debian / Ubuntu:
rcconf --dialog

oder

update-rc.d
Bei Redhat / Cent-OS:
chkconfig

Timestamp in EXIF-Informationen von JPG-Bildern ändern

Viele Bilder-Datenbanken verlassen sich nicht auf den Timestamp der Datei, sondern lesen Erstellungsdatum und -uhrzeit aus den EXIF-Headern von z. B. JPG-Bildern aus.

Was tun, wenn Datum oder Uhrzeit in der Kamera bei der Aufnahme falsch eingestellt waren? Die Bilder-Datenbank zeigt die betroffenen Bilder dann immer zeitlich falsch einsortiert an.

Ich bevorzuge zum Ändern die Kommandozeilenlösung:
(zunächst wird mit Änderungszeitpunkt der Datei angepasst - im Beispiel auf 15.11.2008 15:20 Uhr - und dann im nächsten Schritt der Timestamp der Datei in den EXIF-Header kopiert)

touch -t 0811151520 <filename>
jhead -dsft <filename>

Festplatten-Image mit mehreren Partitionen mounten

Problem:

Sie haben - z. B. mit dd oder ddrescue - ein Image einer ganzen Festplatte (mit mehreren Partitionen) erstellt. Wie kann man die einzelnen Partitionen jetzt mounten?

Lösung:
kpartx -l <imagefile>

zeigt eine Übersicht der enthaltenen Partitionen an.

kpartx -a <imagefile>

mappt die Partitionen auf Loop-Devices loop0p1, loop0p2,…

mount /dev/mapper/lppo0p1 /mnt/tmp/ -o loop,ro

mountet eine der Partitionen.

kpartx -d <imagefile>

entfernt die Device-Mappings wieder. Vorher unmounten!

Bedienung von info-Seiten

Manche Linux-Befehle haben neben der obligatorischen Man-Page oder als Alternative eine oder mehrere Info-Pages, die dann zu erreichen sind über

info <Befehl>

also z. B.

info screen

Info ist dabei etwas sperrig in der Bedienung:

Pfeiltasten

scrollen

Leertaste

eine Seite nach unten

Tab

springen zum nächsten Link

Backspace oder Del

zurück

n

nächstes Kapitel

p

voheriges Kapitel

Wo immer die Möglichkeit besteht Pakete nachzuinstallieren, ist es empfehlenswert pinfo zu benutzen, es hebt Links farbig hervor und bedient sich auch sonst recht flüssig im Stil von lynx.

Magic Sysrequest Keys

Wenn ein Linux-System auf keinerlei Benutzereingaben mehr reagiert, heisst es nicht unbedingt, dass es abgestürzt ist. Vielleicht verbraucht nur ein amok laufender Prozess alle Resourcen, sodass das System für nichts anderes mehr Zeit hat. Um das System jetzt wieder in einen sauberen Zustand zu bekommen, braucht man die Magic Sysrequest Keys. Wenn man die Funktionen nutzen will, sollte man zunächst - solange das System noch sauber arbeitet - prüfen, ob diese überhaupt freigeschaltet sind.

cat /proc/sys/kernel/sysrq

Hier sollte eine Zahl größer 0 stehen. Falls nicht, einfach eintragen:

echo 1 > /proc/sys/kernel/sysrq

1 schaltet alle Funktionen frei, man kann aber auch die Summe der Indizes aller erlauter Funktionen (laut unten stehender Tabelle) eintragen. Am besten setzt man den gewünschten Wert gleich in einem Start-Script beim Boot.

Existieret /proc/sys/kernel/sysrq gar nicht, muss der Kernel neu übersetzt werden, mit Option CONFIG_MAGIC_SYSRQ.

Ist das System dann in einem problematischen Zustand, drückt man

Alt+Druck+<Taste>

wobei man <Taste> aus der Tabelle entnimmt.

Taste Funktion Index

r

X11 die Tastatur entziehen

4

e

SIGTERM an alle Prozesse ausser Init schicken (bitte beenden)

64

i

SIGKILL an alle Prozesse ausser Init schicken (hart abschiessen)

64

s

Filesystem-Puffer schreiben (sauberen Zustannd herstellen)

16

u

Dateisysteme read-only mounten

32

b

Reboot

128

k

alle Prozesse im aktuellen Terminal beenden

4

f

speicherfressenden Prozess abschiessen

64

0-9

Loglevel festlegen

2

o

System ausschalten

128

w t q p m l

um dem System noch diverse Debug-Informationen zu entlocken

8

c

Reboot über kexec

8

n

Prioriäten von Echtzeit-Tasks ändern

256

Im Zweifelsfall empfiehlt es sich, die ersten 6 Kommandos in der genannten Reihenfolge auszuführen: Merkhilfe: busier rückwärts

Soft-RAID

Eine hervorragende Einführung zum Thema Soft-RAID (und damit zum Befehl mdadm) bietet c’t kompakt 1/2009 Linux S. 50. Es gibt neben den theoretischen Grundlagen auch Beispiele, die man selber nachbauen kann, darunter sogar eine Anleitung, wie man ein bestehendes Linux in ein RAID umwandeln kann.

Etwas unpraktisch gelöst ist die Einrichtung eines neuen Systems unter Ubuntu mit RAID über diverse Umwege, obwohl das über die Alternate-CD alles auch direkt im Installer möglich ist. (Dann hat man sogar zusätzlich die Möglichkeit, noch ein LVM auf das RAID zu packen.)

Prozesse an eine (oder mehrere) CPUs binden

Dazu dient das Kommando taskset. Es kann gleich beim Start verwendet werden:

taskset -c 0 <command>

bindet den Befehl <command> an die CPU 0

taskset -c 0-2 <command>

bindet ihn an die CPU 0, 1 und 2, d. h. bei einer 4-Kern-Maschine wird ein Core freigehalten.

Oder man kann taskset auch nachträglich anwenden. Erst mal abfragen:

taskset -p <PID>

nachträglich binden:

taskset -p 1 <PID>

Weitere Infos wie fast immer in

man taskset
Warning
Warnung:
Mit der Bindung an CPUs kann man die Gesamt-Performance durchaus auch verschlechtern, da der Scheduler (der seinen Job normalerweise recht gut macht) nicht mehr so kann, wie er gerne wollte.

Bash

siehe Bash

Zsh

siehe Zsh