Bases du système Linux (2)

PHP中文网
Libérer: 2017-06-20 11:19:38
original
2353 Les gens l'ont consulté
Gestion des disques Linux
Ports d'E/S : adresse du périphérique d'E/S
Tout est un fichier :
open(), read(), write(), close()
Bloc périphérique : bloc, unité d'accès "bloc", disque
Périphérique de caractère : char, unité d'accès "caractère", clavier
Fichier de périphérique : associé à un pilote de périphérique pour communiquer avec le périphérique matériel correspondant
Numéro de périphérique :
Numéro majeur de l'appareil : numéro majeur, identifie le type d'appareil
Numéro mineur de l'appareil : numéro mineur, identifie les différents appareils du même type
Type d'interface disque dur :
Parallèle :
IDE : 133 Mo/s
SCSI : 640 Mo/s
Port série :
SATA : 6 Gbit/s
SAS : 6Gbps
USB : 480 Mo/s
rpm : rotations par minute
/dev/DEV_FILE
Nom du fichier de périphérique du périphérique disque :
IDE : /dev/hd
SCSI, SATA, SAS, USB : /dev/sd
Différents appareils : a-z
/dev/sda, /dev/sdb, ...
Différentes partitions sur le même appareil : 1,2, ...
/dev/sda1, /dev/sda5
Disque dur mécanique :
piste : piste
cylindre : cylindre
secotr : secteur
512octets
Comment partitionner :
Par cylindre
0 piste 0 secteur : 512 octets
MBR : Master Boot Record
446 octets : chargeur de démarrage
64 octets : table de partition
16 octets : identifier une partition
2 octets : 55AA
4 partitions principales
3 partitions principales + 1 extension (N partitions logiques)
Partitions logiques
Outils de gestion de partition : fdisk, parted, sfdisk
fdisk : Pour un disque dur, il ne peut gérer que jusqu'à 15 partitions
# fdisk -l [-u] [device...]
# fdisk device
Sous-commande : Fonctions de gestion
p : imprimer, afficher les partitions existantes
n : nouveau, créer
d : supprimer, supprimer
w : écrire, écrire sur le disque et quitter
q : quitter, abandonner la mise à jour et quitter
m : obtenir de l'aide
l : Liste des identifiants de partition
t : Ajuster l'identifiant de partition
Vérifier si le noyau a reconnu la nouvelle partition :
# cat /proc/partations
Notifiez le noyau de re -lire la table de partition du disque dur :
partx -a /dev/DEVICE
-n M:N
kpartx -a /dev/DEVICE
-f: force
CentOS 5 : Utilisation de partprobe
partprobe [/dev/DEVICE]
Gestion du système de fichiers Linux :
Système de fichiers Linux : ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap
swap : partition d'échange
CD : iso9660
Windows : fat32, ntfs
Unix : FFS, UFS, JFS2
Système de fichiers réseau : NFS, CIFS
Système de fichiers cluster : GFS2, OCFS2
Systèmes de fichiers distribués : ceph,
moosefs, mogilefs, GlusterFS, Lustre
Selon s'il prend en charge la fonction "journal" :
Système de fichiers du journal : ext3, ext4, xfs, ...
Non-journal Système de fichiers : ext2, vfat
Composants du système de fichiers :
Modules dans le noyau : ext4, xfs , vfat
Outils de gestion de l'espace utilisateur : mkfs.ext4, mkfs.xfs, mkfs.vfat
Linux Virtuel système de fichiers : VFS
Créer un système de fichiers :
commande mkfs :
(1) # mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) # mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL' : Définir l'étiquette
mke2fs : Outil de gestion spécial pour les systèmes de fichiers de la série ext
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L 'LABEL'
-j : équivalent à -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs - t ext3
-i # : Créez un inode pour chaque nombre d'octets dans l'espace de données ; cette taille ne doit pas être inférieure à la taille du bloc
-N # : Combien d'inodes sont créés pour l'espace de données
-m # : Le pourcentage d'espace réservé aux gestionnaires ; >-O FEATURE[,...] : Activer la fonctionnalité spécifiée
-O ^FEATURE : Désactiver la fonctionnalité spécifiée
mkswap : Créer une partition d'échange
mkswap [options] périphérique
-L 'LABEL'
Prérequis : ajuster l'ID de sa partition à 82
Autres Outils couramment utilisés :
blkid : afficher les informations sur les attributs du périphérique de blocage
blkid [OPTION]... [ DEVICE]
-U UUID : Recherchez l'appareil correspondant en fonction de l'UUID spécifié
-L LABEL : Recherchez l'appareil correspondant en fonction de l'UUID spécifié. LABEL spécifié
e2label : LABEL pour la gestion des systèmes de fichiers de la série ext
# e2label DEVICE [LABEL]
tune2fs : Réinitialiser les valeurs des paramètres réglables du système de fichiers de la série ext
-l : Afficher les informations du superbloc du système de fichiers spécifié ; super bloc
-L 'LABEL' : Modifier l'étiquette du volume
-m # : Modifier le pourcentage d'espace réservé aux administrateurs
-j : Mettre à niveau ext2 vers ext3
-O : Activer ou désactiver les propriétés du système de fichiers
-o : Ajuster les options de montage par défaut du système de fichiers
-U UUID : Modifier le numéro UUID
dumpe2fs :
-h : Afficher les informations sur le superbloc
Détection du système de fichiers :
fsck : Vérification du système de fichiers
fsck.FS_TYPE
fsck -t FS_TYPE
-a : Réparation automatique des erreurs
-r : Réparation interactive des erreurs
Remarque : FS_TYPE doit être du même type que les fichiers existants sur la partition
e2fsck : Un outil dédié de détection et de réparation des fichiers de la série ext
-y : La réponse automatique est oui
-f : Forcer la réparation
Gestion du système de fichiers :
Le fait d'associer un système de fichiers supplémentaire à un répertoire existant dans le système de fichiers racine, puis d'utiliser ce répertoire comme point d'accès pour d'autres fichiers, est appelé montage
;
Le processus de libération de cette association est appelé désinstallation
Associer l'appareil au point de montage ; : Mount Point
mount
Lors de la désinstallation : vous pouvez utiliser l'appareil ou le point de montage
umount
Remarque : les fichiers originaux sous le point de montage seront temporairement masqués une fois le montage terminé
Méthode de montage : montage DEVICE MOUNT_POINT
montage : affichez tous les appareils montés par le système actuel en affichant le fichier /etc/mtab
mount [-fnrsvw] [-t vfstype] [-o options] device dir
device : Spécifiez le périphérique à monter ;
(1) Fichier de périphérique : par exemple /dev/sda5
(2) Étiquette de volume : -L 'LABEL', par exemple -L 'MES DONNÉES'
(3) UUID, -U 'UUID' : Par exemple -U '0c50523c-43f1-45e7-85c0-a126711d406e'
( 4) Noms des pseudo-systèmes de fichiers : proc, sysfs, devtmpfs, configfs
dir : Le point de montage
existe au préalable ; il est recommandé d'utiliser un répertoire vide ;
Le périphérique utilisé par le processus ne peut pas être démonté
Options de commande communes :
-t vsftype : Spécifiez le type de système de fichiers sur le périphérique à monter
-r : lecture seule, montage en lecture seule ;
-w : lecture et écriture, montage en lecture-écriture
-n : ne pas mettre à jour / etc/mtab;
-a : Montez automatiquement tous les périphériques prenant en charge le montage automatique (défini dans le fichier /etc/fstab, et l'option de montage a la fonction "auto-mount" ; )
-L 'LABEL' : Spécifiez le périphérique à monter avec le label de volume
-U 'UUID' : Spécifiez le périphérique à monter avec l'UUID
-B, --bind : Lier le répertoire à un autre répertoire
Remarque : vérifiez le contenu monté suivi par le noyau. Tous les périphériques : cat /proc/mounts
options -o : (options de montage du système de fichiers)
async : mode asynchrone ;
sync : mode synchrone
atime/noatime : inclus répertoires et fichiers ;
diratime/nodiratime : horodatage d'accès au répertoire
auto/noauto : prise en charge automatique du montage
exec/ noexec : s'il faut prendre en charge les applications en cours d'exécution sur le système de fichiers en tant que processus.
dev/nodev : s'il faut prendre en charge l'utilisation des fichiers de périphérique sur ce système de fichiers ;
suid/nosuid :
remonter : Remonter
ro :
rw :
user/nouser : s'il faut autoriser les utilisateurs ordinaires à monter cet appareil
acl : activer la fonction acl sur ce système de fichiers
Remarque : les options ci-dessus peuvent être utilisées plusieurs fois en même temps, séparées par des virgules
Options de montage par défaut : valeurs par défaut
rw, suid, dev, exec, auto, nouser et async
Commande de désinstallation :
# umount DEVICE
# umount MOUNT_POINT
Afficher les processus accédant au système de fichiers spécifié :
# fuser -v MOUNT_POINT
Terminer tous les processus accédant au système de fichiers spécifié :
# fuser -km MOUNT_POINT
Monter la partition swap :
Activer : swapon
swapon [OPTION]... [DEVICE]
-a : Activer toutes les partitions d'échange ;
-p PRIORITÉ : Spécifier la priorité
Désactiver : swapoff [OPTION ; ]... [APPAREIL]
État d'utilisation de l'espace mémoire :
libre [OPTION]
-m : en MB
-g : en GB
Outil pour affichage d'informations telles que l'utilisation de l'espace du système de fichiers :
df :
-h : lisible par l'homme
-i:inodes au lieu de blocs
-P : sortie au format compatible Posix
Voir ; l'état global d'utilisation de l'espace d'un répertoire :
du:
du [OPTION].. . 🎜>
-h : lisible par l'homme
-s : résumé
Commandes décrites : mount, umount, free, df, du, swapon, swapoff, fuser
Fichier de configuration pour le montage de fichiers : /etc/fstab
Chaque ligne définit un système de fichiers à monter
Le périphérique ou pseudo-périphérique à monter Système de fichiers
Point de montageType de système de fichiers Options de montageFréquence de vidage Séquence d'auto-test
Périphérique ou pseudo système de fichiers à monter :
Fichier du périphérique, LABEL(LABEL=""), UUID( UUID=""), nom du pseudo système de fichiers (proc, sysfs )
Options de montage :
par défaut
Fréquence de vidage :
0 : Aucune sauvegarde
1 : Vidage tous les jours
2 : Déversement tous les deux jours
Ordre d'auto-contrôle :
0 : Pas d'auto-contrôle
1 : auto-vérifiez d'abord ; généralement, seul rootfs utilise 1 ;
...
Autres concepts sur le système de fichiers :
Inode : Index Node, index node
Pointeur d'adresse :
Pointeur direct :
Pointeur indirect :
Pointeur de troisième niveau :
bitmap d'inode : informations d'état qui identifient si chaque inode est inactif ;
Lié fichier :
Lien physique :
ne peut pas être corrigé dans le répertoire
ne peut pas être corrigé dans l'ensemble du répertoire ; partitions;
pointe vers plusieurs chemins différents vers le même inode ; la création d'un lien physique vers un fichier est L'inode crée un nouveau chemin de référence, augmentant ainsi son nombre de références
Lien symbolique :
peut être effectué sur un répertoire ;
peut traverser des partitions ;
pointe vers le chemin d'un autre fichier ; sa taille est la longueur de la chaîne de chemin pointée ; n'augmente ni ne diminue le nombre de références de l'inode du fichier cible ; 🎜>
ln [-sv] SRC DEST
-s : lien symbolique
-v : verbeux
Impact des opérations de gestion de fichiers sur les fichiers :
Suppression de fichiers :
Copie de fichier :
Déplacement de fichier :

1. Créez un système de fichiers de 20 Go avec un bloc. taille de 2048 et fichier Le système est ext4, le nom du volume est TEST, et cette partition doit être automatiquement montée dans le répertoire /testing après le démarrage, et l'option de montage acl est fournie par défaut

(1) Créez une partition de 20 Go ;
(2) Format :
mke2fs -t ext4 -b 2048 - L 'TEST' /dev/DEVICE
(3) Editer le fichier /etc/fstab
LABEL='TEST'
/testing
ext4 valeurs par défaut, acl 0 0
3. un script pour compléter les fonctions suivantes :
(1) Liste tous les périphériques de disque reconnus par le système actuel
(2) Si le le nombre de disques est 1, affichez ses informations d'utilisation de l'espace
Sinon, les informations d'utilisation de l'espace sur le dernier disque sont affichées
si ; [ $disks -eq 1 ]; puis
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
Interaction utilisateur de la programmation de script bash :
lire [option]... [nom ..]
-p 'PROMPT'
-t. TIMEOUT
bash -n /path/to/some_script
Détecter les erreurs de syntaxe dans les scripts
bash - x /path/to/some_script
Exécution du débogage
Exemple :
#!/bin/bash
# Version : 0.0.1
# Auteur : MaEdu
# Description : read testing
read -p "Entrez un disque fichier spécial : " diskfile
[ -z "$diskfile" ] && echo "Fool" && exit 1
if fdisk -l | grep "^Disk $diskfile" &> alors
fdisk -l $diskfile
else
echo " Fichier spécial disque incorrect."
sortie 2
fi
RAID :
Matrices redondantes de disques bon marché
Matrices redondantes de disques bon marché RAID
Améliorer les capacités d'E/S :
Lecture et écriture parallèles sur disque
Améliorées ; durabilité
Redondance des disques pour atteindre
Niveau : les disques multiblocs fonctionnent différemment lorsqu'ils sont organisés ensemble
Méthode de mise en œuvre du RAID :
Matrice de disques externes : offrant des capacités d'adaptation via des cartes d'extension
RAID interne : Contrôleur RAID intégré à la carte mère
RAID logiciel :
Niveau : niveau
RAID-0 : 0, volume rayé, bande
RAID-1 : 1, volume en miroir, miroir ;
RAID- 2
..
RAID-5 :
RAID-6
RAID10
RAID01
RAID-0 :
Performances de lecture et d'écriture améliorées
Espace disponible : N*min(S1,S2,...)
Aucune tolérance aux pannes
Nombre minimum de disques : 2, 2+
RAID -1 :
Performances de lecture améliorées, performances d'écriture légèrement diminuées ;
Espace disponible : 1*min (S1,S2,.. .)
Avec capacité de redondance
Nombre minimum de disques : 2, 2+
RAID -4 :
1101, 0110, 1011
RAID-5 :
Performances améliorées en lecture et en écriture
Espace disponible : (N-1)*min(S1,S2,...)
Tolérance aux pannes : 1 disque
Nombre minimum de disques : 3, 3+
RAID-6 :
Performances de lecture et d'écriture améliorées
Espace disponible : (N-2)*min(S1, S2,...)
Tolérance aux pannes : 2 disques
Nombre minimum de disques : 4, 4+
Type mixte
RAID-10 :
Performances en lecture et en écriture amélioré
Espace disponible : N*min(S1,S2,...)/2
Tolérance aux pannes : chaque jeu de miroirs peut n'avoir qu'un seul bloc défectueux au maximum
Nombre minimum de disques : 4, 4+
RAID-01 :
RAID-50, RAID7
JBOD : juste un tas de disques
Fonction : Combinez l'espace de plusieurs disques en un grand espace continu
Espace disponible : sum(S1, S2,... )
Niveaux communs : RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
Méthode de mise en œuvre :
Méthode de mise en œuvre matérielle
Méthode de mise en œuvre logicielle
Implémentation du RAID logiciel sur CentOS 6 :
Combiné avec md (multi devices) dans le noyau
mdadm : outil modal
Format de syntaxe de commande : mdadm [mode] 🎜>Niveaux RAID pris en charge : LINÉAIRE, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
mode :
Créer : -C
Assembler : -A
Moniteur : -F
Gestion : -f, -r, -a
: /dev/md#
 : tout périphérique bloc
-C : mode création
-n # : Utilisez # bloquer les périphériques pour créer ce RAID
-l # : Spécifiez le niveau de RAID à créer
-a {oui|non} : Créez automatiquement le fichier de périphérique du périphérique RAID cible
-c CHUNK_SIZE : Spécifiez la taille du bloc ; 🎜>
-x # : Précisez le nombre de disques libres
Par exemple : créez un RAID5 avec 10G d'espace libre ; ;
-D : Afficher les informations détaillées du raid
mdadm -D /dev/md#
Mode de gestion :
-f : marquer le disque spécifié comme endommagé
-a : Ajouter un disque
-r : Supprimer le disque
Observer l'état de md :
cat /proc/mdstat
Arrêter l'appareil md :
mdadm -S /dev /md#
commande watch :
-n # : intervalle de rafraîchissement, l'unité est secondes ;
regarder -n# 'COMMANDE'
LVM2 :
LVM : Logical Volume Manager, Version : 2
dm : mappeur de périphériques, en convertir un ou plus de périphériques de bloc sous-jacents Modules organisés en un périphérique logique
/dev/dm-#
/dev/ mapper/VG_NAME -LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
outil de gestion pv :
pvs : brèves informations pv display
pvdisplay : Afficher les informations détaillées de pv
pvcreate /dev/DEVICE : Créer pv
outil de gestion vg :
vgs
vgdisplay
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
Faites pvmove en premier
vgremove
Outil de gestion des lv :
lvs
lvdisplay
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
lvremove /dev /VG_NAME/LV_NAME
Volume logique étendu :
# lvextend -L [+]#[mMgGtT] / dev/VG_NAME/LV_NAME
# resize2fs /dev/VG_NAME/LV_NAME
Réduire le volume logique :
# 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
instantané : instantané
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name
Système de fichiers utilisation de montage :
Montage du périphérique de disque optique :
Fichier du périphérique de disque :
IDE : /dev/hdc
SATA : /dev/sr0
Fichier de lien symbolique :
/dev/cdrom
/dev/cdrw
/dev/dvd
/dev/dvdrw
mount -r /dev/cdrom /media/cdrom
umount /dev/cdrom
Commande dd : convertir et copier un fichier
Utilisation :
dd if=/PATH/FROM /SRC of=/PATH/TO/DEST
bs=# : taille du bloc, taille de l'unité de copie
count=# : copie ; Combien de bs ;
Copie de disque :
dd if=/dev/sda of=/dev/sdb
Sauvegarde MBR
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
Détruisez le bootloader dans le MBR :
dd if=/dev/zero of=/dev /sda bs=256 count=1
Deux appareils spéciaux :
/dev/null : trou noir de données ;
/dev/zero : Zéro machine à cracher
Système de fichiers btrfs :
Aperçu technique
Btrfs (B-tree, Butter FS, Better FS) , GPL, Oracle, 2007, CoW ;
ext3/ext4, xfs
Fonctionnalités principales :
Prise en charge de plusieurs volumes physiques : les btrfs peuvent être composés de plusieurs volumes physiques sous-jacents ; prend en charge RAID, avec "ajouter", "supprimer" et "modifier" en ligne
Mécanisme de mise à jour de copie sur écriture (CoW) : copiez, mettez à jour et remplacez des pointeurs au lieu de mises à jour "sur place"
Code de vérification des données et des métadonnées : somme de contrôle
Sous-volume : sub_volume
Instantané : instantané prenant en charge les instantanés
Compression transparente :
Création du système de fichiers :
mkfs.btrfs
-L'LABEL '
-d  : raid0, raid1, raid5, raid6, raid10, single
-m
-O
-O list-all : Liste toutes les fonctionnalités prises en charge ;
Vue des propriétés :
affichage du système de fichiers btrfs
Monter le système de fichiers :
mount -t btrfs /dev/sdb MOUNT_POINT
Mécanisme de compression transparent :
mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
Sous-commandes : système de fichiers , appareil, balance, sous-volume
Outils de compression, décompression et archivage
compresser/ décompresser : .Z
gzip/gunzip : .gz
bzip2/bunzip2 : .bz2
xz/unxz : .xz
zip/unzip
tar, cpio
1.gzip/gunzip
gzip [OPTION]... FICHIER...
-d : Décompresser, équivalent à gunzip
-c : Afficher le résultat sur la sortie standard
-# : 1-9 ; , spécifiez le taux de compression ;
zcat : afficher le contenu du fichier texte sans extension explicite ;
2. bzip2/bunzip2/bzcat
bzip2 [OPTION]... FICHIER...
-k : conserver, conserver le fichier original
-d : décompresser
-# : 1-9, taux de compression, la valeur par défaut est 6 ;
bzcat : sans extension explicite Afficher le fichier texte contenu ;
3.xz/unxz/xzcat
bzip2 [OPTION]. .. FILE ...
-k : conserver, conserver le fichier original
-d : décompresser
-# : 1-9, taux de compression, la valeur par défaut est 6
xzcat : sans extension explicite Afficher le contenu du fichier texte ; ;
4. goudron
goudron [OPTION]..
(1) Créer une archive
tar -c -f /PATH/TO/SOMEFILE.tar FILE ...
tar -cf /PATH/TO/SOMEFILE.tar FILE...
(2) Afficher la liste des fichiers dans l'archive
tar -t -f /PATH/TO/SOMEFILE.tar
(3) Développer l'archive
tar -x -f /PATH/TO/SOMEFILE.tar
tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/TO/DIR
Combiné avec des outils de compression pour réaliser : archiver et compresser
-j : bzip2, -z : gzip, -J : xz
script bash :
instruction if, bash -n, bash -x
CONDITION :
commande bash :
Utiliser le résultat de l'état d'exécution de la commande
Succès ; : vrai
Échec : flase
La signification du succès ou de l'échec : dépend de la commande utilisée ;
Branche unique :
si CONDITION alors
si- vrai ;
fi
double branche :
si CONDITION alors ;
si-vrai
sinon
si-faux
fi
Branches multiples :
si CONDITION1 alors
si-vrai
elif CONDITION2 alors
si-ture
elif CONDITION3; alors
if-ture
...
esle
tout-faux
fi
Juger condition par condition, Quand la condition "vraie" est rencontrée pour la première fois, sa branche est exécutée puis se termine
Exemple : L'utilisateur saisit le chemin du fichier et le script détermine ; le type de fichier ;
#!/bin/bash
#
read - p "Entrez un chemin de fichier : " filename
if [ -z "$filename" ] then
echo "Utilisation : Entrez un chemin de fichier."
sortie 2
fi
if [ ! -e $filename ]; then
echo "Aucun fichier de ce type."
sortie 3
fi
if [ -f $filename ] alors
echo "Un fichier commun."
elif [ -d $filename ]; then
echo "Un répertoire."
elif [ -L $filename ]; then
echo "Un fichier symbolique."
else
echo "Autre type."
fi
Remarque : si les instructions peuvent être imbriquées
Boucle : pendant, pendant, jusqu'à
Corps de la boucle : être code exécuté ; peut être exécuté n fois ;
Condition d'entrée :
Condition de sortie :
for boucle :
for nom de la variable dans la liste ; do
corps de la boucle
done
Mécanisme d'exécution :
Attribuer les éléments de la liste au "nom de la variable " à tour de rôle " ; Le corps de la boucle est exécuté une fois après chaque affectation ; jusqu'à ce que les éléments de la liste soient épuisés, la boucle se termine ;
Exemple : Ajouter 10 utilisateurs, user1- user10 ; le mot de passe est le même que le nom d'utilisateur
#!/bin/bash
#
if [ ! $UID -eq 0 ]; then
echo "Seulement racine."
sortie 1
fi
pour je dans {1..10} fais
;
si l'identifiant user$i &> /dev/null; alors
echo "user$i existe."
autre
useradd user$i
if [ $ - eq 0 ]; alors
echo "user$i" | passwd --stdin user$i &> "Ajouter un utilisateur$i terminé."
fi
fi
terminé
Méthode de génération de liste :
(1) Donner directement la liste
(2) Liste des entiers :
(a) {start..end}
(b) $(seq [start [ step]] end)
(3) Commande pour renvoyer une liste
$(COMMAND)
(4) glob
(b) référence de variable
$@, $*
Exemple : Déterminer le type de tous les fichiers sous un certain chemin
#!/bin/bash
#
pour le fichier dans $(ls /var); > if [ -f /var/$file ]; then
echo "Fichier commun."
elif [ -L /var/ $file ]; then
echo "Fichier symbolique."
elif [ -d /var/$file ];
écho "Répertoire."
autre
écho "Autre type."
fi
fait
Exemple :
#!/bin/bash
#
declare -i estab=0
déclarer -i écouter=0
déclarer -i autre=0
pour l'état dans $( netstat -tan | grep "^tcp>" | awk '{print $NF}'); do
if [ "$state" == 'ESTABLISED' ]; alors
let estab++
elif [ "$state" == 'LISTEN' ] alors
laisser écouter++
autre
laisser autre++
fi
fait
echo "ÉTABLI : $estab"
echo "ÉCOUTER : $listen"
echo "Inconnu : $autre"
/etc/ Il y a plusieurs fichiers commençant par K et S dans le répertoire rc.d/rc3.d
lit chaque fichier séparément, et les fichiers commençant par K sont sortis sous forme de fichiers Ajouter un arrêt, le fichier commençant par S est affiché comme nom de fichier plus start
"K34filename stop"
"S66filename start"
Gestion des packages Linux :
API : Interface de programmation d'application
POSIX : OS portable
Code source du programme --> ---> Assemblage--> Lien
Compilation statique :
Compilation partagée : .so
ABI : Interface binaire d'application
Windows n'est pas compatible avec Linux
Virtualisation au niveau de la bibliothèque :
Linux : WINE
Windows : Cywin
Développement au niveau du système
C
C++
Développement au niveau des applications
java
Python
php
perl
ruby
Composants d'une application binaire :
fichiers binaires, fichiers bibliothèque, fichiers de configuration , fichiers d'aide
Gestionnaire de paquets :
debian : deb, dpt
redhat : rpm, rpm
rpm : Redhat Package Manager
RPM est le gestionnaire de packages
Gentoo
Archlinux
Code source : name-VERSION.tar.gz
VERSION : major.minor.release
Méthode de dénomination du package rpm :
nom-VERSION-release.arch.rpm
VERSION : major.minor.release
release.arch :
version : release.OS
zlib-1.2 .7-13.el7. i686.rpm
Arc commun :
x86 : i386, i486, i586, i686
x86_64 : x64, x86_64, amd64
powerpc : ppc
Suivre la plateforme indépendante : noarch
testapp : Déballage
testapp-VERSION-ARCH.rpm : Package principal
testapp-devel - VERSION-ARCH.rpm : Package de support
testapp-testing-VERSION-ARHC.rpm
package Entre : Il y a des dépendances
X, Y, Z
miam : outil frontal pour le gestionnaire de paquets RPM
apt-get : outil frontal du gestionnaire de paquets Deb ;
zypper : outil de gestion frontale RPM sur Suse ; 🎜 >
dnf : outil de gestion frontale du gestionnaire de packages Fedora 22+ rpm
Affichez les fichiers de bibliothèque dont dépendent les programmes binaires :
ldd /PATH/TO/BINARY_FILE
Gérer et afficher les fichiers de bibliothèque chargés sur cette machine :
ldconfig
/sbin/ldconfig -p : affiche tous les noms de fichiers de bibliothèque disponibles et les mappages de chemins de fichiers qui ont été mis en cache sur cette machine
Les fichiers de configuration sont : /etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
Fichier cache : /etc/ld.so.cache
Gestion des packages :
Fonction : Compilera Chaque fichier de composant de l'application est regroupé dans un ou plusieurs fichiers de package, de manière à mettre en œuvre rapidement et facilement des opérations de gestion telles que l'installation, la désinstallation, l'interrogation, la mise à niveau et la vérification du package
1. Liste des composants du programme (unique à chaque package)
Liste des fichiers
Lors de l'installation ou en désinstallant le script d'exécution
2. Base de données (publique)
Nom et version du package
Dépendances ;
Description de la fonction ;
Le chemin du fichier et les informations de code de vérification de chaque fichier généré par l'installation
Façons de gérer les packages :
Utiliser le gestionnaire de packages : rpm
Utiliser le front-end Outils : miam, dnf
Moyens d'obtenir le package :
(1) CD publié par le système ou serveur officiel
Miroir CentOS :
(2) Site officiel du projet
(3) Organisation tierce :
Fedora-EPEL
Moteur de recherche :
(4) Créez le vôtre
Suggestions : Vérifier sa légitimité
légitimité de la source
intégrité du paquet
Package de gestion des commandes rpm sur le système CentOS :
Installation, désinstallation, mise à niveau, requête, vérification, maintenance de la base de données
Installation :
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-v : verbeux
-vv :
-h : Afficher la progression de l'exécution de la gestion des packages avec # ; chaque # représente une progression de 2 %
rpm -ivh PACKAGE_FILE ...
[options d'installation]
--test : tester l'installation, mais n'exécute pas réellement le processus d'installation ; mode d'exécution à sec
--nodeps : ignorer les dépendances
--replacepkgs : Réinstaller
--nosignature : Ne pas vérifier la légitimité de la source ;
--nodigest : ne vérifie pas l'intégrité du package
--noscipts : n'exécute pas les fragments de script du package
%pre : script de pré-installation ; --nopre
%post : script de post-installation ; --nopost
%preun : script de pré-désinstallation ; --nopreun
%postun : script de post-désinstallation
Mise à niveau :
rpm {-U|--upgrade} [options d'installation] PACKAGE_FILE ...
rpm { -F|--freshen} [install-options] PACKAGE_FILE ...
upgrage : "Mise à niveau" si l'ancienne version du package est installée ; s'il n'est pas présent Si l'ancienne version du package est installée, alors "Installer" ; si l'ancienne version du package ne l'est pas ; existe, l'opération de mise à niveau ne sera pas effectuée
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh ; PACKAGE_FILE ...
--oldpackage : déclassement
--force : forcer la mise à niveau
Remarque : (1) Ne mettez pas à niveau le noyau ; Linux prend en charge la coexistence de plusieurs versions du noyau, il est donc recommandé d'installer directement la nouvelle version du noyau
(2) Si le package d'origine Le fichier de configuration a été modifié après l'installation. Lorsque le niveau est long, le même fichier de configuration fourni par la nouvelle version n'écrasera pas directement le fichier de configuration de. l'ancienne version, mais le fichier de la nouvelle version sera conservé après avoir été renommé (FILENAME.rpmnew)
Requête :
rpm {-q|--query} [options de sélection] [options de requête]
[options de sélection]
-a : tous les packages
-f : Afficher par quel package le fichier spécifié a été généré par
-p /PATH/TO/PACKAGE_FILE : requête pour les fichiers de package qui n'ont pas encore été installés Opération
--whatprovides CAPABILITY : Rechercher de quel package la CAPABILITÉ spécifiée est fournie par
--whatrequires CAPABILITY : Rechercher de quel package dépend la CAPABILITÉ spécifiée ; 🎜>
[query-options]
--changelog : interrogez le journal des modifications du package RPM
-c : interrogez le fichier de configuration du programme
-d : Interroger la documentation du programme
-i : informations
-l : afficher tous les fichiers générés après l'installation du package spécifié
--scripts : fragments de script fournis avec le package
-R : interroge la CAPABILITÉ dont dépend le package spécifié
-- fournit : répertorie la CAPABILITÉ fournie par le package spécifié
Utilisation :
-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...
-qa
Désinstaller :
rpm {-e|--erase} [--allmatches] [--nodeps ] [--noscripts] [--notriggers] [--test ] PACKAGE_NAME ...
Vérification :
rpm {-V|--verify} [select-options ] [options de vérification]
La taille du fichier S diffère
Le mode M diffère (inclut les autorisations et le type de fichier)
5 résumés (anciennement somme MD5) diffèrent
D Incompatibilité des numéros majeurs/mineurs de l'appareil
L Incompatibilité de chemin readLink(2)
U La propriété de l'utilisateur diffère
G La propriété du groupe diffère
P caPabilities diffère
Vérification d'authenticité et d'intégrité :
Vérification d'intégrité : SHA256
Vérification de la légalité de la source : RSA
Cryptage par clé publique :
Cryptage symétrique : le chiffrement et le déchiffrement utilisent la même clé
Cryptage asymétrique : les clés sont des paires,
clé publique : clé publique, ouvert à tous
clé secrète : clé privée, ne peut pas être rendue publique
Importer la clé publique requise :
rpm --import /PATH/FROM/GPG-PUBKEY-FILE
Clé fichier fourni par le disque de distribution CentOS 7 : RPM-GPG-KEY -CentOS-7
Reconstruction de la base de données :
rpm {--initdb|--rebuilddb>
initdb : initialisation
Si la base de données n'existe pas au préalable, créez-la sinon, n'effectuer aucune opération ;
rebuilddb : Reconstruire
Recréer directement la base de données, qu'elle existe actuellement ou non ;
Revue : Linux Implémentation de la gestion des packages de programme, gestionnaire de packages rpm
commande rpm pour implémenter la gestion de programme :
Installation : -ivh , --nodeps, --replacepkgs
Désinstallation : -e, --nodeps
Mise à niveau : -Uvh, -Fvh, -- nodeps, --oldpackage
Requête : -q, -qa, -qf, -qi, -qd , -qc, -q --scripts, -q --changlog, - q --provides, -q --requires
Vérification : -V
Importer la clé GPG : --import, -K, --nodigest, --nosignature
Reconstruction de la base de données : --initdb, -- reconstructiondb
Programme Linux Gestion des packages (2)
CentOS : miam, dnf
URL : ftp : //172.16.0.1/pub/
YUM : jaune dog, Yellowdog Update Modifier
dépôt yum : yum repo
stocke de nombreux packages RPM et les fichiers de métadonnées associés du packages (placés dans un répertoire spécifique : repodata) ;
Serveur de fichiers :
ftp://
http: //
nfs://
fichier:///
client yum :
Fichier de configuration :
/etc/yum. conf : fournit une configuration commune pour tous les référentiels
/etc/yum.repos.d/*.repo : fournit une configuration pour le pointage d'entrepôt
Définition du pointage d'entrepôt :
[repositoryID]
name=Un nom pour ce référentiel
baseurl=url ://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
La valeur par défaut est : roundrobin, ce qui signifie sélection aléatoire
cost=
La valeur par défaut est 1000
miam source dans la classe : http://172.16.0.1 /cobbler/ks_mirror/CentOS-6.6-x86_64/
CentOS 6.6 Utilisation de la commande yum :
miam [options] [commande] [package ...]
       la commande est l'une des suivantes :
        * installer package1 [package2 ] [...]
        * mise à jour [package1] [package2] [...]
        * mise à jour vers [package1] [package2] [...]
        * check-update
        * mise à niveau de [package1] [package2] [...]
        * mise à niveau vers [package1] [package2] [...]
        * distribution-synchronisation [package1] [package2] [...]
        * supprimer | effacer package1 [package2] [...]
        * liste [...]
        * informations [...]
        * fournit | whatprovides feature1 [feature2] [...]
        * clean [ packages | métadonnées | expirer le cache | RPMDB | plugins | tous ]
        * makecache
        * groupinstall group1 [group2] [...]
        * groupupdate group1 [group2] [...]
* grouplist [caché] [groupwildcard] [...]
        * groupremove group1 [group2] [...]
        * groupinfo group1 [...]
* recherche string1 [string2] [...]
        * shell [nom du fichier]
         * solveep dep1 [dep2] [...]
        * localinstall rpmfile1 [rpmfile2 ] [...]
           (maintenu pour des raisons héritées uniquement - utiliser install)
        * localupdate rpmfile1 [rpmfile2] [...]
           (maintenu pour des raisons héritées uniquement - utiliser la mise à jour)
        * réinstaller le package1 [package2] [...]
        * rétrograder le package1 [package2] [...]
        * supprimer le package1 [package2 ] [...]
        * repolist [tout|activé|désactivé]
        * version [ tout | installé | disponible | groupe-* | aucun groupe* | liste de groupes | groupinfo ]
        * historique [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
        * vérifier
        * help [command]
    显示仓库列表:
    repolist [tous|activé|désactivé]
    显示程序包:
    liste
    # miam liste [tous | glob_exp1] [glob_exp2] [...]
    # miam liste {disponible|installée|mises à jour} [glob_exp1] [...]
    安装程序包:
    installer le package1 [package2] [...]
    réinstaller le package1 [package2 ] [...]  (重新安装)
    升级程序包:
    mettre à jour [package1] [package2] [...]
    package de rétrogradation1 [package2] [...] (降级)
    检查可用升级:
    vérifier-mettre à jour
    卸载程序包:
    supprimer | effacer package1 [package2] [...]
    查看程序包information:
    info [...]
    查看指定的特性(可以是某文件)是由哪个程序包所提供:
    fournit | whatprovides feature1 [feature2] [...]
    清理本地缓存:
    clean [ packages | métadonnées | expirer le cache | RPMDB | plugins | tous ]
    构建缓存:
    makecache
    搜索:
chaîne de recherche1 [chaîne2] [...]
    以指定的关键字搜索程序包名及résumé信息;
Afficher les fonctionnalités dont dépend le package spécifié :
deplist package1 [package2] [...]
Afficher la transaction yum historique :
historique [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
Installer et mettre à niveau les packages locaux :
* localinstall rpmfile1 [rpmfile2] [...]
(maintenu pour des raisons d'héritage uniquement - utiliser install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintenu pour des raisons héritées uniquement - utiliser update)
Gestion des packages Commandes associées :
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [caché] [ groupwildcard ] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
Comment pour utiliser le CD comme référentiel yum local :
(1) Montez le CD dans un répertoire, tel que /media/cdrom
# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) Créer un fichier de configuration
[CentOS7]
name=
baseurl=
gpgcheck=
activé =
options de ligne de commande miam :
--nogpgcheck : désactiver la vérification gpg ;
-y : Répondez automatiquement "oui" ;
-q : Mode silencieux
--disablerepo=repoidglob : désactivation temporaire ; le dépôt spécifié ici
--enablerepo=repoidglob : activer temporairement le dépôt spécifié ici
--noplugins : désactiver tous les plug- ; ins;
Variables disponibles dans le fichier de configuration du dépôt de yum :
$releasever : le numéro de version majeure de la version actuelle du système d'exploitation
$arch : plateforme ;
$basearch : plateforme de base
$YUM0- $YUM9
$releasever/$basearch/os
Créer un référentiel yum :
createrepo [options]
Compilation et installation du package :
testapp-VERSION-release.src --. > Après l'installation, utilisez la commande rpmbuild pour créer un package rpm au format binaire, puis installez-le
Code source --> ; Compiler (gcc) --> Assembler ---> Lien --> Exécuter
Format d'organisation du code source :
Fichiers multiples : il peut y avoir des dépendances entre fichiers entre les codes du fichier
C, C++ : make (configure --> ; Makefile.in ---> makefile)
java: maven
Trois étapes pour compiler et installer le code C :
./configure :
(1) Transmettez les paramètres via les options, spécifiez les fonctionnalités activées et installez Chemin, etc. ; lors de l'exécution, le makefile sera généré en référence à la spécification de l'utilisateur et au fichier Makefile.in
(2) Vérifiez l'environnement externe dont il dépend ; 🎜>
make :
Construisez l'application basée sur le makefile
make install
Outils de développement :
autoconf : Générer le script de configuration
automake : Générez Makefile.in
Suggestion : Vérifiez INSTALL et README avant l'installation
Obtenir le code source des programmes open source :
Site officiel auto-construit :
apache .org (ASF)
mariadb.org
...
Hébergement de code :
SourceForge
Github.com
code.google.com
c/c++ : gcc (GNU C Complier)
Compiler le code source C :
Prémisse : Fournir des outils de développement et un environnement de développement
Outils de développement : make, gcc, etc.
Développement environnement : bibliothèque de développement, fichier d'en-tête
glibc : bibliothèque standard
Fournir des composants de développement via le "groupe de packages"
CentOS 6 : "Outils de développement", "Développement de plate-forme serveur",
Première étape : configurer le script
Options : Spécifiez l'emplacement d'installation, spécifiez les fonctionnalités activées
--help : Obtenez les options prises en charge
Classification des options :
Paramètre du chemin d'installation :
--prefix=/PATH/TO/SOMEWHERE : Spécifiez l'emplacement d'installation par défaut ; la valeur par défaut est /usr/local/
--sysconfdir=/PATH/TO/SOMEWHERE : emplacement d'installation du fichier de configuration ; 🎜>
Types de système :
Fonctionnalités facultatives : Fonctionnalités facultatives
- -disable -FEATURE
--enable-FEATURE[=ARG]
Paquets facultatifs : Paquet facultatif
--avec-PACKAGE[=ARG]
--sans-PACKAGE
Étape 2 : make
Étape 3 : make install
Configuration après l'installation :
(1) Exportez le répertoire du programme binaire vers la variable d'environnement PATH
Modifiez le fichier /etc/profile.d ; /NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2) Exporter Chemin du fichier de bibliothèque
Modifier /etc/ld.so.conf.d/NAME.conf
Ajouter le répertoire où se trouve le nouveau fichier de bibliothèque se trouve ici le fichier ;
Laissez le système régénérer le cache :
ldconfig [-v]
(3) Exporter le fichier d'en-tête
Implémenté basé sur le lien :
ln - sv
(4) Exporter le manuel d'aide
Modifier le fichier /etc/man.config
Ajouter un MANPATH
Gestion des attributs du réseau Linux
LAN : Ethernet, token Ethernet : CSMA/CD
Ethernet : CSMA/CD
>Domaine de diffusion
MAC : Contrôle d'accès aux médias
48 bits :
24 bits :
24 bits :
IP : Protocole Internet
Protocole de routage
Protocole routé
OSI, TCP/IP
Couche TCP/IP :
couche d'application
couche de transport
couche Internet
couche de liaison de données
Couche physique
Protocole de la couche de transport :
tcp, udp, sctp
Protocole de couche réseau :
ip
Protocole IP :
Classification des adresses IPv4 :
Décimal à points : 0-255
0000 0000 - 1111 1111
0.0.0.0-255.255.255.255
Classe A :
0 000 0000 - 0 111 1111 : 1- 127
Nombre de réseaux : 126, 127
Nombre d'hôtes dans chaque réseau : 2^24-2
Masque de sous-réseau par défaut : 255.0.0.0
Adresse privée : 10.0.0.0/8
Catégorie B :
10 00 0000 - 10 11 1111 : 128-191
Nombre de réseaux : 2^14
Nombre d'hôtes dans chaque réseau : 2^16-2
Masque de sous-réseau par défaut : 255.255.0.0
Adresse réseau privée : 172.16.0.0/16-172.31.0.0/16
Catégorie C :
110 0 0000 - 110 1 1111 : 192-223
Nombre de réseaux : 2^21
Dans chaque réseau Nombre d'hôtes : 2^8-2
Masque de sous-réseau par défaut : 255,255 .255.0
Adresse privée : 192.168.0.0/24 -192.168.255.0/24
Classe D : Multidiffusion
1110 0000 - 1110 1111 : 224-239
Classe E :
240-255
Masque de sous-réseau :
172.16.100.100/255.255.0.0, 172.17. 1.1
Communication inter-réseaux : routage
routage hôte
routage réseau
routage par défaut
Connectez l'hôte Linux au réseau :
IP/masque
Route : Passerelle par défaut
Serveur DNS
Serveur DNS primaire
Serveur DNS secondaire
Troisième serveur DNS
Méthode de configuration :
Spécification statique :
ifcfg : ifconfig, route, netstat
ip : objet {link, addr, route}, ss, tc
Fichier de configuration
system-config-network-tui (setup)
CentOS 7 :
nmcli, nmtui
Allocation dynamique :
DHCP : Protocole de configuration d'hôte dynamique
Configurer l'interface réseau :
Méthode de dénomination de l'interface :
CentOS 6 :
Ethernet : eth[0,1,2,...]
ppp : ppp[0,1,2,...]
commande ifconfig
ifconfig [interface]
# ifconfig -a
# ifconfig IFACE [haut|bas]
                                                                            ># ifconfig IFACE IP/masque [haut]
# ifconfig IFACE IP netmask MASK
Remarque : prendre effet immédiatement
Activer le mode promiscuité ; : [-]promisc
commande de route
Commande de gestion d'itinéraire >
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
Cible : 192.168.1.3 Passerelle : 172.16.0.1
                                                                                               🎜>
Destination : 192.168.0.0 Passerelle : 172.16.0.1
~]# ajout d'itinéraire - net 192.168.0.0 masque de réseau 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
Route par défaut, passerelle : 172.16.0.1
                                                                                             # route ajouter le gw par défaut 172.16.0.1
Supprimer : route del
route del [-net|-host ] target [gw Gw] [netmask Nm] [[dev] If]
                                                                                                                 
~]# route del -host 192.168.1.3
Destination : 192.168.0.0 Passerelle : 172.16.0.1
~]# route del -net 192.168.0.0 masque de réseau 255.255.255.0
                                                              /etc/resolv.conf
 serveur de noms DNS_SERVER_IP1
 
serveur de noms DNS_SERVER_IP2 
serveur de noms DNS_SERVER_IP3
Solution correcte : FQDN-->IP
# dig -t A FQDN
# host -t A FQDN
Solution inverse : IP-->FQDN
# dig -x IP
# host -t PTR IP
FQDN : www.madu. com.
commande netstat :
netstat - Imprimer les connexions réseau, les tables de routage, les statistiques d'interface, les connexions de masquage et les membres de multidiffusion [-- tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [- -extend| -e[--extend|-e]] [--program|-p]
-t : lié au protocole TCP
- u : lié au protocole UDP
-w : lié au socket brut
-l : En état d'écoute
-a : Tous les statuts
-n : Afficher l'IP et le port en chiffres
-e : Format étendu
-p : Afficher les processus et les PID associés
Combinaisons courantes :
-tan, -uan, -tnl, -unl
Afficher la table de routage :
netstat { --route|-r} [- -numeric|-n]
-r : Afficher la table de routage du noyau
-n : Format des nombres
Afficher les statistiques de l'interface :
netstat {--interfaces|-I|-i} [iface ] [--all|-a] [--extend|-e ] [--program|-p] [--numeric|-n]
# netstat -i
                                                                                                                                                                 🎜>  ifconfig/route/netstat
 
ifup/ifdown
Configuration réseau Linux (2)
Configurer les propriétés du réseau Linux : commande ip :
commande ip :
ip - afficher/manipuler le routage, les appareils, le routage des politiques et les tunnels
ip [ OPTIONS ] OBJET { COMMANDE aide }
OBJET := {lien | adresse | itinéraire }
lien OBJET :
lien ip - configuration des périphériques réseau
set
dev IFACE
peut définir des attributs :
haut et bas : activer ou désactiver l'interface spécifiée
afficher
[dev IFACE] : Spécifier l'interface
[up] : Afficher uniquement l'interface active
adresse IP - gestion des adresses de protocole
adresse IP { add | del } IFADDR dev STRING
[label LABEL] : Spécifiez l'alias de la carte réseau lors de l'ajout de l'adresse
[scope {global|link|host}] : Spécifiez le rôle Domaine
global : disponible dans le monde entier ;
lien : seul lien disponible ;
hôte : Disponible sur cette machine
[ADRESSE de diffusion] : Spécifiez l'adresse de diffusion
affichage de l'adresse IP - regardez les adresses de protocole
[DEV DEVICE]
[label PATTERN]
[primaire et secondaire]
Vinage de l'adresse IP - Vidage des adresses de protocole
Utiliser le même format que celui affiché
ip route - gestion de la table de routage
ip route add
Ajouter une route : ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET :
Route hôte : IP
Route réseau : RÉSEAU/MASQUE
Ajouter une passerelle : ip route ajouter par défaut via GW dev IFACE
suppression de la route ip
Supprimer la route : route ip du TARGET
afficher la route ip
IP route flush
[dev IFACE]
[via PREFIX]
Commande ss :
Format : ss [OPTION]... [FILTRE]
Option :
-t : lié au protocole TCP
-u : lié au protocole UDP
-w : manchon nu Lié à l'interface
-x : lié à la sock unix
-l : connexion en état d'écoute
-a : Tous
-n : Format numérique
-p : Programmes associés et PID
-e : informations étendues
-m : utilisation de la mémoire
-o : informations sur la minuterie
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
États courants de TCP :
Machine à états finis TCP :
ÉCOUTER : Écoute
ÉTABLI : Connexion établie
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
FERMÉ
EXPRESSION :
dport =
sport =
Exemple : '( dport = :ssh ou sport = :ssh )'
Combinaisons courantes :
-tan, -tanl, -tanlp, -uan
Réseau Linux configuration d'attribut (3) : Modifier le fichier de configuration
Fichiers de configuration liés à IP, MASK, GW, DNS : /etc/sysconfig/network-scripts/ ifcfg- IFACE
Fichier de configuration lié à la route : /etc/sysconfig/network-scripts/route-IFACE
/ etc/sysconfig/network-scripts/ifcfg-IFACE :
DEVICE : le périphérique auquel ce fichier de configuration s'applique
HWADDR : le Adresse MAC de l'appareil correspondant ;
BOOTPROTO : le protocole de configuration de l'adresse utilisé lors de l'activation de cet appareil, couramment utilisé dhcp, static, none, bootp ;
NM_CONTROLLED : NM est l'abréviation de NetworkManager ; indique si cette carte réseau accepte le contrôle NM ; CentOS6 recommande "non"
ONBOOT : s'il faut activer ce périphérique au démarrage du système ;
TYPE : type d'interface ; Ethernet commun, Bridge
UUID : identifiant unique de l'appareil
IPADDR : Précisez l'adresse IP
NETMASK : masque de sous-réseau ;
GATEWAY : passerelle par défaut
DNS1 : le premier serveur DNS ; pointage ;
DNS2 : deuxième serveur DNS pointant ;
USERCTL : si les utilisateurs ordinaires peuvent le contrôler Cet appareil ;
PEERDNS : Si la valeur de BOOTPROTO est "dhcp", s'il faut autoriser les informations de pointage du serveur DNS attribuées par le serveur DHCP à être directement écrasées dans le fichier /etc/resolv.conf
/etc/sysconfig/network-scripts/route-IFACE
Deux styles :
(1) TARGET via GW
(2) Toutes les trois lignes définissent un itinéraire
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
Configurer plusieurs adresses pour la carte réseau :
ifconfig:
ifconfig IFACE_ALIAS
ip
ip addr add
Fichier de configuration :
ifcfg- IFACE_ALIAS
DEVICE=IFACE_ALIAS
Remarque : l'alias de passerelle ne peut pas être démarré à l'aide du protocole DHCP
Tui de configuration des attributs réseau Linux (interface utilisateur texte) :
system-config-network-tui
peut également être trouvé à l'aide de la configuration
Remarque : n'oubliez pas de redémarrer le service réseau pour prendre effet ; >
Configurer le nom d'hôte de l'hôte actuel :
nom d'hôte [HOSTNAME]
/etc/sysconfig/network
HOSTNAME=
L'interface réseau identifie et nomme le fichier de configuration udev associé :
/etc/udev/rules.d/70-persistent-net.rules
Désinstallez le pilote de la carte réseau :
modprobe -r e1000
Chargez le pilote de la carte réseau :
modprobe e1000
Configuration des propriétés réseau CentOS 7
Nom traditionnel : Ethernet eth[0,1,2,...], wlan[0,1,2,...]
Fonctionnalité prévisible
udev prend en charge de nombreux schémas de dénomination différents :
Micrologiciel, topologie
(1) Mécanisme de dénomination de la carte réseau
méthode de dénomination systemd pour les périphériques réseau :
(a) Si les informations d'index fournies par le micrologiciel ou le BIOS du périphérique intégré à la carte mère sont disponibles et prévisibles, le nom est basé sur cet index, tel que
(b) Si le micrologiciel ou le BIOS est Les informations d'index fournies par le connecteur d'extension PCI-E sont disponibles et prévisibles, elles sont donc nommées en fonction de cet index, par exemple
(c) Si les informations d'emplacement physique de l'interface matérielle sont disponibles, alors nommez-le en fonction de ces informations, par exemple enp2s0
(d) Si l'utilisateur démarre explicitement il, il peut également être nommé en fonction de l'adresse MAC, enx2387a1dc56 ;
(e) Lorsqu'aucun des éléments ci-dessus n'est disponible, le mécanisme de dénomination traditionnel est utilisé
Certains des mécanismes de dénomination ci-dessus nécessitent la participation du programme biosdevname
(2) Composition du nom ; format
fr : ethernet
wl : wlan
ww : wwan
Type de nom :
o : le numéro d'index de l'appareil intégré
s : numéro d'index de l'emplacement d'extension
x : dénomination basée sur l'adresse MAC
ps : enp2s1
Processus de dénomination du périphérique de carte réseau :
Première étape :
udev, programme d'outils auxiliaires/lib/udev/rename_device, /usr/lib/udev/rules.d/60-net.rules
Étape 2 :
le nom du biosdev sera basé sur /usr/lib/udev/rules.d/71-biosdevname.rules
Étape 3 :
En détectant le périphérique d'interface réseau, conformément à /usr/lib/udev/rules. d/ 75-net-description
ID_NET_NAME_ONBOARD, ID_NET_NAME_SLOT, ID_NET_NAME_PATH
Retour à la méthode de dénomination traditionnelle :
(1) Modifier le fichier de configuration /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0 rhgb quiet"
(2) Générer son fichier de configuration pour grub2
grub2-mkconfig -o /etc/grub2.cfg
(3) Redémarrer le système
Outil de configuration d'adresse : nmcli
nmcli [ OPTIONS ] OBJET { COMMANDE | aide }
appareil - afficher et gérer les interfaces réseau
Connexion - démarrer, arrêter et gérer les connexions réseau
Comment modifier des propriétés telles que l'adresse IP :
La connexion #nmcli modifie IFACE [+|-]setting.property value
setting.property :
adresses ipv4.
ipv4.gateway
ipv4. dns1
ipv4.method
manuel
Outil de configuration de l'interface réseau : nmtui
Outil de configuration du nom d'hôte : hostnamectl
statut
set-hostname
Référence :
Outils clients réseau :
lftp, ftp, lftpget, wget
# lftp [ -p port] [-u user[,password]] SERVER
Sous-commande :
get
mget
ls
aide
# URL lftpget
# ftp
# wget
wget [option]... [URL]...
-q : Mode silencieux
-c : Transfert continu
-O : Enregistrer l'emplacement
--limit-rates= : Spécifier le taux de transfert
Révision : commande ip, commande ss ; fichier de configuration ; CentOS 7
ifcfg, ip, netstat , ss
fichier de configuration :
/etc/sysconfig/network-scripts/
ifcfg-IFNAME
route-IFNAME
CentOS 7 : nmcli, nmtui
Processus Linux et gestion des tâches
Les fonctions du noyau : gestion des processus, système de fichiers, fonctions réseau, gestion de la mémoire, pilotes, fonctions de sécurité
Processus : une copie du programme en cours d'exécution
a un cycle de vie
Format fixe du noyau Linux pour stocker les informations de processus : structure de tâche
Une liste chaînée de composants de structure de tâche pour plusieurs tâches : liste de tâches
Création du processus :
init
Relation père-enfant
Processus : les deux sont créés par leur processus parent
fork(), clone()
Priorité du processus :
0-139 :
1-99 : priorité en temps réel
100- 139 : Priorité statique ;
Plus le nombre est petit, plus la priorité est élevée
Belle valeur :
-20,19
Grand O
O(1) , O(logn), O(n), O(n^2), O(2^n)
Mémoire de processus :
Cadre de page : cadre de page, utilisé pour stocker les données de la page
Page de stockage
MMU : Unité de gestion de la mémoire
IPC : Communication Inter Processus
Sur le même hôte :
signal
shm : mémoire partagée
sémerphore
Sur différents hébergeurs :
rpc : appel de procédure à distance
socket :
Noyau Linux : multitâche préemptif
Type de processus :
Processus démon : pendant le processus de démarrage du système Processus démarrés dans , processus qui n'ont rien à voir avec le terminal
Processus de premier plan : processus liés au terminal, processus démarrés via le terminal
Remarque : les processus démarrés au premier plan peuvent également être envoyés en arrière-plan pour s'exécuter en mode démon
État du processus :
État d'exécution : en cours d'exécution
État prêt : prêt
État de veille :
Interruptable : disruptable
Ininterruptible : ininterruptible
État arrêté : suspendu en mémoire, mais ne sera pas programmé sauf démarrage manuel ; arrêté
État zombie : zombie
Classification du processus :
Lié au CPU
Lié aux IO
"Conception et implémentation du noyau Linux", "Dans -Compréhension approfondie du noyau Linux"
Outils de visualisation et de gestion des processus Linux : pstree, ps, pidof, pgrep, top, htop, look, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
commande pstree :
pstree - afficher une arborescence de processus
ps : état du processus
ps - signaler un instantané des processus actuels
Les informations pertinentes de chaque processus du système Linux sont stockées dans chaque fichier du répertoire /proc/PID ;
ps [OPTION]...
Option : prend en charge deux styles
Combinaison commune : aux
u : Organisation centrée sur l'utilisateur de l'affichage des informations sur l'état des processus
a : Processus liés aux terminaux ;
x : processus indépendant du terminal
~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
VSZ : Taille de la mémoire virtuelle, ensemble de mémoire virtuelle
RSS : Taille du résident, ensemble de mémoire résident
STAT : Statut du processus
R : en cours d'exécution
S : veille interrompue
D : sommeil ininterrompu
T : arrêté
Z : zombie
+ : Processus de premier plan
l : Processus multithread
N : Processus de faible priorité
< : processus hautement prioritaires
s : responsable de session
Combinaisons courantes : - ef
-e : Afficher tous les processus
-f : Afficher les informations du programme au format complet
Combinaisons courantes : -eFH
-F : Afficher les informations sur le processus au format complet
-H : Informations sur le processus Format hiérarchique affiche des informations relatives au processus
Combinaisons courantes : -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 : belle valeur
pri : priorité, priorité
psr : processeur, CPU
rtprio : priorité temps réel
pgrep, pkill :
modèle pgrep [options]
modèle pkill [options]
-u uid : efficace utilisateur
                                                                                                                                                                >-l : Afficher le nom du processus
-a : Afficher le nom du processus au format complet
-P pid : Afficher son parent Le processus est la liste des processus du processus spécifié ici
pidof :
Obtenez son PID en fonction du nom du processus ;
top :
possède de nombreuses commandes intégrées :
Trier :
P : pourcentage de CPU occupé
M : pourcentage de mémoire ; occupé ;
T : Temps CPU accumulé ;
Affichage des informations d'en-tête :
informations sur la disponibilité : commande l
informations sur les tâches et le processeur : commande t
le processeur affiche respectivement : 1 (numéro)
informations sur la mémoire : commande m
                                                                                                                                                     >Terminer le processus spécifié : k
Option :
-d # : Spécifiez l'intervalle de rafraîchissement, la valeur par défaut est de 3 secondes
-b : En mode batch
-n # : Combien de lots à afficher
commande htop :
Options :
                                                                                           >-s COLONNE : Trier par champ spécifié ;
Commande :
s : Suivre l'appel système de sélection pour un processus spécifique ;
l : Afficher la liste des fichiers ouverts par le processus sélectionné ; 🎜> a : Lier le processus sélectionné à un cœur de processeur spécifié
t : Afficher l'arborescence des processus
Remarque : source Fedora-EPELRevue :
Bases de Linux : CPU : tranche de temps
Mémoire : espace d'adressage linéaire
E/S :
Multiplexage en temps partagé
Outils de visualisation des processus : pstree, ps, pgrep, pidof, top, htop
Visualisation et gestion des processus Linux (2)
Outils de visualisation et de gestion des processus Linux : pstree, ps, pidof, pgrep , top, htop, looks, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
commande vmstat :
vmstat [options] [délai [nombre]]
procs :
r : Le nombre de processus en attente d'exécution ; b : Le nombre de processus en état de veille ininterrompue (longueur de la file d'attente bloquée) ;
mémoire :
swpd : la quantité totale de mémoire d'échange utilisée
libre : la quantité totale de mémoire physique gratuite ; mémoire ;
tampon : la quantité totale de mémoire utilisée pour le tampon
cache : la quantité totale de mémoire utilisée pour le cache ; >
swap :
si : le débit de données auquel les données entrent dans le swap (kb/s)
so : le débit de données auquel les données quittent le swap. Débit de données (kb/s)
io :
bi : le débit auquel les données sont lues du périphérique de bloc vers le système ; (kb/s)
bo : la vitesse à laquelle les données sont enregistrées sur le périphérique de bloc ; >
système :
in : interruptions, taux d'interruption ;
cs : changement de contexte, taux de commutation de processus
cpu :
us
sy
id
wa
st
Options :
-s : Afficher les statistiques de mémoire
Commande pmap :
pmap - rapporter la mémoire carte d'un processus
pmap [options] pid [...]
-x : Afficher les informations dans format détaillé
Une autre implémentation :
# cat /proc/PID/maps
regards命令:
regards [-bdehmnrsvyz1] [-B bind] [-c serveur] [-C confifile] [-p port] [-P mot de passe] [--password] [-t rafraîchir] [-f fichier] [-o sortie]
内建命令:
 a  Trier les processus automatiquement     l  Afficher/masquer les journaux
 c  Trier les processus par CPU%           b  Octets ou bits pour les E/S réseau
 m  Trier les processus par MEM%            w  Supprimer les journaux d'avertissement
 p  Trier les processus par nom           x  Supprimer les journaux d'avertissement et critiques
 i  Trier les processus par débit d'E/S       1  Statistiques globales du processeur ou par processeur
 d  Afficher/ masquer les statistiques d'E/S du disque         h  Afficher/masquer cet écran d'aide
 f  Afficher/masquer les statistiques du système de fichiers      t  Afficher les E/S réseau sous forme de combinaison
 n  Afficher/masquer les statistiques du réseau          u  Afficher les E/S cumulées du réseau
 s  Afficher/masquer les statistiques des capteurs          q  Quitter (Esc et Ctrl-C fonctionnent également)
 y  Afficher/masquer les statistiques de température du disque dur
常用选项:
-b : 以Byte为单位显示网卡数据速率;
-d : 关闭磁盘I/O模块;
-f /path/to/somefile :设定输入文件位置;
-o {HTML|CSV}:输出格式;
-m : 禁用mount模块
-n : 禁用网络模块
-t # : 延迟时间间隔
-1:每
C/S模式下运行glances命令:
服务À propos :
coups d'œil -s -B IPADDR
IPADDR : 指明监听于本机哪个地址
客户端模式:
coups d'oeil -c IPADDR
IPADDR:要连入的服务器端地址
dstat命令:
dstat [-afv] [options ..] [délai [count]]
-c: 显示cpu相关信息;
-C # ,#,...,total
-d : 显示disk相关信息;
-D total,sda,sdb,.. .
-g:显示page相关统计数据;
-m : 显示memory相关统计数据;
-n : 显示network相关统计数据;
-p : 显示process相关统计数据;
-r :
-s : 🎜>-- tcp
--udp
--unix
--raw
--socket 
--ipc
--top-cpu:CPU的进程;
--top-io : io的进程;
--top-mem : 显示最占用内存的进程;
--top-lantency : 显示延迟最大的进程;
tuer命令:
Envoyer des signaux de contrôle au processus pour réaliser la gestion du processus
Afficher les signaux actuellement disponibles dans le système :
# kill -l
# signal homme 7
Signaux courants :
1) SIGHUP : laissez-le relire le fichier de configuration sans fermer le processus ;
2) SIGINT : abandonnez le processus en cours ; équivalent à Ctrl+c ; ;
9) SIGKILL : tuer le processus en cours ;
15) SIGTERM : mettre fin au processus en cours ;
18) SIGCONT :
19) SIGSTOP :
Spécifier la méthode de signal :
(1) Identification numérique du signal ; 1, 2, 9
(2) Nom complet du signal ; SIGHUP
(3) Le nom abrégé du signal ; HUP
Envoie un signal au processus :
tuer [-SIGNAL] PID...
Tuer tous les processus sous "nom" :
killall [-SIGNAL] Programme
Contrôle des tâches Linux
Travail de premier plan : Démarrez via le terminal et occupera le terminal après le démarrage ;
Tâche en arrière-plan : peut être démarré via le terminal, mais il s'exécutera en arrière-plan après le démarrage (libérez le terminal) ;
Comment faire exécuter le travail en arrière-plan ?
(1) Tâche en cours d'exécution
Ctrl+z
(2) Pas encore commencé job
# COMMAND &
Bien que ce type de travail soit envoyé en arrière-plan pour être exécuté, il est toujours lié au terminal lié; si vous souhaitez l'envoyer en arrière-plan, décollez la relation avec le terminal :
#nohup COMMAND &
Afficher tous les emplois :
# emplois
Contrôle des emplois :
# fg [[%]JOB_NUM] : ramène le travail d'arrière-plan spécifié au premier plan
# bg [[%]JOB_NUM] : laisse le le travail envoyé en arrière-plan continue de s'exécuter en arrière-plan ;
# kill [%JOB_NUM] : Terminez le travail spécifié
<🎜 ; >Ajustement de la priorité du processus :
Priorité statique : 100-139
La belle valeur lors du processus est démarré par défaut est 0 et la priorité est 120
nice commande :
nice [OPTION] [ COMMANDE [ARG]...]
commande renice :
renice [-n] priorité pid.. .
Vue :
ps axo pid,comm,ni
Commandes non impliquées : sar, tsar, iostat, iftop
Planification des tâches Linux, exécution périodique des tâches
Exécuter une tâche à un certain moment dans le futur : at, batch
Exécuter une tâche périodiquement : cron
Service de messagerie :
smtp : protocole de transmission de courrier simple, utilisé pour transmettre des emails ; >
pop3 : Protocole de bureau de poste
imap4 : Protocole d'accès au courrier Internet
mailx - envoyer et recevoir du courrier Internet
MUA : Agent utilisateur de messagerie
mailx [-s 'SUBJECT'] nom d'utilisateur[@hostname]
Génération du corps de l'e-mail :
(1) Donnez-le directement, Ctrl+d ; 🎜>
(2) Redirection d'entrée ;
(3) Via le tube
echo -e " Comment es-tu ?nQuel âge as-tu ? :
à [option] HEURE
HEURE :
HH:MM [AAAA-mm-jj]
midi, minuit, heure du thé
demain
maintenant+#{minutes, heures, jours ou semaines>
Options courantes : <🎜 >
-q QUEUE :
-l : Liste les tâches en attente d'exécution dans la file d'attente spécifiée ; équivalent à atq
-d ; : Supprimer le travail spécifié ; équivalent à atrm
-c : Afficher les tâches de travail spécifiques
-f /path/from/somefile ; Lire les tâches à partir du fichier spécifié ;
Remarque : les résultats de l'exécution du travail seront notifiés aux utilisateurs concernés par e-mail
<🎜 ; >
Commande batch :
Laissez le système choisir son propre temps libre pour effectuer les tâches spécifiées ici
< ; 🎜>
Planification des tâches périodiques : cron
Paquets associés :
cronie : package principal, fournit des processus crond guard et outils auxiliaires associés ;
cronie-anacron : un programme supplémentaire pour cronie ; utilisé pour surveiller l'état d'exécution des tâches de cronie si les tâches de cronie ne se sont pas exécutées normalement à ce moment-là ; past S'il est exécuté, anacron démarrera alors cette tâche
crontabs : inclut CentOS pour fournir les tâches de maintenance du système
<🎜 ; > Assurez-vous que le démon crond est en cours d'exécution :
CentOS 7 :
systemctl status crond
..en cours d'exécution...
CentOS 6 :
état du crond du service
Les tâches planifiées pour être exécutées périodiquement sont soumises à crond, qui implémente une exécution point à point.
Tâche cron système : tâche de maintenance du système
/etc/crontab
Tâche cron utilisateur :
commande crontab
tâche cron système
# Exemple de définition du poste :
# .---------------- minute (0 - 59)
# | .------------- heure (0 - 23)
# | jour du mois (1 - 31)
# |
# | | | .---- jour de la semaine (0 - 6) (dimanche=0 ou 7) OU dim, lundi, mardi, mercredi ,sat
# |
# * * * * * commande de nom d'utilisateur à exécuter 🎜>
Par exemple : exécutez la commande echo à 21h10
10 21 * * *
gentoo ; /bin/echo "Salut !"
Représentation temporelle :
(1) Valeur spécifique ;
Valeurs dans la plage de valeurs valide à un instant donné
(2) *
Toutes les valeurs comprises dans la plage de valeurs valide à un instant donné ;
signifie "chaque..." ; ) Valeurs discrètes : ,
#,#,#
(4) Valeurs continues : -
#-#
(5) Sur la plage de temps spécifiée, définissez la taille du pas :
/# : # est la taille du pas
Par exemple : commande echo toutes les 3 heures
0 */3 * * * gentoo /bin/echo "bonjour !"
Cron utilisateur :
définition de la commande crontab, chaque utilisateur dispose d'un fichier de tâche cron dédié : /var/spool/cron /USERNAME
commande crontab :
crontab [-u utilisateur] [-l -r -e | ] [-i]
-l : Liste toutes les tâches ;
-e : Modifier les tâches
-r : Supprimer toutes les tâches ;
-i : Utilisé avec -r pour permettre aux utilisateurs de supprimer sélectivement les tâches spécifiées en mode interactif ;
<🎜 ; >
-u user : ne peut être exécuté que par root et gère les tâches cron pour l'utilisateur spécifié
Remarque : Le les résultats de l'opération seront notifiés aux utilisateurs concernés par e-mail ;
(1) COMMAND &> ; /dev/null
Pour les tâches cron, % a un objectif particulier si vous souhaitez utiliser % dans une commande, vous devez cependant y échapper ; , Si vous placez % entre guillemets simples, vous n'avez pas besoin d'y échapper
En pensant :
(1) Comment exécuter une tâche en quelques secondes ?
* * * * * pour min en 0 1 2 ; faites écho "salut" ; terminé
(2) Comment Pour exécuter une tâche toutes les 7 minutes ?
commande sleep :
sleep NUMBER[SUFFIX]...
SUFFIXE :
s : secondes, par défaut
m : Minutes
h : heure
d : jour
Processus de démarrage de CentOS 5 et 6
Linux : noyau+rootfs
noyau : gestion des processus, gestion de la mémoire, gestion du réseau, pilote, système de fichiers, fonction de sécurité
rootfs :
glibc
Bibliothèque : collection de fonctions, fonction, interface d'appel
Appel de procédure : procédure
Appel de fonction : fonction
Procédure
École de conception de noyau :
Conception à noyau unique : Linux
Intégrer toutes les fonctions dans le même programme
🎜>
Conception du micro-noyau : Windows, Solaris
Chaque fonction est implémentée à l'aide d'un sous-système distinct
Fonctionnalités du noyau Linux :
Prise en charge de la modularisation : .ko
Prise en charge du chargement et du déchargement dynamiques des modules ;
Composant :
Fichier principal : /boot/vmlinuz-VERSION-release
disque virtuel :
CentOS 5 : /boot/initrd-VERSION-release.img
CentOS 6 : /boot/initramfs-VERSION -release.img
Fichier du module :/lib/modules/VERSION-release
Processus de démarrage du système CentOS :
POST : auto-test à la mise sous tension ;
ROM : CMOS
BIOS : système d'entrée et de sortie de base
ROM+RAM
Séquence de BOOT :
Recherchez chaque périphérique de démarrage dans l'ordre. Le premier périphérique doté d'un programme de démarrage est le périphérique utilisé pour ce démarrage
bootloader : chargeur de démarrage, programme
windows : ntloader
Linux :
LILO : LInux CHARGEUR
GRUB : GRand Uniform Bootloader
GRUB 0.X : GRUB Legacy
GRUB 1.x : GRUB2
Fonction : fournit un menu qui permet à l'utilisateur de choisir de démarrer le système ou de charger une version différente du noyau sélectionné par l'utilisateur ; Accédez à un espace spécifique de la mémoire, décompressez, développez et transférez le contrôle du système vers le noyau
MBR :
446 : chargeur de démarrage
64 : gros
2 : 55AA
GRUB :
bootloader : 1ère étape
disque : 2ème étape
noyau :
Auto-initialisation :
Détecter tous les périphériques matériels reconnus
Chargez le pilote matériel ; (vous pouvez utiliser le disque virtuel pour charger le pilote)
Montez le système de fichiers racine en mode lecture seule
Exécutez la première application dans l'espace utilisateur : /sbin/init
Type de programme d'initialisation :
SysV : init, CentOS 5
Fichier de configuration : /etc/inittab
Upstart : init, CentOS 6
Fichiers de configuration : /etc/inittab, /etc/init/*.conf
Systemd : systemd, CentOS 7
Fichiers de configuration : /usr/lib/systemd/system, /etc/systemd/system
disque virtuel :
Une des fonctionnalités du noyau : utiliser la mise en mémoire tampon et la mise en cache pour gérer l'accès aux fichiers sur le disque
ramdisk ---> ramfs
CentOS 5 : initrd, programme outil : mkinitrd
CentOS 6 : initramfs, programme outil : mkinitrd, dracut
Initialisation du système :
POST -- > BootSequence (BIOS) --> Bootloader (MBR) --> noyau (ramdisk) --> rootfs (lecture seule) --> 🎜>
/sbin/init
CentOS 5 :
Niveau d'exécution : défini à des fins d'application telles que le fonctionnement ou la maintenance du système
0-6 : 7 niveaux
0 : Arrêt
1 : Mode mono-utilisateur (root, aucune connexion requise), unique, mode maintenance
2 : Mode multi-utilisateur, la fonction réseau sera démarrée, mais NFS ne sera pas démarré ;
3 : Mode multi-utilisateur, mode normal ; ; Interface texte ;
4 : Niveau réservé ; peut être le même que le niveau 3 ;
5 : Mode multi-utilisateurs, mode normal ; ; interface graphique ;
6 : Redémarrer
Niveau par défaut :
3, 5
Niveau de commutation :
init #
Niveau d'affichage :
runlevel
who -r
Fichier de configuration :/etc/inittab
Chaque ligne définit une action et son processus correspondant
id:runlevel:action:process
action:
attendre : passez à ce niveau et exécutez une fois ;
respawn : si ce processus est terminé, redémarrez-le
initdefault : définir le niveau d'exécution par défaut ; 🎜>
sysinit : définissez la méthode d'initialisation du système, spécifiez ici généralement /etc/rc.d/rc.sysinit
...
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:attendre:/etc/rc.d/rc 0
l1:1:attendre: /etc/rc.d/rc 1
...
l6:6:attendre:/etc/rc.d/rc 6
Explication : rc 0 ---> signifie lire /etc/rc.d/rc0.d/
K* : K##* : ##Ordre d'exécution ; plus le nombre est petit, plus il s'exécute tôt ; plus le nombre est petit, le service dépend généralement d'autres services ; S* : S##* : ## ordre d'exécution ; plus le nombre est petit, plus il s'exécute tôt ; plus le nombre est petit, le service dont il dépend
pour srv dans /etc/rc.d/rc0.d/K*; do
$srv stop
terminé
pour srv dans /etc/rc.d/rc0.d/S* ; >$srv start
terminé
commande chkconfig
Afficher services à tous les niveaux Les paramètres de démarrage ou d'arrêt :
chkconfig [--list] [name]
Ajouter :
Le script du service SysV est placé dans /etc/rc.d/init.d (/etc/init.d)
chkconfig --add name
#!/bin/bash
#
# chkconfig : LLLL nn nn
Supprimer :
chkconfig -- del nom
Modifier le type de lien spécifié
chkconfig [--levellevels] nom
--level LLLL : Spécifiez le niveau à définir lorsqu'il est omis, cela signifie
Remarque : Niveau normal, le dernier service démarré, S99local, n'est pas lié à un script de service dans /etc/rc.d/init.d, mais pointe donc vers le script /etc/rc.d/rc.local ; , il n'est pas pratique ou inutile de l'écrire en tant que service. Le script est placé dans le répertoire /etc/rc.d/init.d/, et la commande que vous souhaitez exécuter automatiquement lorsque l'ordinateur est allumé peut être placée directement dans le fichier /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 appellera le programme de connexion
/etc/rc.d/rc.sysinit : script d'initialisation du système
(1) Définir le nom d'hôte
(2) Définir le message de bienvenue ;
(3) Activer udev et selinux
(4) Monter le système de fichiers défini dans /etc/fstab ; file;
(5) Détecter le système de fichiers racine, Et remonter le système de fichiers racine en mode lecture-écriture
(6) Réglez l'horloge système ;
(7) Activez le périphérique d'échange
(8) Définissez les paramètres du noyau en fonction du /etc/sysctl ; Fichier .conf ;
(9) Activer les périphériques LVM et RAID logiciels ;
(10) Chargement des pilotes pour les périphériques supplémentaires ;
(11) Opérations de nettoyage
Résumé : /sbin/init --> (/etc/inittab) --> Définir le niveau d'exécution par défaut --> ; Fermer Correspondant aux services qui doivent être fermés, démarrez les services qui doivent être démarrés --> Configurer le terminal de connexion
CentOS 6 :
Le programme d'initialisation est : upstart, et son fichier de configuration :
/etc /inittab, /etc/init/*.conf
Remarque : la syntaxe du fichier /etc/init/*.conf suit la syntaxe du fichier de configuration parvenu à démarrer
Processus de démarrage de CentOS 6 :
POST --> Séquence de démarrage (BIOS) -- > Chargeur de démarrage (MBR) --> (/etc/inittab, /etc/init/*. conf) --> Définir le niveau d'exécution par défaut --> Script d'initialisation du système --> 🎜>
GRUB (Chargeur de démarrage) :
grub : GRand Unified Bootloader
grub 0.x : grub héritage
grub 1.x : grub2
grub héritage :
stage1 : mbr
stage1_5 : Le secteur après mbr permet au chargeur de démarrage de stage1 d'identifier le système de fichiers sur la partition où se trouve stage2
stage2 : Partition de disque (/boot/grub/)
Fichier de configuration : /boot/grub/grub. conf <-- /etc/grub.conf
stage2 et le noyau sont généralement placés dans une partition de disque de base
Fonction :
(1) Fournir des menus et des interfaces interactives
e : Mode d'édition, utilisé pour modifier les menus
c : Mode commande, interface interactive
(2) Charger le noyau ou le système d'exploitation sélectionné par l'utilisateur
Autoriser la transmission des paramètres au noyau
Vous pouvez masquer ce menu
(3) Fournit un mécanisme de protection pour le menu
Menu Modifier Authentifier
Authentifier pour activer le noyau ou le système d'exploitation
Comment identifier un appareil :
(hd#,#)
hd# : numéro de disque, représenté par des chiffres commençant ; à partir de 0
# : Numéro de partition, représenté par des chiffres ; à partir de 0
(hd0,0)
interface de ligne de commande grub
aide : obtenir la liste d'aide
help KEYWORD : informations d'aide détaillées
find (hd#,#)/PATH/TO/SOMEFILE :
root (hd#,# )
kernel /PATH/TO/KERNEL_FILE : Définissez le fichier du noyau utilisé pour ce démarrage. De plus, vous pouvez ajouter de nombreux paramètres de ligne de commande pris en charge par le noyau ;
Par exemple : init=/path/to/init, selinux=0
initrd /PATH/TO/INITRAMFS_FILE : définissez un disque virtuel qui fournit des fichiers supplémentaires pour le noyau sélectionné ;
boot : démarrez le noyau sélectionné
Démarrez manuellement le système via l'interface de ligne de commande grub. :
grub> racine (hd#,#)
grub noyau /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub>
Fichier de configuration : /boot /grub/grub.conf
Éléments de configuration :
default=# : Définissez le élément de menu de démarrage par défaut ; élément unique (titre) La numérotation commence à 0 ;
timeout=# : Spécifiez combien de temps l'élément de menu attend la sélection de l'option
splashima=(hd#,#)/PATH/TO/XPM_PIC_FILE ; : Spécifiez le chemin du fichier de l'image d'arrière-plan du menu ;
menu caché : menu caché
mot de passe [--md5] STRING : authentification de l'édition du menu ; 🎜>
title TITLE : Définissez l'élément de menu "title", qui peut apparaître plusieurs fois
root (hd#,#) : recherches grub ; pour les fichiers stage2 et noyau La partition de périphérique où il se trouve ; est la "racine" de grub
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS] : noyau démarré
initrd /PATH/TO/INITRAMFS_FILE : fichier ramfs correspondant au noyau ;
mot de passe [--md5] STRING : authentification lors du démarrage du noyau ou du système d'exploitation sélectionné ;
commande grub-md5-crypt
Entrée mode mono-utilisateur :
(1) Modifier le menu grub (sélectionnez le titre à modifier, puis utilisez la commande e
(2) Dans le noyau sélectionné Vous pouvez ajouter
1, s, S ou single
(3) Dans la ligne où ; le noyau est localisé, tapez la commande "b"
Installer grub :
(1) grub- install
grub-install --root-directory=ROOT /dev/DISK
(2) grub
grub> racine (hd#,#)
grub> >
Noyau Linux :
Conception du système à noyau unique, mais tire pleinement parti des avantages de la conception du micro-noyau système et introduit un mécanisme modulaire au noyau.
Composants du noyau :
noyau : noyau du noyau, généralement bzIma, généralement dans le répertoire /boot, nommé vmlinuz-VERSION- RELEASE
objet noyau : objet noyau, généralement placé dans /lib/modules/VERSION-RELEASE/
[ ] : N
[M] : M
[*] : Y
Fichiers auxiliaires : disque virtuel
initrd
initramfs
Noyau en cours d'exécution :
commande uname :
uname - imprimer les informations du système
uname [ OPTION]...
-n : Afficher le nom du nœud
-r : Afficher VERSION-RELEASE ;
Module :
Commande lsmod :
Afficher ce qui a été fait par le noyau Le module du noyau chargé
affiche le contenu de : le fichier /proc/modules
commande modinfo :
Afficher les informations de description détaillées du module
modinfo [ -k kernel ] [ modulename|filename .. ]
-n : Afficher uniquement le chemin du fichier du module
-p : Afficher les paramètres du module
-a : auteur
-d : description
-l : ​​licence
Commande modprobe :
Charger ou décharger le module du noyau
modprobe [ -C config- file ] [ nom du module ] [ paramètres du module... ]
Fichier de configuration : /etc/modprobe.conf, /etc/modprobe.d/*.conf
modprobe [ -r ] nom du module...
commande depmod :
Un outil pour générer des fichiers de dépendances de modules du noyau et des fichiers de mappage d'informations système
Chargement ou déchargement de modules du noyau :
commande insmod :
insmod [nom du fichier] [options du module... ]
rmmod
rmmod [ nom du module ]
/proc répertoire :
Handle du noyau Ses propres informations d'état internes et informations statistiques, ainsi que les paramètres configurables sont générés via le pseudo-système de fichiers proc
Paramètres :
Lecture seule : informations de sortie
Écriture : une "nouvelle valeur" spécifiée par l'utilisateur peut être acceptée pour configurer une certaine fonction ou caractéristique du noyau
/proc/sys
(1) La commande sysctl est utilisée pour afficher ou définir de nombreux paramètres dans ce répertoire
sysctl -w path.to.parameter=VALUE
~]# sysctl -w kernel.hostname=mail.madu .com
(2) La commande echo peut également modifier les valeurs de la plupart des paramètres via la redirection
echo "VALEUR" > ; /proc/sys/path/to/parameter
~]# echo "www.madu.com" > /sys/kernel/hostname
commande sysctl :
Fichier de configuration par défaut : /etc/sysctl.conf
(1) Définir un certain paramètre
sysctl -w paramètre=VALUE
(2 ) Définissez-le en lisant les paramètres du fichier de configuration
sysctl -p [/path/to/conf_file]
Redirection de route dans le noyau :
/proc/sys/net/ipv4/ip_forward
Plusieurs paramètres couramment utilisés :
net.ipv4.ip_forward
vm.drop_caches
kernel.hostname
/sys répertoire :
sysfs : affiche également les informations d'attribut pertinentes de chaque périphérique matériel reconnu par le noyau. comme informations de configuration du noyau pour les fonctionnalités matérielles ; Certains paramètres peuvent être modifiés pour ajuster les caractéristiques de fonctionnement du matériel.
udev crée dynamiquement les fichiers de périphérique requis pour chaque périphérique via les informations affichées sous ce chemin ; udev est un programme d'espace utilisateur qui exécute des outils spéciaux : udevadmin, hotplug;
Lorsque udev crée un fichier de périphérique pour un périphérique, il lira ses fichiers de règles prédéfinis, généralement dans /etc/udev/rules.d et le répertoire /usr /lib/udev/rules.d
Production du fichier disque virtuel :
(1 ) Commande mkinitrd
Recréez le fichier disque virtuel pour le noyau actuellement utilisé
~] # mkinitrd /boot/initramfs-$(uname -r ) .img $(uname -r)
(2) commande dracut
Redémarrez le noyau pour le utilisé Créer un fichier disque virtuel
~] # dracut /boot/initramfs-$(uname -r).img $(uname -r)
Compiler le noyau :
Prérequis :
(1) Préparer l'environnement de développement
( 2) Obtenez des informations pertinentes sur les périphériques matériels sur l'hôte cible
(3) Obtenez des informations pertinentes sur les fonctions du système hôte cible, telles que le système de fichiers à activer
(4) Obtenez la source du noyau ; package de code ;
www.kernel.org
Préparer l'environnement de développement :
Groupe de packages (CentOS 6) :
Développement de plate-forme de serveur
Outils de développement
Informations relatives au périphérique matériel hôte cible :
CPU :
~]# cat /proc/cpuinfo
~]# x86info -a
~]# lscpu
Équipement PCI :
~]#lspci
-v
-vv
~]# lsusb
-v
-vv
~]# lsblk
Apprenez toutes les informations sur les périphériques matériels
~]#hal-device
Processus de production simple basé sur le fichier modèle :
~]# 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
~] # écran
~]# make -j #
~]# make modules_install
~]# make install
Redémarrez le système et testez en utilisant le nouveau noyau
Compilation du noyau Linux (2)
Étapes pour compiler le noyau :
(1) Configurer les options du noyau
Prend en charge le mode « mise à jour » pour la configuration :
(a) make config : configurez chaque option configurable dans le noyau de manière transversale en fonction de la ligne de commande ;
(b) make menuconfig : une interface de fenêtre texte basée sur des malédictions
(c) make gconfig : une fenêtre ; interface basée sur l'environnement de développement GTK ;
(d) make xconfig : interface de fenêtre basée sur l'environnement de développement Qt
Prend en charge la "nouvelle configuration" ; mode de configuration :
(a) make defconfig : configuration basée sur la configuration "par défaut" fournie par le noyau pour la plateforme cible
(b) make allnoconfig : Toutes les options sont La réponse est "non"
(2) Compiler
make [-j #]
Comment compiler seulement une partie des fonctions du noyau :
( a) Compilez uniquement le code pertinent dans un certain sous-répertoire :
# cd /usr/src/linux
# make dir/
(b) Compiler uniquement un module spécifique :
# cd /usr/src/linux
# make dir/file. ko
Par exemple : compilez le pilote uniquement pour e1000 :
#make drivers/net/ethernet/intel/e1000 /e1000.ko
Comment compiler de manière croisée le noyau :
La plateforme cible compilée est différente de la plateforme actuelle
# make ARCH=arch_name
Pour obtenir de l'aide pour une plateforme cible spécifique
# make ARCH =arch_name help
Comment recompiler l'arborescence des sources du noyau qui a été compilée :
Nettoyer au préalable Opération :
# make clean : nettoie la plupart des fichiers générés par la compilation, mais conservera les fichiers de configuration, etc.
# make mrproper : nettoyer tous les fichiers compilés, la configuration et certains fichiers de sauvegarde
# make distclean : mrproper, les correctifs et les fichiers de sauvegarde de l'éditeur
commande d'écran :
Ouvrir un nouvel écran :
# écran
Quitter et fermer l'écran :
# exit
Supprimer l'écran actuel :
Ctrl + a,d
Afficher tous les écrans ouverts :
screen -ls
Restaurer un certain screen
screen -r [SESSION]
Installation du système CentOS
bootloader-->kernel(initramfs)-->rootfs-->/sbin/init
anaconda : installateur
tui : fenêtre de texte basée sur les malédictions ;
gui : fenêtre graphique
Processus de démarrage du programme d'installation CentOS :
MBR : boot.cat
stage2 : isolinux/isolinux.bin
Fichier de configuration : isolinux/isolinux.cfg
Chaque option de menu correspondante :
Charger le noyau : isolinuz/vmlinuz
Passez les paramètres au noyau : ajoutez initrd=initrd.img ...
Montez le système de fichiers racine et démarrez anaconda
Démarrez l'interface GUI par défaut
Si explicitement spécifié, utilisez l'interface TUI :
Passez simplement le paramètre "text" au noyau
boot: linux text
Remarque : le contenu ci-dessus doit généralement se trouver dans le périphérique de démarrage ; il existe plusieurs méthodes disponibles pour anaconda ultérieur et ses packages d'installation :
CD local
Disque dur local
serveur ftp : référentiel miam
serveur http : référentiel miam
serveur nfs
Si vous souhaitez spécifier manuellement la source d'installation :
boot : méthode Linux
Le processus de fonctionnement de l'application anaconda :
Phase de configuration de pré-installation
Langue utilisée lors de l'installation
Type de clavier
Périphérique de stockage cible de l'installation
Stockage de base : disque local
Périphérique spécial : iSCSI
Définir le nom d'hôte
Configurer l'interface réseau
Fuseau horaire
Mot de passe administrateur
Définir le mode de partition Et l'emplacement d'installation de MBR
Créez un utilisateur normal
Sélectionnez celui que vous voulez pour installer le package
Phase d'installation
Créer des partitions sur le disque cible, effectuer des opérations de formatage, etc.
Installer le package sélectionné à l'emplacement cible
Installer le chargeur de démarrage
Démarrer pour la première fois
iptables
selinux
core dump
méthode de configuration anaconda :
(1) Méthode de configuration interactive ;
(2) Compléter automatiquement la configuration en lisant le fichier de configuration donné à l'avance
Configuration donnée selon une syntaxe spécifique ; Options ;
fichier de démarrage
Options de démarrage de l'installation :
boot :
text : méthode d'installation par texte
méthode : spécifier manuellement la méthode d'installation à utiliser
Options de démarrage liées au réseau :
ip=IPADDR
netmask=MASK
gateway=GW
dns=DNS_SERVER_IP
ifname=NAME:MAC_ADDR
avec accès à distance options de démarrage liées aux fonctions :
vnc
vncpassword='PASSWORD'
emplacement spécifié du fichier kickstart
ks=
Lecteur DVD : ks=cdrom:/PATH/TO/KICKSTART_FILE
Disque dur : ks=hd:/device/drectory/KICKSTART_FILE
Serveur HTTP : ks=http://host:port/path/to/KICKSTART_FILE
Serveur FTP : ks=ftp://host:port/path/to/KICKSTART_FILE
Serveur HTTPS : ks=https://host : port/path/to/KICKSTART_FILE
Démarrer le mode de secours d'urgence :
sauvetage
Document officiel : "Guide d'installation"
Format de fichier Kickstart :
Section de commande : Indiquer diverses configurations de pré-installation, telles que le type de clavier, etc. ;
Segment de package : indiquez le groupe de packages ou le package à installer, le package à ne pas installer, etc. ; 🎜>
%packages
@group_name
package
-package
%end
Segment de script :
%pre : Pré- script d'installation
Environnement d'exécution : un environnement micro-Linux s'exécutant sur le support d'installation
%post : Post- script d'installation
Environnement d'exécution : le système installé
Commandes dans la section des commandes :
Commande requise
authconfig : Configuration de la méthode d'authentification
authconfig --useshadow -- passalgo=sha512
bootloader : emplacement d'installation du chargeur de démarrage et configuration associée
bootloader --location=mbr --driveorder=sda --append= "crashkernel =auto crashkernel=auto rhgb rhgb quiet quiet"
clavier : définir le type de clavier
lang : type de langue
partie : Créer une partition
rootpw : Spécifier le mot de passe root
fuseau horaire : Fuseau horaire
Commande facultative
installer OU mettre à niveau
texte : Interface d'installation de texte
réseau
pare-feu
selinux
arrêt
mise hors tension
reboot
repo
user : créer un nouvel utilisateur pour le système une fois l'installation terminée complet
url : Spécifiez la source d'installation
Comment créer un fichier kickstart :
(1) Édition manuelle directement
modifiée selon un modèle
(2) Vous pouvez utiliser le outil de création : system-config-kickstart (CentOS 6)
Modifier et générer une nouvelle configuration basée sur un modèle
http://172.16.0.1/ centos6.x86_64.cfg
Vérifiez les erreurs de syntaxe dans le fichier ks : ksvalidator
# ksvalidator /PATH/TO/ KICKSTART_FILE
Créer un disque bootable :
# 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/
Examen : installation du système CentOS
fichier kickstart :
Section de commande
Obligatoire : authconfig, bootloader, ...
Facultatif : pare-feu, selinux, redémarrage, ...
Segment de package
%packages
@group_name
paquet
-paquet
%end
segment de script
%pre
...
%end
%post
...
%end
Outil de création : system-config-kickstart
Vérification de la syntaxe : ksvalidator
Comment se déroule le processus d'installation ? Obtenez le fichier kickstart :
DVD : ks=cdrom:/PATH/TO/KS_FILE
HTTP : ks=http://HOST : PORT/PATH/TO/KS_FILE
SELinux :
SELinux : Linux amélioré sécurisé, fonctionnant dans le noyau Linux
DAC : Contrôle d'accès discrétionnaire
MAC : contrôle d'accès obligatoire
SELinux a deux niveaux de travail :
strict : chacun le processus est contrôlé par selinux ;
ciblé : seul un nombre limité de processus est contrôlé par selinux ;
Surveiller uniquement les processus qui sont facilement compromis ;
bac à sable :
objet opération sujet
sujet : processus
objet : processus, fichier,
Fichier : ouvrir, lire, écrire , fermer, chown, chmod
sujet : domaine
objet : type
SELinux pour chaque des étiquettes de sécurité sont fournies pour les fichiers et les processus
user:role:type
utilisateur : utilisateur SELinux ;
rôle : rôle
type :
Base de règles SELinux :
Règles : Quel domaine peut accéder à quel(s) type(s) de fichiers
Configurer SELinux :
Si SELinux est activé ;
Renommer le fichier
Définir certaines caractéristiques du tissu ;
Statut SELinux :
application : Application, chaque processus restreint doit être restreint ;
permissif : activé, chaque opération de violation de processus restreint ne sera pas interdite, mais sera enregistrée dans le journal d'audit
désactivé :
Commandes associées :
getenforce : obtenez l'état actuel de selinux
setenforce 0|1 ;
0 : défini sur permissif
1 : défini sur application
Ce paramètre : n'est pas valide après le redémarrage du système
Fichier de configuration : /etc/sysconfig/selinux, /etc /selinux/config
SELINUX={disabled|enforcing|permissive}
Remarquez le fichier :
chcon
chcon [OPTION]... FICHIER DE CONTEXTE...
chcon [ OPTION]... [-u UTILISATEUR] [-r RÔLE] [-t TYPE] FICHIER...
chcon [OPTION]... --reference=RFILE FILE ..
-R : marquage récursif
Libellé par défaut pour les fichiers de restauration :
restorecon [-R] /path/to/somewhere
Règles booléennes :
getsebool
setsebool
commande getsebool :
getsebool [-a] [booléen]
commande setsebool :
setsebool [-P] valeur booléenne | bool1=val1 bool2=val2 ...
programmation de script bash :
Programmation langage :
Structure des données
Exécution séquentielle
Sélectionner l'exécution
Test conditionnel
Exécuter la commande ou [[ EXPRESSION ]]
Valeur de retour de l'état d'exécution ;
if
cas
boucle Exécuter
pour exécuter un certain segment de code plusieurs fois ;
pour exécuter combien de fois ?
Le nombre de cycles est connu à l'avance :
Le nombre de cycles est connu à l'avance
Doit avoir des conditions d'entrée et des conditions de sortie :
pendant, pendant, jusqu'à
Fonction : programmation structurée et réutilisation de code
fonction
boucle for syntaxe :
pour NOM dans LISTE ; faire
Corps de la boucle
fait
Méthode de génération de liste :
(1) Liste entière
{start ..end}
$(seq start [[step]end])
(2) glob
/etc/rc.d/rc3.d/K*
(3) Commande
Détecter par commande ping l'état en ligne de tous les hôtes dans la plage 172.16.250.1-254
#!/bin/bash
#
net='172.16.250'
uphosts=0
downhosts=0
pour moi dans {1..20} ; do
ping -c 1 -w 1 ${net}.$ {i} &> /dev/null
if [ $? -eq 0 ]; then
echo "${net}. ${i} est en hausse. {net}.${i} est en panne."
let downhosts++
fi
terminé
echo "Hôtes en hausse : $uphosts."
echo "En bas hosts : $downhosts."
boucle while :
while CONDITION ; faire
Corps de la boucle
fait
CONDITION : condition de contrôle de la boucle ; Avant d'entrer dans la boucle, faites d'abord un jugement ; faites un jugement à nouveau après chaque boucle
Si la condition est « vraie », alors exécutez une boucle jusqu'à ce que l'état du test de condition soit « ; false", terminate Loop;
Par conséquent : CONDTION doit généralement avoir une variable de contrôle de boucle ; et la valeur de cette variable sera continuellement modifiée dans le corps de la boucle ;
Exemple : Trouvez la somme de tous les entiers positifs inférieurs à 100 ;
#!/bin/bash
#
déclarer -i sum=0
déclarer -i i=1
while [ $i -le 100 ]; faire
let sum+=$i
laisser i++
fait
écho "$i"
echo "Résumé : $sum."
Ajouter 10 utilisateurs
user1-user10
#!/bin/bash
#
declare -i i= 1
declare -i users=0
while [ $i -le 10 ];
si ! id user$i &> /dev/null; alors
useradd user$i
echo "Ajouter un utilisateur : utilisateur$i."
laisser les utilisateurs++
fi
let i++
done
echo "Ajouter des utilisateurs $users."
Détectez l'état en ligne de tous les hôtes dans la plage 172.16.250.1-254 via la commande ping (utilisez une boucle while)
#!/bin/bash
#
declare -i i=1
déclarer - i uphosts=0
déclarer -i downhosts=0
net='172.16.250'
while [ $i -le 20 ]; do
if ping -c 1 -w 1 $net .$i &> /dev/null ; puis
echo "$net.$i est en place."
laissez uphosts++
autre
echo "$net.$i est en panne."
laissez downhosts++
   fi
  laisser i++
fait
echo "Up hosts : $uphosts. "
echo "Hôtes en panne : $downhosts."
打印九九乘法表;(分别使用pour和 while循环实现)
#!/bin/bash
#
pour j dans {1..9} ; faire
   pour je dans $(seq 1 $j); faire
echo -e -n "${i}X${j}=$[$i*$j]t"
   fait
   écho
fait
#!/bin/bash
#
declare -i i=1
déclarer -i j=1
while [ $j -le 9 ]; faire
   pendant que [ $i -le $j ]; faire
echo -e -n "${i}X${j}=$[$i*$j]t"
laissez-moi++
   fait
   écho
   laissez-moi= 1
   laisser j++
fait
利用RANDOM生成10
#!/bin/bash
#
déclarer -i max=0
déclarer -i min=0
déclarer -i i=1
while [ $i -le 9 ]; faire
   rand=$RANDOM
   echo $rand
si [ $i -eq 1 ]; puis
max=$rand
min=$rand
   fi
   si [ $rand -gt $max ]; alors
max=$rand
   fi
   si [ $rand -lt $min ]; alors
min=$rand
   fi
   laisse-moi++
terminé
écho "MAX : $max."
écho "MIN : $ min."
回顾:selinux, tandis que
selinux : 内核,安全加强;
开启:
/etc/sysconfig/selinux, /etc/selinux/config
# setenforce
#getenforce
打标:
chcon [-t TYPE ]
-R
布尔型:
getsebool [ -a]
setsebool [-P]
pendant que循环:
en CONDITION; faire
循环体
fait
sed:编辑器
sed : Stream EDitor, éditeur de ligne
Utilisation :
sed [option]... fichier d'entrée 'script'...
script :
'Commande d'adresse'
Options communes :
-n : Ne pas afficher le contenu en mode à l'écran
-e : Édition multipoint ;
-f /PATH/TO/SCRIPT_FILE : Lire le script d'édition à partir du fichier spécifié
-r : prend en charge l'utilisation d'expressions régulières étendues
-i : modification sur place ; >
Délimitation de l'adresse :
(1) Aucune adresse : traiter le texte intégral
(2) Adresse unique ; :
# : La ligne spécifiée
/pattern/ : Chaque ligne pouvant correspondre à ce motif ; >
(3) Plage d'adresses :
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
(4) ~ : étape
1~2
2~2
Modifier la commande :
d : supprimer
p : afficher le contenu dans l'espace motif
un texte : Ajoutez du texte après la ligne ; supportez en utilisant n pour implémenter l'ajout de plusieurs lignes ;
i texte : insérez du texte avant la ligne ; supportez en utilisant n pour implémenter l'insertion de plusieurs lignes ;
c text : La ligne de remplacement est un texte sur une ou plusieurs lignes
w /path/to/somefile : Enregistrez les lignes correspondant au motif ; espace vers le fichier spécifié ;
r /path/from/somefile : lit le flux de texte du fichier spécifié jusqu'à la fin de la ligne correspondante dans l'espace du modèle
= : Imprimer les numéros de ligne pour les lignes dans l'espace du motif
 ! : annuler la condition ; s/// : prend en charge l'utilisation d'autres séparateurs Symboles, s@@@, s###
Marque de remplacement :
g : Remplacement global en ligne ;
p : Afficher les lignes remplacées avec succès
w /PATH/TO/SOMEFILE : Enregistrez le remplacement réussi ; résultats dans le fichier spécifié
1 : Supprimez tous les caractères d'espacement au début des lignes commençant par des espaces dans le fichier /boot/grub/grub.conf ;
~]# sed 's@^[[:space:]]+@@' /etc/grub2.cfg
2 : Supprimez /etc/ # et les caractères vides au début de toutes les lignes du fichier fstab qui commencent par # et sont suivis d'au moins un caractère vide
~]# sed 's@^#[[:space :]]+@@' /etc/fstab
3 : fait écho à un chemin absolu vers la commande sed, supprimez son nom de base ; supprimez son nom de répertoire ;
~]# echo "/etc/sysconfig/" | ?$@@'
Commandes d'édition avancées :
h : écrasez le contenu de l'espace de motif dans le espace de maintien ;
H : ajouter le contenu de l'espace de motif à l'espace de maintien
g : prendre les données de l'espace de maintien ; et écrasez-le dans l'espace de motif
G : Retirez le contenu de l'espace de stockage et ajoutez-le à l'espace de motif
x : Échangez le contenu dans l'espace de motif avec le contenu dans l'espace de maintien
n : Lisez la ligne suivante de la ligne correspondante dans l'espace de motif ;
N : ajoutez la ligne suivante de la ligne correspondante à l'espace de motif
d : supprimez les lignes dans l'espace de motif ; >D : Supprimez toutes les lignes dans l'espace de motif multiligne
sed -n 'n;p' FILE : Afficher les lignes paires
sed '1!G;h;$!d' FILE : Afficher dans inverser le contenu du fichier
sed '$!N;$!D' FILE : Supprimez les deux dernières lignes du fichier
sed ; '$!d' FILE : Supprimez la dernière ligne du fichier
sed 'G' FILE :
sed '/^ $/d;G' FILE :
sed 'n;d' FILE : Afficher les lignes impaires
sed -n'1 ! G;h;$p' FILE : affiche chaque ligne du fichier à l'envers
script bash
while CONDITION ; faire
Corps de boucle
terminé
Entrée condition : CONDITION est vraie
Condition de sortie : fausse
jusqu'à ce que CONDITION ;
Corps de la boucle
fait
Condition d'entrée : fausse
Condition de sortie : vrai
Exemple : Trouver la somme de tous les entiers positifs inférieurs à 100
#!/bin/bash
#
déclarer -i i=1
déclarer -i sum=0
jusqu'à [ $i -gt 100 ]; faire
let sum+=$i
laissez-moi++
fait
écho "Somme : $ sum"
Exemple : Imprimer la table de multiplication
#!/bin/bash
#
déclarer -i j=1
déclarer -i i=1
jusqu'à [ $j -gt 9 ]; faire
jusqu'à [ $i -gt $j ];
echo -n -e "${i}X${j}=$[$i*$j]t"
laissez-moi++
terminé
echo
let i=1
let j++
done
Instruction de contrôle de boucle (utilisée dans le corps de la boucle) :
continuer [N] : Terminer le cycle actuel de la Nième couche à l'avance et entrer directement dans le prochain tour de jugement
pendant que CONDTIITON1 ; 🎜>
CMD1
...
si CONDITION2 alors
continuer
fi
CMDn
...
terminé
break [N] : terminer la boucle plus tôt
pendant que CONDTIITON1; fais
CMD1
...
si CONDITION2; alors
pause
fi
CMDn
...
done
Exemple 1 : Trouver la somme de tous les nombres pairs à l'intérieur 100 ; nécessite une boucle pour parcourir tous les entiers positifs inférieurs à 100
#!/bin/bash
#
déclarer -i i=0
déclarer -i sum=0
jusqu'à [ $i -gt 100 ]; 🎜>
let i++
if [ $[$i%2] -eq 1 ] alors
continuer
fi
let sum+=$i
fait
écho "Somme paire : $sum"
Créer une boucle infinie :
pendant que c'est vrai ; faire
Corps de boucle
fait
jusqu'à faux ; faire
Corps de boucle
fait
Exemple 2 : Obtenez des informations sur les utilisateurs connectés du système toutes les 3 secondes ; si Docker est connecté, elles seront enregistrées dans le journal et quitteront
#!/bin/bash ;
#
read -p "Entrez un nom d'utilisateur : " nom d'utilisateur
while vrai ; faire
if who | grep "^$username" &> alors
break
fi
dormir 3
fait
echo "$nom d'utilisateur connecté." >> /tmp/user.log
Non. Deux implémentations :
#!/bin/bash
#
lire - p "Entrez un nom d'utilisateur : " username
jusqu'à ce que who | grep "^$username" &>
dormir 3
terminé
echo "$nom d'utilisateur connecté." >> ; /tmp/user.log
Utilisation particulière de la boucle while (parcourir chaque ligne du fichier) :
while read line; do
Corps de la boucle
done <
Lisez tour à tour chaque ligne du fichier /PATH/FROM/SOMEFILE, et attribuez la ligne à la ligne variable :
Exemple : Rechercher tous les utilisateurs dont les numéros d'identification sont pairs et afficher leurs noms d'utilisateur et numéros d'identification ;
#!/bin/bash
while read line;do
if [ $[`echo $line | 0 | "uid: `echo $line | cut -d: -f3 `"
                                                                                                                                                      >
Format spécial pour la boucle for :
for ((initialisation de la variable de contrôle ; formule d'expression de jugement conditionnel ; expression modifiée de la variable de contrôle));
Corps de la boucle
terminé
Initialisation de la variable de contrôle : exécutée une seule fois lors de l'exécution dans la section de code de boucle ;
Expression modifiée de la variable de contrôle : la variable de contrôle sera exécutée en premier à la fin de chaque cycle. Corrigez l'opération, puis effectuez un jugement conditionnel ; >
Exemple : Trouvez la somme de tous les entiers positifs inférieurs à 100 ;
#!/bin/bash
#
déclarer -i sum=0
pour ((je =1;i<=100;i++)); faire
laisser somme+=$i
fait
echo "Somme : $sum."
Exemple 2 : Imprimez la table de multiplication
#!/bin/bash
#
pour((j= 1 ;j<=9;j++));faire
pour((i=1;i<=j;i++))faire
                                                                       en utilisant en utilisant    en utilisant   en utilisant                 à travers   à travers ‐   ‐   ‐   ‐ ‐terminé
écho
fait
(1) Afficher un menu comme suit :
cpu) afficher les informations sur le processeur ;
mem) afficher la mémoire informations;
disque) afficher les informations sur le disque;
quitter) quitter
(2) invite l'utilisateur à sélectionner des options ;
(3) affiche le contenu du choix de l'utilisateur 🎜>cat << afficher les informations sur le processeur ;
mem) afficher les informations sur la mémoire ;
disque) afficher les informations sur le disque ;
quitter) quitter
=========== =================
EOF
lire - p "Entrez une option : " option
pendant que [ "$option" != 'cpu' -a "$option" != 'mem' -a "$option" != 'disk' -a "$option" != 'quit' ]; >
read -p "Mauvaise option, saisissez à nouveau : " option
terminé
if [ "$option" == 'cpu' ]; alors
lscpu
elif [ "$option" == 'mem' ]; alors
cat /proc/meminfo
elif [ "$option" == 'disk' ]; 🎜> fdisk -l
else
echo "Quitter"
sortie 0
fi
Plus loin :
Le l'utilisateur sélectionne et ne quitte pas le script une fois l'affichage terminé ; au lieu de cela, il invite l'utilisateur à continuer de choisir d'afficher un autre contenu ; il ne quitte pas jusqu'à ce que quitter soit utilisé ;
Jugement conditionnel : énoncé de cas
référence de variable de cas dans
PAT1)
Branche 1
;;
PAT2)
Branche 2
;;
...
* )
branche par défaut
;;
esac
Exemple :
#!/bin/bash
#
cat << EOF
cpu) afficher les informations sur le processeur ;
mem) afficher les informations sur la mémoire ;
disque) afficher les informations sur le disque ;
quitter) quitter
============================
EOF
read -p "Entrez une option : " option
while [ "$option" != ' cpu' -a "$option" != 'mem' -a "$option" != 'disk' -a "$option" != 'quit' ]; do
   read -p "Mauvaise option, saisissez à nouveau : " option
terminé
cas "$option" dans
cpu)
lscpu 
;;
mem)
cat /proc/meminfo
;;
disque)
fdisk -l
;;
*)
écho "Quitter..."
sortie 0
;;
esac
(1) 脚本可接受参数:démarrer, arrêter, redémarrer, état ; 
(2) Pour commencer : Nom/var/lock/subsys/SCRIPT_NAME处理?
(4) 如果是stop:则删除/var/lock/subsys/SCRIPT_NAME, 并显示“停止完成”;
考虑:如果事先已然停止过了,该如何处理?
(5) 如果是restart,则先stop, 再start;
考虑:如果本来没有start, " SCRIPT_NAME est en cours d'exécution...";
如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示"SCRIPT_NAME est arrêté...";
其中:SCRIPT_NAME为当前脚本名;
总结:jusqu'à ce que, pendant, pour, cas
bash脚本编程:
cas语句:
cas 变量引用 en
PAT1)
分支1
;;
PAT2)
分支2
;;
...
*)
分支n
;;
esac
cas支持glob风格的通配符:
*: 任意长度任意字符;
?字符;
a|b: a或b
fonction:函数
过程式编程:代码重用
模块化编程
结构化编程
语法一:
fonction f_name {
...函数体...
Syntaxe 2 :
f_name() {
...Corps de la fonction...
}
Appel : La fonction ne sera exécutée que si elle est appelée
<🎜 ; >Appel : Étant donné un nom de fonction
où le nom de la fonction apparaît sera automatiquement remplacé par le code de la fonction
<🎜 ; >
Le cycle de vie de la fonction : créée lorsqu'elle est appelée et terminée lorsqu'elle est renvoyée
la commande return renvoie un résultat d'état personnalisé
<🎜 ; >0 : Succès
1-255 : Échec
#!/bin/bash
#
function adduser {
if id $username &> /dev/null then
echo "$username existe."
return 1
else
useradd $username
fi
}
pour moi dans {1..10} ; fais
username=myuser$i
adduser
terminé
Exemple : script de service
#!/bin/bash
#
# chkconfig : - 88 12
# description : test du script de service
#
prog=$ (nom de base $0)
lockfile=/var/lock/subsys/$prog
start() {
if [ -e $lockfile ] alors
echo "$prog est déjà en cours d'exécution."
return 0
else
touchez $lockfile
[ $? -eq 0 ] && echo "Démarrage de $prog terminé."
fi
}
stop() {
if [ -e $lockfile ]; alors
rm -f $lockfile && echo " Arrêtez $prog ok."
autre
echo "$prog est encore arrêté."
fi
}
status() {
if [ -e $lockfile ]; then
echo "$prog est en cours d'exécution ."
else
echo "$prog est arrêté."
fi
}
usage() {
echo "Utilisation : $ prog {start|stop|restart|status}"
}
if [ $# -lt 1 ] ; puis
utilisation
sortie 1
fi
caisse 1 $ dans
début)
début
;;
arrêter)
arrêter
;;
redémarrer)
arrêter
démarrer
;;
statut)
statut
;;
*)
usage
esac
Valeur de retour de la fonction :
Le résultat de l'exécution de la la fonction renvoie la valeur :
(1) Utilisez la commande echo ou print pour la sortie
(2) Le résultat de l'exécution de la commande appelée ; dans le corps de la fonction ;
Le code d'état de sortie de la fonction :
(1) La valeur par défaut dépend du code d'état de sortie de la fonction ; dernière commande exécutée dans le corps de la fonction
(2) Code d'état de sortie personnalisé :
return
Les fonctions peuvent accepter des paramètres :
Passer des paramètres à la fonction : lors de l'appel d'une fonction, séparez simplement la liste de paramètres donnée par un espace après le nom de la fonction ; par exemple, "testfunc arg1 arg2..."
Dans le corps de la fonction, vous pouvez utiliser $1, $2, ... pour appeler ces paramètres ; vous pouvez également utiliser des variables spéciales telles que $@, $*, $# ;
Exemple : Ajouter 10 utilisateurs
#!/bin/bash
#
fonction adduser {
if [ $# -lt 1 ]; then
return 2
# 2 : aucun argument
fi
si identifiant $1 &> /dev/null alors
echo; "$1 existe."
retourner 1
autre
useradd $1
[ $? -eq 0 ] && echo "Ajouter $1 terminé." && return 0
fi
}
pour moi dans {1..10} ; monutilisateur$i
done
Imprimer la table de multiplication NN, implémentée à l'aide de fonctions
Portée de la variable :
Variables locales : processus shell actuel afin d'exécuter le script, un processus shell dédié sera donc démarré ; la portée des variables locales est le fichier de programme de script shell actuel ;
Variables locales : le cycle de vie de la fonction ; les variables sont automatiquement détruites à la fin de la fonction ;
S'il y a des variables locales dans la fonction, leurs noms sont les mêmes que les variables locales
Comment définir des variables locales dans une fonction ; :
local NAME=VALUE
Récursion de fonction :
La fonction s'appelle directement ou indirectement
N!= N(n-1)(n-2)...1
n(n-1) ! = n(n-1)(n-2) !
#!/bin/bash
#
fact() {
si [ $1 -eq 0 -o $1 -eq 1 ]; puis
echo 1
autre
écho $[$1*$(fait $[$1-1])]
   fi
}
fait 5
求n阶斐波那契数列;
#!/bin/bash
#
fab() {
   if [ $1 -eq 1 ]; puis
echo 1
   elif [ $1 -eq 2 ]; puis
écho 1
   else
écho $[$(fab $[$1- 1])+$(fab $[$1-2])]
   fi
}
fab 7
Systemd:
POST ---> Séquence de démarrage ---> Chargeur de démarrage ---> noyau + initramfs(initrd) ---> rootfs ---> /sbin/init
init :
CentOS 5 : SysV init
CentOS 6 : Parvenu
CentOS 7 : Systemd
Systemd新特性:
系统引导时实现服务并行启动;
按需激活进程;
系统状态快照;
基于依赖关系定义服务控制逻辑;
核心概念:unité
配置文件进行标识
保存至:
/usr/lib/systemd/system
/run/systemd/system
/etc/systemd/system
Unité的类型:
Unité de service : 文件扩展名为.service, 用于定义系统服务;
Unité cible : 文件扩展名为.target,用于模拟实现“运行级别”;
Unité périphérique : .device, 用于定义内核识别 的 设备 ;
Unité de montage: .mount, 定义 文件 系统 挂载点 ;
Unité de socket: .Socket, 用于 标识进程间通信用的socket文件;
Unité d'instantané : .snapshot, 管理系统快照;
Unité d'échange : .swap,用于标识swap设备;
Unité de montage automatique : .automount,文件系统的自动挂载点;
Unité de chemin : .path,用于
关键特性:
基于chaussette et的激活机制:socket与服务程序分离;
基于bus的激活机制:
基于device的激活机制:
基于path的激活机制:
系统快照:保存各unit的当前状态信息于持久存储设备中;
不兼容:
systemctl命令固定不变
非由systemd启动的服务,systemctl无法与之通信
管理系统服务:
CentOS 7 : unité de service
注意:能兼容早期的服务脚本
命令:systemctl COMMAND name .service
Démarrer : nom du service start ==> systemctl start name.service
Arrêter : nom du service stop ==> 🎜>
Redémarrer : nom du service restart ==> systemctl restart nom.service
Statut : nom du service status ==> nom du statut systemctl service<.>
Redémarrage conditionnel : nom du service condrestart ==> systemctl try-restart name.service
Recharger ou redémarrer le service : systemctl reload-or -restart name.service
Recharger ou redémarrer conditionnellement le service : systemctl reload-or-try-restart name.service
Désactiver le paramètre pour démarrage automatique au démarrage : systemctl mask name.service
Annuler la désactivation du paramètre de démarrage automatique au démarrage : systemctl unmask name.service
Afficher l'état d'activation actuel d'un service : systemctl is-active name.service
Afficher tous les services activés :
systemctl list-units --type service
Afficher tous les services :
systemctl list -units --type service --all
Correspondance de la commande chkconfig :
Définir un service pour démarrer Démarrage automatique : nom chkconfig on ==> systemctl activer name.service
Désactiver : chkconfig name off ==> systemctl désactiver name.service
Afficher l'état de démarrage de tous les services :
chkconfig --list ==> systemctl list-unit-files --type service
Vérifiez si le service démarre automatiquement au démarrage : systemctl is-enabled name.service
Autres commandes :
Afficher les dépendances du service : systemctl list-dependencies name.service
unités cibles :
fichier de configuration de l'unité : . cible
Niveau d'exécution :
0 ==> >1 ==> runlevel1.target, sauvetage.target
2 ==> >
3 ==> runlevel3.target, multi-user.target
4 ==>
5 ==> runlevel5.target, graphique.target
6 ==> >
Changement de niveau :
init N ==> systemctl isolate name.target
Niveau d'affichage :
runlevel ==> systemctl list-units --type target
Obtenez le niveau d'exécution par défaut :
/etc/inittab ==> systemctl get-default
Modifier le niveau par défaut :
/etc/inittab ==> systemctl set-default name.target
Passer en mode de secours d'urgence :
systemctl Rescue
Passer en mode d'urgence :
systemctl d'urgence
Autres commandes couramment utilisées :
Shutdown : systemctl halt, systemctl poweroff
redémarrage : redémarrage de systemctl
suspendre : suspension de systemctl
Instantané : mise en veille prolongée de systemctl
Instantané et blocage : systemctl hybrid-sleep
Révision : script bash, systemd
Fonction : Programmation modulaire
fonction f_name {
...fonction corps...
}
f_name() {
... fonction Corps ...
}
commande de retour
Paramètres :
Paramètres d'appel dans le corps de la fonction : $1, $2, ...
$*, $@, $#
Passer les paramètres à la fonction :
Liste des paramètres du nom de la fonction
systemd : Système et service
unité :
Type : service, cible
.service, . target
systemctl
script bash :
tableau :
Variable : un espace mémoire qui stocke un seul élément ;
Array : un espace mémoire continu qui stocke plusieurs éléments ;
Nom du tableau
Index : Le nombre commence à 0 et est un index numérique
Remarque : Index ; est également pris en charge. Utilisez des formats personnalisés, pas seulement des formats numériques ;
les tableaux bash prennent en charge les formats clairsemés
Éléments de référence ; dans un tableau : ${ARRAY_NAME[INDEX]}
Déclarez un tableau :
declare -a ARRAY_NAME
declare -A ARRAY_NAME : Tableau associatif
Affectation des éléments du tableau :
(1) N'attribuez qu'un seul élément à la fois ;
ARRAY_NAME[INDEX]=VALUE
weekdays[0]= " Dimanche"
jours de la semaine[4]="Jeudi"
(2) Attribuez tous les éléments à la fois :
ARRAY_NAME=("VAL1" "VAL2" "VAL3" ...)
(3) Attribuez uniquement des éléments spécifiques :
ARRAY_NAME=([0]="VAL1" [3]="VAL2" ...)
(4) lire -a ARRAY
Élément du tableau de référence : ${ARRAY_NAME[INDEX]}
Remarque : Omettre [INDEX] signifie référencer l'élément avec l'indice 0 ; 🎜 >
La longueur du tableau (le nombre d'éléments dans le tableau) : ${#ARRAY_NAME[*]}, ${#ARRAY_NAME[@]}
Exemple : Générez 10 nombres aléatoires et enregistrez-les dans un tableau, et trouvez leurs valeurs maximales et minimales
#!/ bin/bash
#
déclarer -a rand
déclarer -i max=0
pour je dans {0..9} ; fais
rand[$i]= $RANDOM
echo ${rand[$i]}
[ ${rand[$i]} -gt $max ] && max=$ {rand[$i]}
done
echo "Max : $max"
Définir un tableau Les éléments du tableau sont tous des fichiers se terminant par .log dans le /var/log. répertoire ; les statistiques sont requises La somme du nombre de lignes dans les fichiers dont les indices sont des nombres pairs
#!/bin/bash
#
déclarer -a fichiers
files=(/var/log/*.log)
déclarer -i lignes=0
pour i dans $(seq 0 $[${#files[*]} -1]); faire
if [ $[$i%2] -eq 0 ];then
let lines+=$(wc -l ${files[$i ]} | coupe -d'' -f1)
fi
fait
echo "Lines : $lines."
Référence à un élément dans un tableau :
Tous les éléments : ${ARRAY[@]}, ${ARRAY[*]}
Tranche de tableau : ${ARRAY[@ ] :offset:number>
offset : le nombre d'éléments à ignorer
number : le nombre d'éléments à supprimer, prendre le décalage Tous les éléments après le montant : ${ARRAY[@]:offset} ;
Ajouter des éléments au tableau :
ARRAY[${#ARRAY[*]}]
Supprimer un élément du tableau :
unset ARRAY[INDEX]
Tableau associatif :
declare -A ARRAY_NAME
ARRAY_NAME=([index_name1]='val1' [index_name2]='val2' ...)
outils de traitement de chaînes bash :
Découpage de chaînes :
${var : offset:number>
Récupère les caractères les plus à droite de la chaîne : ${var: -lengh}
Remarque : après les deux points, il doit y avoir être un caractère vide
Obtenir une sous-chaîne basée sur le modèle :
${var#*word} : où mot peut être n'importe quel caractère spécifié ; fonction : de gauche à droite, recherchez la première occurrence de mot dans la chaîne stockée dans la variable var et supprimez tous les caractères entre le début de la chaîne et la première occurrence du caractère mot ;
${var##*word} : Comme ci-dessus, mais ce qui est supprimé est tout ce qui se trouve entre le début de la chaîne et le dernier caractère spécifié par word
file="/var/log/messages"
${file##*/} : messages
${var%word*} : où word peut être n'importe quel caractère spécifié ; fonction : de droite à gauche, recherchez la première occurrence de word dans la chaîne stockée dans la variable var, et supprimez la chaîne All caractères entre le dernier caractère à gauche et le premier caractère du mot
file="/var/log/messages"
${ file%/*} : /var/log
${var%%word*} : Idem que ci-dessus, sauf supprimer la chaîne la plus à droite Tous les caractères entre les caractères sur le côté gauche et la dernière occurrence du mot caractère
Exemple : url=:80
${url##*:}
${url%%:*}
Trouver un remplaçant :
${var/pattern/substi} : Recherchez la première chaîne correspondant à pattern dans la chaîne représentée par var et remplacez-la par substi ; >${var//pattern/substi} : recherchez toutes les chaînes pouvant correspondre à un motif dans la chaîne représentée par var et remplacez-les par substi ; >
${var/#pattern/substi} : recherchez la chaîne correspondant à pattern au début de la ligne dans la chaîne représentée par var et remplacez-la par substi
${var/%pattern/substi} : recherchez la chaîne correspondant à pattern à la fin de la ligne dans la chaîne représentée par var et remplacez-la par substi ; >
Rechercher et supprimer :
${var/pattern} : Rechercher la chaîne représentée par var et supprimer une première fois La chaîne correspondant au motif
${var//pattern} :
${var/#pattern} :
${var/% pattern} :
Conversion de la casse des caractères :
${var^^} : Convertit toutes les lettres minuscules en var en majuscule ;
${var,,} : Convertissez toutes les lettres majuscules de var en minuscules
Affectation de variable :
${var:-value} : Si var est vide ou non défini, renvoie la valeur ; sinon, renvoie la valeur de var ;
${ var:=value} : Si var est vide ou non défini, renvoie la valeur et attribue-la à var ; sinon, renvoie la valeur de var ;
$; {var:+value} : Si var n'est pas vide, renvoie la valeur
${var:?error_info} : Si var est vide ou n'est pas défini, renvoie error_info sinon, renvoie la valeur de var ;
Utilisez le fichier de configuration pour le programme de script :
(1) Définir un fichier texte et définissez "name=value" pour chaque ligne
(2) Sourcez ce fichier dans le script
Commande :
Commande mktemp :
mktemp [OPTION]... [MODÈLE]
MODÈLE : nom de fichier.XXX
Au moins trois XXX doivent apparaître
OPTION :
-d : Créez un répertoire temporaire ;
--tmpdir=/PATH/TO/SOMEDIR : Spécifiez l'emplacement du répertoire du fichier temporaire
commande d'installation :
installer [OPTION]... [-T] SOURCE DEST
installer [ OPTION]... SOURCE... RÉPERTOIRE
installer [OPTION]... -t RÉPERTOIRE SOURCE...
installer [ OPTION]... -d ANNUAIRE...
Options :
- m MODE
-o PROPRIÉTAIRE
-g GROUPE
GNU awk :
Trois outils pour le traitement de texte : grep, sed, awk
grep, egrep, fgrep : outils de filtrage de texte ; pattern
sed : éditeur de ligne
Espace de motif, espace de maintien
awk : générateur de rapport, sortie de texte formaté
AWK : Aho, Weinberger ; , Kernighan ---> Nouveau AWK, NAWK
GNU awk, bouche bée
gawk - langage d'analyse et de traitement de modèles
Utilisation de base : gawk [options] 'programme' FILE ...
programme : PATTERN{ACTION STATEMENTS}
Instructions séparées par des points-virgules
print, printf
Options :
-F : Spécifie le séparateur de champ utilisé lors de la saisie ;
-v var=value : variable personnalisée
1. imprimer
imprimer l'élément1. , item2, ...
Points clés :
(1) séparateur de virgule
(2) Chaque élément de sortie peut être une chaîne ou une valeur numérique ; le champ, la variable ou l'expression awk de l'enregistrement actuel
(3) Si l'élément est omis, cela équivaut à imprimer $0
2. Variables
2.1 Variables intégrées <.>
FS : séparateur de champ de saisie, la valeur par défaut est des caractères vides ;
OFS : séparateur de champ de sortie, la valeur par défaut est des caractères vides ;
RS : séparateur d'enregistrement d'entrée, caractère de nouvelle ligne lors de la saisie
ORS : séparateur d'enregistrement de sortie, caractère de nouvelle ligne lors de la sortie
NF : nombre de champ, nombre de champs
{print NF}, {print $NF}
NR : nombre d'enregistrement, nombre de lignes ;
FNR : Comptez chaque fichier séparément
FILENAME : nom du fichier actuel
ARGC : nombre de paramètres de ligne de commande
ARGV ; : Tableau, qui stocke les paramètres donnés par la ligne de commande
2.2 Variables personnalisées
( 1) - v var=value
Les noms de variables sont sensibles à la casse
(2) Définir directement
3. commande printf
formatage Sortie : printf FORMAT, item1, item2, ...
(1) LE FORMAT doit être donné
(2) Il n'y aura pas de retour à la ligne automatique, et le caractère de contrôle de retour à la ligne doit être explicitement indiqué, n
(3) Dans FORMAT, un symbole de formatage doit être spécifié pour chaque élément suivant
;
Format du caractère :
%c : Afficher le code ASCII du caractère
%d, %i : Afficher un nombre entier décimal
%e, %E : Afficher la valeur numérique en notation scientifique
% f : Afficher sous forme de nombre à virgule flottante ;
%g, %G : Afficher la valeur sous forme de notation scientifique ou sous forme de virgule flottante
% ; s : Afficher la chaîne ;
%u : Entier non signé
%% : Afficher % lui-même ; >
Modificateur :
#[.#] : Le premier chiffre contrôle la largeur de l'affichage ; le second # indique la précision après la virgule décimale ; ;
%3.1f
- : Aligné à gauche
+ : Afficher le symbole de la valeur
4. Opérateurs
Opérateurs arithmétiques :
x+y, x-y, x*y, x/y, x^y, x%y
-x
+x : Convertir en valeur numérique
Opérateur de chaîne : opérateur non signé, concaténation de chaîne
Opérateur d'affectation :
=, +=, -=, *=, /=, %=, ^=
++, --
Opérateurs de comparaison :
>, > ;=, <, < ;=, !=, ==
Caractères correspondant à un modèle :
~ : s'il faut correspondre à
!~ : S'il ne faut pas correspondre
Opérateur logique :
&&
||
!
Appel de fonction :
nom_fonction (argu1, argu2, ...)
Expression conditionnelle :
selector?if-true-expression:if-false-expression
# awk -F : '{$3> ;=1000?usertype=" Utilisateur commun":usertype="Sysadmin ou SysUser";printf "%15s:%-sn",$1,usertype}' /etc/passwd
5 . PATTERN
(1) vide : motif vide, correspond à chaque ligne
(2) /expression régulière ; / : Seules les lignes de processus pouvant correspondre au modèle ici
 ;
(3) expression relationnelle : expression relationnelle ; le résultat peut être « vrai » ou « faux » ; il ne sera traité que si le résultat est « vrai » ; 🎜>
Vrai : le résultat est une valeur non nulle, une chaîne non vide
(4) plages de lignes : plage de lignes,
startline, endline :/pat1/,/pat2/
Remarque : le format permettant de donner directement des chiffres n'est pas pris en charge
~] # awk -F : '(NR>=2&&NR<=10){print $1}' /etc/passwd
(5) BEGIN/ Mode END
BEGIN{} : exécuté une seule fois avant de commencer le traitement du texte dans le fichier
END{} : exécuté une seule fois ; une fois le traitement du texte terminé ;
6. Actions couramment utilisées
(1. ) Expressions
(2) Déclarations de contrôle : if, while, etc.
(3) Déclarations composées : déclarations combinées ; >
(4) instructions d'entrée
(5) instructions de sortie
7. Déclarations de contrôle
if(condition) {statments}
if(condition) {statments} else { déclarations
while(condition) {statments}
do {statements} while(condition)
for(expr1;expr2;expr3) {statements }
pause
continuer
supprimer le tableau[index]
supprimer le tableau
sortir
{ déclarations }
7.1 if-else
Syntaxe : instruction if(condition) [instruction else]
~]# awk -F : '{if($3>=1000) {printf "Utilisateur commun : %sn",$1} else {printf "root ou Sysuser : %sn",$1}}' /etc/passwd
~]# awk -F : '{if($NF== "/bin/bash") print $1}' /etc /passwd
~]# awk '{if(NF>5) print $0}' / etc/fstab
~]# df -h | awk -F[%] '/^/dev/{print $1}' | ($NF>=20) print $1}'
Scénario d'utilisation : émettre un jugement conditionnel sur la ligne entière ou un certain champ obtenu par awk ;
7.2 boucle while
Syntaxe : instruction while(condition)
If la condition est "vrai", entrez dans la boucle ; si la condition est "faux", quittez la boucle ;
Scénario d'utilisation : utilisé lors du traitement de plusieurs champs dans une ligne un par un ; utilisé lors du traitement de chaque élément d'un tableau un par un
~]# awk '/^[[:space:]] *linux16/{i=1;while(i<=NF) {print $i,length( $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 boucle do-while
Syntaxe : do instruction while(condition)
Signification : Exécuter le corps de la boucle au moins une fois
7.4 boucle for
Syntaxe : for(expr1;expr2;expr3 ) instruction
for(affectation de variable;condition ;processus d'itération) {for-body}
~]# awk '/^[[:space:]]*linux16/{for(i=1 ;i<=NF;i++) {print $i,length($i)}}' /etc/ grub2.cfg
Utilisation spéciale :
peut parcourir les éléments du tableau
Syntaxe : for(var in array) {for-body}
7.5 instruction switch
Syntaxe : switch(expression) {case VALUE1 ou /REGEXP/ : case VALUE2 ou /REGEXP2/ : instruction ; ..; par défaut : déclaration}
7.6 pause et continuer
pause [n]
continuer
7.7 suivant
Terminer la demande pour notre banque traite rapidement et passe directement à la ligne suivante
~]# awk -F : '{if($3%2!=0) next ; print $1,$3 }' /etc/passwd
8. array: array[ index-expression]
index-expression:
(1) N'importe quelle chaîne peut être utilisée ; la chaîne doit être Utilisez des guillemets doubles ;
(2) Si un élément du tableau n'existe pas à l'avance, awk créera automatiquement cet élément lors du référencement et initialisera sa valeur à un " chaîne vide";
Pour déterminer si un élément existe dans le tableau, utilisez le format "index dans le tableau";
weekdays[mon]="Monday"
Pour parcourir chaque élément du tableau, utilisez une boucle for <; 🎜>
for(var in array) {for-body}
~]# awk 'BEGIN{weekdays[" mon"] ="Lundi";weekdays["tue"]="Tuesday";for(i in weekdays) {print weekdays[i]}}'
Remarque : var parcourra chaque index du tableau ;
state["LISTEN"]++
state["ESTABLISED" ]++
~]# netstat -tan | awk '/^tcp>/{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 : Statistiques de chaque type de système de fichiers dans le / fichier etc/fstab Nombre d'occurrences ;
~]# awk '/^UUID/{fs[$3]++}END{for(i in fs) {print i,fs [i]} }' /etc/fstab
2 : Comptez le nombre d'occurrences de chaque mot dans le fichier spécifié
~ ]# awk '{for(i=1;i<=NF;i++){count[$i]++}}END{for(i in count) {print i,count[i] }}' /etc/ fstab
9.1 Fonction intégrée fonction
Traitement numérique :
rand() : renvoie un nombre aléatoire entre 0 et 1 ;
Traitement de la chaîne :
length([s]) : renvoie la longueur de la chaîne spécifiée ;
sub(r,s, [t]) : utilisez le modèle représenté par r pour trouver le contenu correspondant dans le caractère représenté par t, et remplacez sa première occurrence par le contenu représenté par s
<🎜 ; > gsub(r,s,[t]) : utilisez le modèle représenté par r pour trouver le contenu correspondant dans le caractère représenté par t, et remplacez toutes ses occurrences par le contenu représenté par s
<🎜 ; >
split(s,a[,r]) : divisez le caractère s avec r comme séparateur et enregistrez le résultat de la coupe dans le tableau représenté par a ; 🎜>
~]# netstat -tan | awk '/^tcp>/{split($5,ip,":");count[ip[1]]++} END{for (i in count) {print i,count[i]}}'
9.2 Fonction personnalisée
《sed et awk》
   
DNF Il y a aussi Fedora 18 et Fedora 22.包管理器。
DNF运行速度等多方面的内容。
DNF使用 RPM, libsolv Il s'agit de la version Hawkey de CentOS et de RHEL 7 中, qui est également disponible pour YUM. 🎜>
DNF 的最新稳定发行版版本Version 1.0, version 2015 du 5 juillet 11. La version DNF est actuellement en vigueur.大部分采用 Python 编写,发行许可为GPL v2.
La résolution des dépendances de YUM est un cauchemar et a été résolue dans DNF avec la bibliothèque SUSE 'libsolv' et le wrapper Python avec C Hawkey.
YUM n'a pas une API documentée.
La création de nouvelles fonctionnalités est difficile.
Pas de prise en charge des extensions autres que Python.
Réduction de mémoire moindre et synchronisation moins automatique des métadonnées – un processus qui prend du temps .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!