101 commandes indispensables sous linux
Voici un article qui sera complété au fur et à mesure de mes découvertes. Il condense un peu plus d'une centaine de commandes qu'il est utile de connaitre sous linux, que ce soit sur un desktop/laptop ou un serveur, gardez-les sous la main, elles vous seront toujours utiles ! Gardez bien à l'esprit que ce post ne peut en aucune façon se substituer au fameux "man", c'est plutôt un cookbook des commandes qui reviennent le plus.
Commandes de bases, navigation dans les fichiers
ls
liste les fichiers d'un dossier. Options :
-a
pour les fichiers cachés,-l
pour la liste détaillées,-h
pour les tailles en unités "human readable". Très pratique l'option-R
permet en un coup d'œil de visualiser les sous-dossiers.cd
change directory, la commande permet de naviguer dans l’arborescence. Par exemple
cd /var/log
va dans le dossier des logs, quelque soit l'endroit où l'on se trouve puisqu'on a mis le slash de début, lequel indique qu'il s'agit d'une adresse absolue. En revanche,cd mondossier/images
va dans le répertoireimages
demondossier
lequel se trouve à l'endroit où on se situe déjà. Comme on ne met pas de slash de début, il s'agit d'une adresse relative, on ajoute donc ce chemin à celui dans lequel on se trouve déjà.Deux raccourcis très utiles sont à connaître.
cd ~
mène au répertoire de l'utilisateur courant (/home/user/
la plupart du temps ou/root/
si vous êtes en root) etcd -
retourne sur le chemin précédent.du
disk usage, précise l'espace disque que prend chaque fichier ou dossier (l'option
-h
permet d'obtenir les tailles en "human readable"), tandis que l'option--max-depth=x
(ou-d
), très utile également, permet de limiter la détail à un niveau de sous dossier.--max-depth=1
ne retournera donc que la taille des répertoires courants. Cette commande s'avère particulièrement pratique quandls -l
ne nous donne pas la taille d'un dossier.pwd
print working directory. Cette commande affiche tout simplement le chemin absolu du dossier dans lequel on se trouve,
Buzut$ pwd /etc/apache2
clear
nettoie votre fenêtre de terminal en reléguant tout le texte au dessus (donc accessible avec un scroll) et vous laissant donc face à une fenêtre clean. Bien utile de temps à autre pour y voir plus clair. Le raccourci clavier ctrl + l fait la même chose.
- ctrl + s
Stoppe l'affichage, très pratique lorsqu'une commande très verbeuse "pollue" un peu votre terminal. Inversement, pour reprendre l'affichage, on utilisera ctrl + q
- ctrl + d
Déconnecte proprement une session ou un terminal. Par exemple, si vous êtes connecté en root depuis sudo, retourne à la session de l'utilisateur qui a exécuté sudo (comme si vous aviez entré
exit
). Ferme la connexion ssh si vous vous êtes connecté sur la session courante. Ce raccourcis permet aussi de fermer un interpréteur comme la console MySQL par exemple. Pour être tout à fait exact, cette commande envoie le caractère EOF (d'end of file).- ctrl + k
Supprime tout le texte se trouvant après le curseur et le sauvegarde dans le presse papier. ctrl + u supprime quand à lui depuis le curseur jusqu'au début de la ligne.
- ctrl + y
Permet de coller le texte présent dans le presse papier.
- ctrl + r
très très pratique, permet de faire une recherche dans l'historique des commandes. Habituellement, vous remontez dans les commandes déjà tapées avec la flèche du haut, eh bien avec ctrl + r, vous pouvez effectuer une recherche dans cet historique, faites ctrl + r, puis tapez un bout de la commande que vous voulez rechercher, magique !
history
L'historique de bash est très pratique. Cependant, il peut parfois s'avérer intéressant d'en supprimer des entrées.
history
permet d'afficher l'historique avec les numéros de lignes correspondants. Si vous vouler supprimer une entrée, il suffira d'utiliser l'option-d
,history -d 1125
et pour tout supprimer, vous utiliserez l'option-c
sans autre paramètre.!!
Dans la lignée des raccourcis bash bien pratiques, le double point d'exclamation, permet de lancer à nouveau la dernière commande. Ainsi,
!!
exécuté après unls
ou unpwd
ré-exécutera cette dernière.for
C'est certainement la commande la plus complexe de cette section, surtout si vous ne programmez pas.
for
est une instruction de boucle. Une boucle permet d'exécuter une action plusieurs fois, sur tous les éléments d'une variable. Par exemple, nous pouvons ainsi très facilement renomer tous les fichiers d'un répertoire pour remplacer les espaces par des traits d'union.# pour tous les éléments dans le répertoire courant # l'instruction in place les éléments correspondants dans la variable oldname for oldname in * # do exécute l'action en boucle do # on utilise ici sed pour renommer, # l'usage de la commande est expliqué plus bas dans l'article newname=`echo $oldname | sed -e 's/ /_/g'` # on invoque la commande mv pour remplacer l'ancien nom par le nouveau mv "$oldname" "$newname" done
watch
Cette commande permet d'appeler une autre commande de manière répétitive. On peut par exemple vouloir suivre l'évolution du contenu d'un répertoire,
watch ls
permet cela. L'option-n
permet de spécifier un intervalle en seconde.
Opération sur les fichiers
cat
lire le contenu d'un fichier texte
cat monfichier.txt
less
fonctionnement similaire à
cat
mais affiche le fichier page par page. C'est donc plus pratique pour les longs fichiers.head
affiche l'en-tête d'un fichier, l'option
-n
permet de spécifier le nombre de lignes à afficher.tail
semblable à
head
mais concerne la "queue" du fichier, en d'autres termes, cette commande n'affiche que la fin. Une option très appréciable-f
pour follow, permet de mettre à jour en temps réel l'affichage de la fin du fichier, ce qui est fort pratique pour suivre l'évolution d'un fichier de logs par exemple ;)touch
créer un fichier. Il suffit de faire
touch nom_du_fichier
. Comme Franckito le précise dans les commentairestouch
a pour but premier de modifier l’horodatage d’un fichier. Si vous faitestouch
sur un fichier qui existe déjà, cela actualisera ses dates de dernier accès et modification.mkdir
créer un dossier, le fonctionnement est le même que celui de la commande
touch
.mkdir nom_du_dossier
cp
copy, faire une copie d'un fichier. L'option
-R
permet de réaliser des copies de dossiers entiers.cp fichier_original copie_du_fichier # on peut aussi placer la copie directement dans un autre dossier cp fichier_original nom_du_dossier/copie_du_fichier
mv
move, permet de déplacer des fichiers/dossiers. La commande mv s'utilise exactement de la même manière que la commande
cp
. En outre, cette commande permet aussi de renommer les fichiers et dossiers en changeant simplement leur nom.mv mon_fichier mon_fichier_new_name
rm
remove, supprime des fichiers.
rm nom_du_fichier
. L'option-f
force la suppression, l'option-i
demande une confirmation avant suppression, enfin l'option-r
permet la suppression des dossiers.rmdir
remove directory, supprime un dossier seulement s'il est vide.
ln
link, créer un lien entre deux fichiers. L'option
-s
permet de créer un lien symbolique.#créer un lien en dur ln fichier1 fichier2 #créer un lien symbolique ln -s fichier1 lien_vers_fichier1
wc
word count, permet de compter le nombre de lignes, de mots et de caractères dans un fichier texte. Les options sont
-l
pour line (nombre de ligne),-w
pour word (nombre de mots) et-m
pour le nombres de lettres. Il y a aussi l'option-c
pour avoir la taille du fichier en bits. Pour l'utiliser, on fourni simplement en paramètre l'adresse du fichier texte :Buzut$ wc -l test.rtf 33 test.rtf
wc
permet aussi facilement de savoir combien vous avez de fichiers/dossiers un dans répertoire donné, il suffit pour cela de rediriger la sortie d'unls
verswc
:ls | wc
et le tour est joué !sort
trier un fichier texte par ordre alphabétique. L'option
-r
permet d'effectuer un tri inverse, c'est à dire anti-alphabétique ou décroissant pour les nombres, et l'option-R
permet un tri aléatoire, c'est le mode shuffle quoi ;) On n'oubliera pas non plus l'option-u
qui permet d'éliminer les doublons. Enfin l'option-o
permet de créer un nouveau fichier avec les résultats triés :sort -o fichier_trie.txt fichier_en_bordel.txt
uniq
la commande
uniq
permet de dédoublonner un fichier. Il suffit de lui passer en paramètre l'adresse du fichier à dédoublonner et le nom du nouveau fichier à créer.uniq doublons.txt no-doublons.txt
cut
couper dans un fichier texte. Pour couper toutes les lignes selon un nombre donnés de caractères, on utilisera l'option
-c
.cut -c 2
conservera seulement les deux premiers caractères. On peut aussi donner un intervalle :cut -c 2-4
, alors on conservera uniquement les caractères deux à quatre. Exemple, "anticonstitutionnellement" sera transformé en "ntic". Il est aussi possible de se servir de délimiteurs pour couper du texte, avec les options-d
et-f
. Les fichiers au formats .csv séparent les différents champs, les colonnes, par des point-virgules;
. Dans un fichier où nous aurions trois champs, le nom, le prénom et la ville, si nous voulons extraire la ville, nous ferions comme cecicut -d ; -f 3
on indique le délimiteur après-d
et le champ après-f
(field veut dire champ en anglais).tar
tar
est l'utilitaire d'archivage. Il permet de regrouper des fichiers et des dossiers dans une seule archive. Les options intéressantes sont les suivantes :tar -cvf
(create, verbose, file) permet de créer une archive, d'afficher tous les détails du processus (mode verbeux) et de tout mettre dans un dossier. Exemple :tar -cvf nouvelle_archive.tar mon_dossier_a_archiver
Processus inverse, pour "détarrer" une archive, on utilise les options
-xvf
(eXtract, verbose, file)tar -xvf archive.tar
. Les options-tf
servent à afficher le contenu d'une archive sans l'ouvrir. Il est aussi possible de compresser et décompresser à la volée les archivestar
, il faut rajouter pour cela l'option-z
lors de la création ou l'ouverture de l'archivetar -zcvf compress.tar.gz compress/
.gzip
permet de compresser une archive tar au format zip.
gunzip archive.tar.gz
, il suffit ensuite d'utiliser la commandegunzip
pour la dézipper.bzip2
fonctionne exactement de la même manière que
gzip
mais compresse au formatbzip
. Pour décompresser l'archive, l'équivalent degunzip
est icibunzip2
.zcat
zmore
zless
zcat
,zmore
etzless
remplissent les mêmes fonctions quecat
,more
etless
mais à appliquer aux fichiers compressés.iconv
permet de changer l'encodage d'un fichier. option
-f
pour préciser l'encodage d'origine et option-t
pour celui de destination. Par défaut,iconv
renvoit tout sur la sortie standard, donc si vous voulez directement envoyer les résultats dans un fichier, il suffit de faire une petite redirection :iconv -f UTF-8 -t UTF-17 fichier.txt >> new-encodage.txt
rsync
c'est un utilitaire qui permet de synchroniser entre eux des dossiers. Très pratique donc pour la sauvegarde. C'est pour ma part les options
-arv
que j'utilise.-a
conserve les droits etc,-r
permet la récursivité et-v
pour le mode verbeux. Petit exemple de sauvegarde de mes photos de vacances :rsync -arv photo backup_photo
Il est utile de préciser que si vous supprimez des fichiers dans le dossier source,
rsync
ne répercute pas la suppression dans le dossier de sauvegarde si vous ne lui adjoignez pas l'option--delete
. Au cas où vous ne désiriez pas supprimer totalement les fichiers, il est possible de les placer dans un dossier séparé, options :--backup --backup-dir=
Petit exemple pour la forme ?rsync -arv photo ~/backup_photo --delete --backup --backup-dir=~/backup_photo/delete
Bien entendu, il est possible de faire une sauvegarde distante.
rsync -arv photo buzut@monserver:~/backup_photo --delete
Dans le cas d'une sauvegarde distante, il peut s'avérer très avantageux d'activer la compression, ainsi,
rsync
compresse les fichier de manière transparente pendant le transfert. Cette option magique a pour petit nom-z
comme zip.Dernière chose, au cas où votre serveur n'écoute pas sur le port 22 en ssh, option
-e
, exemple pour un ssh sur le port 443-e 'ssh -p 443'
.grep
permet d'effectuer des recherches par expressions régulières. Dans sa forme la plus simple,
grep
permettra d'afficher la ligne contenant un mot clef (avec l'option-o
on affiche seulement l'expression matchée), ceci depuis un fichier ou une autre commande.Par exemple, si on veut afficher tous les processus ssh, on filtrera la commande
ps aux
avecgrep
:ps aux | grep ssh
.grep
permet également de rechercher dans le contenu de fichiers. Un exemple tiré de mon article sur la désinfection d'un WordPress où l'on cherche tout fichier.php
potentiellement infecté :# option -l pour matcher seulement certains types de fichiers (ici les .php) # option -r pour la récursivité (recherche dans les sous-dossiers) # option -E pour la syntaxe REGEXP étendue (correspond à la commande egrep) grep --include "*.php" -rlE 'viagra|pharma|Tadacip|eval|base64_decode|socket_shutdown|socket_close|socket_clear_error|fopen|curl' www/
En outre, il s'avère parfois très pratique d'obtenir un peu de contexte concernant les résultats, pour cela, nous utiliserons l'option
-C
qui permet de définir le nombre de lignes que l'on veut afficher avant et après l'expression matchée.Enfin, comme le souligne Erwan dans les commentaires, l'option
-v
fait office de filtre inverse : est affiché tout ce qui ne contient pas le motif.file
détermine le type d'un fichier indépendamment de son extension. Il suffit de lui fournir en paramètre le fichier à évaluer.
split
coupe un fichier en fichiers plus petits (-l préciser un nombre de lignes, -b préciser une taille en bytes [faites suivre la taille de K, M, G, T pour définir une unité différente]). Pour créer des fichiers de 300 lignes
split -l 300 test.txt
, ou des fichiers de 1MBsplit -b 1000000 mon_fichier
.On reconstitue ensuite le fichier original avec
cat
:# dans un répertoire où il n'y a que les "morceaux" for f in *; do cat $f >> fichier_original; done # sinon, comme ils sont préfixés par "x" # en s'assurant que rien d'autre ne commence par la lettre "x" for f in x*; do cat $f >> fichier_original; done
sed
dans les commandes qui permettent de manipuler du texte,
sed
est sans conteste l'une des plus puissantes. Remplacement selon une expression régulière, effacement de certaines expression où ligne selon un mot-clef donné… Seul inconvénient, qui dit puissance dit aussi complexité.sed
ne s'explique pas en deux lignes et c'est pour cela que j'y ai consacré un article entier. Ça vaut le coup !awk
awk
est un langage de programmation à elle seule. Cette commande permet la recherche de chaines et l'exécution d'actions en fonction des motifs trouvés. D'une puissance redoutable, elle est aussi assez complexe. Je vous redirige donc vers des tutos en français ici ou là.locate
cette commande permet de localiser un fichier sur le disque dur.
locate monfichier.txt
. La commandelocate
est très rapide car elle retrouve le fichier en consultant une base de données. Elle ne parcourt pas directement le disque dur à la recherche du fichier en question. L'inconvénient de ce procédé est que si le fichier est tout récent, il risque de ne pas encore être indexé, etlocate
ne vous sera alors d'aucun secours. On peut forcer la mise à jour de la base de données avec la commandesudo updatedb
. On peut aussi se tourner vers la commandefind
.find
la commande
find
est bien plus puissante quelocate
, mais elle est aussi bien plus lente car elle parcourt le disque au fur et à mesure de la recherche. Sa syntaxe est la suivantefind /adresse_du_repertoire_de_recherche/ element_a_trouver
. Cette syntaxe n'est qu'une base.find
permet en effet de rechercher selon une taille ou une date de dernier accès, mais encore d'effectuer des actions sur les fichiers trouvés, d'appeler une commande etc. Une page de man à lire donc…Connaître la date de dernier accès est très pratique et puissant, quelques exemples :
# le plus simple chercher un fichier dont on connait le nom # trouver tous les .htaccess dans /var/www find /var/www -name ".htaccess" # liste les fichiers dans www par date de dernière modification find /www -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r # on peut être plus précis en affichant les fichiers modifiés dans le x (ici 50) dernières minutes find /target_directory -type f -mmin -50 # ou les 24 dernières heures find /target_directory -type f -mtime -24 # on peut enfin choisir une intervalle (entre hier et avant-hier) find /target_directory -type f -mtime -48 ! -mtime -24 # last but not least, déplacer les fichiers qui ont plus de 24h (ou modifié il y a plus de 24h) find /target_directory -type f -mtime -24
Vous noterez très certainement que nous utilisons ici
mtime
pour la dernière modification. Il y a également :mmin
pour les minutes,atime
etamin
pour le dernier accès,ctime
etcmin
pour le dernier changement.
Vous pouvez lire cet article et ce post pour bien comprendre les différences et implications change time et modification time.
Flux de redirection
>
renvoyer le resultat dans un fichier (si celui-ci existe, il sera écrasé).
>>
renvoyer le resultat dans un fichier (si celui ci existe déjà, ajoute le résultat à la fin) il existe deux sortie : 1 la sortie normale, 2 la sortie d'erreurs.
2>
créer un fichier pour les erreurs.
2>>
existe aussi.2>&1
fusionne les deux sorties dans un seul fichier ex :
./script_de_la_mort.sh > fichier.log 2>&1
.<
prendre un fichier en entrée. ex :
cat < fichier.txt
.<
prendre en entrée le clavier au fur et à mesure. Ceci nous permet de passer des données directement à une commande sans avoir besoin de créer de fichier. Mettons que nous voulions trier des prénoms par ordre alphabétique. Nous allons pour cela invoquer la commande
sort
, mais au lieu de créer un fichier texte puis de le faire réorganiser parsort
, nous allons directement lui soumettre les noms en les entrant au clavier :#on place un mot clef après le "<<" qui sert à délimiter les données passées en entrée. #Ce mot clef est tout à fait arbitraire #on appuie sur "entrer" après chaque prénom pour séparer les différentes données sort << STOP > antoine > clement > quentin > jordan > mathilde > clementine > elena > helena > pierre > STOP antoine clement clementine elena helena jordan mathilde pierre quentin
|
rediriger le résultat d'une commande dans une autre. ex:
sort prenoms.txt | uniq
.
Multitâche et programme en arriere plan
&
mettre & à la fin d'une commande permet d'en lancer une autre sans attendre la fin de la première ex :
cp video.avi /users/buzut/desktop/copie-video.avi &
. Cette instruction permet aussi de passer la commande en arrière plan et redonne immédiatement accès au shell.nohup
lance le programme et le maintient même une fois la console fermée. Les sorties 1&2 sont redirigées vers
nohup.out
. Exemple :nohup ffmpeg -i video-source.mkv -vcodec libx264 -preset slow video-reencodee.mp4
- ctrl + z
mettre en pause le process en cours.
bg
passer le processus qui est en pause en arriere plan.
fg
reprendre un process en premier plan (si plusieurs tournent en même temps,
fg %n°
).at
programme une tache à exécuter à une heure ultérieure ex :
at 18:22
ouat now + 5hours
puis ctlr + d.atq
lister les jobs en attente.
atrm
supprimer des jobs.
sleep
cette commande permet de faire une pause entre l'exécution de deux commandes. Exemple :
touch gt.txt && sleep 10 && rm gt.txt
La pause est exprimée en seconde par défaut, il est cependant possible de changer cela en faisant suivre le nombre d'une unité :m
,h
, oud
pour respectivement les minutes, heures et jours.crontab
crontab est en fait une commande qui permet de lire et de modifier un fichier appelé la "crontab". Voici les options les plus courantes :
e
modifie la crontab,l
affiche la crontab actuelle,r
supprime votre crontab. Attention, la suppression est immédiate et sans confirmation !
screen
multiplexeur de terminaux. Sous ce terme un peu barbare se cache en fait une sorte de terminal virtuel. Vous êtes au boulot, vous ouvrez un terminal et vous le nommez, vous lancez une tache (un script qui va réencoder plusieurs GB de vidéos par ex, ce qui prend du temps), et vous vous déconnectez, vous arrivez chez vous, vous réouvrez votre terminal et retrouvez votre tâche comme si tout était resté ouvert en face de vous.
# créer un screen screen -S nom_du_screen # pour le détacher (cela veut dire qu'il n'est plus affiché mais reste actif), # il faut faire ctrl a puis d # pour se rattacher à un screen détaché, screen -r nom_du_screen # pour lister les screens ouverts screen -ls # pour quitter/fermer un screen, comme pour fermer un terminal --> exit # il n'est pas possible de s'attacher à un screen non détaché # (screen non détaché dans un terminal auquel on tente de s'attacher depuis un autre) # on peut en revanche partager un screen, # on voit alors toutes les commandes tapées dans l'un ou l'autre des terminaux # pour se connecter à un screen non détaché screen -x nom_du_screen
Vous voudrez parfois remonter dans l'écran du screen, pour cela, il faut passer en copy mode avec les touches ctrl + a puis [. Vous pourrez alors naviguer avec les flèches directionnelles. Enfin pour sortir de ce mode ctrl + a puis esc.
Droits, groupes et utilisateurs
sudo
exécuter une commande en tant que root.
sudo su
passer root et le rester.
chmod
changer les droits sur un fichier un ou dossier (option
-R
pour la récursivité dans tous les fichier et sous-dossier du dossier sur lequel on l'applique).chown
change le propriétaire d'un fichier/dossier (ne peut s'utiliser qu'en root) option -R pour la récursivité.
adduser
ajouter un utilisateur.
passwd
changer le mot de passe d'un user | ex :
passwd roger
.deluser
supprimer un user (option
--remove-home
pour supprimer tous ses fichiers).addgroup
créer un groupe.
usermod
modifie un utilisateur (options :
-l
pour changer le nom,-g
pour lui assigner un groupe,-G
pour lui assigner plusieurs groupes (séparés par des virgules),-a
en complément de-g
ou-G
, ajouter des nouveaux groupes au lieu de tout redéfinir) ex, ajouter le groupe video à l'utilisateur buzut, sans supprimer les groupes auxquels il appartenait avant :usermod -aG video buzut
.delgroup
supprimer un groupe.
groups
vérifie dans quels groupes est un utilisateur
groups myuser
.chgrp
change le groupe propriétaire d'un fichier (équivalent à
chown user:group
).
Charge CPU et usage RAM
free
indique l'allocation de la ram et la mémoire libre restante.
vmstat
info ram, swap, cpu.
/proc/meminfo
Le fichier
/proc/meminfo
contient de nombreuses informations sur la mémoire. Il suffit d'en afficher la sortir aveccat /proc/meminfo
.tload
affiche la charge CPU sous forme de graphique.
ps -ef
afficher tous les processus lancés. Alternativement, on peut utiliser la syntaxe BSD :
ps aux
.ps -ejH
afficher process en arbre.
ps -u
lister les process lancés par un utilisateur donné ex:
ps -u buzut
.top
l'activité du système en temps réel : load, RAM, SWAP processus…
top
a l'avantage d'être installé presque partout.htop
c'est une version améliorée de top, un peu plus graphiques, les infos y sont plus claires et il est possible de trier/ordonner l’affichage selon certains critères.
glances
similaire à
top
ethtop
,glances
est le tableau de bord de votre machine car il réuni en un coup d'œil toutes les métriques importantes : cpu, load, ram, swap, i/o disques, remplissage des disque. C'est l'œuvre de l'ami Nicolargo et son outil est maintenant intégré au dépôts des dernières versions Debian & co (je ne sais pas pour les autres distribs).atop
on a parlé ci-dessus de
top
ethtop
, mais il y a aussiatop
qui est très utile lorsqu'on doit faire un diagnostique un peu plus poussé. De manière générale, j'utilisehtop
en remplacement de top car il est plus ergonomique et lisible, mais quand quelque chose cloche sur le serveur, directionatop
! Pour aborder sereinement la bête, je vous conseille la lecture de cet article de linuxpedia, admirable de clarté.iotop
dans la ligné des
*top
, voiciiotop
qui, comme son nom le laisse entendre, permet d'avoir un aperçu temps réel de l'I/O disque.
Système
w
qui est connecté et fait quoi.
who
qui est connecté.
date
donne l'heure.
timedatectl
dans les version modernes de Debian et ses dérivés, c'est la commande qui remplace ntpdate pour la synchronisation de l'heure avec un serveur ntp. Par ailleurs, votre serveur aura toujours besoin de
ntp
pour la synchronisation.Assurez-vous qu'il est bien installé avec un coup de
apt
et contrôlez ensuite l'état en appellant juste la commandetimedatectl
sans arguments. Voici les commandes les plus utiles :# activer/désactiver la synchro auto timedatectl set-ntp true/false # lister les fuseaus horaires timedatectl list-timezones # changer de fuseau horaire timedatectl set-timezone Europe/Paris # régler l'heure manuellement timedatectl set-time 'HH:mm:ss' # régler la date timedatectl set-time 'A:M:J'
Vous pouvez par ailleurs spécifier les serveurs NTP avec lesquels vous voulez synchroniser depuis le fichier de config
/etc/systemd/timesyncd.conf
. Pensez aussi que le port NTP (123 en UDP) doit être ouvert sur votre machine.uptime
temps depuis mise en route + charge (charge moyenne 1 - 5 - 15 mn).
swapoff
swapoff -a
permet de désactiver le(s) swap tandis que son pendantswapon -a
permet d'activer le(s) swap. L'exécution deswapoff -a && swapon -a
permet donc de forcer la purge du swap.kill
tuer un processus (va demander son PID). L'option
-9
force à quitter. Comme le souligne Httqm dans les commentaires, il s'agit du dernier recours car les ressources utilisées par le processus ne seront pas libérées. Comme le fait remarquer Kelec en commentaires également, il est possible de libérer la RAM avecsysctl
(voir un peu plus bas).killall
quitte toutes les occurrences d'un programme.
reboot
Redémarrer le système d'exploitation.
shutdown
Programmer un redémarrage ou un arret.
poweroff
bien qu'assez similaire à shutdown dans la mesure où elle permet d'éteindre le système, poweroff permet aussi selon les arguments qui lui sont passés, de rebooter ou de changer de runlevel. Vous pouvez aussi consulter ce thread [en] qui explique les différences entre
poweroff
etshutdown
.halt
permet "l'arrêt" du système. Je mets arrêt entre guillemets car le système peut rester sous tension avec cette commande (selon les options passés et les paramètres par défaut du système). Regardez les différences entre shutdown et halt [en].
last
historique des connexions.
lsof
list open files, dresse la liste des fichiers ouverts. Comme le fait remarquer l'ami MagiCrazy dans les commentaires, cette commande peut s'avérer bien utile pour voir quel fichier bloque le démontage d'un filesystem par exemple.
hostname
Affiche le nom d'hôte de la machine conformément à ce qui est écrit dans le fichier
/etc/hostname
.uname
Infos sur le système et le matos. L'option
-r
bien pratique, permet d'obtenir la version du kernel.lsb_release
lsb_release -a
donne toutes les infos sur la distrib.lshw
Donne une liste détaillée de l'hardware système tels que la configuration ram, la version du firmware, la configuration de la carte mère… Avec l'option
-short
vous obtiendrez une sortie plus digeste. L'option-c network
s'avère aussi bien utile pour connaître le nom d'une interface réseau encore non configurée avec le standard de nommage systemD [en].lsblk
Liste tous les devices de type bloc (disque dur).
lspci
Liste tous les périphériques PCI.
lsusb
Liste tous les périphériques USB.
/proc/version
Fichier qui contient des infos sur le noyau. On peut afficher son contenu avec
cat
:cat /proc/version
./proc/cpuinfo
Fichier qui contient des infos sur le processeur. On peut afficher son contenu avec
cat
:cat /proc/cpuinfo
.sysctl
Cette commande permet d'afficher et de configurer les paramètres du noyau (à chaud). Très pratique avec un coup de
grep
,sysctl -a
vous donnera tous les paramètres du noyau. L'option-p
est également intéressante car elle permet de recharger les paramètres soit depuis/etc/sysctl.conf
par défaut, soit depuis un fichier passé en paramètre. Dans les choses pouvant s'évérer très utiles,sysctl -w vm.drop_caches=3
permet de libérer le cache de la RAM.dmidecode
lit les info du bios.
dmesg
affiche les messages du buffer du noyaux.
service
Cette commande permet de gérer les services. Lancer, arrêter, lister les services du système etc. Par exemple, pour relancer nginx après un changement dans le fichier de config, on fera
service nginx restart
(notez quereload
suffit dans certains cas). La commandeservice --status-all
, bien pratique, permet de lister tous les services disponibles sur le système.Le paramètre
status
s'avère souvent fort utile puisqu'il donne des informations sur un service en particulier, notamment s'il est actif ou non. Exempleservice nginx status
.On peut également activer ou désactiver le démarrage automatique des services au boot, pour cela, on doit troquer la commande
service
pour la commande nativesystemctl
. Prenons apache2 pour exemple :# activer/désactiver un service systemctl enable apache2 systemctl disable apache2 # vérifier si un service est lancé au boot systemctl is-enabled apache2
journalctl
Cette commande, qui accompagne systemd, permet de visionner et requêter les journaux système. Nous ne pourrons bien entendu pas aborder toutes les options ici, cependant, à vous d'aller fouiller le web pour répondre à vos cas d'usage (requête sur un horaire donnée, process etc). La commande
journalctl
seule, affiche l'ensemble des logs quejournald
a collecté.Pour ma part, un exemple bien pratique concerne les boots. Que s'est-il passé durant le dernier boot, ou le précédent ?
# on commence par lister les différents boots présents dans les logs # (il se peut qu'il n'y en ait qu'un) journalctl --list-boots 0 3774424e8f5a45cb930b1eef3b8355dd Tue 2017-08-15 14:45:48 CEST—Wed 2017-08-16 12:54:57 CEST # on demande ensuite à afficher les logs correspondants à ce boot journalctl -b -0 - Logs begin at Tue 2017-08-15 14:45:48 CEST, end at Wed 2017-08-16 12:56:23 CEST. -- […]
make
permet de compiler un programme dont on détient les sources. En général on fait tout d'abord
./configure
[à lancer avec--help
pour voir les différentes options de compilation] (lance le script de configuration qui vérifie la présence de toutes les dépendances, et écrit le fichier makefile qui contient les ordres de compilation),make
, et enfinmake install
(elle installe le logiciel).update-rc.d
update-rc.d
permet de configurer le démarrage ou l'arrêt automatique de service au démarrage de la machine ou selon le runlevel. On donne en argument le nom du service et l'action (remove ou default pour l'ajout)update-rc.d -f apache2 remove
;-f
permet de forcer l'effacement du lien symbolique même si le nom existe encore. On peut aussi placer un script de démarrage dans répertoire/etc/init.d
ou le renseigner le fichier/etc/rc.local
(qui a lui-même un lien symbolique dans /etc/init.d)./etc/passwd
Bien qu'il ne s'agisse pas, techniquement, d'une commande, il me semble important de connaître la structure du fichier
/etc/passwd
. Lequel regroupe l'ensemble des utilisateurs du système et de leurs informations.# exemple pour l'utilisateur sensu # 1 :2: 3 : 4 : 5 : 6 : 7 sensu:x:999:999:Sensu Monitoring Framework:/opt/sensu:/bin/false
- Nom de l'utilisateur,
- mot de passe (x signifie que le mdp est chiffré dans le fichier
/etc/shadow
, - l'id de l'utilisateur (0 est pour root et les id de 1 à 99 sont réservés pour les comptes prédéfinis),
- l'id du groupe tel que défini dans
/etc/group
, - champ de commentaire,
- répertoire "home" de l'utilisateur,
- le shell par défaut (
/bin/false
et/usr/sbin/nologin
signifient que l'utilisateur n'a pas de shell).
/etc/group
Fichier qui contient les groupes utilisateurs de la machine (ce qui inclut les groupes utilisés par les logiciels ex : www-data pour Apache). On peut afficher les informations avec
cat
:cat /etc/group
.which
localiser une commande ex :
which cat /bin/cat
whereis
localiser un fichier binaire.
Gestionnaire de paquets Debian et dérivés
apt-cache
gestion des paquets. Deux options sont très utiles
apt-cache search nom_paquet
, permet de chercher un paquet, etapt-cache show
, permet d'obtenir des détails sur un paquet.apt-get
gestion des paquets. Les commandes que l'on utilisera le plus sont
update
(MAJ des sources de paquets dispos),upgrade
(mise à jour du système et autres softs),install
(apt-get intall truc-à-installer
pour installer un nouveau logiciel et ses dépendances),purge
(permet de désinstaller un paquet de manière plus "propre" que remove car cela efface aussi les fichiers de configuration).apt
apparue assez récemment,
apt
est décrit dans son man comme le front-end utilisateurs pour un usage plus interactif d'autres outils spécialisés tels queapt-get
ouapt-cache
. Il offre dans l'ensemble les mêmes possibilités queapt-get
. Je retiens une commande toute particulière :apt list --upgradable
qui permet de lister les packets qui seront mis à jour si l'ont fait unupgrade
(avecapt
ouapt-get
).aptitude
c'est un autre utilitaire de paquets. Plus récent qu'apt-get, il est installé en parallèle de celui-ci sur Ubuntu et Debian. Préférez-le à apt-get. Il s'utilise dans l'ensemble comme apt-get mais est plus performant.
add-apt-repository
add-apt-repository
permet d'ajouter des dépôts alternatifs aux dépôts officiels. C'est très utile car les dépôts officiels ont souvent du retard sur les versions de logiciels que sortent les développeurs et certains logiciels en sont même absents. Ainsi, en ajoutant par exemple les dépôts des développeurs, vous pouvez bénéficiez des dernières versions juste en vous servant deapt-get
ouaptitude
, sans avoir besoin de compiler !Par exemple, FFMPEG avait été supprimé des dépôts officiels d'Ubuntu (réintégré en version 15.04) au profit de Libav, son fork. Pour profiter des dernières versions de FFMPEG sans avoir à compiler manuellement à chaque fois :
add-apt-repository ppa:kirillshkrogalev/ffmpeg-next # on met notre liste de packets à jour apt-get update # si ffmpeg n'est pas installé ont l'installe apt-get install ffmpeg # s'il est déjà installé, # un upgrade se chargera de le mettre à jour apt-get upgrade
Il est également parfois pratique de pouvoir supprimer de vieux dépôts, pour cela, il suffit de faire appel à l'option
-r
.Dernière astuce, ce n'est pas une commande spécifique, mais une combinaison de commandes qui permettent de rechercher un dépôt sur le système :
grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep nom_du_ppa
apt-key
Cette commande va bien souvent de paire avec l'ajout de dépôts puisqu'elle permet de gérer les clefs cryptographiques en validant l'authenticité. On utilisera le plus souvent
apt-key adv
pour ajouter de nouvelles clefs, Ubuntu-fr en détaille très bien l'usage.apt-key list
permet de lister toutes les clefs installées etapt-key del
permet d'effacer une clef.apt-cache madison
- Autre commande bien pratique,
apt-cache madison nom_du_packet
affiche les différents dépôts liés à un packet donné et les versions actuelle de chacun d'entre eux. dpkg
info sur les paquets installés (options pour lister tous les paquets, désinstaller etc) ex : liste des paquets installés
dpkg --get-selections
. L'option-l
fourni également une liste exhaustive et avec une petite description de chaque packet, ce qui peut s'avérer très pratique. On constate parfois qu'un grand nombre de paquets sont marqués pour être désinstallés avec le tagdeinstall
, pour tout enlever d'un coup :dpkg --purge `dpkg --get-selections | grep deinstall | cut -f1`
- update kernel
Si votre partition
/boot
est indépendante et qu'elle n'est pas très grande, il est probable qu'après un certain temps, vous deviez faire un peu de ménage, sans quoi l'espace nécessaire à une mise à jour du kernel est insuffisant. On devra donc supprimer les anciens noyaux, pour ce faire, :apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")
Il ne vous reste alors plus que le kernel actuellement utilisé et vous pouvez maintenant effectuer votre mise à jour sans problème. Vous trouverez plus de détails sur cette commande sur ce thread askubuntu.
Disques et volumes
df
remplissage des disques (l'option
-h
permet d'obtenir les tailles en "human readable").mount
Permet de monter le prériphérique d'un système de fichier sous un répertoire local. Par exemple, pour monter la partition
/dev/sdb1
au point de montage/home
:mount /dev/sdb1 /home/
. Inversement, nous utilisonsumount
pour démonter le volume.fdisk
Permet de gérer les partitions. Affiche la table des partitions si on utilise l'option
-l
. Pour créer ou modifier des partitions, on utilisera le mode interactiffdisk /dev/sdx
ou/dev/sdx
est le chemin vers votre disque. Ensuite, l'optionm
listera toutes les commandes possibles, laissez-vous guider ! Vous pouvez jetez un œil à l'article sur le partitionnement Linux pour savoir quels types de partitions créer et pourquoi.parted
Semblable à
fdisk
,parted
supporte les partition GPT. L'option-l
permet d'afficher la table des partitions.fsck
Cet utilitaire permet de vérifier et de réparer le système de fichier.
dd
L'outil permet d'effectuer des opérations sur les disques, notamment de les effacer, par exemple
dd if=/dev/zero of=/dev/sdc
ou de cloner un disque ; ex :dd if=/dev/sda1 of=/dev/sdb1 bs=64K conv=noerror,sync
.ddrescue
Lorsqu'on fait face à un disque dur endommagé, il vaut mieux tenter de le cloner avec
ddrescue
qu'avecdd
. Le premier est en effet dédié à cet usage. Il peut effectuer une première passe pour récupérer le maximum de données en ignorant les secteurs endommagés, puis dans une seconde passe il tentera de récupéré les données endommagées. La doc d'Archlinux détaille bien le processus de recovery.hdparm
La commande
hdparm
permet de récupérer des infos, de tester et de modifier la configuration – bas niveau – des disques dur. On peut par exemple modifier la taille des buffers avant écriture, activer ou désactiver ou modifier l'économie d'énergie, modifier la vitesse de mouvement des têtes de lecture… bref beaucoup de choses. On peut aussi irrémédiablement endommager le disque, prudence donc.Dans les options bien utiles, voici ce que je retiens :
hdparm -I
affiche toutes les infos sur le disques (type de disque, taille des caches, vitesse de rotation, options supportées…).hdparm -tT /dev/sda
fournit la vitesse de lecture pour les contenus avec et sans cache (à répéter plusieurs fois avec le serveur idle pour des résultats pertinents).
Enfin, hdparm s'avère parfois salvateur en cas de secteurs défectueux.
# si vous avez ce genre de messages dans votre syslog Add. Sense: Unrecovered read error - auto reallocate failed sd 3:0:0:0: [sdd] CDB: Read(10): 28 00 e5 63 34 18 00 00 18 00 blk_update_request: 46 callbacks suppressed end_request: I/O error, dev sdd, sector 3848483864 # on peut faire un check de l'état du secteur hdparm –read-sector 3848483864 /dev/sda /dev/sda: Input/Output error # il est bien défectueux, on force donc sa réallocation en écrivant sur ce secteur hdparm –write-sector 3848483864 /dev/sda /dev/sda: Use of –write-sector is VERY DANGEROUS. You are trying to deliberately overwrite a low-level sector on the media This is a BAD idea, and can easily result in total data loss. Please supply the –yes-i-know-what-i-am-doing flag if you really want this. Program aborted. # il faut bien mettre le paramètre –yes-i-know-what-i-am-doing # sans quoi hdparm refuse d'accéder à notre requête $ hdparm –write-sector 3848483864 –yes-i-know-what-i-am-doing /dev/sda /dev/sdb: re-writing sector 3848483864: succeeded # on retente une lecture du secteur hdparm –read-sector 3848483864 /dev/sda /dev/sda: reading sector 3848483864: succeeded
smartctl
smartctl
permet d'afficher les informations smart d'un disque.smartctl -a /dev/sda
affiche toutes les informations à propos de sda. La fiche Wikipedia à propos du SMART fournit de bonnes explications sur les différentes données et leur interprétation./proc/mdsat/
Fichier qui contient les infos sur vos RAID logiciels. On peut afficher ces informations en faisant un
cat
:cat /proc/mdstat
. Lisez l'article sur les différents niveaux de RAID (simulateur intégré) pour trouver le RAID qui vous correspond Vous pouvez également consulter ce wiki [en] pour vous orienter dans la jungle des infos délivrées parmdadm
..mdadm
Commande qui permet d'obtenir des infos sur les RAID soft et de les paramétrer (sortir un disque de l'array, en rajouter un, le reconstruire en cas de disque défaillant…). Par exemple
mdadm --detail /dev/md0
donnera tous les détails lié à un l'array. Notez que cette commande est assez proche de l'option--examine
, mais laquelle s'applique à un disque constitutif d'un raid--examine /dev/sd*
et non au volume raid. Cette commande étant très riche et servant de nombreuses fonctions, je vous laisse vous référer au man pour plus de détails. On peut aussi trouver de précieuses informations sur le linux raid wiki.
Web
Web veut tout dire et rien dire à la fois, surtout dans la mesure où on parle déjà d'un serveur. Cependant, cette section concerne tout particulièrement les commandes liées aux serveurs web. On pense évidemment immédiatement à Apache2 mais d'autres pourraient s'y rajouter.
a2ensite
activer un
vhost
Apache :a2ensite buzut
a2dissite
désactiver un
vhost
Apache :a2dissite buzut
a2enmod
activer un module Apache :
a2enmod rewrite
a2dismod
désactiver un module Apache :
a2dismod rewrite
a2enconf
Sur le même modèle que pour les vhost et les modules,
a2enconf
eta2disconf
permettent d'activer ou de désactiver des configurations. Par exemple, lorsqu'on ne renseigne pas explicitement le fichier d'access.log
d'un vhost, Apache log le tout dans un fichier dédié :other_vhosts_access.log
. Dans le cas où l'on ne voudrait pas de logs d'accès par exemple, on peut désactiver cette configuration :a2disconf other-vhosts-access-log
.apache2ctl
apache2ctl
permet d'une part d'agir en tant que script init (ce qui n'a pas grand intérêt puisqu'on utilise en général la commandeservice
). Et d'autre part de controller le processus Apache et de récupérer des infos sur ce dernier.apache2ctl -S
est assez utile puisqu'elle permet de voir comment apache interprète nos Vhost, l'option-M
liste les modules Apache activés etstatus
affiche un résumé de l'état actuel du serveur (connexions, nombre the workers…). Enfin, bien pratique, l'option-t
ouconfigtest
vous permet de vous assurer que vos fichiers de config n'ont pas d'erreur de syntaxe.
Gestion réseau
ssh
secure shell. Permet de se connecter au shell d'un ordinateur distant et d'y exécuter des commandes.
ssh login@ip ou nom_hôte
Et voilà tout, pour se déconnecter, ce sera exit, et toutes les commandes habituellement utilisables dans un terminal le sont aussi via ssh. Une option bien pratique de ssh est le tunneling qui permet par exemple de déjouer les pare-feux par la mise en place d'un proxy socks. Si certains ports sont bloqués et vous empêchent de vous servir de tel ou tel service ou d’accéder à tel ou tel site (en vacances en Chine ?), la solution est donc de tout rediriger vers un port local et de laisser la machine distante – qui n'est pas derrière un part feu – accéder aux ressources non autorisées. Nous allons donc rediriger tout notre trafic vers un port prédéfini (en l’occurrence 2013), à travers notre connexion SSH.
ssh -D 2013 login@ip_serveur_distant
Dernière étape pour que cela fonctionne, il faut que votre trafic sortant soit redirigé vers le port 2013. Vous pouvez le configurer dans votre navigateur et pour l'ensemble des connexions de votre ordinateur dans les préférences réseau.
fail2ban
Il est difficile de ne pas évoquer fail2ban lorsque l'on parle de ssh. Ce petit logiciel scrute les logs de votre serveur et bloque les ips qui semblent malveillantes. Comme la configuration est un peu plus longue qu'un simple listing d'une ou deux commandes, j'y dédis un article entier.
ifconfig
cette commande des plus indispensables permet d'obtenir des infos et de configurer les interfaces réseau. Employée sans argument, elle fournit des infos sur les interfaces réseaux. Mais elle permet aussi de modifier la configuration. Par exemple pour changer une adresse mac, on utilisera la commande
ifconfig $INTERFACE ether $MAC
. Donc pour changer l'adresse mac de la carte ethernet, ce sera en généralifconfig eth0 ether 5E:FF:56:A2:AF:15
. Notez cependant que cette commande, bien que toujours fonctionnelle, est dépréciée en faveur de la commandeip
ci-dessous.ip
cette commande permet d'afficher et de manipuler le routage et les interfaces. On s'en sert souvent pour lier ou supprimer une ip à une interface :
# lister toutes les addresses ip addr # ne lister que les informations ipv6 ip -6 addr # lister une interface en particulier ip addr show dev em2 # ajouter une adresse ipv4 ip addr add 192.168.0.7 dev eth0 # supprimer une ipv4 ip addr del 192.168.0.7 dev eth0 # pour la v6, il faut utiliser l'argument -6 ip -6 addr del 2574:104::b08b:c107 dev eth0
ping
permet de pinguer un client pour voir s'il est en ligne ou s'il répond au ping, ex
ping google.fr
. L'option-c
permet de préciser le nombre de ping à envoyer avant que la commande ne s'arrête (elle prend donc en argument un nombre entier exemple :ping -c 8 google.fr
), l'option-f
permet de flooder, c'est à dire que la carte réseau enverra autant de ping qu'elle est capable d'envoyer par seconde.traceroute
trace la route d'un paquet, routeur par routeur, jusqu'à sa destination. On peut utiliser indiféremment une ip ou un nom de domaine.
traceroute to google.com (173.194.67.113), 64 hops max, 52 byte packets 1 fast3504 (192.168.1.254) 12.108 ms 1.239 ms 1.217 ms 2 sl869-h01-31-38-37-254.dsl.sta.abo.bbox.fr (42.58.37.254) 33.504 ms 32.771 ms 40.120 ms 3 173.la63.bsr01-lyo.net.bbox.fr (194.158.110.189) 32.684 ms 31.828 ms 31.238 ms 4 be19.cbr01-cro.net.bbox.fr (212.194.171.16) 41.761 ms 41.636 ms 40.140 ms 5 be1.cbr01-ntr.net.bbox.fr (212.194.171.1) 45.495 ms 42.217 ms 40.052 ms 6 * * *
dig ndd
vérifier une correspondance dns. On peut directement spécifier l'ip du serveur dns à interroger, par exemple,
dig @8.8.8.8 buzut.fr
.Buzut:~ Buzut$ dig @8.8.8.8 buzut.fr ; <<>> DiG 9.6-ESV-R4-P3 <<>> @8.8.8.8 buzut.fr ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2660 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;buzut.fr. IN A ;; ANSWER SECTION: buzut.fr. 43200 IN A 213.186.33.4 ;; Query time: 155 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Fri Jul 27 09:01:06 2012 ;; MSG SIZE rcvd: 42
host
permet de vérifier le reverse. Vous entrez donc une adresse ip et la commande vous retourne le nom de domaine associé.
nslookup
un peu dans le même genre que dig,
nslookup
fourni des infos sur le nom de domaine passé en argument, adresse ip, type de réponse DSN… Exemple :nslookup buzut.fr
.Buzut:~ Buzut$ nslookup buzut.fr Server: 212.27.40.240 Address: 212.27.40.240#53 Non-authoritative answer: Name: buzut.fr Address: 213.186.33.4
route
cette commande d'une praticité sans pareil vous permet de visionner les routes, mais aussi, en lui spécifiant quelques arguments, de modifier les routes. Pour ajouter une route par défaut :
route add default addr ip
et pour supprimer une route par défaut :route delete default
.arp -an
cette commande permet de voir la table arp actuelle. C'est à dire la correspondance entre les adresses ip et mac sur votre réseau.
wget
télécharge un fichier distant sur l'ordinateur.
wget http://www.site.org/rep/01/fichier.txt
.curl
curl
permet, commewget
, de récupérer un fichier depuis une url, mais s'il mérite sa place ici, c'est qu'il permet bien plus. C'est en effet le couteau suisse du HTTP. On l'utilisera en effet pour tester des requêtes dans différents formats, analyser lesHEADERS
etc.# requête get classique curl https://buzut.fr # afficher les headers curl https://buzut.fr -D - # faire une requête de type X (HEAD, POST, PUT, PATCH, DELETE…) curl -X HEAD https://buzut.fr # passer des paramètres au format form data curl -X POST --data "email=moi@mail.com&passwd=azerty" https://monsite.com/login # même requête avec les paramètres en request payload, JSON. (on ajout ici un header) curl -H "Content-Type: application/json" -X POST --data '{"email":"moi@mail.com","passwd":"azerty"}' https://monsite.com/login
openssl
Cette bibliothèque est le couteau suisse du chiffrement. Elle permet principalement de travailler avec les certificats SSL/TLS. Voyons quelques-une des options les plus courantes.
# générer un mot de passe (format b64 et longueur 32 signes) openssl rand -base64 32 # générer un certificat ssl auto-signé openssl req -newkey rsa:4096 -new -x509 -days 365 -nodes -out cert.crt -keyout cert.key # très utile, vérifier ce que contient une clef, (domaines protégés etc) openssl x509 -text -noout -in privateKey.key
Pour plus de commandes openssl, vous pouvez lire cet article ou jeter un œil à cheat.sh
scp
vise à remplir la même fonction que la commande de copie
cp
, mais elle permet de copier les fichiers de manière sécurisé à travers le réseau; c'est à dire entre hôtes distants. De même qu'aveccp
, l'option-r
permet de copier un répertoire entier.scp ficher_exemple login@ip_ou_adresse:adresse_de_destination
.scp test.txt buzut@192.168.0.128:~/transfert #et pour récupérer un fichier d'un hôte distant scp buzut@192.168.0.128:~/movie.mkv ~/
nmap
nmap
est un outil qui scanne le réseau et les ports réseau d'une machine afin de voir lesquels sont ouverts et de détecter d'éventuelles failles sur les machines. Il permet aussi de détecter des machines connectées au réseau et bien plus encore. J'ai fait un petit billet sur nmap, qui reste un outil de référence dans le monde de la sécurité informatique.iftop
dans la même veine que top, iftop sert à surveiller toutes les connexions réseau. Attention, iftop nécessite les privilèges root pour être lancé. Si vous n'êtes pas root, pensez à le faire précéder de sudo.
speedometer
un peu plus graphique que
iftop
,speedometer
monitor le traffic de vos entrées/sorties, permet de surveiller la progression d'un téléchargement, de savoir combien de temps il faudra pour transférer tel fichier ou encore de connaître la vitesse d'écriture de votre système.exim4
Exim est un MTA qui permet d'envoyer des email depuis le serveur. Sans lui (ou un autre MTA) la fonction
mail()
de php ou d'autres langages ne sera pas effective. Il en existe d'autres mais celui-ci est robuste, sécurisé, modulable et demande peu de ressources. Son installation est très simple, je l'explique dans cet article sur le logging.
Netstat
Ça c'est un morceau, et en faire le tour prendrait (au moins) un article entier. Quoi qu'il en soit cette commande est très pratique pour avoir un aperçu de ce qui se passe sur le réseau. On va donc voir directement quelques combinaisons de paramètres qui reviennent souvent.
-nr
pour la table de routage (revient au même que route).
-i
donne des statistiques sur les différentes interfaces réseau.
-s
personnellement je ne m'en sert que très rarement, mais c'est un résumé de toutes les stats réseaux, alors ça peut être utile de temps à autre.
-uta
liste toutes les connexions ouvertes (
u
pour udpt
pour tcp eta
pour afficher toutes les connexions (all)), à vous de jouer avec les paramètres pour filtrer un peu tout ça !-nap
alternative à
-uta
(plus facile à retenir pour sa signification anglosaxone), cette commande donne un résultat que je trouve plus lisible. Elle affiche toutes les connexions (a
) avec les adresses en format numérique (n
) et donne le PID correspondant (p
).-peanuts
Dans le genre facile à retenir, on a là la combinaison des bons arguments ! Elle donnera un résultat un peu plus détaillé que
-nap
puisqu'elle ajoute UDP et TCP avec du détail (-e
pour extended) et des statistiques (-s
) pour toutes les connexions.-ltupn
encore une variante qui nous permet de visualiser tous les services qui sont à l'écoute sur des ports (donc toutes les connexions ouvertes). Toutes les connexions tcp
-t
et udp-u
, à l'écoute-l
avec les programmes correspondant-p
et accessoirement on demande de ne pas résoudre les nom de protocole avec-n
.-l
permet d'afficher toutes les connexion en écoute (listen), on aura donc
netstat -lt
pour toutes les conexions tcp en écoute.-n
peut être pratique aussi car elle permet d'afficher les adresses en format numérique au lieu de tenter de déterminer le nom symbolique d'hôte, de port ou d'utilisateur.
-p
permet d'affiche le nom et le PID des processus propriétaires des connexions.
netstat
est la commande historique pour lister les connexions. Cependant, elle a été dépréciée en faveur de [ss
](https://www.it-connect.fr/les-connexions-sockets-avec-la-commande-ss/) qui est plus moderne et plus performante, surtout en présence de nombreuses connexions. La plupart des options sont les mêmes, vous ne serez donc pas perdu. Au besoin, un petit coup de man ss
ne peut pas faire de mal.
Commentaires
MagiCrazy dit –
J'aurais ajouté "poweroff", qui a le pouvoir de permettre le wake on lan par défaut, alors que "halt" l'empêche. A vérifier quand même, ça fait longtemps =)
Y'a aussi "lsof", pratique pour savoir quel fichier empêche de désactiver un point de montage par exemple...
Buzut dit –
Merci de ces infos ! Je crois que poweroff permet bien de faire ça, en revanche je ne connaissais pas du tout lsof ! Je vais regarder et ajouter tout ça à la liste.
Buzut dit –
Je ne suis pas arrivé à bien tirer au clair si poweroff permet le WoL tandis que shutdown ne le permet pas. Le man reste muet là-dessus, si t'as une ressource à me passer, je suis preneur !
MagiCrazy dit –
http://serverfault.com/a/191543
Il y a un semblant de réponse ici. En gros, halt ça coupe le système mais pas l'alimentation, alors que poweroff envoie explicitement le signal à l'ACPI d'éteindre la machine. Il est fort possible qu'aujourd'hui, sur nos machines, ce soit la même chose, je n'ai pas testé personnellement (pas encore ^^). En tous les cas, j'utilise poweroff, parce que c'est moins chiant que halt ou shutdown à taper, avec les arguments qu'il faut...
Buzut dit –
Yep je confirme pour halt ! J'avais même lancé un thread sur ubuntu FR ( http://forum.ubuntu-fr.org/viewtopic.php?pid=9808131#p9808131) parce que halt ne m'éteignait plus le serveur électriquement parlant depuis la MAJ 12.04, tandis qu'avant ça avait le même effet qu'un poweroff. De plus d'après ton lien, les trois manières sont aujourd'hui à peu près équivalente… ¡ WTF !
Quoi qu'il en soit la machine doit resté continuer à tourner niveau hardware pour que le WoL fonctionne ? Faudrait faire les tests, ça me parait bizarre quand même !
MagiCrazy dit –
Haha ! Ca se dénoue ! =)
Je crois bien que tout ce qui reste allumé pour le WoL c'est juste la Carte ethernet, puisqu'il y a une configuration dans le BIOS pour gérer tout ça !
destroyedlolo dit –
Salut,
Je viens un peu après la guerre mais bon :)
- shutdown : passe par les scripts d'arret de systemd ou d'initd - poweroff : coupe l'admin sans lancer les scripts d'arrets - halt : stoppe l'OS mais reste sur le monitor. Il ne me semble pas que ce serve a quoi que ce soit sous PC (conditionnel), mais on arrive sur OpenBoot sur les Spark par exemple.
Voili voila
Buzut dit –
Yep, c'est bien ça normalement. Mais avec halt, mes disques durs et ventilos (au moins ça, c'est vite remarqué…) continuent de tourner.
Et d'ailleurs, poweroff ne fait pas appel à halt justement ? Ahh !! ça m'énerve de ne pas trouver maintenant :evil:
qwerty dit –
Je pensais 101 comme 3 en binaire -_-'. Je suis grave. Merci du partage !
MagiCrazy dit –
101 en binaire, ça fait 5 surtout =)
qwerty dit –
Mea Culpa !
Touati dit –
C'est 5 pas 3
Wordpress, vaccin contre le piratage - Buzut | Axxcom | Scoop.it dit –
[...] 101 commandes indispensables sous linux - Buzut [...]
Girafe dit –
Je cherche a afficher a partir d'un repertoire le contenu d'un numero de ligne (12 par exemple). J'explique encore: j'ai un repertoire qui a 50 fichiers et pour afficher la ligne 12 ( Exemple: elle contient "Station: 09" )de chaque fichier, je dois avoir 50 lignes ayant: Station: 09 Station: 10 Station: 12 Station: 14 .... Station: n
MagiCrazy dit –
C'est pas clair, mais je sens que AWK peut t'aider !
http://www.gnu.org/software/gawk/manual/gawk.html
Wordpress, vaccin contre le piratage - Buzut | Axxcom | Scoop.it dit –
[…] 101 commandes indispensables sous linux - Buzut […]
Wordpress, vaccin contre le piratage - Buzut | Axxcom | Scoop.it dit –
[…] J’ai parlé ici des utilisateurs, mais la même logique s’applique bien entendu aux groupes, bien qu’ils ne soient souvent pas pris en compte dans l’hébergement, ne laissez pas à un groupe (www-data au hasard) la possibilité de faire n’importe quoi ! Pour toutes les commandes relatives à l’administration des droits, des utilisateurs et des groupes, je vous recommande mon article sur l’administration des systèmes Linux. […]
dvl dit –
Bonjour,
Sous Ubuntu, comment rediriger la communication d'un périphérique branché en USB mais dont les logiciels qui le font fonctionner ne communiquent que via le port COM ? Il faudrait donc que Linux fasse la transition COM 1 -> USB0 pour que le périph' fonctionne. J'ai testé quelques trouvailles mais sans succès.
C'est la seule chose qui me force encore à garder du windows dans un coin.
Buzut dit –
Pour le coup, je n'en ai vraiment aucune idée !!
Mais je serai curieux de savoir si tu trouves une technique qui marche :)
dvl dit –
Finalement j'ai fait au plus simple, j'ai acheté le même périphérique modèle wifi et ça marche sans soucis, plus besoin d'USB et COM1. Et donc bye bye la partition winchose.
Buzut dit –
Ça a le mérite de fonctionner ! Le problème quand on commence à bidouiller pour faire fonctionner des trucs classiques sur un ordi de tous les jours, en général c'est pas des solutions pérennes… Au moins là t'es tranquille
patrick L dit –
ln -s /dev/usb/hiddev0 /dev/com1
mais je pense pas que ca puisse se faire... l'usb envoie chaque message vers TOUS les periphériques en etoile.
en ligne série on envoie en direct on a pas forcement de numero de périphérique à envoyer. Pour une imprimante serie je me moquais d'envoyer un numero. D'accord ensuite je pouvais faire du hard de facon à envoyer sur la ligne en mettant un numéro de code.. tout la ligne recevait le message mais pour emettre. je devais mettre un signal rts de demande d'emettre et vérifier le cts qui autorise.
le usb marche pas du tout pareil. on a systematiquement un numero de périphérique qui est géré par une administration.
si ton imprimante est en usb il faut que tu ais le numero de usb... les deux vendor_id et usb_id
sur un terminal tapes lsusb et il faut que tu aies le protocole pour envoyer sur usb.
gui dit –
Bonsoir,
je découvre les commandes linux. Possédant un Nas, je souhaiterais vérifier le transfert de fichiers. Est-il possible de visualiser si des transferts de fichiers sont en cours. Que ce soit via le réseau ou d'un Usb vers le Nas. Merci
Buzut dit –
Je te conseille de creuser du côté de speedometer pour ça. En revanche pour l'usb, je ne sais pas si ça fera l'affaire. Tu pourras déduire ça des lectures à partir du disque. Cependant, il doit y avoir des outils dédiés pour l'usb. Une petite recherche dans ton moteur favoris t'en dira plus !
gui dit –
Merci
Cascador dit –
Hello,
Je pense qu'il serait de bon ton de rajouter les commandes awk et shutdown.
Les petites erreurs : -e « ssh -p 443″ passer rot et le rester apt-cahche search elle fourni
Il faudrait préciser que ça écrase le fichier si il existe : > : renvoyer le resultat dans un fichier
Excellent article !
Tcho !
Buzut dit –
Merci pour ton commentaire, tes suggestions et corrections, j'ai pris tout ça en compte.
À plus !
philippe bdx dit –
hellp :
Bizut; j'ai trouver ta page en cherchant un autre truc et pour le coup elle est dans mes favoris ;)
Une chose c'est quoi ton terminal, sur un mac ?
ciao merci
philipe midle class user "sous" ubnutu
Buzut dit –
Salut,
J'utilise tout simmplement Terminal.app, la version par défaut de Mac OSX
https://en.wikipedia.org/wiki/Terminal_%28OS_X%29
Très bon choix pour Ubuntu que j'utilise aussi dans sa version serveur.
À bientôt :)
Rado dit –
Bjr,
y-a-t-il une commande ou une combinaison de commande pour re-detecter/re-installer les périphériques (cartes réseaux, sons, ...)
Ahmed dit –
C'est incroyable le nombre de commandes et combinaisons possibles qu'il est possible d 'utiliser sous LINUX! C'est vrai qu'il y en a tellement que ca devient difficile de tout retenir.. Hop imprimé ! :D
Buzut dit –
Je suis content que ça puisse servir !
Souki dit –
j'ai besoin de la commande qui permet de visualiser les partages d'une machine stp..Heelp
Buzut dit –
Les partages d'une machine?? C'est à dire?
Souki dit –
pour avoir la liste des ressources partagées sur un réseau ?
Buzut dit –
netstat peut te fournir ça. Tu veux afficher toutes les connexions tcp
-t
et udp-u
, à l'écoute-l
avec les programmes correspondant-p
. Tu peux même lui demander de ne pas résoudre les protocoles-n
. Ce qui nous donnenetstat -ltupn
Souki dit –
Merciiiii bcp pour ta réponse :)
safaa dit –
j’ai besoin de les commandes qui permet de faire une fiche technique de mon disque dur
Frédo 31320 dit –
Bonjour,
Très intéressant tout ça! :-) J'ai toutefois une question...
Nos utilisateurs (qui n'ont pas les droits root sur les machines) et qui utilisent une session utilisateur dédiée peuvent s'ils le souhaitent modifier la configuration réseau via l'interface graphique. Pas bon du tout.... :-P Le simple fait de cocher "Connexion système" au même endroit sur la session admin résout le problème... Le hic est que le parc est assez conséquent (environ 400 machines) et qu'il n'est pas possible de faire cette modif poste à poste sur tout le parc sans avoir à recloner... Je n'ai pas trouvé la commande qui permet cela et qui permettrait de scripter cette manip. Quelqu'un a une idée? Merci! ;-)
Buzut dit –
Tu peux peut être desactiver le network manager cf dans cet article http://www.sitepoint.com/ubuntu-12-04-lts-precise-pangolin-networking-tips-and-tricks/
Alain dit –
Bonsoir et merci pour cet article. Je crée un fichier compressé sur un serveur Raspberry avec la commande tar zvcf - ./today | ssh osmc@192.168.1.42 "cat > /media/raspdisk/abach/today.tar.gz" Je voudrais que ce fichier today.tar.gz contienne exactement ce que j'ai dans ./today, que j'y ajoute ou supprime des fichiers. Comme je ne sais pas s'il existe des options à la première partie de ma ligne de commande, je voudrais supprimer le fichier compressé avant de lancer cette commande. J'ai cherché sur le Net mais là, je suis sec. Avez-vous une solution ?
Buzut dit –
Je nai rien qui me vienne a l'esorit en une ligne. Si jetais toi je ferai un petit script transfer_today.sh : 1 tu zippes 2 tu transferts avec scp 3 tu effaces le zip local
Et voila. Tu peux ensuite le mettre en cron et avoir la commande s'executer tous les jours.
Alain dit –
La réponse c'est faite d'elle même. Ma ligne de commande écrase systématiquement le fichier compressé sur le serveur distant. C'est, certes, un peu plus long qu'une synchro mais ça fait le job
Lapinu dit –
Je vdrai savoir comment faire un programme qui Vérifie qui est connecté'
max dit –
salut merci pour ses renseignements précieux pour noob comme moi ^^
pacory dit –
erreur ntpdate synchronisation avec un serveur ntp et pas ftp
Buzut dit –
C'est corrigé, merci !
Sam dit –
Bel effort de rédaction, bien présenté, facile à lire,... Je me suis toujours dit que je ferais une page comme celle-ci et le manque de temps... Enfin bref... Merci !
Buzut dit –
Merci pour ton commentaire ! Si d'aventures il te semble qu'une commande manque à l'appel, n'hésites pas à me le signaler :)
Azim dit –
bonjour
dans la liste des commandes, donc à partir d'un terminal, je cherche la commande qui permet d'indexer un lecteur distant.
J'apporte une précision ici : par distant, j'entends les NAS mais aussi les répertoires se trouvant par exemple sur le HDD d'une box ou un hdd en usb ou/et en ethernet - ce qui est de mon point de vue sensiblement équivalent à un nas.
Si l'indexation n'est pas possible sous ubuntu 16.04, peut-être existe t'il un paquet ou un logiciel capable de faire cela ?
Par extension, si vous aviez une ligne de commande permettant de détecter les fichiers doublons .... je serai intéressé ( ou s'il existe un logiciel ...)
En tous cas merci de m'avoir lu
A buzut.fr bon site, clair sans fioriture, cela change de CCM qui fatigue la vue
Cordialement
Buzut dit –
Hello! Je n'ai jamais eu l'occasion de tester le montage de NFS. Il y a une doc plutôt complète sur redhat, je pense que c'est applicable sur de la Debian. Si tu testes ça, ton feedback sera le bienvenu.
Pour ce qui est des doublons il faut regarder du côté de fslint qui est inclut dans les dépôts de la plupart des distrib.
elhadj_oumar_bah dit –
en faite je besoin de l'aide je dois configurer et installer des services DNS et DHCP sous débian mais à vrai dire j'arrive pas à me retrouver.quelqu'un pour m'aider
safwen dit –
Bravo. Une bonne collection.
Buzut dit –
Merci :)
Franckito dit –
Bonjour. Cette page est très complète et bien utile pour les débutants. Je pense qu'il peut être utile de préciser trois petites choses : - l'option -u de la commande sort est très utile pour supprimer les doublons pendant le tri. Cela évite de piper le résultat dans un uniq, ce qui consomme plus de ressources. - dans le même esprit, l'option -o de grep, qui permet de n'afficher que la partie de la ligne qui correspond au motif recherché, et évite donc de piper la sortie dans un cut ou un awk. - la commande touch a pour but de modifier l'horodatage d'un fichier. Si le fichier n'existe pas, il est effectivement créé mais ce n'est pas le but de la commande. Pour créer très vite un fichier on peut également juste saisir "> fichier", mais ce n'est pas le but des redirections, juste une utilisation particulière. Je sais, je chipote.
Buzut dit –
Merci pour ton commentaire et les précisions ! Je modifie tout ça ASAP.
greg dit –
comment supprimer le mot de passe de son disque dur installé sous linux mint ou Lubuntu (je ne sais meme plus quelle version j'avais utilisé). Merci d'avance, je souhaite récupérer mon ssd bloqué.
Oumar dit –
Merci!!
Oumar dit –
Bonsoir Buzut! Je suis nouveau sur la programmation shell et je suis venu au prês de vous que vous m'aidez! le probleme est la suivante. Ecrire un programme shell qui permet de faire les actions suivante: 1.telecharge ,install et lance XAMPP automatiquement 2.Archive des éléments du repertoire personnelle qui ont été modifiés par l'utlisateurs sudoer il y'a duex jour dans le peripherique externe
Merci !! D'avance
Noos84 dit –
Bonjour,
j'aimerai savoir s'il existe une commande afin lancer automatiquement la dernière commande clavier
je vous explique j'ai une série de commande que je lance en une seule fois et j'aimerai faire remplacer une d'elle afin de ne pas faire de répétition voila
prime dit –
Pour exécuter la dernière commande, deux fois le point d'exclamation et taper entrer Exemple: >> ls (dernière commande) >> !! (pour la lancer à nouveau la dernière commande )
Buzut dit –
Hello, merci de la réponse que tu as apporté. Ça m'a d'ailleurs fait penser à ajouter ça à l'article ;)
gads dit –
Merci, c'est exactement ce qu'il me fallait, même si avec Centos certains outils sont différent. Tout juste un mois passée sur Centos et je pense que grâce aux articles de cette qualité je vais passer un portable sous linux. Je ne m'y connais pas suffisamment pour choisir, mais ce sera un choix entre ubuntu, Centos, debian, fedora ou autrechose.
Wordpress, vaccin contre le piratage - Buzut | Axxcom | Scoop.it dit –
[…] https://buzut.fr/101-commandes-indispensables-sous-linux/ […]
Httqm dit –
Salut Buzut,
jolie collection ;-)
Il y a tout de même un truc qui me dérange, c'est ce "kill -9" relayé de blog en blog (mais dont personne n'a pris le temps de réellement savoir à quoi ça sert... RTFM, qu'ils disaient...) Le "kill -9", c'est les pleins pouvoirs donnés à un hooligan, l'arme nucléaire à la portée du 1er venu ;-) Pour la faire courte (détails ici : http://doc.callmematthi.eu/BashIndex.html#kill_SIGKILL), un process qui reçoit un « kill -9 » va s’arrêter en l’état, sans fermer les fichiers ouverts, ni les sockets réseau, et sans libérer la RAM. Les processus arrêtés de cette façon vont consommer des ressources qui ne pourront être libérées que par un reboot. Concernant la RAM, même si c’est globalement « indolore » compte tenu de la quantité de RAM dispo, la RAM utilisée par le processus fermé via « kill -9 » ne sera pas libérée non plus. Si le « kill -9 » devient une habitude, les blocs de RAM non libérée vont se multiplier, limitant la quantité de RAM disponible (et finalement libérée via... un reboot) De plus, si le processus qui « retient » des fichiers est un démon, on n’a pas besoin de le tuer sauvagement pour le forcer à les libérer : un restart suffit généralement, un « kill -1 » revient au même pour les tueurs en série. Et s’il faut VRAIMENT tuer un processus, pensez au « kill -15 », tout aussi efficace que le « kill -9 » et tellement plus propre ;-)
Buzut dit –
Hello! Tu fais bien de remonter cette erreur. Je vais corriger ça. Merci pour cette précision :)
Buzut dit –
Hello again, Alors maintenant que j'ai pris le temps de lire un peu de doc, le
kill -15
revient au même que lekill
si je ne m'abuse.Il s'agit du SIGTERM</a>. D'après Wikipedia, "Le plus souvent, si le processus n'a pas obtempéré de lui-même après un certain temps, un <a href="https://fr.wikipedia.org/wiki/SIGKILL" rel="nofollow">SIGKILL non interceptable suivra.", ce qui voudrait dire qu'au cas où le processus ne s'arrête pas de lui-même, le SIGTERM est suivi d'un SIGKILL (commande
kill -9
).Néanmoins, parfois le processus ne veut rien savoir et kill ne suffit pas à le stopper. Dans ce cas, le
kill -9
semble la seule solution.Je n'avertis pas du danger du
kill -9
mais je ne recommande pas de l'utiliser à toute les sauces, je précise bien qu'il s'agit de forcer à quitter. Je vais donc souligner les dangers du kill en question, mais il me semble que cette commande à toute sa place ici.Ça te semble sensé, ou ai-je loupé quelque chose ?
Httqm dit –
C'est bien cela : le signal par défaut est le "TERM", donc faire un
kill
tout court revient à lancer unkill -15
.> "Néanmoins, parfois le processus ne veut rien savoir et
kill
ne suffit pas à le stopper. Dans ce cas, lekill -9
semble la seule solution."C'est exact, toute la nuance étant dans ce parfois : si
kill
(oukill -15
) ne suffit pas à stopper un process récalcitrant, la seule solution sera lekill -9
(pas joli, mais nécessaire). Lekill -9
a donc son utilité, mais étant donné l'état dans lequel il laisse le système (ressources pas libérées, ...), le mieux reste de tenter lekill -15
AVANT. Il y a de nombreux cas où cela suffit.Pour la petite histoire, le signal "TERM" (envoyé par
kill -15
) force réellement le process à se terminer. Les applications sont en général conçues pour détecter ce signal et se fermer proprement (ce qui explique que la fin du processus n'est pas instantanée, ni toujours possible). Le signal "kill" (dukill -9
) demande simplement au kernel de supprimer le processus concerné de la liste des processus vivants. Le CPU ne passera donc plus de temps à exécuter ce processus, mais tout le reste (fichiers ouverts, RAM, réseau) reste en l'état. C'est pourquoi lekill -9
est un peu "sale" et doit être considéré comme la solution de la dernière chance ;-)Zoumbaï dit –
Salut, chouette référence des commandes utiles - merci! :)
Il y a un gist reprennant le
apropos
de pas mal de commandes ici: https://gist.github.com/yunga/b036ac9749524e312fb8#file-cliref-mdC'est plus ou moins pratique parce que c'est trié par thème, du coup si l'on sait ce que l'on cherche on peut rapidement retrouver une commande, ou une commande semblable à une que l'on connait. Par contre, à part un lien vers la man page, il n'y a aucune explications en plus.
Kelek dit –
Bonsoir,
la remarque à propos de kill -9 me fait penser à la commande suivante, qui permet, okazou, de libérer la RAM :
sudo sysctl -w vm.drop_caches=3
Beau billet ! et bonne année.
Buzut dit –
Hello et bonne année ! Génial cette petite astuce, je vais rajouter ça ASAP, merci :)
noguera dit –
mille mercis pour ce tres bon article tres bien fait je vais bientot passer sous mint j 'ai actuellement un souci de partitionnement sur mon pc j'espere en sortir rapidement sinceres salutations pour cet exellent travail jl
meplus dit –
Il y a aussi la commande "watch" qui est très utile pour afficher en répétition une commande
Buzut dit –
Yes, ça peut s'avérer assez utile. Je l'ajoute !
John dit –
Bonjour, petit article trés sympa, néanmoins j'ai beaucoup de mal à trouver mon bonheur (ici, comme ailleurs sur le net), je m'explique : j'ai une machine qui tourne sous une distrib linux ne disposant pas d'interface graphique, en revanche j'aimerais pouvoir faire un etat de mon système de fichier sous forme arborescente , et je n'ai aucune envie de prendre ma machine et de taper des ls pour chaque directory avec mon tableau et mon marqueur à la main pour representer le fs, aussi je me demandais si il existait une commande Linux permettant d'afficher l'ensemble du filesystem sous forme arboresecente ?? ca me ferait gagner quelques heures et un peu de sueur ! ;)
François dit –
Il existe la commande tree qu'il te faudra probablement installer avec aptitude/apt-get :-)
Buzut dit –
Merci François d'avoir répondu à John !
François dit –
...et merci à toi pour ce regroupement de commandes dont je ne connaissais pas la moitié, je reviendrai souvent ici ;-) http://m.memegen.com/7b6q1b.jpg
Buzut dit –
:)
John dit –
Merci François ! je Teste ça dés que possible ! ;)
Gabard Jean-Luc dit –
Bonjour Vraiment une bonne référence des commandes linux. Pour ma part, j'essaie de configurer un serveur domotique sur raspberry. j'ai un problème récurent de serveur qui devient inaccessible depuis une même adresse ip pendant de longues périodes. par netstat, je vois que le problème est que de temps en temps une liaison reste établi sans aucun processus exemple pi@raspberrypi:~ $ sudo netstat -4epn Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat User Inode PID/Program name tcp 425 0 127.0.0.1:8080 127.0.0.1:41422 ESTABLISHED 0 0 - Mais après avoir localisé ce problème, je suis bloqué sur la solution pour y remédier.
Viallet dit –
Bonjour, un petit souci sur mon terminal( Mac Os High Sierra) plus aucune commande ne peut être passée le résultat est command not found ex: sudo apachectl stop... il se présente comme ceci
Last login: Sat Feb 24 14:19:45 on ttys000 You have mail. -bash: /usr/local/mysql/bin: is a directory xxxxx:~ xxxxx$ j'ai du mal à trouvre dans tous les forum ce qu'il faut faire merci de votre aide
Erwan dit –
Bonjour,
Très bonne liste pour débutants motivés et utilisateurs curieux, bien présenté en plus.
Pour le grep, il y a l'option peu connue et super utile '-v' qui fait le filtre inverse : c'est à dire afficher tout ce qui ne contient pas le motif. De même il y a egrep ou grep -e pour utiliser des regexp. Donc par exemple un : egrep -v '^#|=no' /etc/fichier.conf Pourrait afficher un fichier de config sans les commentaires ni les paramètres désactivés. De même en cas d'utilisation classique : un grep des erreurs dans un fichier de log, mais pipé sur un grep -v permet d'éliminer les 95% "d'erreurs connues" et d'afficher uniquement les 5% d'erreurs "intéressantes".
Et sinon il y a nc ou netcat, le couteau Suisse réseau qui peut mériter une mention pour utilisateurs avancés, avec un lien vers une section dédiée.
Un peu d'iptables aussi (qui mérite de longs tuto) ? Ou au moins une install de fail2ban pour se sécuriser des bots ssh/http sur un serveur.
Buzut dit –
Hello, Désolé de la réponse ultra tardive. Merci beaucoup pour ce commentaire de qualité. J'ai ajouté ta précision pour le
grep
.nc
et/ounetcat
, il faudrait que je prenne le temps pour faire un article complet ; idem pouriptables
(c'est dans ma listes des articles à écrire, mais elle est très très longue…).Concernant
fail2ban
, j'avais déjà un article à ce sujet donc j'ai ajouté un lien vers l'article.lagrenouille dit –
salut ton doigt à fourché c'est -P ssh -D 2013 login@ip_serveur_distant
Buzut dit –
Hello, Il ne me semble pas.
-D
c'est bien pour redirigé le trafic local.-p
minuscule pour se connecter en ssh à un port alternatif (autre que 22) et je n'ai pas connaissance de-P
majuscule.Amandine dit –
Bonjour, Je n'y connais pas grand chose et j'ai besoin d’éclaircissement. Suite à une coupure de courant qui a éteint l'ordinateur alors que je copiais des fichiers sur mon disque dur externe, lorsque j'ouvre le dit dossier il me marque "fichier vide". Comment faire pour récupérer les vidéos et documents présents dans ce dossier ? Merci de vos réponses, Cordialement
hacker dit –
salut merci pour les commandes ma question est comment installer un fichier .tar.gz et aussi j'aimerais savoir l'utilisation de la commande iptable
Philippe Vaille- dit –
Bonne présentation des commandes. Améliorer le sommaire en ajoutant sur chaque ligne les commandes du chapitre Une police un peu plus petite pour gagner des lignes et des pages de présentation Un site à faire connaître avec celui d’ubuntu Les discussions sont intéressantes, bien rédigées, claires. Bravo!!
Buzut dit –
Merci pour ton commentaire. Je vais tenter de prendre ça en considération au prochain re-design du site (dès que j'ai un moment).
Eric dit –
Bonsoir, Sacré boulot, Bravo!!! C'est aussi à nous de découvrir les choses par nous même. Ceci étant dit, c'est un peu plus facile (et même beaucoup :) ) avec les bases que tu viens de nous décrire. Encore : "UN GRAND MERCI!!!" Pour Buzut, Hip,hip,hip.... HOURRAHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!
Buzut dit –
Merci pour ton encourageant commentaire ! 😀
Chris63 dit –
Je confirme cela mérite vraiment un HIP HIP HOURRA, BRAVO à Buzut
lefabdu51 dit –
salut tu peux rajouter useradd et groupadd, qui contrairement aux commandes adduser et addgroup ne sont pas utilisable dans un script car ce sont des commandes interactives....
Diarra Le LION dit –
Article assez intéressant :) . Merci beaucoup . Il y a aussi la commande du -c pour connaitre la taille d'un dossier et sous dossier
Nils dit –
Bonjour, tout plein de choses très intéressantes ! Mille merci.
Pour : wget => copie un fichier distant sur l'ordinateur. j'aurais plutôt écrit "TELECHARGE un fichier distant sur l'ordinateur."
ptitjoz dit –
bien ! ça m'a servi de détruire une ligne dans history je m'était mis en sudo su et pas moyen de retrouver le fichier physique
jpr dit –
Bonjour, Je suis sous MINT 19 64 bits . Je voudrais revenir sous Mint 17 en 32 bits. Avez vous une solution? Merci
Chris63 dit –
Bonjour, un simple passage pour donner un simple merci ;)
Buzut dit –
Ça fait toujours plaisir 😀
Mansho dit –
Bonjour et merci... C’est vrai que l'on prend rarement le temps de remercier les "donateurs" d'info lorsque l'on est pris dans la recherche d'une résolution de problème, réaction naturel et égoïste qui s’estompent en côtoyant l’univers du libre.
Buzut dit –
On est tous un peu comme ça, c’est naturel ! Merci pour ton message :)
Georges dit –
Excellent tutoriel système !
Buzut dit –
Merci :)
Georges dit –
Dans les trucs "utiles" (carte graphique) surtout lorsqu'on passe d'une machine à une autre :
1) Version de l'OpenGL
glxinfo |grep "OpenGL version string"
2) Le nom de la carte graphique
lspci | grep VGA | cut -d : -f 3
3) Résolution utilisée
xrandr | grep current
4) Savoir si l'accélération matérielle est utilisée
glxinfo | grep "direct rendering"
5) La version du serveur X
grep "X.Org X Server" /var/log/Xorg.0.log
LDVC@ dit –
Très bien ce résumé de commandes pratiques. Je vais mieux travailler.
ziadobom dit –
<b>its good</b>
Titi dit –
Je trouve tes sites formidables ! :-)
Rejoignez la discussion !