Exemples de lignes de commande de commande de bash utile - Partie 6

Exemples de lignes de commande de commande de bash utile - Partie 6

Dans cet article, nous avons un aperçu d'obtenir des informations de configuration de matériel, de système et de système d'exploitation de base directement à partir de l'invite de commande dans votre terminal. Avoir ces informations et savoir où les trouver aide souvent lors de la configuration d'un système, des recherches sur des solutions matérielles et logicielles optimales, et généralement le contrôle du système Linux que vous possédez ou gérez.

Nous nous concentrerons principalement sur les informations quotidiennes, le type qui est requis sur une base régulière. Aller plus en profondeur nécessite souvent quelques recherches en ligne pour mieux définir l'alignement, et nécessite souvent des compétences supplémentaires pour interpréter les résultats ou la sortie indiqués.

Par exemple, nous ne examinerons pas la sortie de vmstat, Bien que nous découvrirons comment savoir ce que CPU est dans votre système sans ouvrir le capot. Nous examinerons également certaines variables de limite de ressources de base et les préoccupations environnantes. Le public cible de cet article est donc débutant à moyen avancé.

Cet article fait partie de la série utile de conseils et de trucs de ligne de commande bash.

Dans ce tutoriel, vous apprendrez:

  • Conseils, astuces et méthodes utiles de la ligne de commande bash
  • Comment interagir avec la ligne de commande bash de manière avancée
  • Comment affiner vos compétences de bash dans l'ensemble et devenir un utilisateur de bash plus compétent
Exemples de lignes de commande de commande de bash utile - Partie 6

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Indépendant de la distribution Linux
Logiciel Ligne de commande bash, système basé sur Linux
Autre Toute utilité qui n'est pas incluse dans le shell bash par défaut peut être installée en utilisant Sudo Apt-Get Install Utility-Name (ou Installation de miam pour les systèmes basés sur Redhat)
Conventions # - nécessite que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - exige que les commandes Linux soient exécutées en tant qu'utilisateur régulier non privilégié

Exemple 1: quel processeur est dans votre système?

Souvent, nous voulons découvrir rapidement ce que CPU est dans le système, sans ouvrir la boîte. L'ouverture de l'ordinateur physique est également un peu difficile si vous gérez un serveur de l'autre côté de la planète. Découvrir les détails du CPU est facile et simple:

$ cat / proc / cpuinfo | grep 'nom du modèle' | Tête -n1 Nom du modèle: Intel (R) Core (TM) I9-9900K CPU @ 3.60 GHz $ cat / proc / cpuinfo | grep 'nom du modèle' | wc -l 16 

Dans la première commande, nous avons demandé la dynamique / proc / cpuinfo Fichier qui répertorie le CPU actuel tel que détecté par le système d'exploitation. Il y a 16 lignes (comme on le voit dans la deuxième commande) de la même sortie, nous énumérons donc uniquement la première ligne en utilisant le tête -N1 commande. Notez que nous pourrions également écrire ces commandes comme suit:

$ grep 'modèle de nom' / proc / cpuinfo | Tête -n1 Nom du modèle: Intel (R) Core (TM) I9-9900K CPU @ 3.60GHz $ grep 'nom du modèle' / proc / cpuinfo | wc -l 16 


Vous pouvez cependant vouloir utiliser le chat Méthode pour explorer la sortie complète (chat / proc / cpuinfo) car il y a beaucoup d'informations intéressantes affichées sur votre processeur. Le nombre de 16 est dû à 16 threads dans ce processeur particulier, donc le système d'exploitation le voit comme 16 processeurs individuels, ou threads, à utiliser.

Découvrir votre système d'exploitation et libérer

Souvent, lors de la gestion d'un serveur distant, nous voulons nous assurer qu'il est corrigé à la bonne révision d'un système d'exploitation. Pour en savoir plus sur le système d'exploitation que votre machine utilise et dans quelle révision il se trouve, exécutez simplement Cat / etc / * Libération *:

$ cat / etc / * release * Distrib_id = ubuntu distrib_release = 20.04 DISTRIB_CODENAME = FOCAL DISTRIB_DESCRIPTION = "Ubuntu 20.04.1 LTS "name =" ubuntu "version =" 20.04.1 LTS (focal fossa) "id = ubuntu id_like = debian joli_name =" ubuntu 20.04.1 lts "version_id =" 20.04 "home_url =" https: // www.ubuntu.com / "support_url =" https: // aide.ubuntu.com / "bug_report_url =" https: // bogues.rampe de lancement.net / ubuntu / "privacy_policy_url =" https: // www.ubuntu.com / juridique / termes et polices / Privacy-policy "version_codename = focal ubuntu_codename = focal 

Pour comparer, voici la sortie de la même commande sur un Raspberry Pi 4 basé à Raspbian:

$ cat / etc / * release * pretty_name = "raspbian gnu / linux 10 (buster)" name = "raspbian gnu / linux" version_id = "10" version = "10 (buster)" version_codename = buster id = raspbian id_like = debian Home_url = "http: // www.raspbian.org / "support_url =" http: // www.raspbian.org / raspbianforums "bug_report_url =" http: // www.raspbian.org / raspbianbugs " 


Une fois que vous vous souvenez de cette sténographie, vous vous retrouverez bientôt à l'utiliser de nombreuses situations. Les fichiers réels affichés ici, au moins sur Ubuntu, sont: / etc / LSB-Release et / etc / OS-Release. Sur raspbian il n'y a que / etc / OS-Release.

Fonctionnement contre les limites du système

De nombreuses limites de système d'exploitation sont implémentées par défaut dans Linux. Ils sont définis de manière astucieuse, car vous ne les aurez souvent pas jusqu'à ce que vous soyez un DevOps ou un ingénieur similaire maximisant le débit d'un ensemble de serveurs distants.

La modification de ces variables du système d'exploitation nécessite une certaine connaissance de chacun d'eux, et les définir peut parfois nécessiter des tests pour établir des limites raisonnables.

Une autre considération ici est que les limites du système peuvent être touchées bien avant que la limite configurée du système d'exploitation ne soit atteinte, et cela est particulièrement vrai si vous définissez ces limites de système d'exploitation sur un nombre très élevé. C'est également pourquoi ces limites de système d'exploitation sont là en premier lieu: limiter le système d'exploitation de perdre le contrôle sur une ressource système physique (disque, RAM, mémoire, CPU) en raison d'un capuchon / limite mal géré.

Ainsi, la modification des limites basées sur le système d'exploitation s'accompagne de divers risques. Non seulement il est plutôt facile de les définir trop grand, ce qui entraîne souvent le contrôle du système d'exploitation des ressources spécifiques, mais la modification de certaines variables comporte également des risques de sécurité.

Par exemple, disons qu'un pirate jetterait une bombe à fourche vers le système. Une bombe à fourche n'est pas une vraie bombe, mais plutôt un exploit basé sur un logiciel qui se traduit par le système pour former de nouveaux coquilles et threads vers un processus d'organisation de la bombe de fourche. Si le nombre de fourches autorisées avait été modifiée en modifiant une ou plusieurs variables système, le système pourrait bientôt manquer de ressources CPU essayant de fork-till-infinity.

Un autre aspect à considérer ici est de savoir à quel point le serveur ou le poste de travail que vous gérez est de commencer. S'il se trouve dans une zone DMZ dans un centre de données, autrement isolé des autres serveurs, et utilisé pour les tâches de faible privilège (comme les tests), il peut être tout à fait acceptable pour fixer des limites assez élevées. Si ce même serveur poussait le code de production et que la signature des packages de versement, une gestion des ressources système beaucoup plus prudente serait conseillée.

Vous pouvez voir comment la modification de ces variables nécessite une certaine expertise et une expérience. Pourtant, la plupart d'entre eux sont faciles à comprendre et ont des noms anglais communs.

Les plus courants sont fixés / etc / sécurité / limites.confli. Par exemple, pour augmenter considérablement le nombre maximum de fichiers ouverts au 300000, vous pouvez ajouter les lignes suivantes / etc / sécurité / limites.confli:

* Soft Nofile 300000 * Hard Nofile 300000 


Ce sera 300k fichiers à ouvrir immédiatement. Le maximum qui peut être défini pour ces variables est 1048576.

Notez qu'il existe une différence entre les limites «douces» et «dures»: les limites dures ne peuvent être soulevées que par racine Accès au niveau, alors que tout processus peut réduire la limite. Ceci est idéal à des fins de sécurité car les processus non racinaires ne pourront pas dépasser une limite. Une limite souple peut être modifiée par un processus donné à tout moment.

Il existe de nombreux autres paramètres similaires qui peuvent être modifiés à partir de ce fichier. Pour avoir une idée générale, vous pouvez utiliser ulimit -a Pour voir les limites applicables à votre système à ce stade.

Le fichier le plus proéminent suivant en ce qui concerne le réglage des ressources du système est / etc / sysctl.confli. Dans ce fichier, il est possible de Finetune de nombreux paramètres du noyau. Par exemple, pour définir le nombre maximum de PID (identificateurs de processus) sur 500K et le swappiness de votre système (avec quelle facilité le système d'exploitation échangera des informations basées sur la mémoire avec des informations basées sur le disque - également nommé `` échange '') sur 5 (un paramètre qui restreint l'échange considérablement), vous pouvez ajouter ce qui suit / etc / sysctl.confli:

noyau.pid_max = 500000 VM.swappiness = 5 

Nous ne recommandons pas de mettre en œuvre l'un des paramètres indiqués ci-dessus sans autres recherches et de réglage puis spécifiquement à votre système. Souvent, augmenter une variable à un cadre supérieur ne produira aucun problème, sauf si un événement imprévu se produit, comme l'exemple de pirate discuté précédemment.

Conclusion

Dans cet article, nous avons examiné comment notre système d'exploitation garde les ressources sous contrôle et quels sont les fichiers de configuration principaux en relation avec cela. Nous avons également découvert comment savoir quel est le processeur dans le système, et quel système d'exploitation et sa version que nous utilisons. Connaissant ces choses de base, on peut explorer davantage dans des paramètres spécifiques réalisés dans / etc / sécurité / limites.confli et / etc / sysctl.confli et gérer plus en toute confiance les systèmes à base de linux. Apprécier!

Tutoriels Linux connexes:

  • Conseils de commande de commande de bash utile et exemples de trucs - Partie 3
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Conseils de ligne de commande bash utiles et exemples de trucs - Partie 1
  • Conseils de commande de commande de bash utile et exemples de trucs - Partie 2
  • Ubuntu 20.04 astuces et choses que vous ne savez peut-être pas
  • Exemples de lignes de commande de commande de bash utile - Partie 4
  • Conseils de commande de commande de bash utile et exemples de trucs - Partie 5
  • Choses à installer sur Ubuntu 20.04
  • Ubuntu 20.04 Guide
  • Masterring Bash Script Loops