Dans les systèmes Linux, la suppression de fichiers est une opération très dangereuse, surtout lorsque les fichiers que vous souhaitez supprimer se trouvent dans la bibliothèque système ou dans le répertoire en cours d'exécution. La suppression de ces fichiers peut entraîner des pannes du système, des erreurs d'application et d'autres conséquences graves. Aujourd'hui, nous allons vous présenter comment supprimer en toute sécurité les bibliothèques et les fichiers en cours d'exécution sur les systèmes Linux pour éviter les risques inutiles.
Je vois souvent sur Internet que certains opérateurs ou programmeurs ont accidentellement tapé la mauvaise fonction rm delete, provoquant la suppression du système et de la base de données. Quant à la fugue, l'éditeur vous amène aujourd'hui à comprendre en profondeur cette suppression et cette fugue.
J'ai récemment vu une photo sur Internet (l'origine de la photo originale est inconnue, la photo de titre a été reproduite à partir de la photo originale, avec des modifications.)
C'est logique. Vous voyez, rm signifie supprimer. Ce mot est simple et facile à retenir ; même rf a une explication, "fichiers indésirables" /* représente tous les fichiers du répertoire, ce qui est également disponible ; garantir les autorisations sans problème.
Est-ce que quelqu'un exécutera une telle commande pour nettoyer les fichiers dits indésirables ? Ne me le dis pas, c'est vraiment difficile à dire.
Nous publions souvent des articles sur les alias Bash, et il y a toujours des étudiants qui « contribuent » à des alias uniques, tels que l'alias ls=rm -rf, l'alias cd=rm -rf, etc. Même si je pense que presque personne n’est dupe de ces commandes, tout le monde en profite souvent.
J'ai envoyé cette photo à mon cercle d'amis, et mon ami "Long Shisan" a dit que cela supprimait non seulement les fichiers indésirables, mais supprimait également les administrateurs système indésirables.
Oui, pourquoi des blagues comme celle-ci apparaissent-elles encore et encore ? C'est parce que certains d'entre nous qui ne veulent pas comprendre le problème, lorsqu'ils rencontrent un problème, sont habitués à trouver au hasard des exemples de commandes sur Internet et à les essayer aveuglément, sans explorer leurs principes ni vérifier leur fiabilité. Par conséquent, des blagues comme celle-ci sont vraiment utilisées pour éliminer les « indésirables chez l’administrateur système ».
Explorons donc la commande ci-dessus et voyons combien de points de connaissance il y a ici.
Ces choses à propos derm
Tout d'abord, cette commande est utilisée pour effacer tous les fichiers du répertoire racine (/) du système Linux. Il utilise deux options de commande :
-r : récursif, effectue des opérations récursives sur le répertoire et son contenu
-f : forcer, aucune confirmation requise
Ces deux options peuvent être écrites séparément -r et -f, ou elles peuvent être combinées en -rf selon la convention POSIX. Les options -r et -f ici ne sont certainement pas les usurpations « Déchets » et « Fichiers » dans l'image ci-dessus.
Les paramètres suivants /* font référence à tous les fichiers du répertoire racine /.
option-r
L'option-r représente récursive, ce qui signifie supprimer récursivement le répertoire dans le paramètre et les fichiers ou sous-répertoires en dessous.
En plus du style d'option courte, cette option a également l'option longue de style GNU – récursive pour des raisons de compatibilité, le paramètre synonyme majuscule -R est également pris en charge.
Sans cette option, le répertoire et son contenu ne seront pas supprimés.
option-f
Avant d'introduire l'option -f, jetons un œil à l'option -i qui n'apparaît pas ici.
La commande native rm suit les conventions UNIX lors de la suppression de fichiers ou de répertoires. Elle est silencieuse et silencieuse avant d'effectuer l'opération de suppression et une fois l'opération réussie. Ne vous plaignez jamais sauf si vous rencontrez une erreur (par exemple, le fichier que vous souhaitez supprimer n'existe pas).
Plus tard, probablement parce que de nombreuses personnes suppriment souvent des fichiers par erreur, la commande rm sur la plupart des distributions Linux est un alias avec l'option -i ajoutée :
alias rm=rm -i
L'option -i ici est utilisée pour créer une invite avant chaque action de suppression, et l'utilisateur doit donner une confirmation explicite avant la suppression.
Cependant, parfois cette invite est vraiment ennuyeuse, c'est pourquoi de nombreuses personnes utilisent délibérément l'option -f pour remplacer le comportement de l'option -i pendant le fonctionnement, rendant la définition de cet alias dénuée de sens.
Par conséquent, il existe également une option -I, qui vous demandera une confirmation lorsque vous souhaitez supprimer trois fichiers ou plus ou les supprimer de manière récursive. C'est moins ennuyeux que l'option -i et évite la plupart des opérations incorrectes. Par conséquent, vous pouvez utiliser l’option -I pour les alias ci-dessus et éviter d’utiliser l’option -f.
*** Qu'est-ce qu'un caractère générique**
Nous voyons que * est utilisé dans la commande pour faire référence à tous les fichiers du répertoire. Mais à proprement parler, le caractère générique * représente tous les fichiers qui ne commencent pas par un point "." Les fichiers commençant par "." sont des fichiers cachés sous Linux par défaut.
Par conséquent, cette commande ne supprimera pas les fichiers cachés commençant par . dans le répertoire /, ainsi que les répertoires . Cependant, lors de l'opération récursive, tous les fichiers et sous-répertoires du sous-répertoire, à l'exception des répertoires . et .., seront supprimés de manière récursive - qu'ils commencent ou non par - car l'opération récursive n'est pas une extension générique par des shells tels que Bash.
Quant à pourquoi ne pas traiter . et .. de la même manière lors de la suppression du contenu d'un répertoire ? Car depuis 1979, lorsque la commande rm a commencé à avoir la possibilité de supprimer des répertoires, elle a spécifiquement évité ces deux répertoires spéciaux.
Protection du répertoire racine
Les administrateurs système ayant une certaine expérience se souviendront peut-être à ce stade que la commande rm propose une paire d'options spécifiquement pour le répertoire racine –preserve-root et –no-preserve-root. Cette paire d'options signifie :
–preserve-root : Protégez le répertoire racine, c'est le comportement par défaut.
–no-preserve-root : ne protège pas le répertoire racine.
Cette paire d'options a été ajoutée à la commande rm ultérieurement. Presque tous les administrateurs système ont probablement commis des erreurs opérationnelles, et beaucoup d'entre eux ont supprimé le répertoire racine (j'en fais partie). Il y a plusieurs raisons pour lesquelles cela se produit :
Erreurs de saisie : par exemple, je voulais à l'origine saisir rm /tmp/test.txt, mais accidentellement, le clavier s'est envolé et j'ai entré un espace supplémentaire et il est devenu : rm /tmp/test.txt. Avez-vous vu l'espace après le répertoire racine (/) ? ! ——C'est l'erreur que j'ai moi-même commise actuellement, et c'était sur un serveur de production.
Variables de script shell mal initialisées ou mal nommées : par exemple, dans un script, rm -rf /${tmp_dir}, si la variable tmp_dir n'est pas affectée correctement ou est mal saisie (peut-être était-ce à l'origine tmpdir ?), que se passera-t-il ? Bien sûr, supprimez le répertoire racine~
Compte tenu de la répétition incessante de cette situation, c'est devenu une blague presque aussi classique dans le cercle Linux que "Comment quitter vi pour les débutants". Par conséquent, dans la spécification POSIX septième édition, l'option –preserve-root a été ajoutée à la commande rm comme comportement par défaut pour réduire la possibilité de cette erreur.
Cependant, cette option ne protège pas contre la suppression de tous les fichiers du répertoire racine (/*) comme décrit dans cet article.
Certains étudiants peuvent se demander pourquoi l'option –no-preserve-root apparaît-elle ? Cela est probablement dû principalement à la philosophie UNIX qui consiste à vous donner toute la puissance que vous souhaitez et à être stupide, c'est votre affaire, pas celle du système d'exploitation. Et si vous souhaitez vraiment supprimer tous les fichiers du répertoire racine ?
Ne me dites pas, il existe un tel besoin : par exemple, vous souhaitez effacer tous les fichiers dans un environnement chroot. Nous ne parlerons pas ici de chroot. Il utilise un répertoire comme une "prison". Ce répertoire forme logiquement un nouveau "répertoire racine". Les opérations sur les fichiers dans la prison ne peuvent pas sortir du répertoire. Les technologies de conteneurs telles que Docker et LXC/LXD qui sont devenues populaires ces dernières années sont toutes des technologies chroot.
Système UEFI
D'accord, vous êtes peut-être plus unique et souhaitez effacer tous les fichiers du répertoire racine de l'environnement physique ! Mais avant d’appuyer sur Entrée, détrompez-vous : êtes-vous sur un système UEFI ?
Parce que le système UEFI mappera son micrologiciel, ses variables et ses paramètres sur la partition /sys dans le répertoire racine, donc si vous effacez tout dans le répertoire racine dans l'environnement UEFI, /sys sera également effacé, ce qui peut vous faire perdre le paramètres estimés de l'UEFI, bloquant ainsi l'appareil.
élévation des privilèges sudo
Afin de supprimer des fichiers appartenant à des systèmes tels que root et d'autres utilisateurs, cette commande doit également être précédée de sudo pour élever les privilèges.
Après avoir entré cette commande, il vous sera demandé de saisir votre mot de passe. Quel mot de passe ? Pas le mot de passe root, mais le mot de passe de l'utilisateur actuel entrant la commande.
Quant à savoir qui peut exécuter la commande sudo et quelles commandes il peut exécuter via la commande sudo, je n'entrerai pas dans les détails ici. Veuillez vous référer à nos autres articles. À propos, n'oubliez pas de distinguer la connexion et la différence entre les commandes sudo et su.
Fichiers indésirables
Après avoir étudié cela, nous ne pouvons pas oublier l'intention initiale de cette commande, qui est de supprimer les "fichiers indésirables".
Y a-t-il des fichiers indésirables sous Linux ? avoir. Ces fichiers indésirables proviennent généralement de :
Les fichiers orphelins qui ne sont pas gérés par le gestionnaire de packages sont laissés dans le système après la suppression du package logiciel
Packages de dépendances inutiles, une fois les logiciels qui nécessitent ces packages de dépendances supprimés, ils ne sont pas supprimés en conséquence
Aucun fichier temporaire à nettoyer
Fichiers de diagnostic hérités
Alors, ces fichiers indésirables doivent-ils être effacés ? D'une manière générale, la plupart de ces fichiers sur un système Linux n'auront aucun impact sur le bon fonctionnement du système, à moins qu'ils soient trop nombreux et occupent beaucoup d'espace de stockage et d'inodes.
Donc, si vous avez l'impression que votre système Linux est lent, ce n'est certainement pas dû à des fichiers inutiles, et au moins à ce stade, l'expérience des systèmes Windows ne vaut pas la peine d'être copiée.
Grâce à cet article, nous avons découvert les méthodes et étapes sûres pour supprimer des bibliothèques et exécuter des fichiers sur les systèmes Linux. Bien qu’il s’agisse d’une opération simple, la réaliser sans les connaissances nécessaires peut avoir de graves conséquences. N'oubliez pas l'importance de sauvegarder vos données, de faire preuve de prudence et de les restaurer si nécessaire.
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!