Fonctionnement et maintenance Linux Commandes couramment utilisées find, awk, sed, grep, vi, ps, lsof, rpm

Utilisez d'abord un script pour simuler la création de 14 fichiers de test:

#!/bin/bash
for ((i=1;i<=10;i++));
do
if [ $i -lt 3 ]
then
 touch /home/mysql/test/test$i.sh
 touch /home/mysql/test/Phtest$i.sh
 touch /home/mysql/test/test$i.sh.bak
elif [ $i -lt 8 ]
then
 touch /home/mysql/test/test$i.log
else 
 touch /home/mysql/test/test$i.sql
fi
done

Après avoir exécuté le script ci-dessus, 14 fichiers seront créés dans le répertoire / home / mysql / test /, les noms de fichiers sont les suivants:

[mysql@mysql test]$ ll
总用量 8
-rwxrwxr-x 1 mysql mysql 278 12 月 28 15:04 create_file.sh
-rw-rw-r-- 1 mysql mysql  42 12 月 28 14:39 line.txt
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 Phtest1.sh
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 Phtest2.sh
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test10.sql
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test1.sh
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test1.sh.bak
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test2.sh
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test2.sh.bak
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test3.log
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test4.log
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test5.log
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test6.log
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test7.log
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test8.sql
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test9.sql

1. trouver 和 xargs

La fonction de la commande find est également une commande d'opération très fréquemment utilisée dans le processus d'exploitation et de maintenance. Sa fonction est d'aider le personnel d'exploitation et de maintenance à trouver le fichier correspondant. Voici une introduction à l'utilisation la plus courante de find.

1.1 Introduction aux paramètres de recherche communs

  • -exec: La commande find exécute la commande shell donnée par ce paramètre sur le fichier correspondant. Cette commande est très simple d'utilisation
  • -name: Trouvez le nom de fichier à faire correspondre, le nom peut être associé à des
  • -mtime -n +n: Rechercher les fichiers par heure de changement de fichier, -n signifie dans les n jours, + n signifie il y a n jours
  • -ctime -n +n: Rechercher les fichiers en fonction de l'heure de création du fichier, -n signifie moins de n jours, + n signifie il y a n jours
  • -atime -n +n: Vérifier par heure d'accès au fichier, -n signifie moins de n jours, + n signifie il y a n jours
  • -type b/d/c/p/l/f: Les fichiers recherchés correspondent aux périphériques de bloc, aux répertoires, aux périphériques de caractères, aux tubes, aux liens symboliques et aux fichiers ordinaires.
  • -size n[c]: Recherche des fichiers d'une longueur de n octets, si c'est + n, c'est une liste de fichiers dont la taille dépasse n octets
  • -mindepth -maxdepth: Ces deux paramètres sont utilisés ensemble pour limiter la plage de profondeur du niveau de répertoire de fichiers que find peut trouver

1.2 trouver un cas

1. Trouvez une liste de tous les fichiers se terminant par sh dans le répertoire / home / mysql / test

[mysql@mysql test]$ find /home/mysql/test -name '*sh'  
/home/mysql/test/test1.sh
/home/mysql/test/test2.sh
/home/mysql/test/create_file.sh
/home/mysql/test/Phtest1.sh
/home/mysql/test/Phtest2.sh
/home/mysql/test/dir_01/test1.sh
/home/mysql/test/dir_01/test2.sh
/home/mysql/test/dir_01/dir_02/test7.sh
/home/mysql/test/dir_sh

2. Trouvez une liste de tous les fichiers se terminant par sh dans le répertoire / home / mysql / test, et spécifiez le type de fichier comme fichier

[mysql@mysql test]$ find /home/mysql/test -name '*sh' -type f
/home/mysql/test/test1.sh
/home/mysql/test/test2.sh
/home/mysql/test/create_file.sh
/home/mysql/test/Phtest1.sh
/home/mysql/test/Phtest2.sh
/home/mysql/test/dir_01/test1.sh
/home/mysql/test/dir_01/test2.sh
/home/mysql/test/dir_01/dir_02/test7.sh

3. Trouvez une liste de tous les fichiers se terminant par sh dans le répertoire / home / mysql / test, et spécifiez le type de fichier sous forme de fichier, et ne cherchez pas de sous-répertoires dans le répertoire / home / mysql / test

[mysql@mysql test]$ find /home/mysql/test -mindepth 1 -maxdepth 1 -name '*sh' -type f 
/home/mysql/test/test1.sh
/home/mysql/test/test2.sh
/home/mysql/test/create_file.sh
/home/mysql/test/Phtest1.sh
/home/mysql/test/Phtest2.sh

4. Recherchez une liste de tous les fichiers se terminant par sh dans le répertoire / home / mysql / test, et spécifiez le type de fichier comme fichier, et la taille du fichier dépasse 100 octets

[mysql@mysql test]$ find /home/mysql/test -name '*sh' -type f -size +100c
/home/mysql/test/create_file.sh

Il faut noter ici que s'il est écrit -size 100c, seuls les fichiers d'une taille de 100 octets seront recherchés:

[mysql@mysql test]$ ls -l|grep -i create_file.sh
-rwxrwxr-x 1 mysql mysql 278 12 月 28 15:04 create_file.sh
[mysql@mysql test]$ 
[mysql@mysql test]$ find /home/mysql/test -name '*sh' -type f -size 278c
/home/mysql/test/create_file.sh
[mysql@mysql test]$ find /home/mysql/test -name '*sh' -type f -size 277c

5. Trouvez une liste de tous les fichiers se terminant par le répertoire sh / home / mysql / test, et spécifiez le type de fichier sous forme de fichier, ne cherchez pas le sous-répertoire / home / mysql dans le répertoire test / et ajoutez le suffixe .bak. trouvé
dans Il existe 2 méthodes d'implémentation, la première utilise -exec, la seconde utilise xargs:

[mysql@mysql test]$ find /home/mysql/test -mindepth 1 -maxdepth 1 -name '*sh' -type f -exec mv {
    
    } {
    
    }.bak \;
[mysql@mysql test]$ 
[mysql@mysql test]$ ls -l|grep -i bak
-rwxrwxr-x 1 mysql mysql 278 12 月 28 15:04 create_file.sh.bak
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 Phtest1.sh.bak
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 Phtest2.sh.bak
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test1.sh.bak
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test2.sh.bak

Xargs moyen de réaliser:

[mysql@mysql test]$ find /home/mysql/test -mindepth 1 -maxdepth 1 -name '*sh' -type f
/home/mysql/test/create_file.sh
/home/mysql/test/Phtest1.sh
/home/mysql/test/Phtest2.sh
/home/mysql/test/test1.sh
/home/mysql/test/test2.sh
[mysql@mysql test]$ 
[mysql@mysql test]$ find /home/mysql/test -mindepth 1 -maxdepth 1 -name '*sh' -type f|xargs -I file sh -c "mv file file.bak"
[mysql@mysql test]$ ls -l|grep -i bak
-rwxrwxr-x 1 mysql mysql 278 12 月 28 15:04 create_file.sh.bak
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 Phtest1.sh.bak
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 Phtest2.sh.bak
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test1.sh.bak
-rw-rw-r-- 1 mysql mysql   0 12 月 28 15:04 test2.sh.bak

** 6. ** Rechercher Trouvez une liste de tous les fichiers se terminant par .bak dans le répertoire / home / mysql / test, et spécifiez le type de fichier sous forme de fichier, ne cherchez pas de sous-répertoires dans le répertoire / home / mysql / test , et trouvera que les fichiers sont supprimés directement. Cette opération est souvent utilisée pour nettoyer le journal de l'application. Elle peut également être ajoutée -mtimepour rechercher des fichiers datant de plus de N jours et les supprimer.

[mysql@mysql test]$ find /home/mysql/test -mindepth 1 -maxdepth 1 -name '*.bak' -type f  
/home/mysql/test/create_file.sh.bak
/home/mysql/test/Phtest1.sh.bak
/home/mysql/test/Phtest2.sh.bak
/home/mysql/test/test1.sh.bak
/home/mysql/test/test2.sh.bak
[mysql@mysql test]$ 
[mysql@mysql test]$ find /home/mysql/test -mindepth 1 -maxdepth 1 -name '*.bak' -type f |xargs rm -rf 
[mysql@mysql test]$ ls -l|grep -i bak
[mysql@mysql test]$

2. awk

On peut dire que la fonction de awk est très puissante. Si vous voulez présenter awk en détail, vous pouvez écrire un livre. Ici, je vais vous présenter quelques usages courants.
1. Spécifiez la colonne de sortie pour imprimer ls -l

[mysql@mysql test]$ ls -l|grep -i test|awk '{print $9}'
test10.sql
test3.log
test4.log
test5.log
test6.log
test7.log
test8.sql
test9.sql

2. Épissage de cordes

[mysql@mysql test]$ ls -l|grep -i test|awk '{print "rm -rf "$9}'
rm -rf test10.sql
rm -rf test3.log
rm -rf test4.log
rm -rf test5.log
rm -rf test6.log
rm -rf test7.log
rm -rf test8.sql
rm -rf test9.sql

3. Imprimez des guillemets simples et des guillemets doubles. Cette fonction est parfois très utile lors de la maintenance de la base de données, comme l'épissage SQL

[mysql@mysql test]$ ls -l|grep -i test|awk '{print "'\''"$9"'\''"}'
'test10.sql'
'test3.log'
'test4.log'
'test5.log'
'test6.log'
'test7.log'
'test8.sql'
'test9.sql'
[mysql@mysql test]$ ls -l|grep -i test|awk '{print "\""$9"\""}'    
"test10.sql"
"test3.log"
"test4.log"
"test5.log"
"test6.log"
"test7.log"
"test8.sql"
"test9.sql"

3. encore

Sed est une bonne solution pour le remplacement de fichiers, un outil d'édition de fichiers très facile à utiliser.
Avant de présenter le cas sed, préparez un fichier. Le contenu du fichier est le suivant:

[mysql@mysql test]$ cat line.txt 
line1
line2
LINE3
line4
LIne5
line6
line7

1. Supprimez les lignes vides dans le fichier line.txt

[mysql@mysql test]$ sed '/^ *$/d' line.txt    
line1
line2
LINE3
line4
LIne5
line6
line7
[mysql@mysql test]$ 
[mysql@mysql test]$ cat line.txt 
line1
line2
LINE3
line4
LIne5
line6
line7

Peut être vu à partir des résultats ci-dessus, le contenu du fichier source line.txt n'a pas changé, si le changement prend effet, vous pouvez ajouter des -iparamètres pour modifier directement le contenu du fichier source, sinon, il ne modifiera pas le fichier source .

[mysql@mysql test]$ sed -i '/^ *$/d' line.txt 
[mysql@mysql test]$ cat line.txt 
line1
line2
LINE3
line4
LIne5
line6
line7

2. Remplacez toutes les chaînes de ligne du fichier line.txt par test

[mysql@mysql test]$ sed -i 's/line/test/g' line.txt        
[mysql@mysql test]$ cat line.txt 
test1
test2
LINE3
test4
LIne5
test6
test7

3. Supprimez l'enregistrement de ligne contenant la chaîne LINE

[mysql@mysql test]$ sed '/LINE/d' line.txt    
test1
test2
test4
LIne5
test6
test7

4. Recherchez la ligne précédente de la chaîne LINE

[mysql@mysql test]$ cat line.txt 
test1
test2
LINE3
test4
LIne5
test6
test7
[mysql@mysql test]$ sed -n '/LINE3/{g;1!p;};h' line.txt
test2

5. Recherchez la ligne suivante de la chaîne LINE

[mysql@mysql test]$ cat line.txt 
test1
test2
LINE3
test4
LIne5
test6
test7
[mysql@mysql test]$ sed -n '/LINE3/{n;p}' line.txt 
test4

4. vi

vi est une commande d'édition très puissante pour le système Linux.Pour maîtriser les commandes vi est une compétence essentielle pour le personnel d'exploitation et de maintenance.
Testez le contenu du fichier line.txt

[mysql@mysql test]$ cat line.txt 
test1
test2
LINE3
test4
LIne5
test6
test7

1. Afficher le numéro de ligne et fermer le numéro de ligne définir nu afficher le numéro de ligne définir nonu fermer le numéro de ligne

1 test1
      2 test2
      3 LINE3
      4 test4
      5 LIne5
      6 test6
      7 test7
 :set nu

2. Le curseur saute à la dernière ligne pour entrer dans le mode d'édition, appuyez sur Maj + g
3. Le curseur saute à la première ligne pour entrer dans le mode d'édition, appuyez sur gg, le curseur peut sauter à la première ligne
4. Le curseur saute au début de la ligne Entrez dans le mode d'édition, appuyez sur shift + ^
5. Le curseur saute à la fin de la ligne pour entrer dans le mode d'édition, appuyez sur shift + $
6. L'opération de suppression entre en mode d'édition, appuyez sur dd pour supprimer le ligne où se trouve le curseur, et appuyez sur x pour supprimer le curseur Où se trouve le caractère
7. Remplacez et entrez dans le mode d'édition, appuyez d'abord sur Maj +:, puis entrez% s / test / jim / g pour effectuer un remplacement global. Si vous entrez s / test / jim /, seule la ligne où se trouve le curseur sera remplacée
8. Enregistrer et entrer En mode édition, appuyez d'abord sur Maj +:, puis entrez wq! Pour enregistrer et quitter. Si vous ne le faites pas voulez enregistrer, vous pouvez entrer q! pour quitter directement.

5. ps

La commande ps est une commande permettant d'afficher les informations de processus du système d'exploitation.
4. Trouvez les 10 principaux processus qui consomment le plus de mémoire

[root@192 ~]# ps aux|sort -nr -k4|head -10
root      50929  0.3  9.1 679612 91068 ?        Ssl  9 月 03   8:25 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
mysql     40333  0.4  7.9 1694620 79320 ?       Sl   9 月 02  16:52 /u02/mysql/bin/mysqld --defaults-file=/u02/conf/my3308.cnf --basedir=/u02/mysql --datadir=/u02/data/3308 --plugin-dir=/u02/mysql/lib/plugin --log-error=/u02/log/3308/error.log --open-files-limit=65535 --pid-file=/u02/run/3308/mysqld.pid --socket=/u02/run/3308/mysql.sock --port=3308
polkitd   95030  1.8  7.1 1587420 71132 ?       Ssl+ 9 月 04  27:57 mongod --bind_ip_all
root        957  0.0  1.1 499804 11904 ?        Ssl  8 月 31   4:45 /usr/bin/containerd
mysql     40532  0.0  0.6 163420  6416 pts/4    S+   06:26   0:00 /u02/mysql/bin/mysql -uroot -px xx --socket=/u02/run/3308/mysql.sock
root      43302  0.0  0.5 159396  5964 ?        Ss   07:20   0:00 sshd: jim [priv]
root      36507  0.0  0.5 159396  5964 ?        Ss   05:16   0:00 sshd: jim [priv]
root      33300  0.0  0.5 102896  5520 ?        S    04:21   0:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf /var/lib/NetworkManager/dhclient-97308c9f-82a6-4ab2-84a9-37bf5691a1e8-ens33.lease -cf /var/lib/NetworkManager/dhclient-ens33.conf ens33
root        706  0.0  0.4 628280  4528 ?        Ssl  8 月 31   0:39 /usr/sbin/NetworkManager --no-daemon
root      43419  0.0  0.4 241196  4628 pts/6    S    07:20   0:00 sudo su - root

5. Trouvez les 10 principaux processus qui consomment le plus de ressources CPU

[root@192 ~]# ps aux|sort -nr -k3|head -10
polkitd   95030  1.8  7.1 1587420 71132 ?       Ssl+ 9 月 04  27:57 mongod --bind_ip_all
mysql     40333  0.4  7.9 1694620 79320 ?       Sl   9 月 02  16:52 /u02/mysql/bin/mysqld --defaults-file=/u02/conf/my3308.cnf --basedir=/u02/mysql --datadir=/u02/data/3308 --plugin-dir=/u02/mysql/lib/plugin --log-error=/u02/log/3308/error.log --open-files-limit=65535 --pid-file=/u02/run/3308/mysqld.pid --socket=/u02/run/3308/mysql.sock --port=3308
root      50929  0.3  9.1 679612 91068 ?        Ssl  9 月 03   8:25 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root      45144  0.1  0.0      0     0 ?        S    07:52   0:00 [kworker/0:1]
root      44873  0.1  0.0      0     0 ?        S    07:47   0:01 [kworker/0:3]
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        957  0.0  1.1 499804 11904 ?        Ssl  8 月 31   4:45 /usr/bin/containerd
root        956  0.0  0.0  53284   556 ?        Ss   8 月 31   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root        954  0.0  0.2 251796  2780 ?        Ssl  8 月 31   1:31 /usr/sbin/rsyslogd -n
root        953  0.0  0.0 112920   344 ?        Ss   8 月 31   0:01 /usr/sbin/sshd -D

6. lsof

lsof est un outil pour afficher les fichiers ouverts dans le système actuel dans le système d'exploitation Linux. Cet outil est très utile dans le processus d'exploitation et de maintenance.
1. Afficher le processus d'occupation des fichiers

[root@192 ~]# lsof /u02/run/3308/mysql.sock
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF   NODE NAME
mysqld  40333 mysql   19u  unix 0xffff9cb72ba24400      0t0 443745 /u02/run/3308/mysql.sock
mysqld  40333 mysql   23u  unix 0xffff9cb706041400      0t0 223567 /u02/run/3308/mysql.sock
mysqld  40333 mysql   26u  unix 0xffff9cb72ba24000      0t0 443760 /u02/run/3308/mysql.sock
mysqld  40333 mysql   86u  unix 0xffff9cb701f7e000      0t0 445068 /u02/run/3308/mysql.sock
mysqld  40333 mysql   87u  unix 0xffff9cb73724e000      0t0 445235 /u02/run/3308/mysql.sock

2. Afficher le processus occupant le port

[root@192 ~]# lsof -i :3308
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  40333 mysql   22u  IPv4 223566      0t0  TCP *:tns-server (LISTEN)

3. Visualisez le processus du répertoire occupé, ceci est très utile lors du démontage du système de fichiers

[root@192 ~]# lsof +d /u02
COMMAND     PID  USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
bash      36536  root  cwd    DIR  253,0      169  1002658 /u02
mysqld_sa 39322 mysql  cwd    DIR  253,0       46 67426672 /u02/conf

4. Afficher le processus dans lequel le fichier de répertoire est occupé

[root@192 ~]# lsof +D /u02
COMMAND     PID  USER   FD   TYPE             DEVICE   SIZE/OFF      NODE NAME
bash      36536  root  cwd    DIR              253,0        169   1002658 /u02
mysql     38711 mysql  txt    REG              253,0    8142016  36148646 /u02/mysql/bin/mysql
mysql     38720 mysql  txt    REG              253,0    8142016  36148646 /u02/mysql/bin/mysql
mysqld_sa 39322 mysql  cwd    DIR              253,0         46  67426672 /u02/conf
mysqld_sa 39322 mysql  255r   REG              253,0      28466  36258029 /u02/mysql/bin/mysqld_safe
mysqld    40333 mysql  cwd    DIR              253,0        267   1002659 /u02/data/3308
mysqld    40333 mysql  txt    REG              253,0  247739544  36258021 /u02/mysql/bin/mysqld
mysqld    40333 mysql    1w   REG              253,0     278458 105389068 /u02/log/3308/error.log
mysqld    40333 mysql    2w   REG              253,0     278458 105389068 /u02/log/3308/error.log
mysqld    40333 mysql    3u   REG              253,0         35 116292537 /u02/log/3308/binlog/binlog.index
mysqld    40333 mysql    4uW  REG              253,0  536870912   3341676 /u02/log/3308/iblog/ib_logfile0
mysqld    40333 mysql    9uW  REG              253,0  536870912   3341677 /u02/log/3308/iblog/ib_logfile1
mysqld    40333 mysql   10uW  REG              253,0  536870912   3341678 /u02/log/3308/iblog/ib_logfile2
mysqld    40333 mysql   11uW  REG              253,0  536870912   3341679 /u02/log/3308/iblog/ib_logfile3
mysqld    40333 mysql   12uW  REG              253,0   33554432   3341674 /u02/log/3308/iblog/ibdata1
mysqld    40333 mysql   13uW  REG              253,0   83886080   3341675 /u02/log/3308/iblog/ibdata2
mysqld    40333 mysql   15uW  REG              253,0   12582912   1002664 /u02/log/3308/iblog/ibtmp1

7. unité de fusion

La commande fuser est utilisée pour signaler les fichiers et les sockets réseau utilisés par le processus. Grâce à cette commande, vous pouvez facilement afficher le numéro de processus du processus local et quel processus local utilise le fichier.
1. Répertoriez tous les numéros de processus et noms d'utilisateur qui accèdent au fichier /u02/run/3308/mysql.sock

[root@192 ~]# fuser -u /u02/run/3308/mysql.sock
/u02/run/3308/mysql.sock: 40333(mysql)

2. Répertoriez tous les numéros de processus et noms d'utilisateur du système de fichiers d'accès

[root@192 ~]# fuser -u -m /home
/home:               36511c(jim) 36534c(root) 37220c(mysql) 37252c(jim) 37279c(root) 37301c(mysql) 38710c(mysql) 38711c(mysql) 38719c(mysql) 38720c(mysql) 40289c(jim) 40314c(root) 40366c(mysql) 40392c(mysql) 40393c(mysql) 40463c(jim) 40486c(root) 40508c(mysql) 40531c(mysql) 40532c(mysql) 43306c(jim) 43329c(root) 43394c(jim) 43419c(root)

3. Tuez tous les processus qui accèdent au fichier tps_mysql.sh et affichez le numéro du processus qui a été tué

[mysql@192 ~]$ fuser -ku /home/mysql/tps_mysql.sh 
/home/mysql/tps_mysql.sh: 46741(mysql)

8. tr / min

commande rpm Système d'exploitation Linux Outil de gestion des packages rpm
1. Installez le package rpm

[mysql@192 ~]$ rpm -ivh percona-xtrabackup-24-2.4.2-1.el7.x86_64

2. Désinstallez le package d'installation

[mysql@192 ~]$ rpm -e percona-xtrabackup-24-2.4.2-1.el7.x86_64

3. Interrogez la situation d'installation de rpm

[mysql@192 ~]$ rpm -qa|grep -i percona
percona-xtrabackup-24-2.4.2-1.el7.x86_64
percona-toolkit-3.1.0-2.el7.x86_64

4. Affichez le répertoire d'installation du fichier de package rpm

[mysql@192 ~]$ rpm -ql percona-toolkit-3.1.0-2.el7.x86_64
/usr/bin/pt-align
/usr/bin/pt-archiver
/usr/bin/pt-config-diff
/usr/bin/pt-deadlock-logger
/usr/bin/pt-diskstats
/usr/bin/pt-duplicate-key-checker
/usr/bin/pt-fifo-split
/usr/bin/pt-find
/usr/bin/pt-fingerprint
/usr/bin/pt-fk-error-logger
/usr/bin/pt-heartbeat
/usr/bin/pt-index-usage

9. Expressions régulières

Les expressions régulières sont un ensemble de règles et de méthodes définies pour traiter un grand nombre de chaînes et rechercher rapidement ce que vous voulez parmi un grand nombre de chaînes. Les expressions régulières sont généralement traitées en unités de lignes.
Précautions:

  • Les expressions régulières Linux sont généralement traitées en unités de comportement
  • alias grep='grep --color=auto' Rendre la couleur d'affichage du contenu correspondant
  • Faites attention au jeu de caractères,export LC_ALL=C

Paramètres d'expression régulière

paramètre Explication
-E, --extended-regexp PATTERN est une expression régulière extensible (abrégée en ERE)
-F, --fixed-strings PATTERN est un ensemble de chaînes de longueur fixe séparées par des sauts de ligne
-e, --regexp=PATTERN Utilisez PATTERN pour faire correspondre le modèle d'opération
-f, --file=FILE Obtenir le PATTERN à partir du FICHIER
-i, --ignore-case Ignorer la casse
-w, --word-regexp Forcer PATTERN à ne faire correspondre exactement que les mots
-x, --line-regexp Forcer PATTERN à correspondre exactement à une ligne
-z, --null-data Une ligne de données de 0 octet, mais pas une ligne vide

Divers (autres options):

paramètre Explication
-s 或–Aucun-message` Ne pas afficher les messages d'erreur
-v 或–Inverser-match` Nier

Contrôle de sortie:

paramètre Explication
-m, --max-count=NUM Arrêtez-vous à NUM matchs
-n, --line-number Afficher le numéro de ligne
-H, --with-filename Afficher le nom de fichier du résultat correspondant
-h, --no-filename Ne pas afficher le nom de fichier du résultat correspondant
-o, --only-matching Afficher le motif correspondant
-q, --quiet, --silent Mode silencieux, sans sortie générale
-a, --text Équivalent à --binary-files=text
-d, --directories=ACTION Comment faire fonctionner le répertoire, ACTION est «lu», «récurer» ou «sauter»
-D, --devices=ACTION Comment faire fonctionner l'équipement
-R, -r, --recursive Récursivité d'annuaire, équivalente à --directories=recurse
--include=FILE_PATTERN Ne correspond qu'au fichier indiqué par l'expression
--exclude=FILE_PATTERN Exclure les fichiers représentés par des expressions
--exclude-from=FILE Lire le fichier ou le répertoire à exclure du fichier
--exclude-dir=PATTERN Récupère le répertoire à exclure de l'expression
-L, --files-without-match Imprimez le nom de fichier qui ne correspond pas
-l, --files-with-matches Imprimez le nom du fichier qui correspond au contenu
-c, --count Imprimez le nombre de fois que chaque fichier correspond au contenu
-Z, --null N'imprimez pas le fichier après le nom du fichier

contrôle des documents:

paramètre Explication
-B, --before-context = NUM Imprimez les NUM premières lignes de contenu correspondant
A, --after-context = NUM Imprimer NUM lignes après avoir fait correspondre les lignes de contenu
-C, --context = NUM Combien de lignes sont imprimées
–Couleur [= QUAND] Couleur en surbrillance
–Couleur [= QUAND] utiliser des marqueurs pour mettre en évidence les chaînes correspondantes; WHEN est «toujours», «jamais» ou «auto»

egrep ie grep -E. fgrep ie grep -F.
Conseil: Les expressions régulières utilisent généralement des guillemets simples. Si les variables sont entre guillemets, utilisez des guillemets doubles.

10. Utilisation de grep

  1. Trouvez la ligne commençant par r
root@shell1:~# grep '^r' /etc/passwd
root:x:0:0:root:/root:/bin/bash
  1. Trouvez la ligne se terminant par la connexion
root@shell1:~# grep 'login$' /etc/passwd
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
  1. Correspond à l'une de toutes les lettres majuscules
root@shell1:~# grep '[[:upper:]]' /etc/passwd
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
  1. Faire correspondre les lignes commençant par rb
root@shell1:~# grep '^[rb]' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:2:2:bin:/bin:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
  1. Faire correspondre les lignes où o apparaît deux fois
root@shell1:~# grep 'o\{2\}' /etc/passwd
root:x:0:0:root:/root:/bin/bash 
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
  1. Match 1 à 2 lignes avec o
root@shell1:~# grep 'o\{1,2\}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
  1. Une ligne avec plus de deux occurrences de o
root@shell1:~# grep 'o\{2,\}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
  1. Correspond à 0 à 9 chiffres qui apparaissent plus de 3 fois
root@shell1:~# grep '[0-9]\{3,\}' /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
  1. Trouvez les lignes root et sys
root@shell1:~# grep -E 'root|sys' /etc/passwd
root:x:0:0:root:/root:/bin/bash
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
  1. Trouvez les lignes qui commencent par root et sys
root@shell1:~# grep -E '^(root|sys)' /etc/passwd
root:x:0:0:root:/root:/bin/bash
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
  1. Trouvez les lignes avec 7 ou 9 des deux côtés
root@shell1:~# cat /etc/passwd | grep -E ':(7|9):'
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
  1. Afficher le contenu du fichier spécifié /etc/logrotate.conf, aucune ligne de commentaire et aucune ligne vide ne sont affichées
cat /etc/logrotate.conf | grep -Ev '^#|^$'
  1. Ajout de -cparamètres pour imprimer le nombre de fois que chaque fichier correspond au contenu
root@shell1:~# grep -c 'root' /etc/passwd  #因为只匹配到一行,所以只输出 1
1
  1. Joindre les -wparamètres uniquement pour la correspondance exacte, sinon le même mot n'est pas sorti
root@shell1:~# grep -w 'bin' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin

Je suppose que tu aimes

Origine blog.csdn.net/wohu1104/article/details/114986521
conseillé
Classement