† Advanced Linux CLI

by

Hardware-Einstellungen ermitteln und konfigurieren

Gibt aus welche pci geräte im moment angeschlossen sind

 

Gibt aus welche usb Geräte im Moment angeschlossen sind

 

Gibt aus welcher Kernel gerade verwendet wird. Der Kernel überwacht alle Schnittstellen z.B. pci usb – Also alle Bussysteme

 

Gibt eine liste der geladenen Treiber aus

 

Gibt nähere infos zu einem Modul aus

 

Entlädt das Modul usb_storage wieder

 

eject schmeist den usb quasi wieder aus

 

 

Gibt den Unterschied 2er dateien aus

 

Meldungen vom Kernel – die letzen 10 Zeilen

udev demon bekommt vom Kernel Nachricht: Du schau doch mal nach wie das heißt

Darauf hin schaut der Kernel unter etc/udev/rules.d nach wie die Geräte dann heißen

Z.B. sdb und legt dann unter /dev eine Gerätedatei an

 

Listet die Devices auf

 

Listet alle Packete auf und filtert alles von udev aus

 

 

Gibt Infos aus welche ausführbaren udev Programme es gibt

 

 

Gibt aus welche Interrupts von den Geräten verwendet werden

 

Gibt aus welches Gerät welchen Speicherbereich belegt

 

 

Das System startet

# Während Grub bootet: e

kommt in weitere Menüs – z.B. zeigt es dort die Root Partiton sowie die Pootpartition an und Optionen

die mit nochmal e editiert werden können

 

Zeigt die Installierten Kernel Pakete an

 

 

Runlevel wechseln und das System anhalten oder neu starten

rpm -qa | grep init

Listet alle Packet und filtert init heraus

 

Listet die ausführbaren binaries vom Packet PACKET auf

 

Filtert Konfigurationsdateien aus

 

Gibt aus wer ich bin z.B. root

 

Z.B. kann durch verändern der Grub Boot Parameter mit init=/bin/bash
kann eine Bash gestartet werden – es rauschen die
ganzen hardwaremeldungen durch – jedoch werden keine dienste gestartet

Am Ende kommt eine shell. Es kommt keine sowieso OK meldung.

Jedoch funktioniert eine Eingabe passwd nicht, da das System noch nicht fertig initialisiert (z.B. Festplatte rw mounten)

Der Init prozess lässt sich allerdings nocht nicht mit /sbin/init starten da er nicht die PID 1 hat

 

Startet nun anstatt der Bash der init prozess

 

Unter

/var/log/messages

/var/log/kern.log

/var/log/syslog

stehen die meisten Bootmeldungen

dmesg

dmesg Befehl gibt die ganzen Kernel Meldungen aus – auch die Meldungen von /var/log/messages

 

Zerntrale Konfigurationsdatei vom Initprozess: /etc/inittab

Dort stehen die default runlevel – (nicht in mint…)

0 halt

1 single user mode

2 Multiuser ohne netzwerk

3 full multiuser

4 unused

5 x11

6 reboot

 

Gibt den aktuellen Runlevel aus

 

Startet beendet usw. durch die Scripte darin Programme

 

Gibt eine Liste aus welche Dienste gestartet sind und in welchem Runlevel sie sich befinden (nicht unter Mint…)

 

 

Kenntinisse der Grundfunktionen von systemd und Upstart

  • sysVinit ist in die Jahre gekommen
  • Dinge werden nacheinander seriell abgearbeitet
  • Dauert deshalb lang

Brachte Ubuntu z.B. upstart ein

systemd is noch eine neuere funktion

 

Upstart:

  • Dreht sysvinit
  • Ist ereignisbasiert
  • Man kann definieren was passiert wenn ein neues Ereignis eintritt

z.B. bei upstart initctl

 

Zeigt alle Verwalteten Dienste auf

 

Ist das neue Konfigurations Verzeichnis von upstart

 

Bei systemctl funktioniert das ganze auch so:

 

 

Festplattenauftreilung planen

Zeigt an wie die Festplatte partitioniert ist

(zeigt direkt das an was im MBR steht max 4 primäre partitionen)

Wenn mehr als vier im System vorhanden sind, muss mintestens eine davon als erweitert getaged sein

 

Springt in einen Befehlsmodus

Dort können mit d (delete) n (new) usw. Angaben gemacht werden

In den MBR wird allerdings erst mit w (write) geschrieben

 

Liest das Gerät neu ein (rereadpartitiontable)

 

Zeit an was der Kernel gerade denkt wie die Partition aussieht..

 

Mit parted kann man ebenfalls partitionieren

 

Sagt dem Kernel das er die Partitionstabellen neu einliest

Funktionsweise ähnlich wie blockdev

 

Gibt die möglichen Dateisysteme aus

Vorzug zu mkfs.ext3 oder mkfs.xfs
Daumenregel:

Partition nicht voller als 80% laufen lassen da sonst zu hohe Fragmentierung auftritt

 

Formatiert /dev/hdb mit xfs

Es können zusätzlich ein Dateisystem-Label oder auch die Blockgröße als Parameter mitgegeben werden

 

Setzt maximale Anzahl von Mounts und Interwal zur Partitionsüberprüfung auf 0

 

Zeigt wie viel Speicher dem System zur Verfügung stehen

 

Erstellt auf der Platte Swap Speicher

 

Schalten den Swap Speicher dem System zu

 

Schaltet den Swap Speicher wieder aus

 

/var/log könnte z.B. auf einer eigenen Partition angelegt werden, da sich die Logdateien immer mehr füllen

/usr/ könnte man auf eine eigenen Partition legen und readonly mounten, da Linux normal nicht in /usr
schreibt – Nachteil ist das bei Softwareinstallation evtl platte wieder kurz auf w umgemounted werden muss

/home könnte ebenfalls auf eine extra Partition, da evtl ein Nutzer zuviel Platz braucht, oder user dort Programme starten
könnten oder setuid bit setzen könnten

Z.B. mount -noexec -nosuid

 

 

Listet auf wie groß die einzelnen / Verzeichnisse sind und sortiert diese anschließend

 

Gibt wie fdisk die Partitionierung aus

 

Vorteile LVM: Größe der Partition kann im laufenden betrieb vergrößern und teilweise zu verkleinern, sowie snapshots zu machen

Drei begriffe sind wichtig: Physikal volume, Volume Group und Logical Volume

pvs

Physikal volume show – zeigt unterste schicht von LVM an – wo die Partitionen physikalisch liegen

vgs

Volume group show – zeigt die verschiedenen Partitionen der verschiedenen Platten der Group an

lvs

Logical Volume show – zeigt wie diese große gesamt Platte unterteilt ist

 

Erstellt ein phy. LVM

 

Kann mit „set 1 lvm on“ nun als LVM geflaggt werden

 

Erstellt aus der Partition eine Volumegroup

 

Um die /dev/sdb1 um /dev/sdb2 zu erweitern – volumegroup

 

Setzt das Logical Volume

 

Zeigt welches Dateisystem für die mounts verwendet wird

 

Passt das Dateisystem der LVM an wenn sie vergrößert wurde

 

Schiebt die Daten des selben lvm von einer platte auf die andere – sogar im laufenden betrieb

 

 

 

Einen Boot-Manager installieren

Es gibt 2 hauptsächliche bootloader: grub und lilo – daneben noch syslinux (das kann von fat
booten
), isolinux (von cd booten) und pxelinux (übers netz booten)

 

Welche Packete von grub sind unter SUSE installiert

 

Alle zugehörigen Dateien anzeigen

 

Konfigurationsdateinen von grub liegen in /boot/grub da ja schon vor start von linux die daten benötigt werden

Die Dateien enden alle auf _stag1_5

Dies sind Treiber stage1 ladet diese und stage2 stellt dann das grub Menü dar Die .configs sind:

  • device.map
  • menu.lst
  • grub.conf

 

Installiert grub in den MBR der Partition sda

oder:

ohne parameter aufrufen – Es geht eine grub shell auf.

Nun kann man folgende Angaben machen: root (hd0,0) ENTER setup (hd0) ENTER

Es kommen ein paar Meldungen und schlussendlich: „succeeded“

less /etc/lilo.conf

ist die liloconfig

Lilo muss im Gegensatz zu grub nach jeder Änderung des Kernels ausgeführt werden

 

Listet alle grub Packet unter Debian auf

grub-common ist das wichtigste Packet

/etc/grub.d ist eigenes grub Konfigurations Verzeichnis

etc/grub/10

grub/20

Sind die Scripte die der Reihenfolge nach ausgewertet werden

/boot/grub/grub.cfg ist die neue config datei und sollte nicht verändert werden,

da diese dynamisch erzeugt wird.

 

Löscht den Bootloader auf sda

 

Grub2 Spezials:

https://wiki.lab.linuxhotel.de/doku.php?id=lpi1:bootloader

 

 

Shared Libraries verwalten

Warum macht man das mit Shared Libaries und programmiert das nicht mit ein

Weil bestimmte Funktionen von jedem Programm verwendet werden und so viel kleiner werden

 

Sagt mir von welchen shared libs ein Programm abhängt. Meist handelt es sich um das Verzeichnis /lib oder
/usr/lib

 

Die Libaries-Config Datei sagt mir wo es überall im System shared libaries gibt

 

Durchsucht alle Biblioteken und erzeugt daraus die Datei /etc/ld.so.cache
Diese Datei wird bei jedem start eines
Programmbinaries durchsucht

 

Eine andere möglichkeit wäre der Web über die Umgebungsvariable:

alle Programme ohne suidbit würden dann dort nachschauen.

 

 

Debian-Paketverwaltung verwenden

Packetverwaltung Suche (-S = Search)

Zu welchem Packet gehört dies oder jenes

 

Zeigt (-s = Show) die Packetinfos dazu

Dies ist jedoch nur bei installierten Packeten möglich

 

Welche man pages gibts dazu

 

Welche docs/readme gibtes zum Befehl at

 

zeigt an welche Packet insgesamt von at installiert sind

 

Installiert Packet – aber ohne Prüfung der Abhängigkeit

 

  • purge – löscht das Programm komplett
  • remove deinstalliet die configs nicht…

 

apt-get und aptitude sind etwa die selben Programme und fragen ebenso die repos ab

Im Gegensatz zu dpkg installiet aptitude die empfohlenen Abhängigkeitspakete mit dazu – apt-get kann das nicht

 

Zeigt informationen zu Packeten die noch nicht installiert sind

 

Repos von Debian

 

Ist das gleiche fast wie apt-get update

 

Z.B. wenn Packete zurückgehalten werden

abfragen wie stehts denn um diesen packet

 

Upgrade der Linux Distribution

 

lädt Bescheibungsdateien herunter + zusätzliche Dateien

 

findet eine ganze Reihe von Dateien die für Samba gut sind

 

überprüft die Checksumme eines Packetes

kann dann packet info datei überprüfen – md5sum gelten nicht mehr als sicher

 

[l für low h für high usw]

Ruft bei installierten Programmen nochmal das Konfigurations-Menü auf

 

 

RPM und YUM-Paketverwaltung verwenden

z.B. aus den ganzen Prozessen einen Prozess finden den man nicht kennt

 

Schauen welche Packete es zu einem Programm gibt

 

q für querry i für information um mehr infos zu bekommen

 

Schauen was für .config für RPM-Packeten gibt und wo diese sich befinden

oder:

c steht für configruation

 

Frägt die Dokumentationen zu dem Packet ab d für Dokumentations

 

Frägt alle Packet dazu ab die installiert sind – a für all

 

i install h hashes (Vortschrittsbalken)

v verbosity (Gesprächigkeit – mehr Infos)

 

Oder so herunterladen und installieren

 

Installiert das Packet dann lokal mit Vortschrittsbalken und info

 

Geht aber nur wenn das Programm schon vorher installiert ist

 

Packet zeigt die Abhängikeiten

 

Welche Abhängigkeiten benötigt die bash

 

Welches Packet stellt denn die benötigten Eigenschaften zur Verfügung?

 

Listet auf welche Packete alles die libc Libary benötigen und zählt dabei die Zeilen

 

Konfigurationsdatei der Repositorys von Yum

 

Listet die ersten 15 Packete auf im Repository

 

Listet alle verfügbaren Packete auf – Seitenweise blättern

 

Installiert das PACKET inc. Abhängigkeiten

 

Lädt rpm Pakete herunter

 

Updated die Packete

 

Entfernt Packete incl. Abhängigkeiten

 

Erlaubt es auf die Einzelnen Dateien aus dem rpm zu holen ohne diese zu installieren

 

 

Auf der Kommandozeile arbeiten

Kommandofolge – beide Befehle werden hintereinander ausgeführt

 

UND Verknüpfung – 2.ter Befehl wird nur ausgeführt wenn 1.ter ok war

 

ODER Verknüpfung 2.ter Befehl wird auch ausgeführt wenn 1.ter ein ERROR war

 

Listet die Module auf und führt gleichzeitig uname -r aus um die Kernelversion zu ermitteln und anzuhängen

oder:

ls /lib/modules/$(uname -r)

Bringt das Selbe wie oben

 

# meineVariable=ichbins

$meineVariable

weißt die Variable den wert zu –

Gibt die Variable wieder aus

 

exportiert die Variable in alle kindprozesse

 

Gibt alle eingegebenen Befehleseingaben in der Shell des Benutzers wieder

 

Enthält die history befehle des Benutzers root

 

Sucht in dieser History

 

Gibt die Pfadvariable aus

 

Gibt eine Liste der Umgebungsvariablen aus

 

Startet eine neue bash als Kindprozess

 

Startet eine neue bash und ersetzt die alte durch einen neuen prozess

 

Gibt alle Umgebungsvariablen + shellvariablen aus – gleich wie env nur mehr

 

Löscht die Variable wieder

 

Gibt z.B. verschiedene sprachen von man aus

 

Ein || bedeutet:  wenn exitcode <> 0, dann

 

 

Textströme mit Filtern verarbeiten

cat steht für concatinate: ——> Haupt-Aufgabe ist Daten Zusammenzufügen

split steht für das Gegenteil: —> Haupt-Aufgabe ist es Daten Ströme aufzuteilen

 

dd = diskdump liest Zufallszahlen vom Device urandom ein und schreibt sie in die Datei (test.big)

 

Teilt die Datei test.big in lauter gleich große 14 Mbyte Dateien auf

 

Fügt die/mehrere Dateien wieder zu einer (test2.big) zusammen

 

Testet die Quersumme und zeigt das es noch die selben Dateien sind, und nichts verändert wurde.

 

tac ist cat Rückwärts – Der Befehl dreht die Ausgabe der eigegebenen daten rum

 

Anwendungsbeispiel für tac – rpm zeigt nun so das zuerst installierte Packet an

 

Ausgabe der Datei wie bei cat (cat -n /etc/hosts) nur das jede Zeile nummeriert wird

nl ist Spezialist darin wie man z.B. die nummerierungen machen kann

 

cut Ist wie split nur das nicht horizontal sondern vertikal quasi ausgeschnitten wird
–> Spalten schneiden

b steht für bytes – Hier werden alles Zeichen ab dem 28ten ausgeschnitten sortiert und dann dargestellt

 

Diesmal keine feste byte spaltenzahl sondern:

Als Trennzeichen (-d:) zeigt die ersten 3 felder von passwd an (-fl-3) und schreibt diese in die Datei spalte1-3

 

Schreibt ab Spalte 4 dann alles in die obrige Datei

 

Nimmt die beiden Dateien und fügt die Spalten wieder zusammen

 

du steht für disk usage (Festplattenbelegung) und -m bedeutet megabyte x bleibe auf dem Verzeichnis
/ und gehe nicht ein Verzeichnis höher.

sort sortiert dabei nummerisch (nach Größe) – ohne option wäre alles alphabethisch

 

Datei wird nach Benutzernummer sortiert

-t für Trennzeichen;

-k für Kennzeichen;

3n für 3te Spalte

-r das ganze Recursiv – Rückwärts

 

Mit egrep (-v verbose also umgekehrt) und dem regulären Ausdruck suche ich nach Kommentarzeichen
#

Mittels der Pipe uniq lassen sich so z.B. Doppelte Leerzeilen entfernen.

So kann man z.B. eine eindeutig Liste machen, so das jeder Wert nur einmal vorkommt.

 

Zeigt welcher Benutzer wieviele Prozesse laufen

ps -e –no-headers -o user gibt für alle Prozesse den Benutzernamen aus –

sort sortiert vor und

uniq filtert doppelte Zeilen aus und zählt das Ganze -c

 

tr ersetzt mir Doppelpunkt durch Tabulatorzeichen

 

wenn man nun cat durch expand ersetzt kann man so an den Stellen Tabulatoren setzen

 

Einfacher optimaler Textformatierer

 

holt die Seite von Wikipedia und formatiert den Text auf 30 Zeichen

 

Ist im Prinzip das Selbe wie oben nur das er den Text etwas aufbereitet und die Seitenanzahl oben angibt

 

Zählt die zeilen der datei

 

Sortiert die beiden Dateiinhalte der beiden Dateien –

join fügt diese dann zusammen – z.B. welcher Benutzer in welcher Gruppe ist – funktioniert allerdings nicht so gut

 

head gibt die ersten 4 Zeilen des Befehls ps ax aus

 

Ist das Gegenteil von oben und gibt die letzen 4 Zeilen aus

 

zeigt in Echtzeit (-f follow) die Datei an – Netzwerk raus – Error

 

zeigt den MBR an – Hexadezimal – zieht genau 1mb an Daten heraus

 

wie hexdump – gibt daten dann oktal oder anderen Formaten aus

-t Format x2 in dem Fall Hexadezimal

 

wc -l zählt nur Wörter – wc ohne Option zählt die Zeilen, Wörter und dann die Zeichen

 

Die Zeichenkette ab wird durch ba ersetzen y ist der Befehl / die Option zum Vertauschen

 

sucht und ersetzt eins durch zwei

 

Subnetz local wird ersetzen -i =implace

edit – Datei wird so direkt editiert

 

find sucht nach dem Dateinamen Muster *.c und ersetzt dies Verzeichnisweit

 

Zeilen (-e) entfernen:

Benutzer nutzer22 aus /etc/passwd entfernen

/d gibt Delete an – Löschen

 

 

Translate – übersetzt quasi diese Zeichen durch andere und liest dabei aus der Datei

 

Gibt mir Infopages aus

 

#####################

Grundlegende Dateiverwaltung

 

 

rm -rf dir

löscht rekursiv ohne nachfragen

 

ls xa[abcdefgh]

3tere buchstabe ist einer aus der klammer

 

ls xa[^abcdefgh]

3ter buchstabe ist einer der nicht in der klammer steht

 

ls xa?

3ter buchstabe ist ein beliebiger

 

7 DATEITYPEN:

Normale Datei (-)

Verzeichnis (d)

symbolische Links (l)

Gerätedatei (b =blockdevice) /dev/sda

(c = charakteredivice) /dev/input/mice

sockets (s) /dev/log

pipe datei (p) /tmp/vmware

 

erst gibt man an wo gesucht wird und dann was typ usw

 

findet alle dateien von root aus höher die größer sind als 1GB und nur das gemountete system – 2>/dev/null filtert fehler aus

 

legt datei mit dem aktuellen datenstempel an, fügt einen user dazu und sucht dann nach dateien die neuer sind als die datei test

also sprich die dateien die verändert wurden als der user angelegt wurde

 

wie groß is das verzeichnis

 

kopiert alles aus dem verzeichnis ins aktuelle vz

 

findet alle dateien in doc – exec (execute – führt aus) ein befehl chmod – den dateinamen erhält man durch die geschweiftenklammern

dieses exec statement muss mit strichpunkt beendet werden – aber ist sonderzeichen und muss deshalb mit \ geschützt werden

dauert lange, da für jedes gefundene der befehl chamod aufgerufen werden muss – kommt aber so nicht mit leerzeichen klar

 

genau wie oben nur das alles auf einmal umbenannt wird

 

umbenennen – mit den leerzeichen muss der name in “ gesetzt werden

 

hier wird die binäre ASCII00 genommen als trennzeichen – so funktioniert der obere befehl auch bei vz mit leerzeichen

 

so wird der tar befehl auf die stdout geschickt

optionen -c create, t anschauen, x auspacken, d vergleichen

 

besser:

 

legt ein archiv an

 

erstellt ein komprimiertes archiv tar.gz oder tgz

 

zeigt an welche dateien drin sind

 

stellt verzeichnis aus archiv wieder her

 

erstellt archiv und gibt es an ssh weiter, der das ganze auf der anderen seite per cat in eine datei leitet

 

 

Finde das verzeichnis, gehe nicht tiefer, keine leerzeilen übergibt an cpio (archiviert)

cpio kann alles was tar auch kann – nur flexibler, tar is einfacher. -H gibt das format an von cpio (-o heißt out – ausgeben)

wenn bei tar irgendwo ein fehler auftaucht – is das ganze im arsch – bei cpio nur dateinblöcke kaputt

 

so kann man sich anschauen was in dem archiv ist -i heißt in – einlesen

 

packt das archiv wieder aus

 

ergibt z.B. endlos schleife shell öffne zero – leite die daten in dd um und dd gibt sie aus an die standardausgabe und stout leitet sie an null
weiter – dd kopiert daten(ströme)

 

ungefähr das selbe wie oben, nur genauer da man optionen nutzen kann wie z.b. wieviele Daten

 

Praxisbeispiel: Partitionstabelle sichern – bs=blocksize count=64xbytblöcke skip=heißt lasse die ersten 446 aus, da

die Partitionstabelle erst nach den ersten 446 datenblöcken liegt.

 

schaut inhalt an und gleicht aus einer datenbank ab was für eine datei es ist

 

endlosschleife, kann zum testen von cpu last ohne i/o datenlast zu testen

 

 

packt eine datei

 

selbe wie oben nur das daten vor dem senden an null noch entpackt werden

 

komprimiert stärker als gzip – weiterer vorteil ist das ganze blockweise gemacht wird nachteil – langsamer als gzip

 

 

 

 

103.4 Ströme, Pipes und Umleitungen verwenden

 

hier öfnet die shell die datei hosts und leitet sie an die stdin von cat weiter

cat tut was es immer tut und gibt es an die stdout wieder aus

bei cat /etc/hosts öffnet das programm zum unterschied die datei – oben die shell

 

liest die datei ein und streamt sie quasi in test – etwa wie kopieren nur das es

nicht als ganzes kopiert wurde sondern wie eine art eimer ausgeleert und wieder eingefüllt

 

die fehlermeldung wird in die datei fehler geschrieben, die ausgabe in ausgabe.txt

Fehler werden bei Strömen über den Fehlerkanal ausgegeben. 0 ist standarteingabe 1 ist standardausgabe 2 ist der fehlerkanal

 

es wird vom rootverzeichnis aufwärts nach pipe dateien gesucht – fehler werden an dev null gesendet

 

erster befehl zeigt alle installierten packete auf gibt es über die pipe weiter und wc zählt dann diese

 

 

findet alle jpg dateien und gibt die fehlerausgabe an null weiter

 

wie oben nur das die größe ermittelt wird -h human readable

 

 

 

xargs sorgt dafür das die argumentenliste nicht zu lang wird

sucht alle dateien mit größe

 

sucht alle dateien mit größe wie oben, jedoch werden jetzt nur die fehler angezeigt

die richtige ausgabe wird an null gesendet. -print0 verwendet anstatt leerzeichen 0 zeichen um die fehler zu vermeiden.

Zusätzlich muss ich dies auch xargs mit -0 mitteilen

 

findet alle dateien, gibt es in die datei ausgabefind weiter und zusätzlich an wc weitergegeben, der das ganze dann noch zählt

tee ist wie ein T-Stück und teilt die ausgabe auf – quasi wie ein rohrleitungs T-Stück

 

selbe funktionen wie oben, nur das in die datei ausgabe immer wieder erneut angehängt wird und nicht überschrieben

 

 

 

Prozesse erzeugen, überwachen und beenden

 

STRG+Z stoppt den prozess, der daten aus gerät 0 liest, komprimiert und wiedr an gerät 0 sendet

 

zeigt an welche jobs gerade auf meiner shell laufen

 

startet den job jetzt wieder im Vordergrund

 

startet den job jetzt wieder im Hintergrund

 

startet den prozess sofort im hintergrund

 

holt den 3. job in den Vordergrund

es gibt 5 prozessstati unter ps: R=running, S=sleeping, T=paused E=uninteruptable Sleep(nichtunterbrechbarer Sleep) wartet z.B. auf Daten von
I/O

Z=Zombiprozesse sind schon tote beendete prozesse (wurde vom Vaterprozess nicht richtig aus der Prozessliste ausgetragen wurde)

 

zeigt die prozesshirarchy an

 

startet einen kind prozess der bash der im hintergrund der 30s schläft

 

ersetzt obrigen befehl für 300sec – mit den oberen 2 befehlen kann man so einen zombi prozess erzeugen

 

Gibt liste aus an signalen, die man schicken kann

3 wichtige: 15=term gleich wie kill -term terminate – bitte beende dich

9=sigkill gleiche wie eingabe von kill -kill – beendet sofort – prozess keine chance zu reagieren

1=sighub kill -hub, kill -1 usw – sorgt dafür das der prozess seine konfigurationsdateien neu einliest

 

Wenn jedoch ein Prozess ein signal bekommt das er nicht kennt, beendet er sich

 

macht ein kommando immun gegen aufhängen – z.B. wenn ich die shell dann beende… funktioniert aber nicht immer – funktioniert mit
screen besser

 

Gibt aus wieviel arbeitsspeicher ist noch frei

 

Gibt aus wie lange das system schon läuft

 

killt alle prozesse die zip im namen erhalten – besser sind pkill und pgrep da sie genauer sind

 

 

 

Prozess-Ausführungsprioritäten ändern

 

z.B. 3xstarten:

mit nice oder renice (im laufenden betrieb) kann nun die priorität erhöht oder erniedrigt werden

werte gehen von -19 bis 19 – negative werte gehen nur als root – bei root geht es bis +/-20 – nicht zu empfehlen da es sich sonst aufhängt

ACHTUNG bei nice –-10 gleich renice -10 etwas verwirrend

 

 

 

 

 

Textdateien mit regulären Ausdrücken druchsuchen

 

Ankerzeichen: Zeilenende: $

 

zeigt alle zeilen die auf das wort bash enden ‚ sind für shell wichtig damit sonderzeichen nicht interpretiert werden

 

findet alle zeilen die mit r anfangen und gibt sie stdout aus

Ankerzeichen: Platzhalter: . Steht für ein beliebiges zeichen

 

Gibt alle zeilen aus die mit einem beliebigen (wegen .) Zeichen anfangen, allerdings keine leerzeilen

 

Gibt alle zeilen aus die mit aeio oder u anfangen

 

Gibt alle zeilen aus die mit den zahlen 0-9 beginnen

 

wenn dachzeichen innerhalb einer klammer steht dann zeigt es eine negierung an – also alle in denen diese vokale nicht vorkommen

 

Wiederholungsoperatoren: * zeichen müssen 0 oder mehrmals vorkommen – ACHTUNG 0 mal ist auch erlaubt + nur bei egrep

 

Gibt alle Zeilen aus, in denen aeiou 0 oder einmal vorkommt – in dem fall alle

 

filtert mir alle zahl aus in der mehr als 2 mal einer der Vokale vorkommt 2 gibt mindestanzahl an , leer in dem fall heißt das minderstens..

kann auch durch zahl angegeben werden

 

es wird nach allen zeilen gesucht die {4,} 4 oder mehr zahlen haben ZAHL muss länger/gleich 4 zahlen sein in folge

 

Benurzername:x:5000 Benuzernummer

.* wäre für Benurzername quatsch da alles danach auch dann erscheint

^: spiegelt daher alle zeichen außer doppelpunkt wieder

+ gibt dann an die zeichen an des Benutzernamens

: für doppelpunkt

x für das Passwort

: für doppelpunkt 2

[0-9]{4,} steht für eine 4stellige zahl

 

da der befehl hier useless wäre, ginge der befehl auch ohne cat

 

 

Man möchte jetzt z.B. nutzer16 in der passwd durch frank ersetzen:

 

s steht für substitute – ersetzen

/ sorgt dafür das das erste durch das zweite (nutzer16 durch frank) ersetzt wird /etc/passwd gibt die datei an

 

-n sorgt dafür das standartmässig nichts ausgegeben wird – p (print) am ende sorgt dafür das die änderung dann doch noch ausgegeben wird

hier wird allerdings nur immer das erste vorkommen ersetzt

 

g steht hier für global und sorgt dafür das nicht nur ein vorkommen in der zeile ersetzt wird

 

sucht in root nach regulärem ausdruck und findet alle Dateien und verzeichnisse die mit e beginnen – hier hauptsächlich /etc/…..

 

 

ist ein vereinfachtes grep – kann nur mit einfachen dingen umgehen

 

 

 

Grundlegendes Editieren von Dateien mit dem vi

 

vi meist nur in sehr abgespeckten version auf systemen vorhanden – vim ist vi improved version

# Navigieren:

h,j,k,l für navigieren

b ein wort zurück anfang

w nächstes wort anfang

0 zeilenanfang

$ zeilenende

e wortende

3e 3 wörter vor zum wortende

1$ zeilenende

d$ löscht bis zum ende der zeile

STRG+R änderungen wiederherstellen

r replace – ersetzt das zeichen darunter

 

# Modi

i,c,R,a,o einfügemodus, bei c kann vorher was markiert werden /

R überschreiben quasi

i genau an der position

a hinter der curserpositon also eins davor

o legt neue zeile an

c ein wort ändern

 

 

 

esc befehlsmodus

:w schreiben

:q quit

u undo – rückgängig

U änderungen auf ganzer zeile rückgängig machen

ZZ speichern und verlassen

:w! speichert auch datei von der ich nicht eigentümer bin aber rechte habe

:q! verlassen ohne speichern

:e /etc/hosts editiert andere datei

:e! editiert die andere datei auch ohne speichern der alten

 

# visueller modus

v sachen markieren – auswählen mit der tastatur und nicht mit der maus

d löscht zeichen

dd eine zeile löschen

yy kopiet ganze zeile

 

# shift v Modus der ganze zeilen visuell auswählt

 

# strg b visueller Blockmodus – einzelne blöcke auswählen

 

 

 

 

Copy und Paste

y kopiert text

p,P paste fügt ein p hinter curserposition P an der curserposition

 

/ Sucht nach text – auch regexp gehen

n springt zu nächstem treffer

? sucht von unten nach oben – mit n entsprechend von unten nach oben

 

startet hilfeprogram

 

 

 

Partitionen und Dateisysteme anlegen

 

1-4 sind primäre partitionen

ab 5 kommen logische partitionen

Wichtige Hex code für Partitionstypen: 82 swap 83 Linux 8e LVM

 

Gibt die verwendeten Partitionen aus

 

Wenn man jetzt mit fdisk partitioniert, weiß das der kernel noch nicht und es muss neu gestarted werden im gegensatz zu parted

Dies kann man jedoch mit untenstehenden befehlen umgehen – ohne reboot:

 

liest die neuen partitionen für den kernel ein

 

funktioniert eher wie obriges

 

schaut ob filesytem xfs nachinstalliert werden kann

 

selbe suche wie oben unter debian

 

formatiert die zweite primäre platte mit ext3

 

richtet die partition so ein das weder nach einer bestimmten zeit -i0 oder mount anzahl -c0 geprüft wird

 

formatiert die partition als swap

 

 

Anderungen:

 

ext4 ist als Dateisystem dazu gekommen. Bei ext3 kann eine Datei max 2TB – insgesammt partitionsgröße von 32TB – ext4 kann einiges mehr…

 

Gibt an wo der befehl mkfs liegt

 

schaut in welchem packet dieses programm ist

 

schauen was da sonst noch in dem packet drin ist

 

 

 

Die Integrität von Dateisystemen sichern

 

zeigt an wieviele Inodes frei sind im Dateisystem. Für eine 1kb große datei wird in einem journalig fs immer 4k für journaling benötigt

 

debugfs und dumpe2fs sind debugging tools für Entwickler

 

Mit unteren beiden Befehlen kann der Partition hdb1 die ohne journaling ist ein Journaling auf einer anderen Partition hinzugefügt werden

legt die Partiton als journal partition an

 

legt die journalingsystem für hdb1 auf hdb2 an

 

überprüfen des dateisystems -y heißt das grunzätzlich bei fragen mit yes geantwortet wird

 

 

 

104.3 Das Ein- und Aushängen von Dateisystemen steuern

 

 

Gibt die Größe auf der jeweiligen Partition an

 

zeigt an wer auf was gerade zugreift

 

zeigt die zurgirffe auf die devices auf

 

Beste Vorgabe zum mounten ist zuerst /etc/fstab editieren und dann mount -a

 

 

 

 

 

 

Platten-Quotas verwalten

 

standarteditor im system einstellen

 

schauen ob quota system im kernel aktiviert ist

 

schauen ob die pakete von quota installiert sind

 

  1. Um Quota zu aktivieren muss die /etc/fstab editiert werden – unter options usrquota
  2. das System remounten mit
  3. Dateien anlegen mit den Quotas:

    quotacheck überprüft die Quotadateien, mit der option -c (create) legt die Datei im Heimatverzeichnis des Mountpoint an

    er checkt dann das dateisystem durch und addiert die summe der dateigrößen und legt schließich aquota.user

  4. Nun einschalten mit:

  5. Nun legt man die Quota Werte fest:

    öffnet die jeweilige Quota des Benutzers mit einem editor und kann so editiert werden

    softlimit=er kann noch schreiben, bekommt eine warnung – graceperiode=gibt die zeit an bis → hardlimit=er kann nicht mehr schreiben

    0 bedeuted unendlich quota platz

  6. Kontrolle ob alles geklapt hat:

  7. nun die partition vollschreiben und testen

 

Um eine Prototyp Quota -p eines anderen nutzers zu verwenden – spart die neueingabe

Es wird der Benuzter als vorlage verwendet

 

legt für den Benutzer2 die selbe regelung fest

 

legt datei an und gibt sie dem BENUTZER2

 

Liste der Befehle die insgesamt für quota bestehen

 

 

 

 

Dateizugriffsrechte und eigentümerschaft verwalten

 

öffnet die datei /etc/group im editor

 

ändert die gruppe des ordners

 

chmod g+w /TEST

ändert die Rechte der Gruppe auf schreiben

 

ACHTUNG FALLE: wenn das übergeordnete Verzeichnis schreibrechte hat – kann jeder der gruppe auch dateien überschreiben die nicht ihm gehören

alte shell weiß nichts über neue gruppen rechte – erst nach erneutem login gültig

 

zeigt in neueren distris /etc/grp an und nicht die aktuellen shell gruppen

 

Für verzeichnisse gilt

s-Bit setgrpid bit bringt: jeder der in dem verzeichnis eine datei erstellt wird automatisch die gruppe des verzeichnisses gesetzt

 

t-Bit wird z.B. bei /tmp verwendet – jeder darf dort dateien erstellen und löschen – nur nicht die dateien von anderen

 

ändert die shell auf bash

 

SuidBit bewirkt das nutzer ein programm mit rechten von root aufrufen – z.B. passwd

mit dem SuidBit überlistet man das dateisystem – programme überpüfen rechte aber trotzdem noch – daher nicht möglich root pass als user zu
ändern

 

4 bedeutet lesen

2 bedeutet schreiben

1 bedeutet ausführen

 

standart dateirecht 666 umask von 002 ergibt eine datei mit rechten 664

standart verzeichnisrecht 777 umask von 002 ergibt verzeichnist mit rechten 775

 

Suidbit wert 4

setgrpbit wert 2

stickibit wert 1

 

setzt umask für eine shell sitzung – dauerhafte änderung einzelnen user: .bashrc – global in: /etc/profile

 

Harte und symbolische Links anlegen und ändern

 

legt einen sym Link auf fstab an

 

erstellt einen hardlink

 

inode is quasi die hausnummer im dateisystem unter der eine datei gespeichert wird

 

hardlinks funktionieren nur in der selben partition haben selbe rechte selbe größe nur andere inode adresse und funktionieren nur mit dateien

symlinks können einiges mehr und werden z.B. bei etdc/rc3.d benötigt – für die runlevel

 

 

Systemdateien finden und Dateien am richtigen Ort platzieren

 

listet auf welche bibliotheken /bin/bash verwendet

 

Trojaner könnten unter /var/temp mit namen … sein

 

usr/bin usr/sbin enthalten programme die beim booten nicht benötigt werden

 

usr/local da werden programme installiert die nicht über das packetmanagement kommen

 

/opt ist wie das verzeichnis c:/programme unter windows – hier sind programme die nicht so gut an linux angepasst sind

 

/usr /opt /boot sind statische ordner – sie werden nur bei updates verändert oder neuinstallation

 

 

schaut an üblichen orten um eine bestimmte datei zu suchen – wie z.B. ManPages source bescheibungen usw

 

 

 

#################

 

 

Nach Paketen von Nagios suchen

 

Linux Programm zum dumpen

 

 

 

Im Editor vi / vim entfernt dieser Befehl alle # und $ Kommentarzeichen

Tor Proxy & Polipo

Um andere Applicationen die HTTP Proxies unterstützen zu torifizieren, muss nur auf Polipo gezeigt werden (welcher auf localhost port 8118)
horcht

Webmin & Usermin

https://localhost:10000/

https://localhost:20000/

 

Nagios 3.2.1

http://localhost/nagios3/

blockcontrol

Blockcontrol Defaults:

/usr/lib/blockcontrol/blockcontrol.defaults

irc server standartport 6667

hydra

 

Erstellen eines tar Archives

Das folgende Beispiel Commando erstellt ein tar Archiv Datei php-faq-14-09-12.tar für ein Verzeichnis
/home/php-faq im aktuellen Arbeitsverzeichnis.

/home/php-faq/
/home/php-faq/cleanfiles.sh
/home/php-faq/openvpn-2.1.4.tar.gz
/home/php-faq/php-faq-14-09-12.tar
/home/php-faq/phpmyadmin-2.11.11.3-1.el5.rf.noarch.rpm
/home/php-faq/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

Erklärung der einzelnen Optionen die wir im obigen Befehl zum Erstellen von tar-Archiv-Datei verwendet haben.

c – Creates a new .tar archive file.

v – Verbosely show the .tar file progress.

f – File name type of the archive file.

Erstellen eines komprimierten tar.gz Archives

Um eine komprimierte gzip Archiv Datei zu erstellen, wird die Option –z verwendet. Im Beispiel unterhalb
erstellt der Befehl eine komprimierte MyPics-14-09-12.tar.gz Datei aus dem Verzeichnis /home/MyPics.

(Anmerkung : tar.gz und tgz sind beide sehr ähnlich).

/home/MyPics/
/home/MyPics/Sara-Khan-and-model-Priyanka-Shah.jpg
/home/MyPics/RobertKristenviolent.jpg
/home/MyPics/Justintimerlakenaked.jpg
/home/MyPics/Mileynudephoto.jpg
/home/MyPics/JenniferRobert.jpg
/home/MyPics/katrinabarbiedoll.jpg
/home/MyPics/the-japanese-wife-press-conference.jpg
/home/MyPics/ReesewitherspoonCIA.jpg
/home/MyPics/yanaguptabaresf.jpg

Erstellung eines komprimierten tar.bz2 Archives

The bz2 feature compress and create archive file less than the size of the gzip. The bz2
compression takes more time to compress and decompress files as compared to gzip which takes less time. To create highly
compressed tar file we use option as j. The following example of command will create a Phpfiles-org.tar.bz2
file for a directory /home/php.

(Anmerkung: tar.bz2 und tbz ist das selbe wie tb2).

/home/php/
/home/php/iframe_ew.php
/home/php/videos_all.php
/home/php/rss.php
/home/php/index.php
/home/php/vendor.php
/home/php/video_title.php
/home/php/report.php
/home/php/object.html
/home/php/video.php

Entpacken eines tar Archives

To untar or extract a tar file, just issue following command using option x (extract).

For example the below command will untar the file public_html-14-09-12.tar in present working directory.

If you want untar in a different directory then use option as -C (specified directory).

/home/public_html/videos/
/home/public_html/videos/views.php
/home/public_html/videos/index.php
/home/public_html/videos/logout.php
/home/public_html/videos/all_categories.php
/home/public_html/videos/feeds.xml

Entpacken einer gepackten tar.gz Archiv Datei

To Uncompress tar.gz archive file, just run following command.

If would like to untar in different directory just use option -C and the path of the directory, like we shown in the above
example.

/home/public_html/videos/thumbnails/
/home/public_html/videos/thumbnails/katdeepika.jpg
/home/public_html/videos/thumbnails/katrinabarbiedoll.jpg
/home/public_html/videos/thumbnails/onceuponatime.jpg
/home/public_html/videos/thumbnails/playbutton.png
/home/public_html/videos/thumbnails/ReesewitherspoonCIA.jpg
/home/public_html/videos/thumbnails/snagItNarration.jpg
/home/public_html/videos/thumbnails/Minissha-LinuxLamba.jpg
/home/public_html/videos/thumbnails/Lindsaydance.jpg
/home/public_html/videos/thumbnails/Mileynudephoto.jpg

Entpacken einer gepackten tar.bz2 Archiv Datei

To Uncompress highly compressed tar.bz2 file, just use the following command.

The below example command will untar all the .flv files from the archive file.

/home/public_html/videos/flv/katrinallinux.flv
/home/public_html/videos/flv/Unix-CIA.flv
/home/public_html/videos/flv/dollylinuxbackinbb.flv
/home/public_html/videos/flv/LinuxRobert.flv
/home/public_html/videos/flv/LinuxAwardmovie101125.flv
/home/public_html/videos/flv/Lakme-linux-Week.flv
/home/public_html/videos/flv/Mileylinuxphoto.flv
/home/public_html/videos/flv/Minilinuxssha-Lamba.flv

Inhaltsauflistung eines tar Archives

To list the content of tar archive file, just run the following command with option t (list content).

The below command will list the content of uploadprogress.tar file.

-rw-r–r– chregu/staff 2276 2011-08-15 18:51:10 package2.xml
-rw-r–r– chregu/staff 7877 2011-08-15 18:51:10 uploadprogress/examples/index.php
-rw-r–r– chregu/staff 1685 2011-08-15 18:51:10 uploadprogress/examples/server.php
-rw-r–r– chregu/staff 1697 2011-08-15 18:51:10 uploadprogress/examples/info.php
-rw-r–r– chregu/staff 367 2011-08-15 18:51:10 uploadprogress/config.m4
-rw-r–r– chregu/staff 303 2011-08-15 18:51:10 uploadprogress/config.w32
-rw-r–r– chregu/staff 3563 2011-08-15 18:51:10 uploadprogress/php_uploadprogress.h
-rw-r–r– chregu/staff 15433 2011-08-15 18:51:10 uploadprogress/uploadprogress.c
-rw-r–r– chregu/staff 1433 2011-08-15 18:51:10 package.xml

Inhaltsauflistung eines gepackten tar.gz Archives

Benutzen Sie das folgende Kommando um den Inhalt des Archives tar.gz aufzulisten

-rw-r–r– root/root 0 2012-08-30 04:03:57 staging.php-faq.com-access_log
-rw-r–r– root/root 587 2012-08-29 18:35:12 staging.php-faq.com-access_log.1
-rw-r–r– root/root 156 2012-01-21 07:17:56 staging.php-faq.com-access_log.2
-rw-r–r– root/root 156 2011-12-21 11:30:56 staging.php-faq.com-access_log.3
-rw-r–r– root/root 156 2011-11-20 17:28:24 staging.php-faq.com-access_log.4
-rw-r–r– root/root 0 2012-08-30 04:03:57 staging.php-faq.com-error_log
-rw-r–r– root/root 3981 2012-08-29 18:35:12 staging.php-faq.com-error_log.1
-rw-r–r– root/root 211 2012-01-21 07:17:56 staging.php-faq.com-error_log.2
-rw-r–r– root/root 211 2011-12-21 11:30:56 staging.php-faq.com-error_log.3
-rw-r–r– root/root 211 2011-11-20 17:28:24 staging.php-faq.com-error_log.4

Inhaltsauflistung eines gepackten tar.bz2 Archives

Benutzen Sie das folgende Kommando um den Inhalt des Archives tar.bz2 aufzulisten

drwxr-xr-x root/root 0 2015-09-15 03:05:08 /home/php/
-rw-r–r– root/root 1751 2015-09-15 03:05:08 /home/php/iframe_ew.php
-rw-r–r– root/root 11220 2015-09-15 03:05:08 /home/php/videos_all.php
-rw-r–r– root/root 2152 2015-09-15 03:05:08 /home/php/rss.php
-rw-r–r– root/root 3021 2015-09-15 03:05:08 /home/php/index.php
-rw-r–r– root/root 2554 2015-09-15 03:05:08 /home/php/vendor.php
-rw-r–r– root/root 406 2015-09-15 03:05:08 /home/php/video_title.php
-rw-r–r– root/root 4116 2015-09-15 03:05:08 /home/php/report.php
-rw-r–r– root/root 1273 2015-09-15 03:05:08 /home/php/object.html

Entpacken einer Einzelnen Datei aus einem .tar Archiv

To extract a single file called cleanfiles.sh from cleanfiles.sh.tar use the following command.

cleanfiles.sh

Entpacken einer Einzelnen Datei aus einem gepackten .tar.gz Archiv

To extract a single file php-faqbackup.xml from php-faqbackup.tar.gz archive file, use the command as
follows.

php-faqbackup.xml

Entpacken einer Einzelnen Datei aus einem gepackten .tar.bz2 Archiv

To extract a single file called index.php from the file Phpfiles-org.tar.bz2 use the following option.

/home/php/index.php

Entpacken von mehreren Dateien aus einem tar, tar.gz und tar.bz2 Archivs

To extract or untar multiple files from the tar, tar.gz and tar.bz2 archive file.

For example the below command will extract “file 1” “file 2” from the archive files.

Entpacken ganzer Gruppen von Dateien mittels Wildcard

To extract a group of files we use wildcard based extracting.

For example, to extract a group of all files whose pattern begins with .php from a tar, tar.gz and tar.bz2
archive file.

/home/php/iframe_ew.php
/home/php/videos_all.php
/home/php/rss.php
/home/php/index.php
/home/php/vendor.php
/home/php/video_title.php
/home/php/report.php
/home/php/video.php

Hinzufügen von Dateien oder Verzeichnissen zu einem .tar Archiv

To add files or