Linux – Prozesse – Dateisystem

Jobs / Prozesse

wir starten einen Job, der im Hintergrund läuft:

sleep 1000 &

sleep wartet eine Zeit, die als Option angegeben wird. In diesem Fall 1000 Sekunden. Möglich wäre auch sleep 1d für einen Tag. (1 day)

startet man das sleep Kommando im Vordergrund, bleibt das Prompt für 1000 Sekunden blockiert. Man kann dann abder den job unterbrechen mit:

[Strg] – z

Um die laufenden Prozesse anzuzeigen, gibt man ein:

jobs

und bekommt bspw. folgende Ansicht:
[2] Stopped sleep 1000 &
[3]- Running sleep 2000 &
[4]+ Running sleep 500 &

Die Zahlen in den eckigen Klammern bedeuten die Job-Nummer.

Nun könnte man mit

fg 2

den Job 2 in den Vordergrund holen und fortsetzen, oder mit

bg 2

den Job 2 im Hintergrund fortsetzen lassen

ps -al | grep ‚[s]leep 2000‘

ziegt die laufenden Prozesse an, mit Prozess ID, bspw.:

501 42105 40313 4006 0 31 0 2432764 476 – S 0 ttys000 0:00.00 sleep 2000

ps -al | grep ‚[s]leep 2000‘ | awk ‚{print $2}‘

zeigt nur noch die Prozessnummer an:

42105

um diesen Prozesse nun mit kill zu beenden, könnte man diese Befehlskombination als Option an den Befehl
kill übergeben:

kill $(ps -al | grep ‚[s]leep 2000‘ | awk ‚{print $2}‘)

Stresstest / Lastverhalten von Befehl dd

dd if=/dev/zero of=/dev/null &

schreibt ungebremst Daten aus der unerschöpflichen Quelle an ASCII NUL Zeichen
/dev/zero in die Nirvana-Datei
/dev/nul
. Dies bringt die Prozessorlast an die völlige Auslastung, wie man mit dem Befehl top sehen kann:

top

kill -9 11119

beendet den Prozess mit der PID 11119

Kleine Spielerei mit dem Befehl kill

Der Parentprozess von allem ist der Prozess unter dem die Bash läuft. Anzeige durch:

echo $$

40313

bzw.: PS

PID   TTY     TIME    CMD
40313 ttys000 0:00.14 -bash

 

nun könnte man in einem Skript folgende Zeile einfügen:

kill -9 $(echo $$)

diese Zeile beendet sofort die bash, denn sie übergibt die PID an den Befehl kill

Dateisystem

Das Verzeichnis /proc/ ist das Sichtfenster zum Kernel und mit

cat /proc/partitions

sieht man alle vorhandenen Partitionen:

partitions

fdisk -l /dev/sda
zeigt eine Art Partitionstabelle an

fdisk /dev/sda
öffnet den Assistenten zum erstellen von Partitionen. Die Kommandos stehen dort zur Verfügung:

– m = Hilfe
– n = neue Partition
– p = Partitionstabelle
– l = Dateisystemtypen
– q = beenden ohne speichern
– w = speichern

Nach dem Beenden

sudo partprobe

ausführen, um die neue Partitionstabelle einzulesen ohne den PC neustarten zu müssen.

cat /proc/partitions

sollte jetzt die neue Partition anzeigen.

Mit mkfs oder mke2fs kann man der Partition ein Dateisystem geben:

sudo mkfs -t ext3 /dev/sda9

Die Blöcke des Dateisystems sind wie folgt aufgeteilt: z.B. 9 Blöcke:

Nr 1: Superblock, ist als Kopien gesichert, weil wenn man ihn nicht mehr lesen kann, kann man das Dateisystems nicht mehr einhängen.

Jetzt kann man die Partition mounten:

sudo mount -t ext3 /dev/sda9 /mnt

Mit

sudo umount /mnt

kann man sie wieder aushängen. Vorher sollte man den Befehl

sync

eingeben, der veranlasst, dass alle offenen Schreibvorgänge sofort ausgeführt werden!

Damit die Partition auch beim nächsten Systemstart wieder gemountet wird, schreiben wir in die Datei

/etc/fstab

eine neue Zeile:
/dev/sda9 ~/platte ext3 defaults 0 0
Werte sind durch Leerzeichen oder Tabstopps getrennt: fstab

Mit

sudo mount -a

kann man nun alle Dateisysteme neu einhängen lassen, ohne den PC neustarten zu müssen.

Die Schritte im Überblick:

  1. Neue Partition anlegen
  2. Dateisystem auf neuer Partition anlegen
  3. Dateisystem statisch mit Eintrag in /etc/fstab

Mit tune2fs kann man Änderungen am Dateisystem vornehmen, aber unbedingt vorher aushängen:

tune2fs

Beispiel: mit dumpe2fs die Lage des Superblocks und seiner Sicherungskopien anzeigen:

Unbenannt

Auslagerungsdatei erstellen:

  • cd
  • touch platte/swapfile
  • dd if=/dev/zero of=platte/swapfile bs=1000k count=500
  • sudo mkswap platte/swapfile
  • sudo swapon platte/swapfile
  • cat /proc/swaps sollte jetzt unter anderem die neue Datei auflisten
  • müsste man jetzt noch in die /etc/fstab eintragen, damit sie dauerhaft erhalten bleibt

Root-Shell beim booten ohne Passworteingabe

System hochfahren, im Grub-Bootloader [e] für „edit“ drücken, zweite Zeile auswählen, die den Kernel enthält:

grub_menu

nochmal [e] für „edit“ drücken:

grub_zeile

ans Ende der Zeile ein Leerzeichen und dies anfügen:

init=/bin/bash

grub_zeile2

und mit ENTER bestätigen. Nun [b] drücken zum neu booten des System. Nun fährt das System hoch und man bekommt eine Root-Shell. Viele Befehle funktionieren noch nicht, da viel einzuhängende Verzeichnisse noch nicht gemountet sind. Daher:

mount -o remount,rw /

liest die Dateisysteme mit Schreib- und Leserechten neu ein

mount –a

hängt die restlichen Dateisysteme aus der /etc/fstab wieder ein, die noch übrig sind.

Print Friendly, PDF & Email

Schreibe einen Kommentar