Serveur minecraft

20 commandes Linux que chaque administrateur système devrait connaître – Un bon serveur Minecraft

Le 3 mai 2019 - 19 minutes de lecture

Dans un monde débordant de nouveaux outils et d'environnements de développement variés, il est pratiquement indispensable pour tout développeur ou ingénieur d'apprendre certaines commandes sysadmin de base. Des commandes et des packages spécifiques peuvent aider les développeurs à organiser, dépanner et optimiser leurs applications et, en cas de problème, à fournir des informations de triage utiles aux opérateurs et aux administrateurs système.

Que vous soyez un nouveau développeur ou que vous souhaitiez gérer votre propre application, les 20 commandes sysadmin de base suivantes peuvent vous aider à mieux comprendre vos applications. Ils peuvent également vous aider à décrire les problèmes rencontrés par les administrateurs système, à la résolution du problème de savoir pourquoi une application peut fonctionner localement mais pas sur un hôte distant. Ces commandes s'appliquent aux environnements de développement Linux, aux conteneurs, aux machines virtuelles (VM) et au bare metal.

1. boucle

boucle transfère une URL. Utilisez cette commande pour tester le noeud final d'une application ou la connectivité à un noeud final de service en amont. curl Cela peut être utile pour déterminer si votre application peut atteindre un autre service, tel qu'une base de données, ou pour vérifier si votre service est en bon état.

Par exemple, imaginez que votre application génère une erreur HTTP 500 indiquant qu'elle ne peut pas atteindre une base de données MongoDB:

$ curl -JE -s mon application:5000
HTTP/1,0 500 ERREUR INTERNE DU SERVEUR

le -JE option montre les informations d'en-tête et la -s L'option réduit au silence le corps de la réponse. Vérification du noeud final de votre base de données à partir de votre bureau local:

$ curl -JE -s base de données:27017
HTTP/1,0 200 D'accord

Alors, quel pourrait être le problème? Vérifiez si votre application peut accéder à d'autres emplacements que la base de données à partir de l'hôte de l'application:

$ curl -JE -s https://opensource.com
HTTP/1.1 200 D'accord

Cela semble aller bien. Maintenant, essayez d'atteindre la base de données à partir de l'hôte d'application. Votre application utilise le nom d'hôte de la base de données, essayez donc ceci en premier:

$ curl database:27017
boucle: (6) Couldn'résolvez pas l'hôte'base de données'

Cela indique que votre application ne peut pas résoudre la base de données car son adresse URL n'est pas disponible ou l'hôte (conteneur ou machine virtuelle) ne dispose pas d'un serveur de noms qu'il peut utiliser pour résoudre le nom d'hôte.

2. python -m json.tool / jq

Après avoir publié boucle, la sortie de l’appel d’API peut être difficile à lire. Parfois, vous souhaitez imprimer en sortie la sortie JSON pour trouver une entrée spécifique. Python a une bibliothèque JSON intégrée qui peut vous aider. Tu utilises python -m json.tool indenter et organiser le JSON. Pour utiliser le module JSON de Python, dirigez la sortie d’un fichier JSON vers le python -m json.tool commander.

$ chat test.json
"Titre":"La personne","type":"objet","Propriétés":"Prénom":"type":"chaîne","nom de famille":"type":"chaîne","âge":"la description":"Age en années","type":"entier","le minimum":0,"Champs obligatoires":[[[["Prénom","nom de famille"]

Pour utiliser la bibliothèque Python, dirigez la sortie vers Python avec le -m option (module).

$ chat test.json | python -m json.tool

"Propriétés":
"âge":
"la description": "Age en années",
"le minimum": 0,
"type": "entier"
,
"Prénom":
"type": "chaîne"
,
"nom de famille":
"type": "chaîne"

,
"Champs obligatoires": [[[[
"Prénom",
"nom de famille"
],
"Titre": "La personne",
"type": "objet"

Pour une analyse JSON plus avancée, vous pouvez installer jq. jq fournit des options permettant d'extraire des valeurs spécifiques de l'entrée JSON. Pour joliment imprimer comme le module Python ci-dessus, appliquez simplement jq à la sortie.

$ chat test.json | jq

"Titre": "La personne",
"type": "objet",
"Propriétés":
"Prénom":
"type": "chaîne"
,
"nom de famille":
"type": "chaîne"
,
"âge":
"la description": "Age en années",
"type": "entier",
"le minimum": 0

,
"Champs obligatoires": [[[[
"Prénom",
"nom de famille"
]

3. ls

ls répertorie les fichiers dans un répertoire. Les administrateurs système et les développeurs émettent cette commande assez souvent. Dans l'espace conteneur, cette commande peut vous aider à déterminer le répertoire et les fichiers de votre image conteneur. Outre la recherche de vos fichiers, ls peut vous aider à examiner vos autorisations. Dans l'exemple ci-dessous, vous ne pouvez pas exécuter myapp en raison d'un problème d'autorisations. Lorsque vous vérifiez les autorisations à l'aide de ls -l, vous vous rendez compte que les permissions n’ont pas de "x" dans -rw-r – r–, qui sont en lecture et en écriture uniquement.

$./myapp
bash:./myapp: permission refusée
$ ls -l myapp
-rw-r - r--. 1 racine racine 33 juil 21 18:36 myapp

4. queue

queue affiche la dernière partie d'un fichier. En règle générale, vous n'avez pas besoin de toutes les lignes de journal pour résoudre les problèmes. Au lieu de cela, vous souhaitez vérifier ce que vos journaux indiquent à propos de la demande la plus récente adressée à votre application. Par exemple, vous pouvez utiliser queue pour vérifier ce qui se passe dans les journaux lorsque vous faites une demande à votre serveur HTTP Apache.

le -F option indique l'option "suivre", qui génère les lignes de journal telles qu'elles sont écrites dans le fichier. L'exemple comporte un script en arrière-plan qui accède au noeud final toutes les quelques secondes et le journal enregistre la demande. Au lieu de suivre le journal en temps réel, vous pouvez également utiliser queue pour voir les 100 dernières lignes du fichier avec le -n option.

$ queue -n 100 /var/bûche/httpd/journal_accès

5. chat

chat concatène et imprime des fichiers. Vous pourriez émettre chat pour vérifier le contenu de votre fichier de dépendances ou pour confirmer la version de l'application que vous avez déjà construite localement.

$ chat conditions.txt
ballon
flask_pymongo

L'exemple ci-dessus vérifie si Flask est répertorié comme dépendance dans votre application Python Flask.

6. grep

grep recherche des modèles de fichiers. Si vous recherchez un motif spécifique dans la sortie d’une autre commande, grep met en évidence les lignes pertinentes. Utilisez cette commande pour rechercher des fichiers journaux, des processus spécifiques, etc. Si vous voulez voir si Apache Tomcat démarre, vous risquez d'être submergé par le nombre de lignes. En canalisant cette sortie vers le grep commande, vous isolez les lignes qui indiquent le démarrage du serveur.

$ chat tomcat.log | grep org.apache.catalina.startup.Catalina.start
01-juil-2017 18: 03:47.542 INFO [[[[principale] org.apache.catalina.startup.Catalina.start Démarrage du serveur dans 681 Mme

7. ps

ps montre l'état du processus. Utilisez cette commande pour déterminer une application en cours d'exécution ou pour confirmer un processus attendu. Par exemple, si vous souhaitez rechercher un serveur Web Tomcat en cours d’exécution, vous utilisez ps avec ses options pour obtenir l'ID de processus de Tomcat.

$ ps -ef
UID PID PPID C TEMPS TTY TEMPS CMD
racine 1 0 2 18:55 ? 00:00:02 /docker-java-home/jre/bi
racine 59 0 0 18:55 pts/0 00:00:00 /poubelle/sh
racine 75 59 0 18:57 pts/0 00:00:00 ps -ef

Pour encore plus de lisibilité, utilisez ps et le diriger vers grep.

$ ps -ef | grep matou
racine 1 0 1 18:55 ? 00:00:02 /docker-java-home/jre/bi

8. env

env vous permet de définir ou d’imprimer les variables d’environnement. Lors du dépannage, il peut être utile de vérifier si la mauvaise variable d’environnement empêche le démarrage de votre application. Dans l'exemple ci-dessous, cette commande permet de vérifier les variables d'environnement définies sur l'hôte de votre application.

$ env
PYTHON_PIP_VERSION= 9.0.1
MAISON=/racine
DB_NAME=tester
CHEMIN=/usr/local/poubelle:/usr/local/sbin
LANG= C.UTF-8
PYTHON_VERSION= 3.4.6
PWD=/
DB_URI= mongodb://base de données:27017/tester

Notez que l'application utilise Python3 et qu'elle dispose de variables d'environnement pour se connecter à une base de données MongoDB.

9. top

Haut affiche et met à jour les informations de processus triées. Utilisez cet outil pour déterminer les processus en cours d’exécution, ainsi que la quantité de mémoire et de processeur qu’ils consomment. Un cas courant se produit lorsque vous exécutez une application et qu'elle meurt une minute plus tard. Tout d'abord, vous vérifiez l'erreur de retour de l'application, qui est une erreur de mémoire.

$ queue myapp.log
Traceback (appel le plus récent dernier):
MemoryError

Est votre application vraiment Mémoire insuffisante? Pour confirmer, utilisez Haut pour déterminer la quantité de processeur et de mémoire que votre application consomme. Lors de l'émission Haut, vous remarquez une application Python utilisant la plus grande partie du processeur, avec une utilisation de la mémoire en augmentation, et vous soupçonnez que c'est votre application. Pendant son exécution, vous appuyez sur la touche "C" pour afficher la commande complète et procéder à un reverse engineering si le processus correspond à votre application. Il s’avère être votre application gourmande en mémoire (memeater.py). Lorsque votre application est à court de mémoire, le système la supprime avec une erreur de mémoire insuffisante.

En plus de vérifier votre propre application, vous pouvez utiliser Haut pour déboguer d’autres processus utilisant le processeur ou la mémoire.

10. netstat

netstat montre l'état du réseau. Cette commande affiche les ports réseau utilisés et leurs connexions entrantes. cependant, netstat ne sort pas de la boîte sous Linux. Si vous avez besoin de l’installer, vous pouvez le trouver dans la outils de réseau paquet. En tant que développeur qui expérimente localement ou pousse une application sur un hôte, un message indiquant qu'un port est déjà alloué ou une adresse déjà utilisée peut être erroné. En utilisant netstat avec les options de protocole, de processus et de port montre que le serveur HTTP Apache utilise déjà le port 80 sur l'hôte ci-dessous.

11. adresse ip

Si adresse IP ne fonctionne pas sur votre hôte, il doit être installé avec le iproute2 paquet. jeadresse p affiche les interfaces et les adresses IP de l'hôte de votre application. Tu utilises adresse IP pour vérifier l'adresse IP de votre conteneur ou de votre hôte. Par exemple, lorsque votre conteneur est attaché à deux réseaux, adresse IP peut montrer quelle interface se connecte à quel réseau. Pour un contrôle simple, vous pouvez toujours utiliser le adresse IP commande pour obtenir l'adresse IP de l'hôte. L'exemple ci-dessous montre que le conteneur de niveau Web a une adresse IP de 172.17.0.2 sur l'interface eth0.

12. lsof

lsof répertorie les fichiers ouverts associés à votre application. Sur certaines images de machine Linux, vous devez installer lsof avec le paquet lsof. Sous Linux, presque toute interaction avec le système est traitée comme un fichier. Par conséquent, si votre application écrit dans un fichier ou ouvre une connexion réseau, lsof reflétera cette interaction en tant que fichier. Semblable à netstat, vous pouvez utiliser lsof pour vérifier les ports d'écoute. Par exemple, si vous voulez vérifier si le port 80 est utilisé, vous utilisez lsof pour vérifier quel processus l'utilise. Ci-dessous, vous pouvez voir que httpd (Apache) écoute sur le port 80. Vous pouvez également utiliser lsof vérifier l'ID de processus de httpd en examinant l'emplacement du fichier binaire du serveur Web (/ usr / sbin / httpd).

Le nom du fichier ouvert dans la liste des fichiers ouverts permet d'identifier l'origine du processus, en particulier Apache.

13. df

Vous pouvez utiliser df (affichez l’espace disque libre) pour résoudre les problèmes d’espace disque. Lorsque vous exécutez votre application sur un orchestrateur de conteneur, vous pouvez recevoir un message d'erreur signalant un manque d'espace libre sur l'hôte du conteneur. Bien que l’espace disque doive être géré et optimisé par un administrateur système, vous pouvez utiliser df pour déterminer l'espace existant dans un répertoire et confirmer si vous êtes réellement à court d'espace.

le -h L’option affiche les informations dans un format lisible par l’homme. L'exemple ci-dessus montre beaucoup d'espace disque sur cet hôte.

14. du

Pour récupérer des informations plus détaillées sur les fichiers qui utilisent l’espace disque d’un répertoire, vous pouvez utiliser le du commander. Si vous voulez savoir quel journal prend le plus de place dans la / var / log répertoire, par exemple, vous pouvez utiliser du avec le -h option (lisible par l'homme) et le -s option pour la taille totale.

$ du -sh /var/bûche/ *
1,8 M /var/bûche/anaconda
384K /var/bûche/vérification
4,0K /var/bûche/boot.log
0 /var/bûche/chrony
4,0K /var/bûche/cron
4,0K /var/bûche/courrier électronique
64K /var/bûche/messages

L’exemple ci-dessus révèle le plus grand répertoire sous / var / log être / var / log / audit. Vous pouvez utiliser du en conjonction avec df pour déterminer ce qui utilise l’espace disque de l’hôte de votre application.

15. id

Pour vérifier l'utilisateur qui exécute l'application, utilisez le identifiant commande pour retourner l'identité de l'utilisateur. L'exemple ci-dessous utilise Vagrant pour tester l'application et isoler son environnement de développement. Après vous être connecté à la zone Vagrant, si vous essayez d'installer Apache HTTP Server (une dépendance), le système indique que vous ne pouvez pas exécuter la commande en tant que root. Pour vérifier votre utilisateur et votre groupe, émettez le identifiant et notez que vous vous présentez en tant qu’utilisateur "vagabond" dans le groupe "vagabond".

$ Miam -y installer httpd
Plugins chargés: le plus rapide
Vous devez être root pour exécuter cette commande.
$ identifiant
uid=1000(vagabond) gid=1000(vagabond) groupes=1000(vagabond) le contexte= unconfined_u: unconfined_r: unconfined_t: s0-s0: c0.c1023

Pour corriger cela, vous devez exécuter la commande en tant que superutilisateur, qui fournit des privilèges élevés.

16. chmod

Lorsque vous exécutez votre binaire d'application pour la première fois sur votre hôte, vous pouvez recevoir le message d'erreur "autorisation refusée". Comme on le voit dans l'exemple de ls, vous pouvez vérifier les autorisations de votre application binaire.

$ ls -l
total 4
-rw-rw-r--. 1 vagabond vagabond 34 juil 11 02:17 test.sh

Cela montre que vous n’avez pas de droits d’exécution (pas de "x") pour exécuter le binaire. chmod peut corriger les autorisations pour permettre à votre utilisateur d'exécuter le binaire.

$ chmod + x test.sh
[[[[vagabond@localhost ~]$ ls -l
total 4
-rwxrwxr-x. 1 vagabond vagabond 34 juil 11 02:17 test.sh

Comme illustré dans l'exemple, cela met à jour les autorisations avec les droits d'exécution. Désormais, lorsque vous essayez d'exécuter votre binaire, l'application ne génère pas d'erreur avec autorisation refusée. Chmod peut être utile lorsque vous chargez également un fichier binaire dans un conteneur. Cela garantit que votre conteneur dispose des autorisations appropriées pour exécuter votre binaire.

17. dig / nslookup

Un serveur de nom de domaine (DNS) aide à résoudre une URL vers un ensemble de serveurs d'applications. Cependant, vous constaterez peut-être qu'une URL ne se résout pas, ce qui pose un problème de connectivité pour votre application. Par exemple, supposons que vous tentiez d’accéder à votre base de données au ma base de données URL de l'hôte de votre application. Au lieu de cela, vous recevez une erreur "impossible à résoudre". Pour dépanner, vous essayez d'utiliser creuser (Utilitaire de recherche DNS) ou nslookup (interrogez les serveurs de noms Internet) pour comprendre pourquoi l'application ne semble pas pouvoir résoudre la base de données.

$ nslookup mydatabase
Serveur: 10.0.2.3
Adresse: 10.0.2.3# 53

** le serveur peutne trouvez pas ma base de données: NXDOMAIN

En utilisant nslookup montre que ma base de données ne peut pas être résolu. Essayer de résoudre avec creuser donne le même résultat.

$ creuser ma base de données

; << >> DiG 9.9.4-RedHat-9.9.4-50.el7_3.1 << >> ma base de données
;; options globales: + cmd
;; la connexion a expiré; aucun serveur n'a pu être atteint

Ces erreurs peuvent être causées par de nombreux problèmes différents. Si vous ne pouvez pas déboguer la cause première, contactez votre administrateur système pour plus de détails. Pour les tests locaux, ce problème peut indiquer que les serveurs de noms de votre hôte ne sont pas configurés correctement. Pour utiliser ces commandes, vous devez installer le logiciel Utilitaires BIND paquet.

18. iptables

iptables bloque ou autorise le trafic sur un hôte Linux, similaire à un pare-feu de réseau. Cet outil peut empêcher certaines applications de recevoir ou de transmettre des demandes. Plus spécifiquement, si votre application a des difficultés à atteindre un autre point de terminaison, iptables peut refuser le trafic vers le noeud final. Par exemple, imaginez que l'hôte de votre application ne puisse pas atteindre Opensource.com. Tu utilises boucle pour tester la connexion.

$ curl -vvv opensource.com
* A propos de se connecter() au port opensource.com 80 (# 0)
* Essayer 54.204.39.132 ...
* La connexion a expiré
* Échec de la connexion à opensource.com:80; La connexion a expiré
* Connexion de fermeture 0
boucle: (7) Échec de la connexion à opensource.com:80; La connexion a expiré

La connexion expire. Vous pensez que quelque chose pourrait bloquer le trafic, alors vous montrez la iptables règles avec le -S option.

$ iptables -S
-P DROP D'ENTRÉE
-P DROP FORWARD
-P BAISSE DE SORTIE
-UNE CONTRIBUTION -p tcp -m tcp --port 22 -j ACCEPTEZ
-UNE CONTRIBUTION -je eth0 -p UDP -m UDP --sport 53 -j ACCEPTEZ
-UNE SORTIE -p tcp -m tcp --sport 22 -j ACCEPTEZ
-UNE SORTIE -o eth0 -p UDP -m UDP --port 53 -j ACCEPTEZ

Les trois premières règles montrent que le trafic diminue par défaut. Les règles restantes autorisent le trafic SSH et DNS. Dans ce cas, effectuez un suivi auprès de votre administrateur système si vous avez besoin d'une règle autorisant le trafic vers des points de terminaison externes. S'il s'agit d'un hôte que vous utilisez pour le développement ou les tests locaux, vous pouvez utiliser le iptables commande pour autoriser le trafic correct. Soyez prudent lorsque vous ajoutez des règles autorisant le trafic sur votre hôte.

19. sestatus

SELinux (un module de sécurité Linux) est généralement appliqué à un hôte d'application géré par une entreprise. SELinux fournit un accès avec le moins de privilèges aux processus s'exécutant sur l'hôte, empêchant ainsi les processus potentiellement malveillants d'accéder aux fichiers importants du système. Dans certaines situations, une application doit accéder à un fichier spécifique mais peut générer une erreur. Pour vérifier si SELinux bloque l’application, utilisez queue et grep rechercher un message "refusé" dans le / var / log / audit enregistrement. Sinon, vous pouvez vérifier si SELinux est activé sur la boîte en utilisant sestatus.

$ sestatus
Statut SELinux: activé
Monture SELinuxfs: /sys/fs/selinux
Répertoire racine SELinux: /etc/selinux
Nom de la règle chargée: ciblé
Mode actuel: mise en application
Mode du fichier de configuration: application
Statut de la stratégie MLS: activé
Statut de la stratégie deny_unknown: autorisé
Version maximale de la politique du noyau: 28

La sortie ci-dessus indique que SELinux est activé sur l'hôte de l'application. Sur votre environnement de développement local, vous pouvez mettre à jour SELinux pour qu’il soit plus permissif. Si vous avez besoin d'aide avec un hôte distant, votre administrateur système peut vous aider à déterminer la meilleure pratique permettant à votre application d'accéder au fichier dont elle a besoin.

20. histoire

Lorsque vous lancez autant de commandes à des fins de test et de débogage, vous risquez d'oublier celles qui sont utiles! Chaque coquille a une variante du l'histoire commander. Il montre l'historique des commandes que vous avez émises depuis le début de la session. Vous pouvez utiliser l'histoire pour consigner les commandes que vous avez utilisées pour dépanner votre application. Par exemple, lorsque vous émettez l'histoire au cours de cet article, il montre les différentes commandes que vous avez expérimentées et apprises.

$ l'histoire
1 clair
2 df -h
3 du

Que faire si vous voulez exécuter une commande dans votre historique précédent, mais vous ne voulez pas la retaper? Utilisation ! avant le numéro de commande à ré-exécuter.

Les commandes de base peuvent améliorer votre expertise en matière de dépannage pour déterminer pourquoi votre application fonctionne dans un environnement de développement mais peut-être pas dans un autre. De nombreux administrateurs système utilisent ces commandes pour résoudre les problèmes liés aux systèmes. La compréhension de certaines de ces commandes de dépannage utiles peut vous aider à communiquer avec les administrateurs système et à résoudre les problèmes liés à votre application.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.