Heim > Betrieb und Instandhaltung > Betrieb und Wartung von Linux > Grundlagen des Linux-Systems (2)

Grundlagen des Linux-Systems (2)

PHP中文网
Freigeben: 2017-06-20 11:19:38
Original
2406 Leute haben es durchsucht
Linux-Datenträgerverwaltung
E/A-Ports: E/A-Geräteadresse;
Alles ist eine Datei:
open(), read(), write(), close()
Blockgerät: Block, Zugriffseinheit „Block“, Festplatte
Zeichengerät: char, Zugriffseinheit „Zeichen“, Tastatur
Gerätedatei: mit einem Gerätetreiber verknüpft, um mit dem entsprechenden Hardwaregerät zu kommunizieren
Gerätenummer:
Hauptgerätenummer: Hauptnummer, identifiziert den Gerätetyp
Nebengerätenummer: Nebennummer, identifiziert verschiedene Geräte desselben Typs
Festplattenschnittstellentyp:
Parallel:
IDE: 133 MB/s
SCSI: 640 MB/s
Serieller Anschluss:
SATA: 6 Gbit/s
SAS: 6 Gbit/s
USB: 480 MB/s
U/min: Umdrehungen pro Minute
/dev/DEV_FILE
Gerätedateibenennung des Festplattengeräts:
IDE: /dev/hd
SCSI, SATA, SAS, USB: /dev/sd
Verschiedene Geräte: a-z
/dev/sda, /dev/sdb, ...
Verschiedene Partitionen auf das gleiche Gerät: 1,2, ...
/dev/sda1, /dev/sda5
Mechanische Festplatte:
Spur: Spur
Zylinder: Zylinder
Secotr: Sektor
512 Bytes
So partitionieren Sie:
Nach Zylinder
0 Spur 0 Sektor: 512 Bytes
MBR: Master Boot Record
446 Bytes: Bootloader
64 Bytes: Partitionstabelle
16 Bytes: Identifizieren einer Partition
2 Bytes: 55AA
4 primäre Partitionen
3 primäre Partitionen + 1 Erweiterung (N logische Partitionen)
Logische Partitionen
Partitionsverwaltungstools: fdisk, parted, sfdisk
fdisk: Bei einer Festplatte können nur bis zu 15 Partitionen verwaltet werden
# fdisk -l [-u] [device...]
# fdisk device
Unterbefehl: Verwaltungsfunktionen
p: drucken, vorhandene Partitionen anzeigen;
n: neu, erstellen
d: löschen, löschen
w: schreiben, auf Festplatte schreiben und beenden
q: beenden, Aktualisierung abbrechen und beenden
m: Hilfe anfordern
l: Partitions-ID auflisten
t: Partitions-ID anpassen
Überprüfen ob der Kernel die neue Partition erkannt hat:
# cat /proc/partations
Benachrichtigen Sie den Kernel zur erneuten Partitionierung -Lesen Sie die Festplattenpartitionstabelle:
partx -a /dev/DEVICE
-n M:N
kpartx -a /dev/DEVICE
-f: erzwingen
CentOS 5: Verwendung von partprobe
partprobe [/dev/DEVICE]
Linux-Dateisystemverwaltung:
Linux-Dateisystem: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap
swap: Swap-Partition
CD: iso9660
Windows: fat32, ntfs
Unix : FFS, UFS, JFS2
Netzwerkdateisystem: NFS, CIFS
Clusterdateisystem: GFS2, OCFS2
Verteilte Dateisysteme: Ceph,
Moosefs, Mogilefs, GlusterFS, Lustre
Abhängig darüber, ob es die Funktion „Journal“ unterstützt:
Journal-Dateisystem: ext3, ext4, xfs, ...
Nicht-Journal Dateisystem: ext2, vfat
Komponenten des Dateisystems:
Module im Kernel: ext4, xfs , vfat
Tools zur Benutzerbereichsverwaltung: mkfs.ext4, mkfs.xfs, mkfs.vfat
Linux Virtual Dateisystem: VFS
Dateisystem erstellen:
mkfs-Befehl:
(1) # mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) # mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL': Bezeichnung festlegen
mke2fs: Spezielles Verwaltungstool für Dateisysteme der Ext-Serie
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L 'LABEL'
-j: entspricht -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs - t ext3
-i #: Erstellen Sie einen Inode für jede Anzahl von Bytes im Datenraum; diese Größe sollte nicht kleiner als die Blockgröße sein; >
-N #: Wie viele Inodes für den Datenraum erstellt werden;
-m #: Der Prozentsatz des für Manager reservierten Speicherplatzes; >
-O FEATURE[,...]: Aktiviert die angegebene Funktion
-O ^FEATURE: Deaktiviert die angegebene Funktion
mkswap: Swap-Partition erstellen
mkswap [Optionen] Gerät
-L 'LABEL'
Voraussetzung: Passen Sie die ID seiner Partition auf 82 an;
Andere häufig verwendete Tools:
blkid: Blockgeräteattributinformationen anzeigen
blkid [OPTION]... [ GERÄT]
-U UUID: Finden Sie das entsprechende Gerät basierend auf der angegebenen UUID
-L LABEL: Finden Sie das entsprechende Gerät basierend auf der angegebenes LABEL
e2label: LABEL für die Verwaltung von Dateisystemen der Ext-Serie
# e2label DEVICE [LABEL]
tune2fs: Setzen Sie die Werte der einstellbaren Parameter des Ext-Serie-Dateisystems zurück.
-l: Zeigen Sie die Superblock-Informationen an des angegebenen Dateisystems; Superblock
-L 'LABEL': Datenträgerbezeichnung ändern
-m #: Den Prozentsatz des Speicherplatzes ändern reserviert für Administratoren
-j: Upgrade von ext2 auf ext3
-O: Dateisystemeigenschaften aktivieren oder deaktivieren
-o: Passen Sie die Standard-Mount-Optionen des Dateisystems an
-U UUID: Ändern Sie die UUID-Nummer; dumpe2fs:
-h: Superblock-Informationen anzeigen
Dateisystemerkennung:
fsck: Dateisystemprüfung
fsck.FS_TYPE
fsck -t FS_TYPE
-a: Automatische Fehlerreparatur
-r: Interaktive Fehlerreparatur
Hinweis : FS_TYPE muss vom gleichen Typ sein wie die vorhandenen Dateien auf der Partition;
e2fsck: Ein spezielles Erkennungs- und Reparaturtool für Dateien der Ext-Serie
-y: Die automatische Antwort ist ja;
-f: Reparatur erzwingen;
Der Vorgang, ein zusätzliches Dateisystem mit einem vorhandenen Verzeichnis im Root-Dateisystem zu verknüpfen und dieses Verzeichnis dann als Zugriffspunkt für andere Dateien zu verwenden, wird als Mounten bezeichnet
Der Vorgang des Aufhebens dieser Zuordnung wird als Deinstallation bezeichnet.
Verknüpfen Sie das Gerät mit dem Bereitstellungspunkt : Mount Point
mount
Bei der Deinstallation: Sie können das Gerät oder den Mount Point verwenden
umount
Hinweis: Die Originaldateien unter dem Mountpunkt werden nach Abschluss der Bereitstellung vorübergehend ausgeblendet
Mount-Methode: mount DEVICE MOUNT_POINT
mount: Zeigt alle vom aktuellen System gemounteten Geräte an, indem Sie die Datei /etc/mtab anzeigen
mount [-fnrsvw] [-t vfstype] [-o Optionen] Geräteverzeichnis
Gerät: Geben Sie das Gerät an, das gemountet werden soll;
(1) Gerätedatei: zum Beispiel /dev/sda5
(2) Datenträgerbezeichnung: -L 'LABEL', zum Beispiel -L 'MYDATA'
(3) UUID, -U 'UUID': Zum Beispiel -U '0c50523c-43f1-45e7-85c0-a126711d406e'
( 4) Pseudo-Dateisystemnamen: proc, sysfs, devtmpfs, configfs
dir: Der Mountpunkt
existiert im Voraus; es wird empfohlen, ein leeres Verzeichnis zu verwenden ;
Das vom Prozess verwendete Gerät kann nicht ausgehängt werden
Allgemeine Befehlsoptionen:
-t vsftype: Geben Sie den Dateisystemtyp auf dem Gerät an, das gemountet werden soll;
-r: readonly, read-only mount;
-w: lesen und schreiben, read-write mount; etc/mtab;
-a: Alle Geräte automatisch mounten (in der Datei /etc/fstab definiert, und die Mount-Option verfügt über die Funktion „Auto-Mount“) )
-L 'LABEL': Geben Sie das Gerät an, das mit der Datenträgerbezeichnung gemountet werden soll.
-U 'UUID': Geben Sie an Gerät, das mit der UUID gemountet werden soll;
-B, --bind: Verzeichnis an ein anderes Verzeichnis binden; >Hinweis: Zeigen Sie den vom Kernel verfolgten gemounteten Inhalt an. Alle Geräte: cat /proc/mounts
-o Optionen: (Optionen zum Mounten des Dateisystems)
async: asynchroner Modus;
sync: synchroner Modus;
atime/noatime: einschließlich Verzeichnisse und Dateien;
diratime/nodiratime: Verzeichniszugriffszeitstempel
auto/noauto: ob automatisches Mounten unterstützt werden soll
exec/ noexec: Ob die Ausführung von Anwendungen auf dem Dateisystem als Prozess unterstützt werden soll
dev/nodev: Ob die Verwendung von Gerätedateien auf diesem Dateisystem unterstützt werden soll ;
suid/nosuid:
remount: Remount
ro:
rw :
user/nouser: Ob normale Benutzer dieses Gerät mounten dürfen
acl: Aktivieren die acl-Funktion in diesem Dateisystem
Hinweis: Die oben genannten Optionen können mehrmals gleichzeitig verwendet werden, getrennt durch Kommas;
Standard-Mount-Optionen: defaults
rw, suid, dev, exec, auto, nouser und async
Deinstallationsbefehl:
# umount DEVICE
# umount MOUNT_POINT
Zeigen Sie die Prozesse an, die auf das angegebene Dateisystem zugreifen:
# Fuser -v MOUNT_POINT
Alle Prozesse beenden, die auf das angegebene Dateisystem zugreifen:
# Fuser -km MOUNT_POINT
Swap-Partition mounten:
Aktivieren: swapon
swapon [OPTION]... [GERÄT]
-a: Alle Swap-Partitionen aktivieren;
-p PRIORITÄT: Priorität angeben
Deaktivieren: Swapoff [OPTION ]... [GERÄT]
Speicherplatznutzungsstatus:
frei [OPTION]
-m: in MB
-g: in GB
Werkzeug für Anzeigen von Informationen wie der Speicherplatznutzung im Dateisystem:
df:
-h: menschenlesbar
-i:Inodes statt Blöcke
-P: Ausgabe im Posix-kompatiblen Format
Ansicht der Gesamtspeicherplatznutzungsstatus eines Verzeichnisses:
du:
du [OPTION].. 🎜>
-h: für Menschen lesbar
-s: Zusammenfassung
Beschriebene Befehle: mount, umount, free, df, du, swapon, swapoff, Fuser
Konfigurationsdatei für die Dateimontage: /etc/fstab
Jede Zeile definiert ein Dateisystem, das gemountet werden soll;
Das Gerät oder Pseudogerät, das gemountet werden soll. Dateisystem
Mount-PunktDateisystemtyp Mount-OptionenDump-Häufigkeit Selbsttestsequenz
Zu mountendes Gerät oder Pseudodateisystem:
Gerätedatei, LABEL(LABEL=""), UUID( UUID=""), Name des Pseudodateisystems (proc, sysfs )
Mount-Optionen:
Standardeinstellungen
Dump-Häufigkeit:
0: Keine Sicherung
1: Jeden Tag Dump
2: Jeden zweiten Tag entsorgen
Selbstprüfungsreihenfolge:
0: Keine Selbstprüfung
1: Zuerst Selbstprüfung; im Allgemeinen verwendet rootfs 1; Weitere Konzepte zum Dateisystem:
Inode: Indexknoten, Indexknoten
Adresszeiger:
Direkter Zeiger:
Indirekter Zeiger:
Zeiger der dritten Ebene:
Inode-Bitmap: Statusinformationen, die angeben, ob jeder Inode inaktiv ist;
Verknüpft Datei:
Hardlink:
Verzeichnis kann nicht korrigiert werden;
kann nicht korrigiert werden Partitionen;
zeigt auf mehrere verschiedene Pfade zum gleichen Inode; das Erstellen eines festen Links zu einer Datei ist der Inode, der einen neuen Referenzpfad erstellt und so seine Referenzanzahl erhöht; 🎜>
Symbolischer Link:
kann für ein Verzeichnis ausgeführt werden;
kann partitionsübergreifend sein;
zeigt auf den Pfad einer anderen Datei; die Länge der Pfadzeichenfolge, auf die verwiesen wird, erhöht oder verringert nicht die Referenzanzahl des Zieldatei-Inodes; 🎜>
ln [-sv] SRC DEST
-s: symbolischer Link
-v: ausführlich
Auswirkungen von Dateiverwaltungsvorgängen auf Dateien:
Dateilöschung:
Dateikopie:
Dateiverschiebung:

1. Erstellen Sie ein 20G-Dateisystem mit einem Block Größe von 2048 und Datei Das System ist ext4, die Datenträgerbezeichnung ist TEST und diese Partition muss nach dem Booten automatisch im Verzeichnis /testing gemountet werden und verfügt standardmäßig über die ACL-Mounting-Option

(1) Erstellen Sie eine 20G-Partition;
(2) Format:
mke2fs -t ext4 -b 2048 -L 'TEST' /dev/DEVICE
(3) Bearbeiten Sie die Datei /etc/fstab
LABEL='TEST'
/testing ext4 defaults, acl 0 0
3. Schreiben Sie a Skript zum Ausführen der folgenden Funktionen:
(1) Alle vom aktuellen System erkannten Festplattengeräte auflisten
(2) Wenn die Nummer Anzahl der Festplatten ist 1, die Informationen zur Speicherplatznutzung werden angezeigt. $disks -eq 1 ]; dann
fdisk -l /dev/[hs]da
else
fdisk -l $(fdisk -l /dev /[sh]d[a-z] | grep -o "^Disk /dev/[sh]d[a-]" | tail -1 | cut -d ' ' -f2)
fi
Benutzerinteraktion der Bash-Skriptprogrammierung:
read [option]... [name ..]
-p 'PROMPT'
-t TIMEOUT
bash -n /path/to/some_script
Syntaxfehler in Skripten erkennen
bash - x /path/to/some_script
Debug-Ausführung
Beispiel:
#!/bin/bash
# Version: 0.0.1
# Autor: MaEdu
# Beschreibung: Lesetest
read -p "Geben Sie ein Festplatten-Special ein Datei: " diskfile
[ -z "$diskfile" ] && echo "Fool" && exit 1
if fdisk -l |. grep "^Disk $diskfile" &> /dev/null;
echo „Falsche Festplatten-Spezialdatei.“
Exit 2
fi
RAID:
Redundante Arrays kostengünstiger Festplatten
Redundante Arrays kostengünstiger Festplatten RAID
Verbesserung der E/A-Fähigkeiten:
Paralleles Lesen und Schreiben der Festplatte;
Verbesserte Haltbarkeit ;
Festplattenredundanz zur Erzielung von
Ebene: Multiblock-Festplatten funktionieren anders, wenn sie zusammen organisiert sind;
RAID-Implementierungsmethode:
Externes Festplatten-Array: Bereitstellung von Anpassungsmöglichkeiten durch Erweiterungskarten
Internes RAID: Motherboard integrierter RAID-Controller
Software-RAID:
Level: Level
RAID-0: 0, Stripeset-Volume, Strip;
RAID-1: 1, gespiegeltes Volume, Spiegel;
RAID- 2
..
RAID-5:
RAID-6
RAID10
RAID01
RAID-0 :
Lese- und Schreibleistung verbessert;
Verfügbarer Speicherplatz: N*min(S1,S2,...)
Keine Fehlertoleranz
Mindestanzahl an Festplatten: 2, 2+
RAID -1:
Leseleistung verbessert, Schreibleistung leicht gesunken;
Verfügbarer Speicherplatz: 1*min(S1,S2,.. .)
Mit Redundanzfähigkeit
Mindestanzahl an Festplatten: 2, 2+
RAID -4:
1101, 0110, 1011
RAID-5:
Verbesserte Lese- und Schreibleistung
Verfügbarer Platz: (N-1)*min(S1,S2,...)
Fehlertoleranz: 1 Festplatte
Mindestanzahl an Festplatten: 3, 3+
RAID-6:
Verbesserte Lese- und Schreibleistung
Verfügbarer Speicherplatz: (N-2)*min(S1, S2,...)
Fehlertoleranz: 2 Festplatten
Mindestanzahl an Festplatten: 4, 4+
Gemischter Typ
RAID-10:
Lese- und Schreibleistung verbessert
Verfügbarer Platz: N*min(S1,S2,...)/2
Fehlertolerant: jeder Spiegelsatz kann höchstens eine fehlerhafte Festplatte haben;
Mindestanzahl an Festplatten: 4, 4+
RAID-01:
RAID-50, RAID7
JBOD: Just a Bunch Of Disks
Funktion: Kombinieren Sie den Speicherplatz mehrerer Festplatten zu einem großen zusammenhängenden Speicherplatz
Verfügbarer Speicherplatz: Summe(S1,S2,...)
Gemeinsame Level: RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
Implementierungsmethode:
Hardware-Implementierungsmethode
Software-Implementierungsmethode
Implementierung von Software-RAID auf CentOS 6:
Kombiniert mit MD (Multi Devices) im Kernel
mdadm: modales Tool
Befehlssyntaxformat: mdadm [Modus] [Optionen]
Unterstützte RAID-Level: LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;
Modus:
Erstellen: -C
Zusammenbauen: -A
Überwachen: -F
Management: -f, -r, -a
: /dev/md#
: beliebiges Blockgerät
-C: Erstellungsmodus
-n #: Verwenden Sie # Blockgeräte, um dieses RAID zu erstellen.
-l #: Geben Sie die zu erstellende RAID-Stufe an
-a {yes|no}: Automatisches Erstellen der Gerätedatei des Ziel-RAID-Geräts
-c CHUNK_SIZE: Geben Sie die Blockgröße an
-x #: Geben Sie die Anzahl der freien Festplatten an;
Zum Beispiel: Erstellen Sie ein RAID5 mit 10G freiem Speicherplatz ;
-D: Detaillierte Informationen zum Raid anzeigen
mdadm -D /dev/md#
Verwaltungsmodus:
-f: markiert die angegebene Festplatte als beschädigt; -a: Festplatte hinzufügen
-r: Festplatte entfernen
Beobachten Sie den Status von md:
cat /proc/mdstat
MD-Gerät stoppen:
mdadm -S /dev /md#
watch-Befehl:
-n #: Aktualisierungsintervall, Einheit ist Sekunden;
watch -n# 'COMMAND'
LVM2:
LVM: Logical Volume Manager, Version: 2
dm: Device Mapper, Konvertieren eines oder Weitere zugrunde liegende Blockgeräte. Module, die in einem logischen Gerät organisiert sind. mapper/VG_NAME -LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
PV-Management-Tool:
PVS: Kurze PV-Informationen display
pvdisplay: Detaillierte Informationen zu pv anzeigen
pvcreate /dev/DEVICE: pv erstellen
vg-Verwaltungstool:
vgs
vgdisplay
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
Führen Sie zuerst pvmove aus
vgremove
lv-Verwaltungstool:
lvs
lvdisplay
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
lvremove /dev /VG_NAME/LV_NAME
Erweitertes logisches Volumen:
# lvextend -L [+]#[mMgGtT] / dev/VG_NAME/LV_NAME
# resize2fs /dev/VG_NAME/LV_NAME
Logisches Volumen reduzieren:
# umount /dev/VG_NAME/LV_NAME
# e2fsck -f /dev/VG_NAME/LV_NAME
# resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
# lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
# mount
snapshot: snapshot
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name
Dateisystem Montageverwendung:
Montage des optischen Datenträgergeräts:
Disc-Gerätedatei:
IDE: /dev/hdc
SATA: /dev/sr0
Symbolische Linkdatei:
/dev/cdrom
/dev/cdrw
/dev/dvd
/dev/dvdrw
mount -r /dev/cdrom /media/cdrom
umount /dev/cdrom
dd-Befehl: Datei konvertieren und kopieren
Verwendung:
dd if=/PATH/FROM /SRC of=/PATH/TO/DEST
bs=#: Blockgröße, Kopiereinheitsgröße;
count=#: kopieren Wie viele bs;
Datenträgerkopie:
dd if=/dev/sda of=/dev/sdb
Backup MBR
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
Zerstöre den Bootloader im MBR:
dd if=/dev/zero of=/dev /sda bs=256 count=1
Zwei spezielle Geräte:
/dev/null: Datenschwarzes Loch ;
/dev/zero: Null-Spuckmaschine;
btrfs-Dateisystem:
Technische Vorschau
Btrfs (B-tree, Butter FS, Better FS) , GPL, Oracle, 2007, CoW;
ext3/ext4, xfs
Kernfunktionen:
Unterstützung mehrerer physischer Volumes: Btrfs können aus mehreren zugrunde liegenden physischen Volumes bestehen; unterstützt RAID mit Online-„Hinzufügen“, „Entfernen“ und „Ändern“;
Copy-on-Write-Update-Mechanismus (CoW): Kopieren, Aktualisieren und Ersetzen von Zeigern anstelle von „In-Place“-Updates
Daten- und Metadaten-Prüfcode: Prüfsumme
Subvolume: sub_volume
Snapshot: Snapshot, der Snapshots unterstützt;
Transparente Komprimierung:
Dateisystemerstellung:
mkfs.btrfs
-L 'LABEL '
-d : Raid0, Raid1, Raid5, Raid6, Raid10, Single
-m : Raid0, Raid1, Raid5, Raid6, Raid10, Single, Dup
-O
-O list-all : Liste alle unterstützten Funktionen;
Eigenschaftsansicht:
btrfs-Dateisystem anzeigen
Dateisystem mounten:
mount -t btrfs /dev/sdb MOUNT_POINT
Transparenter Komprimierungsmechanismus:
mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
Unterbefehle: Dateisystem , Gerät, Balance, Subvolumen
Komprimierungs-, Dekomprimierungs- und Archivierungstools
komprimieren/ Dekomprimieren: .Z
gzip/gunzip: .gz
bzip2/bunzip2: .bz2
xz/unxz: .xz
zip/unzip
tar, cpio
1. gzip/gunzip
gzip [OPTION]... DATEI...
-d: Dekomprimieren, entspricht gunzip
-c: Ergebnis in die Standardausgabe ausgeben;
-#: 1-9 , geben Sie das Komprimierungsverhältnis an;
zcat: Zeigen Sie den Inhalt der Textdatei ohne explizite Erweiterung an;
2. bzip2/bunzip2/bzcat
bzip2 [OPTION]... DATEI...
-k: behalten, die Originaldatei behalten;
-d: dekomprimieren
-#: 1-9, Komprimierungsverhältnis, Standard ist 6;
bzcat: ohne explizite Erweiterung Zeigen Sie die Textdatei an Inhalt;
3. xz/unxz/xzcat
bzip2 [OPTION]. .. DATEI ...
-k: behalten, die Originaldatei behalten
-d: dekomprimieren
-#: 1-9, Komprimierungsverhältnis, Standard ist 6;
xzcat: ohne explizite Erweiterung Zeigen Sie den Inhalt der Textdatei an ;
4. tar
tar [OPTION]..
(1) Archiv erstellen
tar -c -f /PATH/TO/SOMEFILE.tar FILE ...
tar -cf /PATH/TO/SOMEFILE.tar FILE...
(2) Sehen Sie sich die Dateiliste im Archiv an
tar -t -f /PATH/TO/SOMEFILE.tar
(3) Archiv erweitern
tar -x -f /PATH/TO/SOMEFILE.tar
tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/TO/DIR
Kombiniert mit Komprimierungstools, um Folgendes zu erreichen: Archivieren und komprimieren
-j: bzip2, -z: gzip, -J: xz
Bash-Skripting:
if-Anweisung, bash -n, bash -x
BEDINGUNG :
Bash-Befehl:
Verwenden Sie das Ausführungsstatusergebnis des Befehls;
Erfolgreich : wahr
Fehler: flase
Die Bedeutung von Erfolg oder Misserfolg: hängt vom verwendeten Befehl ab;
Einzelner Zweig:
wenn BEDINGUNG; dann
wenn- wahr
fi
Doppelzweig:
wenn BEDINGUNG dann
if-true
else
if-false
fi
Mehrere Zweige:
wenn BEDINGUNG1; dann
if-true
elif CONDITION2; then
if-ture
elif CONDITION3; then
if-ture
...
esle
alles falsch
fi
Beurteilen Sie Bedingung für Bedingung, Wann die „wahre“ Bedingung wird zum ersten Mal angetroffen, ihre Verzweigung wird ausgeführt und endet dann
Beispiel: Der Benutzer gibt den Dateipfad ein und das Skript bestimmt; der Dateityp;
#!/bin/bash
#
read - p "Geben Sie einen Dateipfad ein: " Dateiname
if [ -z "$filename" ] then
echo „Verwendung: Geben Sie einen Dateipfad ein.“
exit 2
fi
if [ ! -e $filename ]; > Exit 3
fi
if [ -f $filename ] then
echo „Eine gemeinsame Datei.“
elif [ -d $filename ]; then
echo „Ein Verzeichnis.“
elif [ -L $filename ]; then
echo „Eine symbolische Datei.“
else
echo „Anderer Typ.“
fi
Hinweis: if-Anweisungen können verschachtelt werden;
Schleife: for, while, Until
Schleifenkörper: to be ausgeführter Code; kann n-mal ausgeführt werden;
Eintrittsbedingung:
Austrittsbedingung:
for-Schleife:
für Variablennamen in der Liste; do
Schleifenkörper
fertig
Ausführungsmechanismus:
Elemente in der Liste dem „Variablennamen“ zuweisen „nacheinander“; Der Schleifenkörper wird einmal nach jeder Zuweisung ausgeführt; bis die Elemente in der Liste erschöpft sind, endet die Schleife;
Beispiel: Addiere 10 Benutzer, Benutzer1- Benutzer10; Passwort ist dasselbe wie Benutzername;
if [ ! $UID -eq 0 ];
Ausgang 1
fi
für i in {1..10};
if id user$i &> /dev/null then
echo „user$i existiert.“
sonst
useradd user$i
if [ $? eq 0 ]; then echo "user$i" | „Benutzer hinzufügen$i fertig .“
fi
fi
fertig
Listengenerierungsmethode:
(1) Geben Sie die Liste direkt an; >(2) Liste der ganzen Zahlen:
(a) {start..end}
(b) $(seq [start [ Schritt]] Ende)
(3) Befehl zum Zurückgeben einer Liste
$(COMMAND)
(4) glob
(b) Variablenreferenz
$@, $*
Beispiel: Bestimmen Sie den Typ aller Dateien unter einem bestimmten Pfad
#!/bin/bash
#
für Datei in $(ls /var); do
if [ -f /var/$file ]; then
echo „Common file.“
elif [ -L /var/ $file ]; then
echo „Symbolische Datei.“
elif [ -d /var/$file ] dann
echo „Verzeichnis.“
sonst
echo „Anderer Typ.“
fi
erledigt
Beispiel:
#!/bin/bash
#
declare -i estab=0
declare -i listen=0
declare -i other=0
for state in $( netstat -tan | grep "^tcp>" | awk '{print $NF}'); do
if [ "$state" == 'ESTABLISHED' ]; then
let etab++
elif [ "$state" == 'LISTEN' ]; 🎜>
lass zuhören++
sonst
lass andere++
fi
fertig
echo „ESTABLISHED: $estab“
echo „LISTEN : $listen"
echo „Unbekannt: $other"
/etc/ Es gibt mehrere Dateien, die mit K und S beginnen, im Verzeichnis rc.d/rc3.d.
liest jede Datei separat und die Dateien, die mit K beginnen, werden als Dateien ausgegeben. die mit S beginnende Datei wird als Dateiname plus Anfang ausgegeben;
"K34filename stop"
"S66filename start"
Linux-Paketverwaltung:
API: Anwendungsprogrammierschnittstelle
POSIX: Portable OS
Programmquellcode --> --> Assembly--> Link
Statische Zusammenstellung:
Geteilte Zusammenstellung: .so
ABI: Application Binary Interface
Windows ist nicht mit Linux kompatibel
Virtualisierung auf Bibliotheksebene:
Linux: WINE
Windows: Cywin
Entwicklung auf Systemebene
C
C++
Entwicklung auf Anwendungsebene
Java
Python
PHP
Perl
Ruby
Komponenten einer Binäranwendung:
Binärdateien, Bibliotheksdateien, Konfigurationsdateien , Hilfedateien
Paketmanager:
debian: deb, dpt
redhat: rpm, rpm
rpm: Redhat Package Manager
RPM ist Package Manager
Gentoo
Archlinux
Quellcode: name-VERSION.tar.gz
VERSION: major.minor.release
RPM-Paketbenennungsmethode:
name-VERSION-release.arch.rpm
VERSION: Major.Minor.Release
release.arch:
release: release.OS
zlib-1.2 .7-13.el7. i686.rpm
Gemeinsamer Bogen:
x86: i386, i486, i586, i686
x86_64: x64, x86_64, amd64
powerpc: ppc
Folgen Sie Plattformunabhängig: noarch
testapp: Entpacken
testapp-VERSION-ARCH.rpm: Hauptpaket
testapp-devel - VERSION-ARCH.rpm: Support-Paket
testapp-testing-VERSION-ARHC.rpm
Paket zwischen: Es gibt Abhängigkeiten
X, Y, Z
yum: Front-End-Tool für RPM-Paketmanager
apt-get: Deb-Paketmanager-Frontend-Tool; zypper: RPM-Frontend-Verwaltungstool auf Suse; 🎜 >
dnf: Fedora 22+ rpm-Paketmanager-Frontend-Verwaltungstool
Zeigen Sie die Bibliotheksdateien an, von denen Binärprogramme abhängen:
ldd /PATH/TO/BINARY_FILE
Auf diesem Computer geladene Bibliotheksdateien verwalten und anzeigen:
ldconfig
/sbin/ldconfig -p: Zeigt alle verfügbaren Bibliotheksdateinamen und Dateipfadzuordnungen an, die auf diesem Computer zwischengespeichert wurden;
Die Konfigurationsdateien sind: /etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
Cache-Datei: /etc/ld.so.cache
Paketverwaltung:
Funktion : Kompiliert jede Komponentendatei der Anwendung in eine oder mehrere Paketdateien, um Verwaltungsvorgänge wie Installation, Deinstallation, Abfrage, Aktualisierung und Überprüfung des Pakets schnell und einfach durchzuführen >
1. Programmkomponentenliste (einzigartig für jedes Paket)
Dateiliste
Bei der Installation oder Deinstallation des laufenden Skripts
2. Datenbank (öffentlich)
Paketname und -version
Abhängigkeiten ;
Funktionsbeschreibung
Der Dateipfad und die Prüfcodeinformationen jeder durch die Installation generierten Datei; 🎜>
Möglichkeiten zum Verwalten von Paketen:
Verwenden Sie den Paketmanager: rpm
Verwenden Sie Front-End-Tools : lecker, dnf
Möglichkeiten, das Paket zu erhalten:
(1) Vom System veröffentlichte CD oder offizieller Server;
CentOS-Spiegel:
(2) Offizielle Website des Projekts
(3) Drittorganisation:
Fedora-EPEL
Suchmaschine:
(4) Machen Sie Ihr eigenes
Vorschläge: Überprüfen Sie seine Legitimität
Quellenlegitimität
Paketintegrität; rpm-Befehlsverwaltungspaket auf dem CentOS-System:
Installation, Deinstallation, Upgrade, Abfrage, Überprüfung, Datenbankwartung
Installation:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-v: verbose
-vv:
-h: Zeigt den Fortschritt der Paketverwaltung mit # an; jedes # steht für 2 % Fortschritt
rpm -ivh PACKAGE_FILE ...
[Installationsoptionen]
--test: Testen Sie die Installation, führen Sie den Installationsprozess jedoch nicht aus.
--nodeps: Abhängigkeiten ignorieren 🎜>
--replacepkgs: Neu installieren;
--nosignature: Quelllegitimität nicht überprüfen;
--nodigest: Paketintegrität nicht überprüfen
--noscipts: Paketskriptfragmente nicht ausführen; >
%pre: Vorinstallationsskript; --nopre
%post: Nachinstallationsskript; --nopost
%preun: Skript vor der Deinstallation; 🎜>
Upgrade:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm { -F|--freshen} [install-options] PACKAGE_FILE ...
upgrage: „Upgrade“, wenn das alte Versionspaket installiert ist; falls nicht vorhanden. Wenn die alte Version des Pakets installiert ist, dann „installieren“;
freeshen: Wenn die alte Version des Pakets installiert ist, dann „aktualisieren“; Die Version des Pakets ist nicht vorhanden. Der Upgrade-Vorgang wird nicht ausgeführt
rpm -Fvh PACKAGE_FILE ...
--oldpackage: downgrade;
--force: Aktualisierung erzwingen;
Hinweis: (1) Aktualisieren Sie den Kernel nicht. Linux unterstützt die Koexistenz mehrerer Kernelversionen. Daher wird empfohlen, die neue Version direkt zu installieren Version des Kernels
(2) Wenn das Originalpaket Die Konfigurationsdatei wurde nach der Installation geändert, die gleiche Konfigurationsdatei wird von der neuen Version nicht geändert Überschreiben Sie direkt die Konfigurationsdatei der alten Version, aber die Datei der neuen Version bleibt nach dem Umbenennen erhalten (FILENAME.rpmnew);
Abfrage:
rpm {-q|--query} [select-options] [query-options]
[select -options]
-a: alle Pakete
-f: Zeigt an, von welchem ​​Paket die angegebene Datei generiert wurde
-p /PATH/TO/PACKAGE_FILE: Abfrage nach Paketdateien, die noch nicht installiert wurden Operation
--whatprovides CAPABILITY: Abfrage, von welchem ​​Paket die angegebene CAPABILITY bereitgestellt wird
--whatrequires CAPABILITY: Abfrage, von welchem ​​Paket die angegebene CAPABILITY abhängt; 🎜>
[query-options]
--changelog: Abfrage des Änderungsprotokolls des RPM-Pakets
-c: Abfrage der Konfigurationsdatei des Programms
-d: Abfrage der Dokumentation des Programms
-i: Informationen
-l: Alle nach der Installation des angegebenen Pakets generierten Dateien anzeigen
--scripts: Skriptfragmente, die mit dem Paket geliefert werden
-R: Fragen Sie die FÄHIGKEIT ab, von der das angegebene Paket abhängt.
-- Bietet: Listet die FÄHIGKEIT auf, die vom angegebenen Paket bereitgestellt wird
Verwendung:
-qi PAKET, -qf DATEI, -qc PAKET, -ql PAKET, -qd PAKET
-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...
-qa
Deinstallieren:
rpm {-e|--erase} [--allmatches] [--nodeps ] [--noscripts]
[-- notriggers] [--test] PACKAGE_NAME ...
Verifizierung:
rpm {-V|-- überprüfen} [select-options] [verify-options]
S-Dateigröße unterscheidet sich
M-Modus unterscheidet sich ( enthält Berechtigungen und Dateityp)
5 Digest (früher MD5-Summe) unterscheidet sich
D Nichtübereinstimmung der Haupt-/Nebennummern des Geräts
L readLink(2)-Pfad stimmt nicht überein
U Benutzereigentum ist unterschiedlich
G Gruppeneigentum ist unterschiedlich
P-Fähigkeiten sind unterschiedlich
Authentizitäts- und Integritätsüberprüfung:
Integritätsüberprüfung: SHA256
Überprüfung der Quellenlegalität: RSA
Verschlüsselung mit öffentlichem Schlüssel:
Symmetrische Verschlüsselung: Verschlüsselung und Entschlüsselung verwenden denselben Schlüssel;
Asymmetrische Verschlüsselung: Schlüssel sind Paare,
öffentlicher Schlüssel: öffentlicher Schlüssel, offen für alle
geheimer Schlüssel: privater Schlüssel, kann nicht öffentlich gemacht werden
Import der erforderliche öffentliche Schlüssel:
rpm --import /PATH/FROM/GPG-PUBKEY-FILE
Key Von der CentOS 7-Distributions-CD bereitgestellte Datei: RPM-GPG-KEY -CentOS-7
Datenbankneuerstellung:
rpm {--initdb|--rebuilddb}
initdb: initialization
Wenn die Datenbank vorher nicht existiert, erstellen Sie sie andernfalls; Führen Sie keine Operation aus.
rebuilddb: Erstellen Sie die Datenbank direkt neu, unabhängig davon, ob sie derzeit vorhanden ist oder nicht;
Rezension: Linux-Implementierung der Programmpaketverwaltung, RPM-Paketmanager
RPM-Befehl zur Implementierung der Programmverwaltung :
Installation: -ivh , --nodeps, --replacepkgs
Deinstallation: -e, --nodeps
Upgrade: -Uvh, -Fvh, -- nodeps, --oldpackage
Abfrage: -q, -qa, -qf, -qi, -qd , -qc, -q --scripts, -q --changlog, - q --provides, -q --requires
Verifizierung: -V
GPG-Schlüssel importieren: --import, -K, --nodigest, --nosignature
Datenbankrekonstruktion: --initdb, -- rebuilddb
Linux-Programm Paketverwaltung (2)
CentOS: yum, dnf
URL: ftp: //172.16.0.1/pub/
LECKER: gelb dog, Yellowdog Update Modifier
yum-Repository: yum repo
speichert viele RPM-Pakete und zugehörige Metadatendateien des Pakete (in einem bestimmten Verzeichnis abgelegt: repodata);
Dateiserver:
ftp://
http: //
nfs://
file:///
yum-Client:
Konfigurationsdatei:
/etc/yum. conf: Bietet eine gemeinsame Konfiguration für alle Repositorys
/etc/yum.repos.d/*.repo: Bietet Konfiguration für den Warehouse-Verweis
Definition des Warehouse-Verweisens:
[repositoryID]
name=Ein Name für dieses Repository
baseurl=url ://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
Der Standardwert ist: Roundrobin, was zufällige Auswahl bedeutet;
cost=
Der Standardwert ist 1000
leckere Quelle im Klassenzimmer: http://172.16.0.1 /cobbler/ks_mirror/CentOS-6.6-x86_64/
CentOS 6.6 Verwendung des yum-Befehls:
yum [Optionen] [Befehl] [Paket ...]
       Befehl ist einer von:
        * install package1 [package2 ] [...]
        * update-to [package1] [package2] [...]
        * update-to [package1] [package2] [...]
        * Update überprüfen
        * Upgrade [Paket1] [Paket2] [...]
        * Upgrade auf [Paket1] [Paket2] [...]
        * distribution-synchronization [Paket1] [Paket2] [...]
        * entfernen | Paket1 [Paket2] löschen [...]
        * Liste [...]
        * Info [...]
        * bietet | whatprovides feature1 [feature2] [...]
        * clean [ Pakete | Metadaten | Ablaufcache | rpmdb | Plugins | alle ]
        * makecache
        * groupinstall group1 [group2] [...]
        * groupupdate group1 [group2] [...]
* Gruppenliste [versteckt] [Gruppenplatzhalter] [...]
        * Gruppe entfernen Gruppe1 [Gruppe2] [...]
        * Gruppeninfo Gruppe1 [...]
* Suche string1 [string2] [...]
        * Shell [Dateiname]
        * gelöstep dep1 [dep2] [...]
      * localinstall rpmfile1 [rpmfile2 ] [...]
           (nur aus Legacy-Gründen gepflegt – install verwenden)
        * localupdate rpmfile1 [rpmfile2] [...]
           (aus Legacy-Gründen gepflegt nur - Update verwenden)
        * Paket1 [Paket2] neu installieren [...]
        * Paket1 [Paket2] herunterstufen [...]
        * Paket1 [Paket2] aus der Liste entfernen ] [...]
        * repolist [all|enabled|disabled]
        * version [ all | installiert | verfügbar | Gruppe-* | nogroups* | Gruppenliste | Gruppeninfo ]
        * Verlauf [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
        * prüfen
        * help [Befehl]
    显示仓库列表:
    repolist [all|enabled|disabled]
    显示程序包:
    list
    # yum list [all | glob_exp1] [glob_exp2] [...]
    # yum list {available|installed|updates} [glob_exp1] [...]
    安装程序包:
    Paket1 [Paket2] installieren [...]
    Paket1 [Paket2] neu installieren ] [...]  (重新安装)
    升级程序包:
    update [package1] [package2] [...]
    downgrade package1 [package2] [...] (降级)
    检查可用升级:
    Check-Update
    卸载程序包:
    Entfernen | Paket1 [Paket2] löschen [...]
    查看程序包information:
    Info [...]
  whatprovides feature1 [feature2] [...]
    清理本地缓存:
   
clean [ Pakete | Metadaten | Ablaufcache | rpmdb | Plugins | alle ]
    构建缓存:
   
makecache
    搜索:
Suchzeichenfolge1 [Zeichenfolge2] [...]
   
以指定的关键字搜索程序包名及Zusammenfassung信息;
Zeigen Sie die Funktionen an, von denen das angegebene Paket abhängt:
deplist package1 [package2] [...]
Yum-Transaktion anzeigen Verlauf:
Verlauf [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
Lokale Pakete installieren und aktualisieren:
* localinstall rpmfile1 [rpmfile2] [...]
(wird nur aus Legacy-Gründen beibehalten – install verwenden)
* localupdate rpmfile1 [rpmfile2] [...]
(nur aus Legacy-Gründen beibehalten – Update verwenden)
Paketverwaltung Zugehörige Befehle:
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [ groupwildcard ] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
Wie So verwenden Sie die CD als lokales Yum-Repository:
(1) Hängen Sie die CD in ein Verzeichnis ein, z. B. /media/cdrom
# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) Konfigurationsdatei erstellen
[CentOS7]
name=
baseurl=
gpgcheck=
aktiviert=
Yum-Befehlszeilenoptionen:
--nogpgcheck: GPG-Prüfung deaktivieren;
-y: automatische Antwort ist „Ja“;
-q: Silent-Modus --disablerepo=repoidglob: temporär Deaktivieren Sie das hier angegebene Repo;
--enablerepo=repoidglob: Aktivieren Sie das hier angegebene Repo vorübergehend;
--noplugins: Deaktivieren Sie alle Plug-Ins -ins;
In der Repo-Konfigurationsdatei von yum verfügbare Variablen:
$releasever: die Hauptversionsnummer der aktuellen Betriebssystemversion; >
$arch: Plattform
$basearch: Basisplattform
$YUM0- $YUM9
$releasever/$basearch/os
Yum-Repository erstellen:
createrepo [Optionen]
Paketkompilierung und Installation:
testapp-VERSION-release.src - -> Verwenden Sie nach der Installation den Befehl rpmbuild, um ein RPM-Paket im Binärformat zu erstellen, und installieren Sie es dann
Quellcode --> > Kompilieren (gcc) --> Link --> Ausführen
Quellcode-Organisationsformat:
Mehrere Dateien: Es können dateiübergreifende Abhängigkeiten zwischen den Codes in der Datei bestehen
C, C++: make (configure -- > Makefile.in --> makefile)
java: maven
Drei Schritte für die C-Code-Kompilierung und -Installation:
./configure:
(1) Parameter über Optionen übergeben, Aktivierungsfunktionen angeben, installieren Pfad usw.; bei der Ausführung wird das Makefile unter Bezugnahme auf die Spezifikation des Benutzers und die Datei Makefile.in generiert
(2) Überprüfen Sie die externe Umgebung, von der es abhängt; 🎜>
make:
Erstellen Sie die Anwendung basierend auf dem Makefile
make install
Entwicklungstools:
autoconf: Konfigurationsskript generieren
automake: Makefile.in generieren
Vorschlag: Überprüfen Sie vor der Installation INSTALL und README
Quellcode von Open-Source-Programmen erhalten:
Offizielle selbst erstellte Website:
Apache .org (ASF)
mariadb.org
...
Code-Hosting:
SourceForge
Github.com
code.google.com
c/c++: gcc (GNU C Complier)
C-Quellcode kompilieren:
Prämisse: Bereitstellung von Entwicklungstools und Entwicklungsumgebung
Entwicklungstools: make, gcc usw.
Entwicklung Umgebung: Entwicklungsbibliothek, Header-Datei
glibc: Standardbibliothek
Entwicklungskomponenten über „Paketgruppe“ bereitstellen
CentOS 6: „Entwicklungstools“, „Serverplattformentwicklung“,
Schritt eins: Skript konfigurieren
Optionen: Geben Sie den Installationsort an, geben Sie die aktivierten Funktionen an
--help: Erhalten Sie die unterstützten Optionen
Optionsklassifizierung:
Einstellung des Installationspfads:
--prefix=/PATH/TO/SOMEWHERE : Geben Sie den Standardinstallationsort an; der Standardwert ist /usr/local/
--sysconfdir=/PATH/TO/SOMWHERE: Installationsort der Konfigurationsdatei; 🎜>
Systemtypen:
Optionale Funktionen: Optionale Funktionen
- -disable -FEATURE
--enable-FEATURE[=ARG]
Optionale Pakete: Optionales Paket
--with-PACKAGE[=ARG]
--without-PACKAGE
Schritt 2: Erstellen
Schritt 3: Installieren durchführen
Konfiguration nach der Installation:
(1) Exportieren Sie das Binärprogrammverzeichnis in die Umgebungsvariable PATH
Bearbeiten Sie die Datei /etc/profile.d /NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2) Exportieren Pfad der Bibliotheksdatei
Bearbeiten Sie /etc/ld.so.conf.d/NAME.conf
Fügen Sie das Verzeichnis hinzu, in dem sich die neue Bibliotheksdatei befindet befindet sich hier Datei;
Lassen Sie das System den Cache neu generieren:
ldconfig [-v]
(3) Header-Datei exportieren
Implementiert basierend auf Link:
ln - sv
(4) Exportieren Sie das Hilfehandbuch
Bearbeiten Sie die Datei /etc/man.config
Fügen Sie einen MANPATH hinzu
Linux-Netzwerkattributverwaltung
LAN: Ethernet, Token-Ethernet: CSMA/CD
Ethernet: CSMA/CD
>Broadcast-Domäne
MAC: Medienzugriffskontrolle
48 Bit:
24 Bit:
24 Bit:
IP: Internet Protocol
Routing-Protokoll
Routed-Protokoll
OSI, TCP/IP
TCP/IP-Schicht:
Anwendungsschicht
Transportschicht
Internetschicht
Datenverbindungsschicht
Physische Schicht
Transportschichtprotokoll:
tcp, udp, sctp
Netzwerkschichtprotokoll:
ip
IP-Protokoll:
IPv4-Adressklassifizierung:
Gepunktete Dezimalzahl: 0-255
0000 0000 - 1111 1111
0.0.0.0-255.255.255.255
Klasse A:
0 000 0000 - 0 111 1111: 1- 127
Anzahl der Netzwerke: 126, 127
Anzahl der Hosts in jedem Netzwerk: 2^24-2
Standard-Subnetzmaske: 255.0.0.0
Privatadresse: 10.0.0.0/8
Kategorie B:
10 00 0000 - 10 11 1111: 128-191
Anzahl der Netzwerke: 2^14
Anzahl der Hosts in jedem Netzwerk: 2^16-2
Standard-Subnetzmaske: 255.255.0.0
Private Netzwerkadresse: 172.16.0.0/16-172.31.0.0/16
Kategorie C:
110 0 0000 - 110 1 1111: 192-223
Anzahl der Netzwerke: 2^21
In jedem Netzwerk Anzahl der Hosts: 2^8-2
Standard-Subnetzmaske: 255.255 .255.0
Privatadresse: 192.168.0.0/24 -192.168.255.0/24
Klasse D: Multicast
1110 0000 - 1110 1111: 224-239
Klasse E:
240-255
Subnetzmaske:
172.16.100.100/255.255.0.0, 172.17. 1.1
Netzwerkübergreifende Kommunikation: Routing
Host-Routing
Netzwerk-Routing
Standard-Routing
Verbinden Sie den Linux-Host mit dem Netzwerk:
IP/Maske
Route: Standard-Gateway
DNS-Server
Primärer DNS-Server
Sekundärer DNS-Server
Dritter DNS-Server
Konfigurationsmethode:
Statische Spezifikation:
ifcfg: ifconfig, route, netstat
ip: object {link, addr, route}, ss, tc
Konfigurationsdatei
system-config-network-tui (setup)
CentOS 7:
nmcli, nmtui
Dynamische Zuweisung:
DHCP: Dynamic Host Configuration Protocol
Netzwerkschnittstelle konfigurieren:
Schnittstellenbenennungsmethode:
CentOS 6:
Ethernet: eth[0,1,2,...]
ppp: ppp[0,1,2,...]
ifconfig-Befehl
ifconfig [Schnittstelle]
# ifconfig -a
# ifconfig IFACE [up|down]
                                                                               ># ifconfig IFACE IP/Maske [up]
# ifconfig IFACE IP netmask MASK
Hinweis: Sofort wirksam
Promiscuous-Modus aktivieren : [-]promisc
Routenbefehl
Routenverwaltungsbefehl
>
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
Ziel: 192.168.1.3 Gateway: 172.16.0.1                                                                                      🎜>
Ziel: 192.168.0.0 Gateway: 172.16.0.1
~]# Route hinzufügen - net 192.168.0.0 netmask 255.255.255.0 gw 17 2.16.0.1deveth0
~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
Standardroute, Gateway: 172.16.0.1
                                                                            # route add default gw 172.16.0.1
Löschen: Route del
route del [-net|-host ] target [gw Gw] [netmask Nm] [[dev] If]
                                                                                                             ~]# Route del -Host 192.168.1.3
Ziel: 192.168.0.0 Gateway: 172.16.0.1
~]# route del -net 192.168.0.0 Netzmaske 255.255.255.0
                                                            
/etc/resolv.conf
 
Nameserver DNS_SERVER_IP1
 
Nameserver DNS_SERVER_IP2
 
Nameserver DNS_SERVER_IP3
Richtige Lösung: FQDN-->IP
# dig -t A FQDN
# host -t A FQDN
Umgekehrte Lösung: IP-->FQDN
# dig -x IP
# host -t PTR IP
FQDN: www.madu. com.
netstat-Befehl:
netstat – Netzwerkverbindungen, Routing-Tabellen, Schnittstellenstatistiken, Masquerade-Verbindungen und Multicast-Mitglieder drucken [-- tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [- -extend| -e[--extend|-e]] [--program|-p]
-t: TCP-Protokoll bezogen
- u: UDP-Protokoll bezogen
-w: Raw-Socket bezogen
-l: Im Abhörzustand
-a: Alle Status
-n: IP und Port in Zahlen anzeigen
-e: Erweitertes Format
-p: Verwandte Prozesse und PIDs anzeigen
Gemeinsame Kombinationen:
-tan, -uan, -tnl, -unl
Routing-Tabelle anzeigen:
netstat { --route|-r} [- -numerisch|-n]
-r: Kernel-Routing-Tabelle anzeigen
-n: Zahlenformat
Schnittstellenstatistiken anzeigen:
netstat {--interfaces|-I|-i} [iface ] [--all|-a] [--extend|-e ] [-Program | -p] [--Numeric | -n]
# netstat -i
🎜> ifconfig/route/netstat
 
ifup/ifdown
Linux-Netzwerkkonfiguration (2)
Linux-Netzwerkeigenschaften konfigurieren: IP-Befehl:
IP-Befehl:
ip – Routing, Geräte, Richtlinienrouting und Tunnel anzeigen/manipulieren
ip [ OPTIONEN ] OBJEKT { BEFEHL Hilfe }
OBJEKT := { link | 🎜>
IP-Link – Netzwerkgerätekonfiguration
eingestellt
dev IFACE
kann Attribute festlegen:
nach oben und unten: Aktivieren oder deaktivieren Sie die angegebene Schnittstelle; >
show
[dev IFACE]: Schnittstelle angeben
[up]: Nur die aktive Schnittstelle anzeigen
IP-Adresse – Protokolladressenverwaltung
ip addr { add | del } IFADDR dev STRING
[label LABEL]: Geben Sie den Alias ​​der Netzwerkkarte an, wenn Sie die Adresse hinzufügen
[scope {global|link|host}]: Geben Sie die Rolle an Domain
global: weltweit verfügbar
Link: nur Link verfügbar
Host: Verfügbar auf dieser Maschine;
[Broadcast-ADRESSE]: Geben Sie die Broadcast-Adresse an
IP-Adresse anzeigen – Protokolladressen ansehen
[dev DEVICE]
[label PATTERN]
[primär und sekundär]
IP-Adresse löschen – Protokolladressen löschen
Verwenden Sie das gleiche Format wie angezeigt
IP-Route - Routing-Tabellenverwaltung
IP-Route hinzufügen
Route hinzufügen: IP-Route ZIEL hinzufügen über GW dev IFACE src SOURCE_IP
TARGET:
Host-Route: IP
Netzwerkroute : NETZWERK/MASKE
Gateway hinzufügen: IP-Route standardmäßig über GW-Entwickler IFACE hinzufügen
IP-Route löschen
Route löschen: IP-Route del TARGET
IP-Route anzeigen
IP-Route-Flush
[dev IFACE]
[via PREFIX]
ss-Befehl:
Format: ss [OPTION]... [FILTER]
Option:
-t: TCP-Protokoll bezogen
-u: UDP-Protokoll bezogen
-w : nackter Ärmel, schnittstellenbezogen
-x: Unix-Sockenbezogen
-l: Verbindung im Abhörzustand
-a: Alle
-n: Zahlenformat
-p: Verwandte Programme und PID
-e: erweiterte Informationen
-m: Speichernutzung
-o: Timer-Informationen
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
Gemeinsame Zustände von TCP:
TCP-Finite-State-Machine:
LISTEN: Zuhören
HERGESTELLT: Verbindung hergestellt
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
GESCHLOSSEN
AUSDRUCK:
dport =
sport =
Beispiel: '( dport = :ssh oder sport = :ssh )'
Gemeinsame Kombinationen:
-tan, -tanl, -tanlp, -uan
Linux-Netzwerk Attributkonfiguration (3): Ändern Sie die Konfigurationsdatei
IP-, MASK-, GW- und DNS-bezogene Konfigurationsdateien: /etc/sysconfig/network-scripts/ ifcfg- IFACE
Routing-bezogene Konfigurationsdatei: /etc/sysconfig/network-scripts/route-IFACE
/etc /sysconfig/network-scripts/ifcfg-IFACE:
DEVICE: Das Gerät, für das diese Konfigurationsdatei gilt
HWADDR: Der MAC Adresse des entsprechenden Geräts;
BOOTPROTO: das bei der Aktivierung dieses Geräts verwendete Adresskonfigurationsprotokoll, häufig verwendet: dhcp, statisch, keine, bootp; 🎜>NM_CONTROLLED: NM ist die Abkürzung für NetworkManager; CentOS6 empfiehlt „Nein“; 🎜 >
TYP: allgemeiner Ethernet-Typ, Bridge
UUID: eindeutige Kennung des Geräts;
IPADDR: Geben Sie die IP-Adresse an;
NETMASK: Subnetzmaske;
GATEWAY: Standard-Gateway;
DNS1: der erste DNS-Server zeigend;
DNS2: zweiter DNS-Server zeigend;
USERCTL: ob normale Benutzer es steuern können;
PEERDNS: Wenn der Wert von BOOTPROTO „dhcp“ ist, ob die vom DHCP-Server zugewiesenen DNS-Server-Zeigerinformationen direkt in die Datei /etc/resolv.conf überschrieben werden dürfen ;
/etc/sysconfig/network-scripts/route-IFACE
Zwei Stile:
(1) TARGET via GW
(2) Alle drei Zeilen definieren eine Route
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
Mehrere Adressen für die Netzwerkkarte konfigurieren:
ifconfig:
ifconfig IFACE_ALIAS
IP
IP-Adresse hinzufügen
Konfigurationsdatei:
ifcfg- IFACE_ALIAS
DEVICE=IFACE_ALIAS
Hinweis: Gateway-Alias ​​kann nicht mit dem DHCP-Protokoll gebootet werden; >
Linux-Netzwerkattribut-Konfigurations-Tui (Textbenutzeroberfläche):
system-config-network-tui
kann auch über das Setup gefunden werden
Hinweis: Denken Sie daran, den Netzwerkdienst neu zu starten, damit er wirksam wird >
Konfigurieren Sie den Hostnamen des aktuellen Hosts:
Hostname [HOSTNAME]
/etc/sysconfig/network
HOSTNAME=
Die Netzwerkschnittstelle wird identifiziert und benennt die zugehörige udev-Konfigurationsdatei:
/etc/udev/rules.d/70-persistent-net.rules
Deinstallieren Sie den Netzwerkkartentreiber:
modprobe -r e1000
Laden Sie den Netzwerkkartentreiber:
modprobe e1000
CentOS 7-Netzwerkeigenschaftenkonfiguration
Traditionelle Benennung: Ethernet eth[0,1,2,...], wlan[0,1,2,...]
Vorhersehbare Funktionalität
udev unterstützt viele verschiedene Benennungsschemata:
Firmware, Topologie
(1) Mechanismus zur Benennung von Netzwerkkarten
systemd-Benennungsmethode für Netzwerkgeräte:
(a) Wenn die von der Firmware oder dem BIOS bereitgestellten Indexinformationen für das auf dem Motherboard integrierte Gerät verfügbar und vorhersehbar sind, basiert der Name auf diesem Index, z. B.
(b) Wenn die vom PCI-E-Erweiterungssteckplatz bereitgestellten Indexinformationen verfügbar und vorhersehbar sind, werden sie entsprechend diesem Index benannt, z. B.
(c) Wenn die physischen Standortinformationen der Hardwareschnittstelle verfügbar sind, benennen Sie sie basierend auf diesen Informationen, z. B. enp2s0; Es kann auch basierend auf der MAC-Adresse benannt werden,
(e) Wenn keine der oben genannten Optionen verfügbar ist, wird der traditionelle Benennungsmechanismus verwendet
Einige der oben genannten Benennungsmechanismen erfordern die Teilnahme des biosdevname-Programms
(2) Namenszusammensetzung Format
en: ethernet
wl : wlan
ww: wwan
Namenstyp:
o: Die Geräteindexnummer des integrierten Geräts
s: Indexnummer des Erweiterungssteckplatzes
x: Benennung basierend auf MAC-Adresse
ps: enp2s1
Benennungsprozess des Netzwerkkartengeräts:
Schritt eins:
udev, Hilfstool program/lib/udev/rename_device, /usr/lib/udev/rules.d/60-net.rules
Schritt 2:
biosdevname basiert auf /usr/lib/udev/rules.d/71-biosdevname.rules
Schritt 3:
Durch Erkennen des Netzwerkschnittstellengeräts gemäß /usr/lib/udev/rules. d/ 75-net-description
ID_NET_NAME_ONBOARD, ID_NET_NAME_SLOT, ID_NET_NAME_PATH
Zurück zur traditionellen Benennungsmethode:
(1) Bearbeiten Sie die Konfigurationsdatei /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0 rhgb quiet"
(2) Generieren Sie die Konfigurationsdatei für grub2
grub2-mkconfig -o /etc/grub2.cfg
(3) Starten Sie das System neu
Adresskonfigurationstool: nmcli
nmcli [ OPTIONEN ] OBJEKT { BEFEHL | Hilfe }
Gerät – Netzwerkschnittstellen anzeigen und verwalten
Verbindung – Netzwerkverbindungen starten, stoppen und verwalten
So ändern Sie Eigenschaften wie die IP-Adresse:
#nmcli-Verbindung ändern IFACE [+|-]setting.property value
setting.property:
ipv4. Adressen
ipv4.gateway
ipv4. dns1
ipv4.method
manual
Netzwerkschnittstellen-Konfigurations-TUI-Tool: nmtui
Hostnamen-Konfigurationstool: hostnamectl
Status
set-hostname
Referenz:
Netzwerk-Client-Tools:
lftp, ftp, lftpget, wget
# lftp [ -p port] [-u user[,password]] SERVER
Unterbefehl:
get
mget
ls
Hilfe
# lftpget URL
# ftp
# wget
wget [Option]... [URL]...
-q: Stiller Modus
-c: Fortsetzung der Übertragung
-O: Standort speichern
--limit-rates=: Übertragungsrate angeben
Überprüfung: IP-Befehl, SS-Konfigurationsdatei; CentOS 7
ifcfg, ip, netstat , ss
Konfigurationsdatei:
/etc/sysconfig/network-scripts/
ifcfg-IFNAME
route-IFNAME
CentOS 7: nmcli, nmtui
Linux-Prozess- und Jobverwaltung
Die Funktionen des Kernels: Prozessverwaltung, Dateisystem, Netzwerkfunktionen, Speicherverwaltung, Treiber, Sicherheitsfunktionen
Prozess: eine Kopie des laufenden Programms
hat einen Lebenszyklus
Festes Format des Linux-Kernels zum Speichern von Prozessinformationen: Aufgabenstruktur
Eine verknüpfte Liste von Aufgabenstrukturkomponenten für mehrere Aufgaben: Aufgabenliste
Prozesserstellung:
init
Vater-Kind-Beziehung
Prozess: Beide werden von ihrem übergeordneten Prozess erstellt
fork(), clone()
Prozesspriorität:
0-139:
1-99: Echtzeitpriorität
100- 139: statische Priorität;
Je kleiner die Zahl, desto höher die Priorität;
Guter Wert:
-20,19
Großes O
O(1) , O( logn), O(n), O(n^2), O(2^n)
Prozessspeicher:
Seitenrahmen: Seitenrahmen, der zum Speichern von Seitendaten verwendet wird
Speicherseite
MMU: Memory Management Unit
IPC: Inter Process Communication
Auf demselben Host:
Signal
shm: Shared Memory
semerphor
Auf verschiedenen Hosts:
rpc: remote procecure call
Socket:
Linux-Kernel: präventives Multitasking
Prozesstyp:
Daemon-Prozess: während der Systemstartprozess. Prozesse, die nichts mit dem Terminal zu tun haben;
Vordergrundprozess: Prozesse, die mit dem Terminal in Zusammenhang stehen, Prozesse, die über das Terminal gestartet wurden
Hinweis: Auch im Vordergrund gestartete Prozesse können zur Ausführung im Daemon-Modus gesendet werden
Prozessstatus:
Laufzustand: läuft
Bereitschaftszustand: bereit
Ruhezustand:
Unterbrechbar: unterbrechbar
Ununterbrechbar: ununterbrechbar
Gestoppter Zustand: im Speicher angehalten, aber nicht geplant sofern nicht manuell gestartet; gestoppt
Zombie-Zustand: Zombie
Prozessklassifizierung:
CPU-gebunden
IO-gebunden
"Linux Kernel Design and Implementation", "In -tiefes Verständnis des Linux-Kernels“ vmstat, dstat, kill, pkill, job, bg, fg, nohup
pstree-Befehl:
pstree – einen Prozessbaum anzeigen
ps: Prozessstatus
ps – einen Schnappschuss melden der aktuellen Prozesse
Relevante Informationen zu jedem Prozess im Linux-System werden in jeder Datei im Verzeichnis /proc/PID
gespeichert
ps [OPTION]...
Option: unterstützt zwei Stile
Gemeinsame Kombination: aux
u: Benutzerzentrierte Organisation der Anzeige von Prozessstatusinformationen
a: Terminalbezogene Prozesse;
x: terminalunabhängiger Prozess
~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
VSZ: Größe des virtuellen Speichers, Satz des virtuellen Speichers
RSS: ReSident Size, Satz des residenten Speichers
STAT: Prozessstatus
R: läuft
S: unterbrechbarer Schlaf
D: ununterbrochenes Schlafen
T: gestoppt
Z: Zombie
+: Vordergrundprozess
l: Multithread-Prozess
N: Prozess mit niedriger Priorität
<: Prozess mit hoher Priorität
s: Sitzungsleiter
Gemeinsame Kombinationen: - ef
-e: Alle Prozesse anzeigen
-f: Komplette Programminformationen anzeigen
Gemeinsame Kombinationen: -eFH
-F: Prozessinformationen im Vollformat anzeigen
-H: Prozessinformationen im hierarchischen Format anzeigen prozessbezogene Informationen
Gemeinsame Kombinationen: -eo, axo
-eo pid,tid,class ,rtprio ,ni,pri,psr,pcpu,stat,comm
axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ni: schöner Wert
pri: Priorität, Priorität
psr: Prozessor , CPU
rtprio: Echtzeitpriorität
pgrep, pkill:
pgrep [Optionen] Muster
pkill [Optionen] Muster
-u uid: effektiver Benutzer
                                                                                                                                                         -l: Zeigt den Prozessnamen im vollständigen Format an
-P pid: Seinen übergeordneten Prozess anzeigen Der Prozess ist die Prozessliste des hier angegebenen Prozesses
pidof:
Rufen Sie die PID basierend auf dem Prozessnamen ab 🎜>
Sortieren:
P: Prozentsatz der belegten CPU;
M: Prozentsatz des belegten Speichers ;
T: Kumulierte CPU-Zeit;
Anzeige der Header-Informationen:
Verfügbarkeitsinformationen: l-Befehl
Aufgaben und CPU-Informationen: t-Befehl
CPU zeigt jeweils an: 1 (Anzahl)
Speicherinformationen: m-Befehl
                                                                                                                                                >
Beenden Sie den angegebenen Prozess: k
Option:
-d #: Aktualisierungszeitintervall angeben, der Standardwert ist 3 Sekunden;
-b: Im Batch-Modus; 🎜>-n #: Wie viele Stapel werden angezeigt;
htop-Befehl:
Option:
                                                                               🎜>
Befehl:
s: Auswahlsystemaufruf für einen bestimmten Prozess verfolgen
l: Liste der vom ausgewählten Prozess geöffneten Dateien anzeigen; 🎜>
a: Den ausgewählten Prozess an einen bestimmten CPU-Kern binden
t: Prozessbaum anzeigen
Hinweis: Fedora-EPEL-Quelle
Rezension:
Linux-Grundlagen:
CPU: Zeitscheibe
Speicher: linearer Adressraum
E/A:
Time-Sharing-Multiplexing
Tools zur Prozessanzeige: pstree, ps, pgrep, pidof, top, htop
Linux-Prozessanzeige und -verwaltung (2)
Linux-Prozessanzeige- und -verwaltungstools: pstree, ps, pidof, pgrep, top, htop, perspectives, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
vmstat-Befehl:
vmstat [Optionen] [Verzögerung [Anzahl]]
procs:
r: Die Anzahl der Prozesse, die auf die Ausführung warten;
b: Die Anzahl der Prozesse im ununterbrochenen Ruhezustand (Länge der blockierten Warteschlange);
Speicher:
swpd: die Gesamtmenge des verwendeten Swap-Speichers;
frei: die Gesamtmenge des freien physischen Speichers Speicher;
Puffer: die Gesamtmenge des für den Puffer verwendeten Speichers
Cache: die Gesamtmenge des für den Cache verwendeten Speichers; >
Swap:
si: die Datenrate der in den Swap eingehenden Daten (kb/s)
so: die Datenrate der Daten, die den Swap verlassen. Datenrate (kb/s)
io:
bi: Die Rate, mit der Daten werden vom Blockgerät zum System gelesen; (kb/s)
bo: die Rate, mit der Daten auf dem Blockgerät gespeichert werden; >System:
in: Interrupts, Interrupt-Rate;
cs: Kontextwechsel, Prozesswechselrate
CPU:
us
sy
id
wa
st
Optionen:
-s: Speicherstatistik anzeigen
pmap-Befehl:
pmap – Speicher melden Karte eines Prozesses
pmap [options] pid [...]
-x: Informationen anzeigen in detailliertes Format;
Eine weitere Implementierung:
# cat /proc/PID/maps
glances命令:
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p Port] [-P Passwort] [--password] [-t Aktualisierung] [-f Datei] [-o Ausgabe]
内建命令:
 a  Prozesse automatisch sortieren     l  Protokolle anzeigen/ausblenden
 c  Prozesse sortieren nach CPU%           b  Bytes oder Bits für Netzwerk-E/A
 m  Prozesse nach MEM% sortieren           w  Warnungsprotokolle löschen
 p  Prozesse sortieren nach Name           Festplatten-E/A-Statistiken ausblenden         h  Diesen Hilfebildschirm anzeigen/ausblenden
 f  Dateisystemstatistiken anzeigen/ausblenden      t  Netzwerk-E/A als Kombination anzeigen
 n  Netzwerkstatistiken anzeigen/ausblenden          u  Kumulative Netzwerk-E/A anzeigen
 s  Sensorstatistiken anzeigen/ausblenden          q  Beenden (Esc und Strg-C funktionieren auch)
 y  HDDtemp-Statistiken ein-/ausblenden
常用选项:
-b: 以Byte为单位显示网卡数据速率;
-d: 关闭磁盘I/O模块;
-f /path/to/somefile:设定输入文件位置;
-o {HTML|CSV}:输出格式;
-m: 禁用mount模块
-n: 禁用网络模块
-t #: 延迟时间间隔
-1:每个CPU的相关数据单独显示;
C/S模式下运行glances命令:
服务Hinweis:
glances -s -B IPADDR
IPADDR: 指明监听于本机哪个地址
客户端模式:
glances -c IPADDR
IPADDR:要连入的服务器端地址
dstat命令:
dstat [-afv] [Optionen ..] [Verzögerung [Anzahl]]
-c: 显示cpu相关信息;
-C # ,#,...,total
-d: 显示disk相关信息;
-D total,sda,sdb,.. .
-g:显示page相关统计数据;
-m: 显示memory相关统计数据;
-n: 显示network相关统计数据;
-p: 显示process相关统计数据;
-r:显示io请求相关的统计数据;
-s: 显示swapped相关的统计数据;
-- tcp
--udp
--unix
--raw
--socket 
--ipc
--top-cpu:显示最占用CPU的进程;
--top-io: 显示最占用io的进程;
--top-mem: 显示最占用内存的进程;
--top-lantency: 显示延迟最大的进程;
kill命令:
Steuersignale an den Prozess senden, um Prozessmanagement zu erreichen
Anzeige der aktuell vom System verfügbaren Signale:
# kill -l
# man 7 signal
Gemeinsame Signale:
1) SIGHUP: Lassen Sie die Konfigurationsdatei erneut lesen, ohne den Prozess zu schließen.
2) SIGINT: Abbrechen des laufenden Prozesses, entspricht Strg+C ;
9) SIGKILL: Beende den laufenden Prozess
15) SIGTERM: Beende den laufenden Prozess; 🎜>
18) SIGCONT:
19) SIGSTOP:
Signalmethode angeben:
(1) Numerische Identifikation des Signals 1, 2, 9
(2) Vollständiger Name des Signals; >
(3) Der abgekürzte Name des Signals; HUP
Sendet ein Signal an den Prozess:
[-SIGNAL] PID töten...
Alle Prozesse unter „Name“ töten:
killall [-SIGNAL] Programm
Linux-Jobsteuerung
Vordergrundjob: Starten Sie über das Terminal und belegen Sie das Terminal nach dem Start.
Hintergrundjob: Kann über das Terminal gestartet werden, wird aber nach dem Start im Hintergrund ausgeführt (Terminal freigeben);
Wie lasse ich den Job im Hintergrund laufen?
(1) Auftrag wird ausgeführt
Strg+z
(2) Noch nicht gestartet Job
# COMMAND &
Obwohl diese Art von Job zur Ausführung an den Hintergrund gesendet wird, wird er trotzdem ausgeführt bezogen auf Terminal bezogen; wenn Sie es in den Hintergrund schicken möchten, trennen Sie die Beziehung mit dem Terminal:
# nohup COMMAND &
Alle Jobs anzeigen:
# Jobs
Jobkontrolle:
# fg [[%]JOB_NUM]: Bringt den angegebenen Hintergrundjob wieder in den Vordergrund;
# bg [[%]JOB_NUM]: Lassen Sie den Job, der an den Hintergrund gesendet wird, läuft im Hintergrund weiter ;
# kill [%JOB_NUM]: Beendet den angegebenen Job; >Anpassung der Prozesspriorität:
Statische Priorität: 100-139
Der schöne Wert, wenn der Prozess wird standardmäßig mit 0 gestartet und die Priorität beträgt 120; BEFEHL [ARG]...]
renice-Befehl:
renice [-n] Prioritäts-PID. .
Ansicht:
ps axo pid,comm,ni
Nicht beteiligte Befehle: sar, tsar, iostat, iftop
Linux-Aufgabenplanung, regelmäßige Aufgabenausführung
Führen Sie eine Aufgabe zu einem bestimmten Zeitpunkt in der Zukunft aus: at, Batch
Führen Sie eine Aufgabe regelmäßig aus: cron
E-Mail-Dienst:
SMTP: einfaches E-Mail-Übertragungsprotokoll, das zur Übertragung von E-Mails verwendet wird; >
pop3: Post Office Protocol
imap4: Internet Mail Access Protocol
mailx - Internet-Mail senden und empfangen
MUA: Mail User Agent
mailx [-s 'SUBJECT'] Benutzername[@hostname]
Generierung des E-Mail-Textes:
(1) Direkt eingeben, Strg+d
(2) Eingabeumleitung;
(3) Durch Pipe
echo -e " Wie Bist du?nWie alt bist du? :
zur [optionalen] ZEIT
ZEIT:
HH:MM [JJJJ-MM-TT]
Mittag, Mitternacht, Teestunde
morgen
jetzt+#{Minuten, Stunden, Tage ODER Wochen}
Allgemeine Optionen:
-q QUEUE:
-l: Listet Jobs auf, die in der angegebenen Warteschlange auf ihre Ausführung warten; äquivalent zu atq
-d : Den angegebenen Job löschen; entspricht atrm
-c: Spezifische Jobaufgaben anzeigen
-f /path/from/somefile: Aufgaben aus der angegebenen Datei lesen;
Hinweis: Die Ausführungsergebnisse des Jobs werden den relevanten Benutzern per E-Mail mitgeteilt; >
Batch-Befehl:
Lassen Sie das System seine eigene freie Zeit wählen, um die hier angegebenen Aufgaben auszuführen;
Periodischer Aufgabenplan: Cron
Verwandte Pakete:
cronie: Hauptpaket, stellt Crond-Daemon-Prozesse und bereit verwandte Hilfstools;
cronie-anacron: ein Zusatzprogramm für Cronie; das zur Überwachung des Ausführungsstatus von Cronie-Aufgaben verwendet wird; past Wenn es ausgeführt wird, startet Anacron anschließend diese Aufgabe.
crontabs: Enthält CentOS, um Systemwartungsaufgaben bereitzustellen; > Stellen Sie sicher, dass der Crond-Daemon ausgeführt wird:
CentOS 7:
systemctl status crond
. ..läuft...
CentOS 6:
Service-Crond-Status
Aufgaben, deren regelmäßige Ausführung geplant ist, werden an crond übermittelt, das eine Punkt-zu-Punkt-Ausführung implementiert.
System-Cron-Aufgabe: Systemwartungsauftrag
/etc/crontab
Benutzer-Cron-Aufgabe :
crontab-Befehl
System-Cron-Task
# Beispiel der Jobdefinition:
# .---------------- Minute (0 - 59)
# |.------------ Stunde (0 - 23)
# |. Tag des Monats (1 - 31)
# .------- Monat (1 - 12) ODER |.
# |.---- Wochentag (Sonntag=0 oder 7) | ,sat
# |
# * * * * * auszuführender Benutzername
Zum Beispiel: Führen Sie den Echo-Befehl um 21:10 Uhr aus;
10 21 * * *
gentoo /bin/echo „Howdy!“
Zeitdarstellung:
(1 ) Spezifischer Wert;
Wert innerhalb des gültigen Wertebereichs zu einem bestimmten Zeitpunkt
(2) *
Alle Werte innerhalb des gültigen Wertebereichs zu einem bestimmten Zeitpunkt
bedeutet „jeden…“; (3 ) Diskrete Werte: ,
#,#,#
(4) Kontinuierliche Werte: -
#-#
(5) Definieren Sie im angegebenen Zeitbereich die Schrittgröße:
/#: # ist die Schrittgröße
Zum Beispiel: echo command alle 3 Stunden;
0 */3 * * * gentoo /bin/echo „howdy!“
Benutzer-Cron:
crontab-Befehlsdefinition, jeder Benutzer hat eine eigene Cron-Task-Datei: /var/spool/cron /USERNAME
crontab-Befehl:
crontab [-u user] [-l | -r | ] [-i]
-l: Alle Aufgaben auflisten
-e: Aufgaben bearbeiten; >-r: Alle Aufgaben entfernen;
-i: Wird mit -r verwendet, um Benutzern das selektive Entfernen bestimmter Aufgaben im interaktiven Modus zu ermöglichen; >
-u Benutzer: kann nur von Root ausgeführt werden und verwaltet Cron-Aufgaben für den angegebenen Benutzer
Hinweis: Der Die Operationsergebnisse werden den relevanten Benutzern per E-Mail mitgeteilt.
(1) COMMAND > ; /dev/null
Für Cron-Tasks hat % einen besonderen Zweck; wenn Sie % in einem Befehl verwenden möchten, müssen Sie es maskieren , Wenn Sie % in einfache Anführungszeichen setzen, müssen Sie es nicht maskieren;
Denken:
(1) Wie führe ich eine Aufgabe in Sekunden aus?
* * * * * für min in 0 1 2; schlafe 20;(2) Wie Alle 7 Minuten eine Aufgabe ausführen?
sleep-Befehl:
sleep NUMBER[SUFFIX]...
SUFFIX:
s: Sekunden, Standard
m: Minuten
h: Stunde
d: Tag
;
Startvorgang von CentOS 5 und 6
Linux: Kernel+rootfs
Kernel: Prozessverwaltung, Speicherverwaltung, Netzwerkverwaltung, Treiber, Dateisystem, Sicherheitsfunktion
rootfs:
glibc
Bibliothek: Funktionssammlung, Funktion, Aufrufschnittstelle
Prozeduraufruf: Prozedur
Funktionsaufruf: Funktion
Prozedur
Kernel-Designschule:
Single-Kernel-Design: Linux
Integrieren Sie alle Funktionen in das gleiche Programm
Mikrokernel-Design: Windows, Solaris
Jede Funktion wird über ein separates Subsystem implementiert
Linux-Kernel-Funktionen:
Unterstützung der Modularisierung: .ko
Unterstützung des dynamischen Ladens und Entladens von Modulen ;
Komponente:
Kerndatei: /boot/vmlinuz-VERSION-release
ramdisk:
CentOS 5: /boot/initrd-VERSION-release.img
CentOS 6: /boot/initramfs-VERSION -release.img
Moduldatei:/lib/modules/VERSION-release
CentOS-Systemstartvorgang:
POST: Selbsttest beim Einschalten;
ROM: CMOS
BIOS: Grundlegendes Eingabe- und Ausgabesystem
ROM+RAM
BOOT-Sequenz:
Suchen Sie nacheinander nach jedem Startgerät. Das erste Gerät mit einem Startprogramm ist das Gerät, das für diesen Start verwendet wird Bootloader: Bootloader, Programm
Windows: Ntloader
Linux:
LILO : Linux LOader
GRUB: GRand Uniform Bootloader
GRUB 0.X: GRUB Legacy
GRUB 1.x: GRUB2
Funktion: Bereitstellung eines Menüs, das es dem Benutzer ermöglicht, das System zu starten oder eine andere Kernelversion zu laden; Gehen Sie zu einem bestimmten Bereich im Speicher, dekomprimieren, erweitern und übertragen Sie die Systemsteuerung an den Kernel
MBR:
446: Bootloader
64: Fett
2: 55AA
GRUB:
Bootloader: 1. Stufe
Festplatte: 2. Stufe
Kernel:
Selbstinitialisierung:
Alle erkannten Hardwaregeräte erkennen
Laden Sie den Hardwaretreiber; (Sie können Ramdisk verwenden, um den Treiber zu laden)
Mounten Sie das Root-Dateisystem im schreibgeschützten Modus
Führen Sie die erste Anwendung im Benutzerbereich aus: /sbin/init
Typ des Init-Programms:
SysV: init, CentOS 5
Konfigurationsdatei: /etc/inittab
Upstart: init , CentOS 6
Konfigurationsdateien: /etc/inittab, /etc/init/*.conf
Systemd : systemd, CentOS 7
Konfigurationsdateien: /usr/lib/systemd/system, /etc/systemd/system
Ramdisk:
Eine der Funktionen im Kernel: Verwendung von Pufferung und Caching zur Handhabung des Dateizugriffs auf der Festplatte; 🎜>
ramdisk --> ramfs
CentOS 5: initrd, Toolprogramm: mkinitrd
CentOS 6: initramfs, Toolprogramm: mkinitrd, dracut
Systeminitialisierung:
POST -- > BootSequence (BIOS) --> kernel(ramdisk) --> rootfs(read-only) --> 🎜>
/sbin/init
CentOS 5:
Ausführungsstufe: für Anwendungszwecke wie Systembetrieb oder Wartung eingestellt
0-6: 7 Stufen
0: Herunterfahren
1: Einzelbenutzermodus (Root, keine Anmeldung erforderlich), Einzelbenutzermodus; 🎜>2: Mehrbenutzermodus, die Netzwerkfunktion wird gestartet, aber NFS wird nicht gestartet;
3: Mehrbenutzermodus, normaler Modus; ; Textschnittstelle;
4: Reservierte Ebene; kann mit Ebene 3 identisch sein;
5: Mehrbenutzermodus, normaler Modus ; grafische Oberfläche;
6: Neustart
Standardebene:
3, 5
Stufe wechseln:
init #
Ansichtsebene:
Runlevel
who -r
Konfigurationsdatei:/etc/inittab
Jede Zeile definiert eine Aktion und den entsprechenden Prozess
id:runlevel:action:process
Aktion:
Warten: Zu diesem Level wechseln und ausführen einmal;
respawn: Wenn dieser Prozess beendet wird, starten Sie ihn neu; 🎜>
sysinit: Legen Sie die Systeminitialisierungsmethode fest. Geben Sie hier normalerweise /etc/rc.d/rc.sysinit an >
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait: / etc/rc.d/rc 1
...
l6:6:wait:/etc/rc.d/rc 6
Erklärung: rc 0 --> bedeutet Lesen von /etc/rc.d/rc0.d/
K*: K##*: ##Running order; je kleiner die Zahl, desto kleiner die Zahl, der Dienst hängt normalerweise von anderen Diensten ab; S*: S##*: ## laufende Reihenfolge; je kleiner die Nummer, desto kleiner die Nummer, von der der Dienst abhängt
für srv in /etc/rc.d/rc0.d/K*; tun
$srv stop
fertig
für srv in /etc/rc.d/rc0.d/S*; do
$srv start
fertig
chkconfig-Befehl
Ansicht Dienste auf allen Ebenen Die Start- oder Herunterfahreinstellungen:
chkconfig [--list] [name]
Hinzufügen :
SysV-Dienstskript wird in /etc/rc.d/init.d (/etc/init.d) platziert
chkconfig --add name
#!/bin/bash
#
# chkconfig: LLLL nn nn
Löschen:
chkconfig -- del name
Ändern Sie den angegebenen Linktyp
chkconfig [--levellevels] name
--level LLLL: Geben Sie den festzulegenden Level an; wenn er weggelassen wird, bedeutet dies 2345; 🎜>Hinweis: Auf normaler Ebene ist der zuletzt gestartete Dienst, S99local, nicht mit einem Dienstskript in /etc/rc.d/init.d verknüpft, sondern verweist daher auf das Skript /etc/rc.d/rc.local Es ist unpraktisch oder unnötig, es als Dienst zu schreiben. Das Skript wird im Verzeichnis /etc/rc.d/init.d/ abgelegt, und der Befehl, den Sie beim Einschalten des Computers automatisch ausführen möchten, kann direkt abgelegt werden in der Datei /etc/rc.d/rc.local;
tty1:2345:respawn:/usr/sbin/mingetty tty1
tty2:2345:respawn:/usr/sbin/mingetty tty2
...
tty6:2345 :respawn:/usr/sbin/mingetty tty6
minggetty ruft das Anmeldeprogramm auf
/etc/rc.d/rc.sysinit: Systeminitialisierungsskript
(1) Hostnamen festlegen;
(2) Willkommensnachricht festlegen;
(3) udev und selinux aktivieren;
(4) Mounten Sie das in /etc/fstab definierte Dateisystem Datei;
(5) Erkennen Sie das Root-Dateisystem und mounten Sie das Root-Dateisystem erneut im Lese-/Schreibmodus
(6) Stellen Sie die Systemuhr ein.
(7) Aktivieren Sie das Swap-Gerät .conf-Datei;
(9) LVM- und Software-RAID-Geräte aktivieren;
(10) Treiber für zusätzliche Geräte laden;
(11) Aufräumarbeiten
Zusammenfassung: /sbin/init --> (/etc/inittab) --> ; Schließen Entsprechend den Diensten, die geschlossen werden müssen, starten Sie die Dienste, die gestartet werden müssen --> Richten Sie das Anmeldeterminal ein
CentOS 6:
Das Init-Programm ist: upstart und seine Konfigurationsdatei:
/etc /inittab, /etc/init/*.conf
Hinweis: Die Syntax der Datei /etc/init/*.conf folgt der Syntax der Upstart-Konfigurationsdatei
CentOS 6-Startvorgang:
POST --> Boot-Sequenz (BIOS) --> Kernel(ramdisk) --> (/etc/inittab, /etc/init/*. conf) --> Standardausführungsebene festlegen --> Dienste auf der entsprechenden Ebene schließen oder starten
GRUB( Bootloader):
grub: GRand Unified Bootloader
grub 0.x: Grub Legacy
grub 1.x: grub2
grub Legacy:
stage1: mbr
stage1_5: Der Sektor nach mbr ermöglicht es dem Bootloader in stage1, das Dateisystem auf der Partition zu identifizieren, auf der sich stage2 befindet
Stufe2: Festplattenpartition (/boot/grub/)
Konfigurationsdatei: /boot/grub/grub. conf <-- /etc/grub.conf
stage2 und Kernel werden normalerweise in einer Basis-Festplattenpartition abgelegt
Funktion:
(1) Bereitstellung von Menüs und interaktiven Schnittstellen
e: Bearbeitungsmodus, der zum Bearbeiten von Menüs verwendet wird;
c: Befehlsmodus, interaktive Schnittstelle
(2) Laden Sie den vom Benutzer ausgewählten Kernel oder das Betriebssystem
Übergabe von Parametern an den Kernel zulassen
Sie können dieses Menü ausblenden
(3) Bietet einen Schutzmechanismus für Menü
Menü „Bearbeiten“ Authentifizieren
Authentifizieren, um Kernel oder Betriebssystem zu aktivieren
So identifizieren Sie ein Gerät:
(hd#,#)
hd#: Festplattennummer, dargestellt durch beginnende Zahlen; von 0
#: Partitionsnummer, dargestellt durch Zahlen beginnend bei 0
(hd0,0)
Grub-Befehlszeilenschnittstelle
Hilfe: Hilfeliste abrufen
help SCHLÜSSELWORT: Detaillierte Hilfeinformationen
find (hd#,#)/PATH/TO/SOMEFILE:
root (hd#,# )
kernel /PATH/TO/KERNEL_FILE: Legen Sie die für diesen Start verwendete Kerneldatei fest. Darüber hinaus können Sie viele vom Kernel unterstützte cmdline-Parameter hinzufügen Zum Beispiel: init=/ path/to/init, selinux=0
initrd /PATH/TO/INITRAMFS_FILE: Legen Sie eine Ramdisk fest, die zusätzliche Dateien für die bereitstellt ausgewählter Kernel;
booten: Booten Sie den ausgewählten Kernel
Starten Sie das System manuell über die Grub-Befehlszeilenschnittstelle :
grub> root (hd#,#)
kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot
Konfigurationsdatei: /boot /grub/grub.conf
Konfigurationselemente:
default=#: Legen Sie fest Standard-Startmenüelement; einzelnes Element (Titel) Nummerierung beginnt bei 0;
timeout=#: Geben Sie an, wie lange der Menüpunkt auf die Optionsauswahl wartet;
splashima=(hd#,#)/PATH/TO/XPM_PIC_FILE : Geben Sie den Pfad der Menü-Hintergrundbilddatei an;
hiddenmenu: verstecktes Menü; 🎜>
Titel TITEL: Definieren Sie den Menüpunkt „Titel“, der mehrmals vorkommen kann;
root (hd#,#): Grub-Suchen für Stage2- und Kernel-Dateien. Die Gerätepartition, in der sie sich befindet, ist das „Stammverzeichnis“ von Grub
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]: gestarteter Kernel
initrd /PATH/TO/INITRAMFS_FILE: Kernel passende RAMFS-Datei;
Passwort [--md5] STRING: Authentifizierung beim Booten des ausgewählten Kernels oder Betriebssystems ;
grub-md5-crypt-Befehl
Eingabe Einzelbenutzermodus:
(1) Grub-Menü bearbeiten (wählen Sie den zu bearbeitenden Titel aus und verwenden Sie dann den Befehl e); >(2) Im ausgewählten Kernel können Sie
1, s, S oder single;
(3) in der Zeile wo anhängen Wenn der Kernel gefunden wurde, geben Sie den Befehl „b“ ein. install
grub-install --root-directory=ROOT /dev/DISK
(2) grub
grub> root (hd#,#)
grub> setup (hd#)
Linux-Kernel:
Single-Kernel-Systemdesign, nutzt jedoch die Vorteile des Mikrokernel-Designs voll aus System und führt einen modularen Mechanismus in den Kernel ein.
Kernelkomponenten:
Kernel: Kernelkern, normalerweise bzIma, normalerweise im Verzeichnis /boot, mit dem Namen vmlinuz-VERSION-RELEASE
Kernelobjekt: Kernelobjekt, im Allgemeinen in /lib/modules/VERSION-RELEASE/
[ ]: N
[M]: M
[*]: Y
Hilfsdateien: ramdisk
initrd
initramfs
Laufender Kernel:
uname-Befehl:
uname – Systeminformationen drucken
uname [ OPTION]...
-n: Knotennamen anzeigen;
-r: VERSION-RELEASE anzeigen;
Modul:
lsmod-Befehl:
Zeigen Sie an, was vom Kern getan wurde geladenes Kernelmodul
zeigt Inhalte aus der Datei /proc/modules
modinfo-Befehl an :
Detaillierte Beschreibungsinformationen des Moduls anzeigen
modinfo [ -k kernel ] [ modulename|filename .. . ]
-n: Nur Moduldateipfad anzeigen
-p: Modulparameter anzeigen
-a: Autor
-d: Beschreibung
-l: Lizenz
modprobe-Befehl:
Kernelmodul laden oder entladen
modprobe [ -C config- Datei] [Modulname] [Modulparameter...]
Konfigurationsdatei: /etc/modprobe.conf, /etc/modprobe.d/*.conf
modprobe [ -r ] Modulname...
depmod-Befehl:
Ein Tool zum Generieren von Kernelmodul-Abhängigkeitsdateien und Systeminformationszuordnungsdateien
Laden oder Entladen von Kernelmodulen:
insmod-Befehl:
insmod [ Dateiname ] [ Moduloptionen... ]
rmmod
rmmod [ Modulname ]
/proc-Verzeichnis:
Kernel-Handle Seine eigenen internen Statusinformationen und statistischen Informationen sowie konfigurierbare Parameter werden über das proc-Pseudodateisystem ausgegeben
Parameter:
Schreibgeschützt: Informationen ausgeben
Schreibbar: Vom Benutzer angegebener „neuer Wert“ kann akzeptiert werden, um eine bestimmte Funktion oder Funktion des Kernels zu konfigurieren
/proc/sys
(1) Der Befehl sysctl wird verwendet, um viele Parameter in diesem Verzeichnis anzuzeigen oder festzulegen;
sysctl -w path.to.parameter=VALUE
~]# sysctl -w kernel.hostname=mail.madu .com
(2) Der Echo-Befehl kann auch die Werte der meisten Parameter durch Umleitung ändern; >echo "VALUE" > ; /proc/sys/path/to/parameter
~]# echo "www.madu.com" > /sys/kernel/hostname
sysctl-Befehl:
Standardkonfigurationsdatei: /etc/sysctl.conf
(1) Einen bestimmten Parameter festlegen
sysctl -w parameter=VALUE
(2 ) Legen Sie es fest, indem Sie die Parameter der Konfigurationsdatei
sysctl -p [/path/to/conf_file]
lesen Routenweiterleitung im Kernel:
/proc/sys/net/ipv4/ip_forward
Mehrere häufig verwendete Parameter :
net.ipv4.ip_forward
vm.drop_caches
kernel.hostname
/sys-Verzeichnis:
sysfs: Gibt auch die relevanten Attributinformationen jedes vom Kernel erkannten Hardwaregeräts aus als Einstellungsinformationen des Kernels für Hardwarefunktionen. Einige Parameter können geändert werden, um die Betriebseigenschaften der Hardware anzupassen.
udev erstellt dynamisch die erforderlichen Gerätedateien für jedes Gerät über die Informationsausgabe unter diesem Pfad. udev ist ein User-Space-Programm, das spezielle Tools ausführt; hotplug;
Wenn udev eine Gerätedatei für ein Gerät erstellt, liest es dessen vordefinierte Regeldateien, normalerweise in /etc/udev/rules.d und /usr /lib/udev/rules.d Verzeichnis;
Erstellung der Ramdisk-Datei:
(1 ) mkinitrd-Befehl
Ramdisk-Datei für den aktuell verwendeten Kernel neu erstellen
~] # mkinitrd /boot/initramfs-$(uname -r ) .img $(uname -r)
(2) dracut command
Starten Sie den Kernel für den aktuellen Zeitpunkt neu wird verwendet Ramdisk-Datei erstellen
~] # dracut /boot/initramfs-$(uname -r).img $(uname -r)
Kernel kompilieren:
Voraussetzung:
(1) Bereiten Sie die Entwicklungsumgebung vor;
( 2) Erhalten Sie relevante Informationen über die Hardwaregeräte auf dem Zielhost
(3) Erhalten Sie relevante Informationen über die Funktionen des Zielhostsystems, z. B. das zu aktivierende Dateisystem.
(4) Erhalten Sie die Kernelquelle Codepaket;
www.kernel.org
Bereiten Sie die Entwicklungsumgebung vor:
Paketgruppe (CentOS 6):
Serverplattformentwicklung
Entwicklungstools
Informationen zum Zielhost-Hardwaregerät:
CPU:
~]# cat /proc/cpuinfo
~]# x86info -a
~]# lscpu
PCI-Ausrüstung:
~]# lspci
-v
-vv
~]# lsusb
-v
-vv
~]# lsblk
Alle Hardware-Geräteinformationen erfahren
~]# hal-device
Einfacher Herstellungsprozess basierend auf der Vorlagendatei:
~]# tar xf linux-3.10.67.tar.xz -C /usr/src
~]# cd /usr/src
~ ]# ln -sv linux-3.10.67 linux
~]# cd linux
~]# cp /boot /config-$ (uname -r) ./.config
~]# make menuconfig
~] # screen
~]# make -j #
~]# make module_install
~]# make install
Starten Sie das System neu und testen Sie es mit dem neuen Kernel
Linux-Kernel-Kompilierung (2)
Schritte zum Kompilieren des Kernels:
(1) Kernel-Optionen konfigurieren
Unterstützt den „Update“-Modus für die Konfiguration:
(a) make config: Konfigurieren Sie alle im Kernel konfigurierbaren Optionen auf Traversal-Basis die Befehlszeile; (b) make menuconfig: eine Textfensterschnittstelle basierend auf Curses; (c) make gconfig: ein Fenster Schnittstelle basierend auf der GTK-Entwicklungsumgebung; (d) make xconfig: Fensterschnittstelle basierend auf der Qt-Entwicklungsumgebung
Unterstützt „neue Konfiguration“; Modus für die Konfiguration:
(a) make defconfig: Konfigurieren Sie basierend auf der „Standard“-Konfiguration, die vom Kernel für die Zielplattform bereitgestellt wird; >(b) make allnoconfig: Alle Optionen sind „Nein“;
(2) Kompilieren
make [-j #]
So kompilieren Sie nur einen Teil der Funktionen im Kernel:
( a) Kompilieren Sie nur den relevanten Code in einem bestimmten Unterverzeichnis:
# cd /usr/src/linux
# make dir/
(b) Kompilieren Sie nur ein bestimmtes Modul:
# cd /usr/src/linux
# make dir/file. ko
Zum Beispiel: Kompilieren Sie den Treiber nur für e1000:
# make drivers/net/ethernet/intel/e1000 /e1000.ko
So kompilieren Sie den Kernel:
Die kompilierte Zielplattform unterscheidet sich von der aktuellen Plattform
# make ARCH=arch_name
Um Hilfe für eine bestimmte Zielplattform zu erhalten
# make ARCH =arch_name help
So kompilieren Sie den kompilierten Kernel-Quellbaum neu:
Bereinigen vorher aufrufen Vorgang:
# make clean: Bereinigt die meisten durch die Kompilierung generierten Dateien, behält aber Konfigurationsdateien usw. bei
# make mrproper: Bereinigen Sie alle kompilierten Dateien, Konfigurationen und einige Sicherungsdateien 🎜>
Bildschirmbefehl:
Neuen Bildschirm öffnen:
# Bildschirm
Bildschirm verlassen und schließen:
# beenden
Aktuellen Bildschirm entfernen:
Strg + a,d
Alle geöffneten Bildschirme anzeigen:
screen -ls
Stellen Sie einen bestimmten wieder her screen
screen -r [SESSION]
CentOS-Systeminstallation
bootloader-->kernel(initramfs)-->rootfs-->/sbin/init
anaconda: installer
tui: Textfenster basierend auf Flüchen;
gui: Grafikfenster;
Startvorgang des CentOS-Installationsprogramms:
MBR: boot.cat
Stufe 2: isolinux/isolinux.bin
Konfigurationsdatei: isolinux/isolinux.cfg
Jede entsprechende Menüoption:
Laden Sie den Kernel: isolinuz/vmlinuz
Parameter an den Kernel übergeben: append initrd=initrd.img ...
Mount the Root-Dateisystem und starten Sie Anaconda
GUI-Schnittstelle standardmäßig starten
Wenn explizit angegeben, verwenden Sie die TUI-Schnittstelle:
Übergeben Sie einfach den Parameter „text“ an den Kernel
boot: linux text
Hinweis: Der oben genannte Inhalt sollte sich im Allgemeinen auf dem Startgerät befinden. Für nachfolgende Anaconda und seine Installationspakete stehen mehrere Methoden zur Verfügung:
Lokale CD
Lokale Festplatte
FTP-Server: Yum-Repository
http-Server: Yum-Repository
NFS-Server
Wenn Sie die Installationsquelle manuell angeben möchten:
Boot: Linux-Methode
Der Arbeitsprozess der Anaconda-Anwendung:
Konfigurationsphase vor der Installation
Während der Installation verwendete Sprache
Tastaturtyp
Installationszielspeichergerät
Basisspeicher: lokale Festplatte
Spezielles Gerät: iSCSI
Hostnamen festlegen
Netzwerkschnittstelle konfigurieren
Zeitzone
Administratorpasswort
Partitionsmodus festlegen Und der Installationsort von MBR
Erstellen Sie einen normalen Benutzer
Wählen Sie den gewünschten aus Paket installieren
Installationsphase
Erstellen Sie Partitionen auf der Zielfestplatte, führen Sie Formatierungsvorgänge durch usw.
Installieren Sie das ausgewählte Paket am Zielspeicherort
Bootloader installieren
Zum ersten Mal starten
iptables
selinux
Core-Dump
Anaconda-Konfigurationsmethode:
(1) Interaktive Konfigurationsmethode;
(2) Vervollständigen Sie die Konfiguration automatisch, indem Sie die im Voraus angegebene Konfigurationsdatei lesen.
Konfiguration gemäß spezifischer Syntax Optionen;
Kickstart-Datei;
Installations-Boot-Optionen:
boot:
text: Textinstallationsmethode
Methode: Geben Sie die zu verwendende Installationsmethode manuell an
Netzwerkbezogene Startoptionen:
ip=IPADDR
netmask=MASK
Gateway=GW
dns=DNS_SERVER_IP
ifname=NAME:MAC_ADDR
mit Fernzugriff Funktionsbezogene Boot-Optionen:
vnc
vncpassword='PASSWORD'
angegebener Speicherort der Kickstart-Datei
ks=
DVD-Laufwerk: ks=cdrom:/PATH/TO/KICKSTART_FILE
Festplatte: ks=hd:/device/dectory/KICKSTART_FILE
HTTP-Server: ks=http://host:port/path/to/KICKSTART_FILE
FTP-Server: ks=ftp://host:port/path/to/KICKSTART_FILE
HTTPS-Server: ks=https://host : port/path/to/KICKSTART_FILE
Notfallrettungsmodus starten:
Rettung
Offizielles Dokument: „Installationsanleitung“
Kickstart-Dateiformat:
Befehlsabschnitt: Angeben verschiedene Vorinstallationskonfigurationen, wie z. B. Tastaturtyp usw.;
Paketsegment: Geben Sie die zu installierende Paketgruppe oder das nicht zu installierende Paket usw. an 🎜>
%packages
@group_name
Paket
-package
%end
Skriptsegment:
%pre: Pre- Installationsskript
Laufumgebung: eine Micro-Linux-Umgebung, die auf dem Installationsmedium ausgeführt wird
%post: Post- Installationsskript
Laufumgebung: das installierte System
Befehle im Befehlsbereich :
Erforderlicher Befehl
authconfig: Konfiguration der Authentifizierungsmethode
authconfig --useshadow -- passalgo=sha512
Bootloader: Installationsort des Bootloaders und zugehörige Konfiguration
bootloader --location=mbr --driveorder=sda --append= „crashkernel =auto crashkernel=auto rhgb rhgb quiet quiet“
Tastatur: Tastaturtyp festlegen
Sprache: Sprachtyp
Teil: Partition erstellen
rootpw: Root-Passwort angeben
timezone: Zeitzone
Optionaler Befehl
Installieren ODER Aktualisieren
Text: Textinstallationsschnittstelle
Netzwerk
Firewall
Selinux
Halt
Ausschalten
reboot
repo
Benutzer: Erstellen Sie nach der Installation einen neuen Benutzer für das System abgeschlossen
URL: Geben Sie die Installationsquelle an
So erstellen Sie eine Kickstart-Datei:
(1) Manuell direkt bearbeiten;
gemäß einer Vorlage ändern
(2) Sie können das verwenden Erstellungstool: system-config-kickstart ( CentOS 6)
Ändern und generieren Sie eine neue Konfiguration basierend auf einer Vorlage;
http://172.16.0.1/ centos6.x86_64.cfg
Überprüfen Sie die ks-Datei auf Syntaxfehler: ksvalidator
# ksvalidator /PATH/TO/ KICKSTART_FILE
Erstellen Sie eine bootfähige CD:
# mkisofs - R -J -T -v --no-emul -boot --boot-load-size 4 --boot-info-table -V "CentOS 6.6 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot. cat -o /root/boot.iso myiso/
Rezension: CentOS-Systeminstallation
Kickstart-Datei:
Befehlsabschnitt
Erforderlich: authconfig, Bootloader, ...
Optional: Firewall, Selinux, Neustart, ...
Paketsegment
%packages
@group_name
Paket
-Paket
%end
Skriptsegment
%pre
...
%end
%post
...
%end
Erstellungstool: system-config-kickstart
Syntaxprüfung: ksvalidator
Wie läuft der Installationsprozess ab? Holen Sie sich die Kickstart-Datei:
DVD: ks=cdrom:/PATH/TO/KS_FILE
HTTP: ks=http://HOST: PORT/PATH/TO/KS_FILE
SELinux:
SELinux: Secure Enhanced Linux, arbeitet im Linux-Kernel
DAC: Discretionary Access Control; 🎜>
MAC: Obligatorische Zugriffskontrolle;
SELinux hat zwei Arbeitsebenen:
streng: Jede Prozess wird von Selinux gesteuert;
gezielt: Nur eine begrenzte Anzahl von Prozessen wird von Selinux gesteuert.
Überwachen Sie nur Prozesse, die leicht kompromittiert werden können ;
Sandbox:
Subjektoperationsobjekt
Betreff: Prozess
Objekt: Prozess, Datei,
Datei: öffnen, lesen, schreiben , schließen, chown, chmod
Betreff: Domain
Objekt: Typ
SELinux für jede Datei und jeden Prozess
Benutzer:Rolle:Typ
Benutzer: SELinux-Benutzer;
Rolle: Rolle
Typ: Typ;
SELinux-Regelbasis:
Regeln: Welche Domäne kann auf welche Art oder Arten von Dateien zugreifen;
SELinux konfigurieren:
Ob SELinux aktiviert ist;
Beschriften Sie die Datei neu;
Bestimmte Stoffeigenschaften festlegen ;
SELinux-Status:
Durchsetzung: Durchsetzung, jeder eingeschränkte Prozess muss eingeschränkt werden;
permissiv: aktiviert, jeder eingeschränkte Prozessverstoß wird nicht verboten, sondern im Prüfprotokoll aufgezeichnet
deaktiviert: Schließen
Verwandte Befehle:
getenforce: Aktuellen Status von Selinux abrufen;
setenforce 0|1
0: auf „permissiv“ eingestellt
1: auf „erzwingend“ eingestellt
Diese Einstellung: ungültig nach Neustart des Systems;
Konfigurationsdatei: /etc/sysconfig/selinux, /etc /selinux/config
SELINUX={disabled|enforcing|permissive}
Markieren Sie die Datei erneut:
chcon
chcon [OPTION]... KONTEXTDATEI...
chcon [OPTION]... [-u USER ] [-r ROLE] [-t TYPE] DATEI...
chcon [OPTION]... --reference=RFILE FILE ..
-R: rekursive Markierung;
Standardbezeichnung für Wiederherstellungsdateien:
restorecon [-R] /path/to/somewhere
boolesche Regeln:
getsebool
setsebool
getsebool-Befehl:
getsebool [-a] [boolean]
setsebool-Befehl:
setsebool [-P] boolescher Wert | =val1 bool2=val2 ...
Bash-Skript-Programmierung:
Programmiersprache :
Datenstruktur
Sequentielle Ausführung
Ausführung auswählen
Bedingter Test
Befehl ausführen oder [[ EXPRESSION ]]
Rückgabewert des Ausführungsstatus;
if
case
Schleife Ausführen
um ein bestimmtes Codesegment mehrmals auszuführen
um wie oft auszuführen?
Die Anzahl der Zyklen ist im Voraus bekannt:
Die Anzahl der Zyklen ist im Voraus unbekannt
Es müssen Ein- und Ausreisebedingungen vorliegen:
für, während, bis
Funktion: Strukturierte Programmierung und Code-Wiederverwendung;
Funktion
for-Schleife Syntax:
für NAME in LISTE; tun
Schleifenkörper
fertig
Listengenerierungsmethode:
(1) Ganzzahlliste
{start ..end}
$(seq start [[step]end])
(2) glob
/ etc/rc.d/rc3.d/K*
(3) Befehl
Durch Ping-Befehl den Online-Status aller Hosts im Bereich 172.16.250.1-254 erkennen
#!/bin/bash
#
net='172.16.250'
Uphosts=0
Downhosts=0
for i in {1..20}; ping -c 1 -w 1 ${net}.$ {i} &> /dev/null
if [ $? -eq 0 ]; ${i} ist aktiv.“
let uphosts++
else
echo "$ {net}.${i} ist ausgefallen.“
let downhosts++
fi
fertig
echo „Up hosts: $uphosts.“
echo „Down hosts: $downhosts.“
while-Schleife:
while CONDITION; do
Schleifenkörper
fertig
BEDINGUNG: Schleifenkontrollbedingung; Treffen Sie vor dem Eintritt in die Schleife eine erneute Beurteilung.
Wenn die Bedingung „wahr“ ist, führen Sie eine Schleife durch, bis der Zustandsteststatus „ false", Schleife beenden;
Daher: CONDTION sollte im Allgemeinen eine Schleifensteuervariable haben; und der Wert dieser Variablen wird im Schleifenkörper kontinuierlich geändert;
Beispiel: Finden Sie die Summe aller positiven ganzen Zahlen innerhalb von 100;
#!/bin/bash
#
declare -i sum=0
declare -i i=1
while [ $i -le 100 ]; do
let sum+=$i
lass i++
fertig
echo „$i“
echo „Zusammenfassung: $sum.“
10 Benutzer hinzufügen
Benutzer1-Benutzer10
#!/bin/bash
#
declare -i i= 1
declare -iuser=0
while [ $i -le 10 ];
if ! id user$i &> >
echo „Benutzer hinzufügen: Benutzer$i.“
Benutzer zulassen++
fi
lass i++
fertig
echo „$users Benutzer hinzufügen.“
Erkennen Sie den Online-Status aller Hosts im Bereich 172.16.250.1-254 über den Ping-Befehl (verwenden Sie eine While-Schleife)
#!/bin/bash
#
declare -i i=1
declare - i uphosts=0
declare -i downhosts=0
net='172.16.250'
while [ $i -le 20 ]; do
if ping -c 1 -w 1 $net .$i &> /dev/null ; then
echo „$net.$i is up.“
let uphosts++
sonst
echo „$net.$i ist down.“
let downhosts++
   fi
   let i++
fertig
echo „Up hosts: $uphosts. „
echo „Down hosts: $downhosts.“
打印九九乘法表;(分别使用for和while循环实现)
#!/bin/bash
#
für j in {1..9}; do
   für i in $(seq 1 $j); do
echo -e -n "${i}X${j}=$[$i*$j]t"
   erledigt
   echo
erledigt
#!/bin/bash
#
declare -i i=1
deklarieren -i j=1
while [ $j -le 9 ]; do
   while [ $i -le $j ]; do
echo -e -n "${i}X${j}=$[$i*$j]t"
let i++
   done
   echo
   let i= 1
   let j++
fertig
利用RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大者和最小者;
#!/bin/bash
#
declare -i max=0
declare -i min=0
declare -i i=1
while [ $i -le 9 ]; do
   rand=$RANDOM
   echo $rand
if [ $i -eq 1 ]; dann
max=$rand
min=$rand
   fi
   if [ $rand -gt $max ]; dann
max=$rand
   fi
   if [ $rand -lt $min ]; dann
min=$rand
   fi
   let i++
fertig
echo „MAX: $max.“
echo „MIN: $ min."
回顾:selinux, while
selinux: 内核,安全加强;
开启:
/etc/sysconfig/selinux, /etc/selinux/config
# setenforce
# getenforce
打标:
chcon [-t TYPE ]
-R
布尔型:
getsebool [ -a]
setsebool [-P]
while循环:
während ZUSTAND; tun
循环体
erledigt
sed:编辑器
sed: Stream EDitor, Zeileneditor
Verwendung:
sed [Option]... 'script'-Eingabedatei...
script:
'Adressbefehl'
Allgemeine Optionen:
-n: Den Inhalt im Modus nicht auf dem Bildschirm ausgeben;
-e: Mehrpunktbearbeitung;
-f /PATH/TO/SCRIPT_FILE: Liest das Bearbeitungsskript aus der angegebenen Datei;
-r: unterstützt die Verwendung erweiterter regulärer Ausdrücke;
-i: direkt bearbeiten; > Adresstrennung:
(1) Keine Adresse: Volltext verarbeiten;
(2) Einzelne Adresse :
#: Die angegebene Zeile
/pattern/: Jede Zeile, die mit diesem Muster übereinstimmen kann; >(3) Adressbereich:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
(4) ~: Schritt
1~2
2~2
Befehl bearbeiten:
d: löschen
p: Inhalt im Musterbereich anzeigen
einen Text: Text nach der Zeile anhängen; Unterstützung mit n, um mehrzeiliges Anhängen zu implementieren;
i Text: Text vor der Zeile einfügen;
c text: Die Ersetzungszeile ist ein- oder mehrzeiliger Text
w /path/to/somefile: Speichern Sie die mit dem Muster übereinstimmenden Zeilen Leerzeichen zur angegebenen Datei;
r /path/from/somefile: Liest den Textstrom der angegebenen Datei bis zum Ende der übereinstimmenden Zeile im Musterbereich; 🎜>
= : Zeilennummern für Zeilen im Musterraum drucken;
!: Bedingung negieren; s///: Unterstützt die Verwendung anderer Trennzeichen, s@@@, s###>Ersatzzeichen:
g: Globale Inline-Ersetzung;
p: Anzeige der erfolgreich ersetzten Zeilen
w /PATH/TO/SOMEFILE: Speichern Sie die erfolgreiche Ersetzung Ergebnisse in der angegebenen Datei;
1: Löschen Sie alle Leerzeichen am Anfang von Zeilen, die mit Leerzeichen in der Datei /boot/grub/grub.conf beginnen.
~]# sed 's@^[[:space:]]+@@' /etc/grub2.cfg
2: Löschen Sie /etc/ # und Leerzeichen am Anfang aller Zeilen in der fstab-Datei, die mit # beginnen und denen mindestens ein Leerzeichen folgt; >~]# sed 's@^#[[:space :]]+@@' /etc/fstab
3: echo ein absoluter Pfad zu der sed-Befehl, entferne seinen Verzeichnisnamen;
~]# echo "/etc/sysconfig/" |. ?$@@'
Erweiterte Bearbeitungsbefehle:
h: Überschreiben Sie den Inhalt im Musterbereich in den Haltebereich;
H: Den Inhalt im Musterbereich an den Haltebereich anhängen
g: Die Daten aus dem Haltebereich übernehmen und in den Musterbereich überschreiben;
G: Nehmen Sie den Inhalt aus dem Haltebereich und hängen Sie ihn an den Musterbereich an; x: Tauschen Sie den Inhalt im Musterbereich mit dem Inhalt im Haltebereich aus;
n: Lesen Sie die nächste Zeile der übereinstimmenden Zeile in den Musterbereich;
N: Die nächste Zeile der übereinstimmenden Zeile an den Musterbereich anhängen
d: Zeilen im Musterbereich löschen; >D: Alle Zeilen im mehrzeiligen Musterbereich löschen
sed -n 'n;p' FILE: Gerade Zeilen anzeigen
sed '1!G;h;$!d' FILE: Anzeige in Dateiinhalt umkehren
sed '$!N;$!D' FILE: Nehmen Sie die letzten beiden Zeilen der Datei heraus
sed '$!d' DATEI: Nehmen Sie die letzte Zeile der Datei heraus;
sed 'G' DATEI:
sed '/^ $/d;G' DATEI:
sed 'n;d' DATEI: Ungerade Zeilen anzeigen
sed -n '1! G;h;$p' DATEI: Zeigt jede Zeile in der Datei in umgekehrter Reihenfolge an;
Bash-Skripting
while BEDINGUNG; tun
Schleifenkörper
fertig
Eintrag Bedingung: BEDINGUNG ist wahr;
Ausgangsbedingung: falsch
bis BEDINGUNG; Schleifenkörper
fertig
Eingabebedingung: falsch
Ausgangsbedingung: wahr
Beispiel: Ermitteln Sie die Summe aller positiven ganzen Zahlen innerhalb von 100;
#!/bin/bash
#
declare -i i=1
declare -i sum=0
until [ $i -gt 100 ]; do
let sum+=$i
let i++
fertig
echo „Summe: $ sum"
Beispiel: Einmaleins drucken
#!/bin/bash
#
declare -i j=1
declare -i i=1
bis [ $j -gt 9 ]; bis [ $i -gt $j ];
echo -n -e "${i}X${j}=$[$i*$j]t"
let i++
fertig
echo
let i=1
let j++
fertig
Schleifenkontrollanweisung (im Schleifenkörper verwendet):
continue [N]: Beende den aktuellen Zyklus der N-ten Ebene im Voraus und gehe direkt in die nächste Beurteilungsrunde
while CONDTIITON1; 🎜>
CMD1
...
wenn BEDINGUNG2; dann
weiter
fi
CMDn
...
fertig
Pause [N]: Schleife vorzeitig beenden;
während CONDTIITON1; tun Sie
CMD1
...
wenn BEDINGUNG2; dann
break
fi
CMDn
...
fertig
Beispiel 1: Ermitteln Sie die Summe aller geraden Zahlen darin 100; erfordert eine Schleife, um alle positiven ganzen Zahlen innerhalb von 100 zu durchlaufen;
#!/bin/bash
#
deklariere -i i=0
declare -i sum=0
bis [ $i -gt 100 ]; do
let i++
if [ $[$i%2] -eq 1 ] then
continue
fi
let sum+=$i
fertig
Echo „Gerade Summe: $sum“
Erstellen Sie eine Endlosschleife:
während wahr; tun
Schleifenkörper
fertig
bis falsch; tun
Schleifenkörper
fertig
Beispiel 2: Informationen über angemeldete Benutzer alle 3 Sekunden vom System abrufen; wenn Docker angemeldet ist, werden diese im Protokoll aufgezeichnet und beendet
#!/bin/bash
#
read -p "Geben Sie einen Benutzernamen ein: " Benutzername
while true;
if who |
fi
Schlaf 3
fertig
echo „$Benutzername angemeldet“ >> /tmp/user.log
Nein. Zwei Implementierungen:
#!/bin/bash
#
read - p „Geben Sie einen Benutzernamen ein:“ username
until who |
Schlaf 3
fertig
echo „$Benutzername angemeldet >>.“ ; /tmp/user.log
Spezielle Verwendung der while-Schleife (jede Zeile der Datei durchlaufen):
while read line;
Lesen Sie nacheinander jede Zeile in der Datei /PATH/FROM/SOMEFILE und weisen Sie die Zeile der Variablenzeile zu:
Beispiel: Alle Benutzer finden, deren ID-Nummern gerade Zahlen sind, und ihre Benutzernamen und ID-Nummern anzeigen;
#!/bin/bash
while read line;do
if [ $[`echo $line |. cut -d: -f3` % 2] -eq 0 |. "uid: `echo $line | cut -d: -f3 `"
                                                                                                                                        >
Spezielles Format für for-Schleife:
for ((Kontrollvariableninitialisierung; bedingter Beurteilungsausdruck Formel; modifizierter Ausdruck der Kontrollvariable)); do
Schleifenkörper
fertig
Initialisierung der Steuervariablen: Wird nur einmal ausgeführt, wenn der Schleifencodeabschnitt ausgeführt wird ; Geänderter Ausdruck der Steuervariablen: Die Steuervariable wird zuerst am Ende jedes Zyklus ausgeführt. Korrigieren Sie die Operation und treffen Sie dann eine bedingte Beurteilung >
Beispiel: Finden Sie die Summe aller positiven ganzen Zahlen innerhalb von 100;
#!/bin/bash
#
declare -i sum=0
für ((i =1;i<=100;i++)); do
let sum+=$i
done
echo „Summe: $summe.“
Beispiel 2: Drucken Sie die Multiplikationstabelle aus; >
#!/bin/bash
#
for((j= 1 ;j<=9;j++));do
for((i=1;i<=j;i++))do
                                                               ‐ ‐ ‐                                                             bis . echo
fertig
(1) Ein Menü wie folgt anzeigen:
cpu) CPU-Informationen anzeigen;
mem) Speicherinformationen anzeigen;
Datenträger) Datenträgerinformationen anzeigen;
Beenden) Beenden
(2) fordert den Benutzer auf, Optionen auszuwählen ;
(3) zeigt den vom Benutzer ausgewählten Inhalt an 🎜>cat << >
mem) Speicherinformationen anzeigen;
disk) Festplatteninformationen anzeigen;
quit) quit
=========== =================
EOF
read - p "Geben Sie eine Option ein: " option
while [ "$option" != 'cpu' -a "$option" != 'mem' -a "$option" != 'disk' -a "$option" != 'quit' ] do
read -p "Falsche Option, erneut eingeben: " Option
fertig
if [ "$option" == 'cpu' ]; then
lscpu
elif [ "$option" == 'mem' ];
cat /proc/meminfo
elif [ "$option" == 'disk' ]; then
fdisk -l
else
echo "Quit"
Exit 0
fi
Weiter:
Der Benutzer wählt aus und verlässt das Programm nicht Das Skript fordert den Benutzer nach Abschluss der Anzeige dazu auf, weiterhin andere Inhalte anzuzeigen. Es wird erst beendet, wenn „Beenden“ verwendet wird Bedingte Beurteilung: Fallanweisung
Fallvariablenreferenz in
PAT1)
Zweig 1
;;
PAT2)
Zweig 2
;;
...
* )
Standardzweig
;;
esac
Beispiel:
#!/bin/bash
#
cat <<
CPU) CPU-Informationen anzeigen;
mem) Speicherinformationen anzeigen;
disk) Festplatteninformationen anzeigen;
quit) beenden
============================
EOF
read -p "Geben Sie eine Option ein: " option
while [ "$option" != ' cpu' -a "$option" != 'mem' -a "$option" != 'disk' -a "$option" != 'quit' ]; tun
   read -p "Falsche Option, erneut eingeben: " Option
fertig
case „$option“ in
cpu)
lscpu 
;;
mem)
cat /proc/meminfo
;;
disk)
fdisk -l
;;
*)
Echo „Beenden…“
Ausgang 0
;;
esac
(1) 脚本可接受参数: Start, Stopp, Neustart, Status; (2)是Anfang:则创建/var/lock/subsys/SCRIPT_NAME, 并显示 „启动成功“;处理?
(4) 如果是stop:则删除/var/lock/subsys/SCRIPT_NAME, 并显示“停止完成“;
考虑:如果事先已然停止过了,该如何处理?
(5) 如果是restart,则先stop, 再start;
考虑:如果本来没有start, „ SCRIPT_NAME wird ausgeführt...“;
如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示„SCRIPT_NAME wird gestoppt...“;
其中:SCRIPT_NAME为当前脚本名;
总结:until, while, for, case
bash脚本编程:
case语句:
Fall 变量引用 in
PAT1)
分支1
;;
PAT2)
分支2
;;
...
*)
分支n
;;
esac
case支持glob风格的通配符:
*: 任意长度任意字符;
?: 任意单个字符;
[]:指定范围内的任意单个字符;
a|b: a或b
function:函数
过程式编程:代码重用
模块化编程
结构化编程
语法一:
function f_name {
...函数体...
Syntax 2:
f_name() {
...Funktionskörper...
}
Aufruf: Die Funktion wird nur ausgeführt, wenn sie aufgerufen wird; >
Aufruf: Bei einem gegebenen Funktionsnamen
wird der Funktionsname automatisch durch den Funktionscode
<🎜 ersetzt >
Der Lebenszyklus der Funktion: Wird beim Aufruf erstellt und bei der Rückgabe beendet.
Der Rückgabebefehl gibt ein benutzerdefiniertes Statusergebnis zurück >0: Erfolg
1-255: Fehlgeschlagen
#!/bin/bash
#
function adduser {
if id $username &> /dev/null then
echo „$username existiert.“
return 1
else
useradd $username
fi
}
for i in {1..10}; do
username=myuser$i
adduser
fertig
Beispiel: Service-Skript
#!/bin/bash
#
# chkconfig : - 88 12
# Beschreibung: Testdienstskript
#
prog=$ (basename $0)
lockfile=/var/lock/subsys/$prog
start() {
if [ -e $lockfile ]; then
echo „$prog läuft bereits.“
return 0
else
touch $lockfile
[ $? -eq 0 ] && echo „$prog wird gestartet.“
fi
}
stop() {
if [ -e $lockfile ]; dann
rm -f $lockfile && echo " Stop $prog ok."
sonst
echo „$prog ist noch gestoppt.“
fi
}
status() {
if [ -e $lockfile ]; then
echo "$prog läuft ."
else
echo „$prog ist gestoppt."
fi
}
usage() {
echo "Nutzung: $ prog {start|stop|restart|status}"
}
if [ $# -lt 1 ] ; dann
Nutzung
Exit 1
fi
Karton 1 $ in
Start)
Start
;;
Stopp)
Stopp
;;
Neustart)
Stopp
Start
;;
Status)
Status
;;
*)
Nutzung
esac
Funktionsrückgabewert:
Das Ausführungsergebnis der Funktion gibt Wert zurück:
(1) Verwenden Sie den Echo- oder Print-Befehl für die Ausgabe.
(2) Das Ausführungsergebnis des aufgerufenen Befehls im Funktionskörper;
Der Exit-Statuscode der Funktion:
(1) Der Standardwert hängt vom Exit-Statuscode der ab letzter im Funktionskörper ausgeführter Befehl;
(2) Benutzerdefinierter Exit-Statuscode:
return
Funktionen können Parameter akzeptieren:
Parameter an die Funktion übergeben: Wenn Sie eine Funktion aufrufen, trennen Sie einfach die angegebene Parameterliste durch ein Leerzeichen nach dem Funktionsnamen ; zum Beispiel „testfunc arg1 arg2...“
Im Funktionskörper können Sie $1, $2, ... verwenden, um diese Parameter aufzurufen; Sie können auch spezielle Variablen wie $@, $*, $# verwenden;
Beispiel: 10 Benutzer hinzufügen
#!/bin/bash
#
function adduser {
if [ $# -lt 1 ]; then
return 2
# 2: no arguments
fi
if id $1 &> /dev/null then
echo „$1 existiert.“
return 1
else
useradd $1
[ $? -eq 0 ] && echo „$1 hinzufügen fertig.“ && return 0
fi
}
for i in {1..10}; do
adduser myuser$i
erledigt
NN-Multiplikationstabelle drucken, implementiert mit Funktionen
Variablenbereich:
Lokale Variablen: Um das Skript auszuführen, wird daher ein dedizierter Shell-Prozess gestartet. Der Umfang der lokalen Variablen ist die aktuelle Shell-Skript-Programmdatei.
Lokale Variablen: Der Lebenszyklus der Funktion wird automatisch zerstört
Wenn die Funktion lokale Variablen enthält, sind ihre Namen dieselben wie die lokalen Variablen.
So definieren Sie lokale Variablen in einer Funktion :
lokaler NAME=WERT
Funktionsrekursion:
Die Funktion ruft sich direkt oder indirekt auf; n(n-1)! = n(n-1)(n-2)!
#!/bin/bash
#
fact() {
if [ $1 -eq 0 -o $1 -eq 1 ]; then
echo 1
else
echo $[$1*$(fact $[$1-1])]
   fi
}
Fakt 5
求n阶斐波那契数列;
#!/bin/bash
#
fab() {
   if [ $1 -eq 1 ]; then
echo 1
   elif [ $1 -eq 2 ]; then
echo 1
   else
echo $[$(fab $[$1- 1])+$(fab $[$1-2])]
   fi
}
fab 7
Systemd:
POST --> Boot-Sequenz --> Bootloader --> Kernel + initramfs(initrd) --> rootfs --> /sbin/init
init:
CentOS 5: SysV init
CentOS 6: Upstart
CentOS 7: Systemd
Systemd新特性:
系统引导时实现服务并行启动;
按需激活进程;
系统状态快照;
基于依赖关系定义服务控制逻辑;
核心概念:unit
配置文件进行标识
保存至:
/usr/lib/systemd/system
/run/systemd/system
/etc/systemd/system
Einheit的类型:
Serviceeinheit: 文件扩展名为.service, 用于定义系统服务;
Zieleinheit: 文件扩展名为.target,用于模拟实现“运行级别“;
Geräteeinheit: .device, 用于定义内核识别的设备;
Mount-Einheit: .mount, 定义文件系统挂载点;
Socket-Einheit: .socket, 用于标识进程间通信用的socket文件;
Snapshot-Einheit: .snapshot, 管理系统快照;
Swap-Einheit: .swap, 用于标识swap设备;
Automount-Einheit: .automount,文件系统的自动挂载点;
Pfadeinheit: .path,用于定义文件系统中的一个文件或目录;
关键特性:
基于s socket的激活机制: socket > 🎜>
基于path的激活机制:
系统快照:保存各unit的当前状态信息于持久存储设备中;
向后兼容sysv init脚本;
不兼容:
systemctl命令固定不变
非由systemd启动的服务,systemctl无法与之通信
管理系统服务:
CentOS 7: Serviceeinheit
注意:能兼容早期的服务脚本
命令:systemctl COMMAND name .service
Start: Dienstname start ==> systemctl start name.service
Stopp: Dienstname stop ==> systemctl stop name.service
Neustart: Dienstname restart ==> systemctl restart name.service
Status: Dienstname status ==> systemctl status name
Bedingter Neustart: Dienstname condrestart ==> systemctl try-restart name.service
Dienst neu laden oder neu starten: systemctl reload-or-restart name.service
Den Dienst neu laden oder bedingt neu starten: systemctl reload-or-try-restart name.service
Einstellung für automatisches Starten deaktivieren Beim Booten starten: systemctl mask name.service
Deaktivierungseinstellung für automatischen Start beim Booten aufheben: systemctl unmask name.service
Den aktuellen Aktivierungsstatus eines Dienstes anzeigen: systemctl is-active name.service
Alle aktivierten Dienste anzeigen:
systemctl list-units --type service
Alle Dienste anzeigen:
systemctl list -units --type service - -all
Entsprechung des chkconfig-Befehls:
Einen Dienst zum Starten festlegen. Selbststart: chkconfig-Name auf = => systemctl aktiviert name.service
Deaktivieren: chkconfig name off ==> systemctl deaktiviert name.service
Sehen Sie sich den Startstatus aller an Dienste:
chkconfig --list ==> systemctl list-unit-files --type service
Überprüfen Sie, ob der Dienst automatisch startet beim Booten: systemctl is-enabled name.service
Andere Befehle:
Dienstabhängigkeiten anzeigen: systemctl list- Abhängigkeiten name.service
Zieleinheiten:
Einheitenkonfigurationsdatei: .target
Runlevel:
0 ==> runlevel0.target , poweroff.target
1 ==> runlevel1.target, Rescue.target
2 ==> runlevel2.target
3 ==> runlevel3.target, multi-user.target
4 ==> runlevel4.target
5 ==> runlevel5.target,graphical.target
6 ==> runlevel6.target
Ebenenumschaltung:
init N ==> systemctl Isolate name.target
Ansichtsebene:
runlevel ==> systemctl list-units --type target
Rufen Sie den Standard-Runlevel ab:
/etc/inittab ==> systemctl get-default
Ändern Sie den Standardebene:
/etc/inittab ==> systemctl set-default name.target
Wechseln zu Notfall-Rettungsmodus:
systemctl Rescue
In den Notfallmodus wechseln:
systemctl-Notfall
Andere häufig verwendete Befehle:
Herunterfahren: systemctl halt, systemctl poweroff
Neustart: systemctl reboot
suspend: systemctl suspend
Snapshot: systemctl hibernate
Snapshot und hängen: systemctl hybrid-sleep
Rezension: Bash-Scripting, systemd
Funktion: Modulare Programmierung
Funktion f_name {
...Funktionskörper...
}
f_name() {
... Funktionskörper ...
}
Rückgabebefehl;
Parameter :
Aufrufparameter im Funktionskörper: $1, $2, ...
$*, $@, $#
Parameter an die Funktion übergeben:
Funktionsnamen-Parameterliste
systemd : System und Service
Einheit:
Typ: Service, Ziel
.service, .target
systemctl
Bash-Scripting:
Array:
Variable: ein Speicherbereich, der ein einzelnes Element speichert;
Array: ein kontinuierlicher Speicherbereich, der mehrere Elemente speichert; 🎜 >
Array-Name
Index: Die Zahl beginnt bei 0 und ist ein numerischer Index;
Hinweis: Index wird auch unterstützt. Benutzerdefinierte Formate verwenden, nicht nur numerische Formate.
Bash-Arrays unterstützen spärliche Formate.
in einem Array: ${ARRAY_NAME[INDEX]}
Deklarieren Sie ein Array:
declare -a ARRAY_NAME
declare -A ARRAY_NAME: Assoziatives Array
Zuweisung von Array-Elementen:
(1) Weisen Sie jeweils nur ein Element zu
ARRAY_NAME[INDEX]=VALUE
weekdays[0]= „Sonntag“
Wochentage[4]="Donnerstag"
(2) Alle Elemente auf einmal zuweisen:
ARRAY_NAME=("VAL1" "VAL2" "VAL3" ...)
(3) Nur bestimmte Elemente zuweisen:
ARRAY_NAME=([0]="VAL1" [3]="VAL2" ...)
(4) read -a ARRAY
Referenz-Array-Element: ${ARRAY_NAME[INDEX]}
Hinweis: Das Weglassen von [INDEX] bedeutet, dass auf das Element mit dem Index 0 verwiesen wird; 🎜 >
Die Länge des Arrays (die Anzahl der Elemente im Array): ${#ARRAY_NAME[*]}, ${#ARRAY_NAME[@]}
Beispiel: Generieren Sie 10 Zufallszahlen, speichern Sie sie in einem Array und ermitteln Sie deren Maximal- und Minimalwerte #!/ bin/bash
#
declare -a rand
declare -i max=0
for i in {0..9}; do
rand[$i]= $RANDOM
echo ${rand[$i]}
[ ${rand[$i]} -gt $max ] && max=$ {rand[$i]}
fertig
echo „Max: $max“
Definieren Sie ein Array. Die Elemente im Array sind alle Dateien, die mit .log in /var/log enden Verzeichnis; Statistiken sind erforderlich. Die Summe der Zeilen in Dateien, deren Indizes gerade Zahlen sind;
#
declare -a files
files=(/var/log/*.log)
deklariere -ilines=0
für i in $(seq 0 $[${#files[*]} -1]); mach
if [ $[$i%2] -eq 0 ];then
letlines+=$(wc -l ${files[$i ]} |. cut -d' ' -f1)
fi
fertig
echo „Zeilen: $lines.“
Referenziert ein Element in einem Array:
Alle Elemente: ${ARRAY[@]}, ${ARRAY[*]}
Array-Slice: ${ARRAY[@ ] :offset:number}
offset: die Anzahl der zu überspringenden Elemente
number: die Anzahl der herauszunehmenden Elemente, nimm den Offset Alle Elemente nach dem Betrag: ${ARRAY[@]:offset}
Elemente an das Array anhängen:
ARRAY[${#ARRAY[*]}]
Ein Element im Array löschen:
unset ARRAY[INDEX]
Assoziatives Array:
declare -A ARRAY_NAME
ARRAY_NAME=([index_name1]='val1' [index_name2]='val2' ...)
Bash-String-Verarbeitungstools:
String-Slicing:
${var: offset:number}
Erhalten Sie die Zeichen ganz rechts in der Zeichenfolge: ${var: -lengh}
Hinweis: Nach dem Doppelpunkt muss Es sein ein Leerzeichen sein;
Abrufen einer Teilzeichenfolge basierend auf dem Muster:
${var#*word} : Wobei Wort ein beliebiges angegebenes Zeichen sein kann; Funktion: Suchen Sie von links nach rechts das erste Vorkommen des Wortes in der in der Variable var gespeicherten Zeichenfolge und löschen Sie alle Zeichen zwischen dem Anfang der Zeichenfolge und dem ersten Vorkommen des Wortzeichens.
${var##*word}: Wie oben, aber was gelöscht wird, ist alles zwischen dem Anfang der Zeichenfolge und dem letzten durch Wort angegebenen Zeichen; >
file="/var/log/messages"
${file##*/}: Nachrichten
${var%word*}: Dabei kann Wort ein beliebiges angegebenes Zeichen sein. Funktion: Suchen Sie von rechts nach links das erste Vorkommen von Wort in der in der Variable var gespeicherten Zeichenfolge und löschen Sie die Zeichenfolge Alle Zeichen zwischen dem letzten Zeichen links und dem ersten Wortzeichen;
file="/var/log/messages"
${ file%/*}: /var/log
${var%%word*}: Wie oben, aber löschen Sie die Zeichenfolge ganz rechts. Alle Zeichen dazwischen Zeichen auf der linken Seite und das letzte Vorkommen des Wortes Zeichen
Beispiel: url=:80
${url##*:}
${url%%:*}
Ersatz finden :
${var/pattern/substi}: Suchen Sie die erste Zeichenfolge, die mit dem Muster in der durch var dargestellten Zeichenfolge übereinstimmt, und ersetzen Sie sie durch substi; >${var//pattern/substi}: Finden Sie alle Zeichenfolgen, die dem Muster in der durch var dargestellten Zeichenfolge entsprechen, und ersetzen Sie sie durch substi; >${var/#pattern/substi}: Suchen Sie die Zeichenfolge, die mit dem Muster übereinstimmt, am Anfang der Zeile in der durch var dargestellten Zeichenfolge und ersetzen Sie sie durch substi; >${var/%pattern/substi}: Suchen Sie die Zeichenfolge, die mit dem Muster übereinstimmt, am Ende der Zeile in der durch var dargestellten Zeichenfolge und ersetzen Sie sie durch substi; >
Suchen und löschen:
${var/pattern}: Suchen Sie die durch var dargestellte Zeichenfolge und löschen Sie beim ersten Mal die mit dem Muster übereinstimmende Zeichenfolge
${var//pattern}:
${var/#pattern}:
${var/% Muster}:
Umwandlung von Groß- und Kleinschreibung:
${var^^}: Konvertiert alle Kleinbuchstaben in var in Großbuchstaben;
${var,,}: Konvertieren Sie alle Großbuchstaben in var in Kleinbuchstaben;
Variablenzuweisung:
${var:-value}: Wenn var leer oder nicht gesetzt ist, dann Rückgabewert; andernfalls wird der Wert von var zurückgegeben; var:=value}: Wenn var leer oder nicht gesetzt ist, geben Sie einen Wert zurück und weisen Sie var einen Wert zu. Andernfalls geben Sie den Wert von var zurück {var:+value}: Wenn var nicht leer ist, Rückgabewert; den Wert von var zurückgeben;
Verwenden Sie die Konfigurationsdatei für das Skriptprogramm:
(1) Definieren Sie a Textdatei und definieren Sie „name=value“ für jede Zeile
(2) Quelle dieser Datei im Skript
Befehl:
mktemp Befehl:
mktemp [OPTION]... [TEMPLATE]
VORLAGE: Dateiname.XXX
Mindestens drei XXX müssen erscheinen
OPTION:
-d: Erstellen Sie ein temporäres Verzeichnis;
--tmpdir=/PATH/TO/SOMEDIR: Geben Sie den Speicherort für das temporäre Dateiverzeichnis an; 🎜>Installationsbefehl:
install [OPTION]... [-T] SOURCE DEST
install [ OPTION]... QUELLE... VERZEICHNIS
install [OPTION]... -t VERZEICHNIS QUELLE...
install [ OPTION]... -d VERZEICHNIS...
Optionen:
- m MODUS
-o EIGENTÜMER
-g GRUPPE
GNU awk:
Drei Textverarbeitungswerkzeuge: grep, sed, awkgrep, egrep, fgrep: Textfilterungsmuster
sed: Zeileneditor
Musterraum, Halteraum
awk: Berichtsgenerator, formatierte Textausgabe
AWK: Aho , Weinberger, Kernighan –> - Sprache zum Scannen und Verarbeiten von Mustern
Grundlegende Verwendung: gawk [Optionen] 'Programm' DATEI ...
Programm: PATTERN{ACTION STATEMENTS}
Anweisungen durch Semikolons trennen
print, printf
Optionen:
-F: Gibt das bei der Eingabe verwendete Feldtrennzeichen an; v var=value: benutzerdefinierte Variable;
1. item2, ...
Wichtige Punkte:
(1) Komma-Trennzeichen;
(2) Jedes Ausgabeelement kann eine Zeichenfolge oder ein numerischer Wert sein; das Feld, die Variable oder der AWK-Ausdruck des aktuellen Datensatzes
(3) Wenn Element weggelassen wird, entspricht es dem Drucken von
2.1 Integrierte Variablen
FS: Eingabefeldtrennzeichen, der Standardwert sind Leerzeichen
OFS: Ausgabefeldtrennzeichen, der Standardwert sind Leerzeichen
RS: Trennzeichen für Eingabedatensätze, Zeilenumbruchzeichen während der Eingabe
ORS: Trennzeichen für Ausgabedatensätze, Zeilenumbruchzeichen während der Ausgabe; 🎜>
NF: Anzahl der Felder, Anzahl der Felder
{print NF}, {print $NF}
NR: Anzahl der Datensätze, Anzahl der Zeilen;
FNR: Anzahl der Zeilen einzeln; 🎜 >
DATEINAME: aktueller Dateiname;
ARGC: Anzahl der Befehlszeilenparameter; : Array, das die von der Befehlszeile angegebenen Parameter speichert;
2.2 Benutzerdefinierte Variablen
( 1) - v var=value
Variablennamen unterscheiden zwischen Groß- und Kleinschreibung
(2) Definieren Sie direkt
3. printf-Befehl
Formatierung: printf FORMAT, item1, item2, ...
(1) FORMAT muss angegeben werden
(2) Es wird keine geben automatischer Zeilenumbruch, und das Zeilenumbruch-Steuerzeichen muss explizit angegeben werden, n
(3) In FORMAT muss für jedes nachfolgende Element ein Formatierungssymbol angegeben werden;
Zeichen formatieren:
%c: Zeigt den ASCII-Code des Zeichens an;
%d, %i: Dezimale Ganzzahl anzeigen;
%e, %E: Zahlenwert in wissenschaftlicher Notation anzeigen; % f: Anzeige als Gleitkommazahl; %g, %G: Anzeigewert in wissenschaftlicher Notation oder Gleitkommaform s: Zeichenfolge anzeigen;
%u: Ganzzahl ohne Vorzeichen
%%: Anzeige % selbst; >
Modifikator:
#[.#]: Die erste Zahl steuert die Breite der Anzeige; das zweite # gibt die Genauigkeit nach dem Komma an ;
%3.1f
-: Linksbündig
+: Zeigt das Symbol von an der Wert
4. Operatoren
Arithmetische Operatoren:
x+y, x-y, x*y, x/y, x^y, x%y
-x
+x: In numerischen Wert konvertieren;
String-Operator: vorzeichenloser Operator, String-Verkettung
Zuweisungsoperator:
=, +=, -=, *=, /=, %=, ^=
++, --
Vergleichsoperatoren:
>, > ;=, <, < ;=, !=, ==
Musterübereinstimmung mit Zeichen:
~ : Übereinstimmungen mit
!~: Entspricht nicht
Logischer Operator:
&&
||
!
Funktionsaufruf:
Funktionsname(argu1, argu2, ...)
Bedingter Ausdruck:
selector?if-true-expression:if-false-expression
# awk -F: '{$3> ;=1000?usertype="Common User" :usertype="Sysadmin or SysUser";printf "%15s:%-sn",$1,usertype}' /etc/passwd
MUSTER
(1) leer: leeres Muster, entspricht jeder Zeile;
(2) /regulärer Ausdruck/: Nur Prozesslinien, die dem Muster hier zugeordnet werden können
(3) relationaler Ausdruck: Das Ergebnis kann „wahr“ oder „falsch“ sein; es wird nur verarbeitet, wenn das Ergebnis „wahr“ ist; 🎜>
True: Das Ergebnis ist ein Wert ungleich Null, eine nicht leere Zeichenfolge
(4) Zeilenbereiche: Zeilenbereich,
Startlinie, Endlinie:/pat1/,/pat2/
Hinweis: Das Format der direkten Angabe von Zahlen wird nicht unterstützt
~] # awk -F: '(NR>=2&&NR<=10){print $1}' /etc/passwd
(5) BEGIN/ END-Modus
BEGIN{}: Wird nur einmal ausgeführt, bevor mit der Verarbeitung des Textes in der Datei begonnen wird.
END{}: Wird nur einmal ausgeführt nach Abschluss der Textverarbeitung;
6. Häufig verwendete Aktionen
(1 ) Ausdrücke
(2) Kontrollanweisungen: if, while usw.;
(3) Zusammengesetzte Anweisungen: Kombinationsanweisungen
(4) Eingabeanweisungen
(5) Ausgabeanweisungen
7. Kontrollanweisungen
if(condition) {statments}
if(condition) {statments} else { Statements}
while(conditon) {statments}
do {statements} while(condition)
for(expr1;expr2;expr3) {Anweisungen }
Pause
Weiter
Array[Index] löschen
Array löschen
Exit
{ Anweisungen }
7.1 if-else
Syntax: if (Bedingung)-Anweisung [else-Anweisung]
~]# awk -F: '{if($3>=1000) {printf "Common user: %sn",$1} else {printf "root oder Sysuser: %sn",$1}}' /etc/passwd
~]# awk -F: '{if($NF== "/bin/bash") print $1}' /etc /passwd
~]# awk '{if(NF>5) print $0}' / etc/fstab
~]# awk -F[%] '/^/dev/{print $1}' | ($NF>=20) print $1}'
Verwendungsszenario: Treffen Sie eine bedingte Beurteilung der gesamten Zeile oder eines bestimmten Felds, das durch awk erhalten wurde;
7.2 while-Schleife
Syntax: while(condition)-Anweisung
If Die Bedingung ist „wahr“, die Schleife betreten; wenn die Bedingung „falsch“ ist, die Schleife verlassen;
Verwendungsszenario: Wird bei der Verarbeitung mehrerer Felder verwendet eine Zeile nach der anderen; wird verwendet, wenn jedes Element in einem Array einzeln verarbeitet wird;
~]# awk '/^[[:space:]] *linux16/{i=1;while(i<=NF) {print $i,length( $i); i++}}' /etc/grub2.cfg
~]# awk '/^[[:space:]]*linux16/{ i=1;while(i<=NF) {if(length($i)>=7) {print $i ,length($i)}; i++}}' /etc/grub2.cfg
7.3 do-while-Schleife
Syntax: do-Anweisung while(condition)
Bedeutung: Schleifenkörper mindestens einmal ausführen
7.4 for-Schleife
Syntax: for(expr1;expr2;expr3 )-Anweisung
for(Variablenzuweisung;Bedingung ;iterationsprozess) {for-body}
~]# awk '/^[[:space:]]*linux16/{for(i=1 ;i<=NF;i++) {print $i,length($i)}}' /etc/ grub2.cfg
Besondere Verwendung:
kann die Elemente im Array durchlaufen
Syntax: for(var in array) {for-body}
7.5 switch-Anweisung
Syntax: switch(expression) {case VALUE1 or /REGEXP/: Statement; case VALUE2 or /REGEXP2/: Statement . ..; Standard: Anweisung}
7.6 Pause und Fortsetzung
Pause [n]
weiter
7.7 weiter
Beenden Sie die Anfrage an unsere Bank frühzeitig bearbeiten und direkt zur nächsten Zeile gehen
~]# awk -F: '{if($3%2!=0) next; print $1,$3 }' /etc/passwd
8. Array
Assoziativ array: array[ index-expression]
index-expression:
(1) Es kann jede beliebige Zeichenfolge verwendet werden ; die Zeichenfolge muss doppelte Anführungszeichen verwenden; leere Zeichenfolge“;
Um festzustellen, ob ein Element im Array vorhanden ist, verwenden Sie das Format „Index im Array“;
weekdays[mon]="Monday"
Um jedes Element im Array zu durchlaufen, verwenden Sie eine for-Schleife
for(var in array) {for-body}
~]# awk 'BEGIN{weekdays[" mon"] ="Montag";wochentage["tue"]="Dienstag";for(i in wochentagen) {print wochentage[i]}}'
Hinweis: var durchläuft jeden Index des Arrays;
state["LISTEN"]++
state["ESTABLISHED" ]++
~]# netstat -tan |./{state[$NF]++}END{for(i in state) { print i,state[i]}}'
~]# awk '{ip[$1]++}END{for(i in ip) { print i,ip[i]}}' /var/log/httpd/access_log
1: Statistik jedes Dateisystemtyps im / etc/fstab-Datei Anzahl der Vorkommen;
~]# awk '/^UUID/{fs[$3]++}END{for(i in fs) {print i,fs [i]} }' /etc/fstab
2: Zählt die Anzahl der Vorkommen jedes Wortes in der angegebenen Datei; 🎜>
~ ]# awk '{for(i=1;i<=NF;i++){count[$i]++}}END{for(i in count) {print i,count[i] }}' /etc/ fstab
9. Funktion
9.1 Eingebaut Funktion
Numerische Verarbeitung:
rand(): gibt eine Zufallszahl zwischen 0 und 1 zurück;
String-Verarbeitung:
length([s]): Gibt die Länge des angegebenen Strings zurück; >sub(r,s, [t]): Verwenden Sie das durch r dargestellte Muster, um den passenden Inhalt im durch t dargestellten Zeichen zu finden und dessen erstes Vorkommen durch den durch s dargestellten Inhalt zu ersetzen; >
gsub(r,s,[t]): Verwenden Sie das durch r dargestellte Muster, um passenden Inhalt im durch t dargestellten Zeichen zu finden und alle Vorkommen davon durch den durch s dargestellten Inhalt zu ersetzen; >
split(s,a[,r]): Verwenden Sie r als Trennzeichen, um das Zeichen s auszuschneiden, und speichern Sie das Schnittergebnis in dem durch a; dargestellten Array
~]# netstat -tan | } END{for (i in count) {print i,count[i]}}'
9.2 Benutzerdefinierte Funktion
《sed and awk》
   
DNF新一代的RPM软件包管理器.他首先出现在 Fedora 18 这个发行版中。而最近, 他取代了YUM, 正式成为 Fedora 22 的包管理器.
DNF包管理器克服了YUM包管理器的一些瓶颈, 提升了包括用户体验, 内存占用, 依赖分析, 运行速度等多方面的内容.
DNF使用 RPM, libsolv和 hawkey hat eine neue Version von CentOS und RHEL 7 entwickelt 🎜>
DNF 的最新稳定发行版版本Version 1.0, veröffentlicht am 11.05.2015大部分采用 Python ist eine Version der GPL v2.
Die Abhängigkeitsauflösung von YUM ist ein Albtraum und wurde in DNF mit der SUSE-Bibliothek „libsolv“ und dem Python-Wrapper zusammen mit C Hawkey gelöst.
YUM nicht eine dokumentierte API.
Das Erstellen neuer Funktionen ist schwierig.
Keine Unterstützung für andere Erweiterungen als Python.
Geringere Speicherreduzierung und weniger automatische Synchronisierung von Metadaten – ein zeitaufwändiger Prozess .

Das obige ist der detaillierte Inhalt vonGrundlagen des Linux-Systems (2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage