10 Commandes Linux méconnues mais très puissantes !

10 Commandes Linux méconnues mais très puissantes !

Il existe beaucoup de commandes Linux, toutes plus ou moins puissantes les unes que les autres. Mais dans cet article je vais vous présenter 15 commandes Linux dont on parle trop peu qui vous seront forcément utiles dans une situation ou une autre !


💡
Cette liste n'est pas triée dans un ordre précis

links et lynx sont des navigateurs web en CLI ! Ce sont des utilitaires très puissants permettant de naviguer de manière fluide et tout ça en ligne de commande !

Le cas pratique auquel j'ai déjà fait face est lorsque l'on essaye d'accéder à un serveur pour télécharger des fichiers et qu'il n'est pas accessible en FTP. On peut donc télécharger des fichiers avec links ou lynx.

Usage :
links <url>
lynx <url>
Exemple :
links https://dynops.fr
lynx https://dynops.fr

2. mktemp

Voilà une commande Linux bien pratique pour les adeptes du scripting en BASH ;)

Cette commande permet de créer un fichier ou un répertoire temporaire de manière sécurisée et très facilement. Plutôt que de se torturer l'esprit à essayer de trouver un nom unique pour un fichier ou un répertoire, il est quand même plus judicieux d'utiliser cette commande.

Fonctionnement :

Par défaut, mktemp va utiliser le répertoire définit dans la variable $TMPDIR. Si cette variable n'est pas définie, le répertoire sera alors /tmp

Usage dans un script :
#!/bin/bash

for f in {1..5} ; do
  fichier=$(mktemp)
  echo "Création du fichier $fichier"
  echo "Mon contenu" >> $fichier
done
Retour :
Création du fichier /tmp/tmp.RhMh20XiwT
Création du fichier /tmp/tmp.fTreQQwqDW
Création du fichier /tmp/tmp.QP5e6EmRlD
Création du fichier /tmp/tmp.t2bvVfg2W0
Création du fichier /tmp/tmp.r7lYHHoSDW
Arguments intéressants :
-d : Permet de créer un répertoire temporaire
-p : Permet de spécifier un autre répertoire que /tmp ou celui contenu dans la variable $TMPDIR

3. at

Ne vous êtes vous jamais demandé comment planifier l'exécution d'une commande de manière efficace sur un système Linux ?

at lit l'entrée standard (STDIN) et exécute la commande donnée à l'heure donnée en utilisant /bin/sh.

Usage :
at <heure> <nombre de jours supplémentaire>
Exemple :
at 15:00 +1day # Sera executé demain à 15h.
at 09:00 # Sera exécuté aujourd'hui à 9h.
Retour :
warning: commands will be executed using /bin/sh
at Thu Oct 20 15:55:00 2022
at> echo coucou > /tmp/coucou.txt
at> <EOT>
job 2 at Thu Oct 20 15:55:00 2022
Commandes liées :
batch : Execute la commande donnée lorsque le load average est situé entre 1 et 5.
atq : Liste les jobs en attente.
atrm : Supprime le ou les jobs spécifiés.

4. watch

Il vous arrive souvent de vouloir vérifier si un fichier existe toutes les 2 secondes ou bien rafraîchir l'utilisation disque d'un répertoire ou d'un disque toutes les 2 secondes ? La commande watch est fait pour vous !

N'essayez plus de faire des boucles for pipés dans vos commandes ls afin d'exécuter votre commandes toutes les 5 secondes ;)

Fonctionnement :

Par défaut, watch exécute la commande donnée en argument toutes les 2 secondes.

Usage :
watch -n 8 -x df -h

Cette commande exécutera donc la commande "df -h" toutes les 8 secondes.

Arguments intéressants :
-n : Change le nombre de seconde d'intervalles d'exécution de la commande
-x : Exécute une autre commande à la place de 'sh -c'

5. pslog

Il arrive de ne pas avoir toutes les informations sur un processus, et connaître l'emplacement de ses logs peut s'avérer très pratique !

Usage :
pslog <pid>
Exemple de retour :
Pid no 689:
Log path: /var/log/unattended-upgrades/unattended-upgrades-shutdown.log

6. chattr

Cette commande avec un nom un peu spécial est la contraction de CHange ATTRibute. Comme son nom l'indique, elle permet de changer les attributs d'un fichier.

Son utilisation ressemble à la commande chmod car il faut préciser l'opérateur + ou - suivi de l'attribut.

Usage :

Enlever l'attribut d'écriture sur un fichier :

chattr +i <chemin du fichier>
Commandes liées :
lsattr : Lister les attributs d'un fichier
Arguments intéressants :
-R : Changer les attributs des fichiers et répértoires de manière récursive

7. fakeroot

Voilà une commande bien puissante, assez orienté sécurité !

La commande fakeroot vous permet de simuler l'exécution d'une commande dans un environnement root. Vous allez me dire, mais quelle est la différence avec sudo ? La différence est majeure car les modifications effectuées avec fakeroot ne sont que virtuelles !

Usage :
fakeroot <commande>
Exemple :
fakeroot /bin/bash
Commandes liées :
faked : Daemon  qui  mémorise  les  permissions  et  propriétaires  factices des fichiers manipulés par les processus sous fakeroot.

8. setfacl

Ah les ACL (Access Control List), voici une composante très importante liée à la sécurité d'un filesystem Linux, toujours assez orienté sécurité.

Cela permet notamment de gérer les permissions de manière plus poussée.

Usage :
setfacl -m u/g/m/o:uid/gid:perms <fichier>
Exemple :
setfacl -m u:user1:rw test.csv
Commandes liées :
getfacl : Lister les ACL d'un fichier
Arguments intéressants :
-m, --modify : Modifie les ACL	
-R, --recursive : Modifie les ACL de manière récursive

9. chmem

Dans le cas où vous souhaitez tester le comportement de votre serveur/poste avec moins de mémoire RAM, la commande chmem peut vous être utile !

Fonctionnement :

La commande chmem va essayer de désactiver (option -d) ou d'activer (option -e) chaque bloc mémoire s'il n'est pas utilisé.

Usage :
chmem -d 1024
Désactivation de 1024MB de RAM
chmem -ev 1024
Activation de 1024MB de RAM avec ajout de verbose
Commandes liées :
chcpu : Active/Désactive du Noyau un ou des Cpu

10. logger

Voici une commande à ajouter dans vos scripts BASH afin de respecter au mieux les bonnes pratiques !

Dans la plupart des scripts orchestrés quotidiennement, on garde généralement un petit fichier de log qu'on a généré en redirigeant la STDOUT du script.
Et bien fini tout ça !

La commande logger vous permet d'envoyer un message dans /var/log/syslog

Cela peut être très pratique notamment si le service Filebeat tourne sur le serveur avec le module "System" activé (qui parse le /var/log/syslog)

Usage :
logger test
Retour :
grep test /var/log/syslog

Oct 31 17:06:32 nextcloud root: test
Le message "test" est bien présent dans /var/log/syslog envoyé par l'utilisateur root
Arguments intéressants :
-f, --file : Log le contenu du fichier
-t, --tag <tag> : Tag chaque ligne avec ce tag
--skip-empty : Ne log pas les lignes vides