GNU/Linux >> Tutoriels Linux >  >> Linux

17 commandes Linux que tout administrateur système devrait connaître

Il y a quelques mois, j'ai demandé à la communauté des contributeurs Enable Sysadmin de m'aider à dresser une liste de leurs commandes les plus essentielles. Après traitement des résultats, 17 des commandes sont apparues comme étant essentielles ou du moins extrêmement bénéfiques pour le travail d'administrateur système Linux. Alors sans plus tarder, sautons dans ceux-ci.

Vous souhaitez en savoir plus sur les commandes réseau ? Lisez la première partie de notre liste de commandes participatives  ]

trouver —Cette commande fait partie de findutils et permet des commandes de recherche personnalisées. Par exemple, si vous souhaitez rechercher des répertoires correspondant à un nom spécifique, vous pouvez utiliser quelque chose comme ceci :

find path/ -type d -iname '*dir_name*'

Vous pouvez trouver plus d'informations sur la commande ici.

ls+xargs — Ce couple était nouveau pour moi; cependant, il était vraiment intéressant d'apprendre et a des applications potentiellement révolutionnaires. xargs vous permet d'exécuter des commandes supplémentaires sur la sortie d'une commande donnée. Un exemple super basique de cela peut être vu lors de l'association avec le ls commande. Par exemple, si vous vouliez cat tous les fichiers listés par ls , vous pouvez utiliser quelque chose comme ceci :

$ ls
1.file  2.file  3.file

$ ls | xargs cat
you are reading file 1
you are reading file 2 
you are reading file 3

Découvrez un aperçu approfondi de xargs de HowtoGeek
awk/sed/(e)grep —Ce trio a été nommé plus de fois que toute autre commande par notre communauté. C'était révélateur de voir à quel point ces commandes sont vraiment importantes pour la communauté et pour les administrateurs système dans leur ensemble. Concentrons-nous sur grep d'abord.
grep —Grep est génial, pas de mensonge. Si vous ne connaissez pas déjà grep (et soyons honnêtes, c'est au moins possible, si vous êtes nouveau dans la ligne de commande Linux), familiarisez-vous avec. grep est un outil qui vous permettra de filtrer la sortie standard d'à peu près n'importe quoi sur la ligne de commande. Vous pouvez grep pour les mots que vous voulez trouver, ou inversez cela pour vous montrer tout ce qui NE correspond PAS à votre mot-clé. Nous parlerons même un peu d'un outil très similaire qui étend grep un peu. Voici quelques exemples.
Pour vous montrer toutes les lignes d'un fichier donné qui incluent le mot "erreur" par exemple, vous feriez quelque chose comme ceci :

$ cat file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.
Then we have a warning.
and a WARNING
and then of course Warning.

$ grep error file.txt
This line contains an error.
$

C'est ce que vous appelleriez un grep inclusif . Vous pouvez également inverser cela en utilisant un indicateur d'exclusion. Supposons que vous vouliez voir toutes les options de configuration dans votre sshd config qui ne sont pas commentés, vous pouvez faire ceci :

# grep -v \# /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

… snip ...

Subsystem sftp /usr/libexec/openssh/sftp-server
#

Il convient de noter que grep est sensible à la casse, comme beaucoup de choses dans Bash. Ainsi, chercher "erreur" ne trouvera pas "Erreur" ou "ERREUR". Vous pouvez dire à grep pour filtrer de manière insensible à la casse en utilisant le -i drapeau.

$ grep -i eRRor file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.

Cela correspondra en cas d'erreur, ERROR, erRoR, ou autre, tant que les lettres sont les mêmes.

Maintenant, j'ai dit que vous pouviez utiliser grep pour filtrer la sortie de n'importe quelle commande, n'est-ce pas ? Vous faites cela avec la redirection de sortie à l'aide d'un tube. Ceci est vraiment utile pour des choses comme le filtrage des journaux, même en direct avec tail -f .

   # tail -f /var/log/messages | grep -i error

Il y a beaucoup plus d'options pour grep , y compris le filtrage basé sur un fichier de mots-clés, d'expressions régulières, vous pouvez même coloriser la sortie. Je vous suggère de vous familiariser avec la page de manuel si vous souhaitez en savoir plus.

egrep —Maintenant, que se passe-t-il si vous voulez filtrer sur plus d'un mot ? J'ai toujours utilisé egrep pour cela.

Dites que vous aimeriez grep en cas d'erreur ou d'avertissement, vous pouvez faire quelque chose comme ceci :

$ egrep 'error|warning' file.txt
This line contains an error.
Then we have a warning.

egrep supportera d'autres modèles, j'en suis sûr, mais celui-là est celui pour lequel je l'ai toujours utilisé, et je l'ai trouvé très utile.

mal à l'aise —Le awk La commande implémente le langage de programmation AWK pour traiter le texte, et elle est particulièrement efficace pour traiter les données organisées en colonnes. Cette commande est disponible dans la plupart sinon toutes les distributions Linux ainsi que dans tout autre système d'exploitation UNIX.

Les administrateurs système utilisent couramment awk pour extraire des données de fichiers ou canalisées à partir de la sortie d'autres commandes dans la ligne de commande ou des scripts Shell. Appelez awk en exécutant la commande fournissant une action entre '{}' . Vous pouvez référencer des colonnes en tant que variables, comme $1 pour la première colonne, $2 , pour le second, et ainsi de suite. Par défaut awk utilise des espaces comme séparateur de colonnes mais vous pouvez utiliser n'importe quel caractère en le spécifiant avec le drapeau -F .

Par exemple, pour imprimer le propriétaire et le groupe, les colonnes 3 et 4 dans la sortie de ls -l , dirigez sa sortie vers awk comme ceci :

$ ls -l | awk '{ print $3,$4 }'
ricardo users
ricardo users
root root
...

Vous pouvez également filtrer les lignes de l'entrée en fournissant une expression régulière facultative avant l'action. Par exemple, pour imprimer tous les noms d'hôtes (colonne 2) des lignes commençant par un chiffre dans votre /etc/hosts fichiers, utilisez awk comme ceci :

$ awk '/^[0-9]/ { print $2 }' /etc/hosts
localhost
sat6server
tower01.olab.home.ca
...

awk est une commande polyvalente qui prend en charge tout un langage de programmation vous permettant de faire beaucoup de choses, comme effectuer des calculs, des conditions, la transformation de données, etc. C'est une excellente option pour vous aider à automatiser vos systèmes et cela fait souvent partie des scripts shell.

Pour plus d'informations, consultez l'article Guide du débutant pour gawk et la commande man pages.

sed —La commande sed - abréviation de stream editor - vous permet de filtrer et de modifier des flux de texte de manière scriptée. Les administrateurs système utilisent souvent sed dans les scripts Bash pour transformer le texte canalisé à partir d'autres commandes ou directement à partir de fichiers. Dans sa forme la plus basique, sed recherche et remplace du texte. Par exemple, utilisez-le pour remplacer la chaîne "stream" par "text" provenant d'un tube, comme ceci :

$ echo "This is a test stream" | sed 's/stream/text/'
This is a test text

Vous pouvez également remplacer du texte dans un fichier en fournissant le nom du fichier comme dernier paramètre, comme ceci :

$ sed 's/pattern/replacement/' filename

Pour votre sécurité, sed sort les résultats vers STDOUT sans modifier le fichier. Vous pouvez rediriger la sortie vers un nouveau fichier pour enregistrer les résultats. Vous pouvez également modifier le fichier d'origine en place en fournissant le -i drapeau.

Par défaut, sed modifie uniquement la première occurrence du motif dans chaque ligne. Pour modifier ce comportement, permettant de remplacer toutes les instances du modèle, fournissez le g option à la fin de sed expression de commande, comme ceci :

$ sed 's/pattern/replacement/g' filename

En plus de la recherche textuelle de base, sed prend en charge la correspondance d'expressions régulières. Par exemple, utilisez une expression régulière "[Ww]ord" pour remplacer à la fois "Word" et "word" dans chaque ligne :

$ echo "Word word WORD" | sed 's/[Ww]ord/text/g'
text text WORD

Cette commande offre de nombreuses autres possibilités mais même avec cette utilisation basique, vous pouvez gagner beaucoup de temps. Pour plus d'informations sur les autres options, consultez le man pages pour sed .

regarder —Cette commande vous permet d'exécuter une commande/un programme de manière répétée en utilisant un intervalle donné. Par défaut, l'intervalle est toutes les deux secondes. De nombreux administrateurs système utilisent cette commande pour surveiller diverses conditions ou tâches du système jusqu'à leur achèvement.
Par exemple, si vous souhaitez surveiller votre utilisation de la mémoire, vous pouvez utiliser ce qui suit : watch -d free -m (le -d l'option met en évidence les valeurs qui sont différentes de la dernière exécution).

boucle —Cette commande vous permet de transférer des données vers/depuis des serveurs, avec beaucoup plus d'options que seulement HTTP/HTTPS. Il fonctionne sans interaction de l'utilisateur et il est très fréquent dans les situations où vous devez effectuer des appels d'API REST (GET, POST, PUT).

curl prend en charge de nombreuses options pour se connecter aux serveurs, comme SSL, utiliser des cookies, reprendre le transfert de fichiers, etc. C'est presque comme si vous aviez un navigateur Web que vous pouvez exécuter à partir de la ligne de commande.

L'exemple ci-dessous montre curl pour un simple téléchargement de fichier, mais en limitant la bande passante :

curl -o myfile.tar.gz --limit-rate 20K https://myserver.example.com/bigfile.tar.gz

Comme son manuel l'indique, le nombre d'options disponibles à utiliser avec curl sont beaucoup. Certains de ceux que j'utilise fréquemment sont :

  •  -s: exécuter en mode silencieux (sans barre de progression)
  •  -k: autoriser une connexion non sécurisée (uniquement lors de la connexion à un serveur interne connu pour lequel un certificat auto-signé est utilisé)
curl -X POST --header "Content-Type: application/json" \
             --data '{"my_id": 5, "my_application": "moneymaker", "body": "showmethemoney"}' \
               https://myserver.example.com/posts

Dans l'exemple ci-dessus, je fais un POST et je transmets l'en-tête et le corps .

courrier —Le mail command est un outil super soigné qui permet à un utilisateur d'envoyer des e-mails directement depuis la ligne de commande, sans avoir à ouvrir un navigateur ou un client dédié. Vous aurez besoin d'un serveur SMTP exécuté localement sur votre machine, c'est donc quelque chose dont il faut être conscient.

Installez le paquet :

 $ apt-get install mailutils

Pour envoyer un e-mail de base, vous pouvez utiliser les éléments suivants :

$ mail -s "Subject Line" [email protected]

Lorsque vous appuyez sur Entrée , vous serez invité avec le Cc domaine. Vous pouvez ajouter des destinataires supplémentaires ou simplement appuyer sur Entrée passer. Ensuite, vous taperez votre message. Lorsque vous avez terminé, utilisez Ctrl+D pour envoyer le message pour livraison. Cela devrait ressembler à ceci une fois terminé :

$ mail -s "Subject Line" [email protected]
Cc: [email protected]
"Hello world" 
<Ctrl + D>

Pour plus d'informations sur cette commande, consultez cet excellent article.

tmux —Le tmux La commande, c'est-à-dire le multiplexeur de terminal, permet plusieurs fenêtres à l'intérieur d'une seule fenêtre de terminal. Vous pouvez passer d'une fenêtre à l'autre et même les diviser en volets individuels, chacun avec sa propre CLI. Nous avons publié d'excellents contenus autour de tmux et comment l'utiliser, je vais donc vous laisser un lien vers ce contenu. Consultez les conseils d'utilisation de tmux pour plus d'informations.

sudo —La commande sudo est votre chemin vers des privilèges élevés. Tous les administrateurs système doivent savoir comment utiliser cette commande, en quoi elle est différente de su (que beaucoup utilisent à la place de sudo …mauvaise idée), et comment garantir l'accès par les comptes nécessaires. J'ai écrit un article d'introduction à sudo en arrière quand cela peut vous être utile.

ssh —Le ssh (shell sécurisé) vous permet d'utiliser des protocoles de travail à distance pour accéder et manipuler des serveurs via une connexion réseau. Si vous avez déjà travaillé dans le support, ou avez été aidé par le support d'ailleurs, souvent le support technique utilise ssh pour accéder à votre machine ou à votre serveur.
L'utilisation des commandes est assez simple :

$ ssh username@hostname

Vous serez invité à entrer un mot de passe, et si vous pouvez fournir les informations d'identification appropriées, vous serez sur votre chemin vers le système souhaité.

scp —La commande de copie sécurisée (scp ) permet à un utilisateur de copier des fichiers vers/depuis un système distant. Vous aurez besoin de ssh activé aux deux extrémités de la transaction et une syntaxe de commande appropriée. Tout cela et vous devriez être prêt à partir. La syntaxe de la commande devrait ressembler à ceci :

Pour copier un fichier D'un système distant vers le répertoire de travail actuel :

scp user@ip_of_remote :/file/path/of/file.txt . 

pkill —Cet utilitaire de commande nous permet de signaler les processus des programmes en cours d'exécution. Vous pouvez rechercher un processus par nom (complet ou partiel), utilisateur, etc. Il existe des tonnes d'options pour utiliser cet utilitaire, cependant, par défaut, la commande envoie le signal 15 (TERM) à tous les PIDS correspondant à vos critères. Par exemple :

$ pkill chrome

Cela devrait arrêter toutes les instances de Chrome en cours d'exécution sur la machine.

lsns —Cette commande, répertorie les espaces de noms (lsns ), fait exactement ce qu'il dit :répertorie les espaces de noms. Fou non? Quoi qu'il en soit, vous pouvez ajouter ici de nombreuses options : -J (format json), -l (format de liste), -n (pas d'en-tête), etc. Cette commande fait partie du util-linux paquet et est largement disponible. Pour plus d'informations sur lsns ou les espaces de noms en général, consultez cet article du contributeur Steve Ovens Les 7 espaces de noms Linux les plus utilisés.

annuler le partage —Celui-ci est également centré sur les espaces de noms. La commande unshare exécute un programme dans un ou plusieurs espaces de noms nouvellement créés. Par défaut, le nouvel espace de noms ne durera que tant que des programmes y seront exécutés. Pour plus d'informations sur cette commande, consultez le man page dans votre machine Linux préférée.

[ Vous voulez tester vos compétences d'administrateur système ? Faites une évaluation des compétences aujourd'hui. ]

Si vous parvenez à intégrer ces outils dans votre flux de travail là où ils ont du sens, vous serez un meilleur administrateur système pour le faire. Si certaines de vos commandes préférées ne figurent pas dans la liste, nous aimerions en entendre parler. N'hésitez pas à soumettre un article sur votre commande préférée que nous n'avons pas répertoriée à [email protected].


Linux
  1. 20 commandes Linux essentielles pour chaque utilisateur

  2. Thèmes sonores sous Linux :ce que chaque utilisateur doit savoir

  3. 3 compétences que chaque administrateur système Linux devrait apporter à la table

  4. 6 options de commande OpenSSL que chaque administrateur système devrait connaître

  5. Linux - Comment savoir pour quoi Grep dans Dmesg ?

Commandes réseau Linux de base que vous devez connaître

5 commandes Linux que chaque utilisateur Linux devrait connaître

21 commandes essentielles que tout utilisateur de Docker devrait connaître

5 astuces simples pour l'historique de Bash que tout utilisateur de Linux devrait connaître

Astuces pour les terminaux Linux que tous les passionnés de Linux doivent connaître !

Commandes Linux que tous les utilisateurs doivent connaître {Liste ultime}