Certaines commandes Linux sont très pratiques, voir indispensables.
Parce qu'il est impossible de retenir toutes les commandes, je vous propose à travers ce billet celles que j'utilise le plus souvent, ou qui sont tout simplement intéressantes et peu courantes. Voici mon mémo ou memento personnel, en libre accès.
Ce billet est régulièrement mis à jour, n'hésitez pas à revenir, les dernières commandes ajoutées sont en haut.
Problèmes de Grub
Réinstaller Grub :
grub-install /dev/sda
dpkg-reconfigure grub-pc
ou plus complet : http://ubuntuforums.org/showthread.php?t=1581099
Chrooter un environnement
En version rapide depuis un LiveCD comme Ubuntu :
- sudo fdisk -l (pour déterminer le nom du disque depuis le LiveCD Ubuntu, exemple “/dev/sdxy″ - avec x le disque dur et y la partition.). Personnellement je préfère la commande blkid
- sudo mount /dev/sdxy /mnt
- sudo mount --bind /dev /mnt/dev
- sudo mount --bind /proc /mnt/proc
- sudo mount --bind /sys /mnt/sys
- sudo chroot /mnt
- apt-get install grub-pc (facultatif, seulement si vous êtes sous Ubuntu/Debian et souhaitez réinstaller)
- grub-mkconfig -o /boot/grub/grub.cfg (assurez-vous qu'aucun message d'erreur ne soit renvoyé)
- grub-install /dev/sdx (essayer grub-install --recheck /dev/sdxy si cela ne fonctionne pas)
- Ctrl+D (pour quitter le chroot)
- sudo umount /mnt/dev
- sudo umount /mnt
Compiler un noyau Debian
http://www.chicoree.fr/w/Compiler_un_noyau_Linux_sous_Debian
Comparer le contenu de deux répertoires (non récursif)
comm -3 <(ls /rep1/) <(ls /rep2/)
Récupérer la sortie d'une commande dans une variable
var=$(command-name-here) var=$(command-name-here arg1) var=$(/path/to/command) var=$(/path/to/command arg1 arg2)
Ou :
var=`command-name-here` var=`command-name-here arg1` var=`/path/to/command` var=`/path/to/command arg1 arg2`
Récupérer la date et l'heure dans une variable
madate=$(date +"%d/%m/%Y %T")
Vérifier si un fichier existe en une seule ligne
[ -f /etc/hosts ] && echo "Existe" || echo "N'existe PAS"
Changer de shell
chsh -s /bin/bash
Lister les shells :
chsh --list-shells
Copier rapidement un fichier/dossier
Méthode "Brace Expansion"
Garder sa Debian à jour
Appliquer les màj de sécurité automatiquement
Gestionnaire de màj à distance
Montage et démontage CIFS
Monter une ressource (partage windows) depuis Linux:
mount.cifs //serveur/partage /mnt/cifs/montage -o username=utilisateur,password=mot_de_passe
Démonter le partage :
umount -l /mnt/montage
Je vous conseille d'utiliser plutôt autofs que de tout faire à la main !
Liste des processus utilisant un port
Pour lister les ports en écoute "LISTEN" et savoir quel processus monopolise un port précis :
lsof -i
(linux et bsd)
Ou :
netstat -npl | grep mysql
Comprendre et débuter avec IPTables
Raccourcis clavier pour bash
Forcer la vitesse d'une carte réseau
Avec ethtool :
/usr/sbin/ethtool -s eth1 speed 100 duplex full autoneg off
Avec mii-tool :
/sbin/mii-tool -F 100baseTx-FD eth0
Entrées et sorties d'un script
Voir cette documentation
Connaître la version d'une distribution
more /etc/debian_version
(sous debian)
more /etc/redhat-release
(sous redhat)
more /etc/fedora-release
(sous fedora)
lsb_release -rd
(sous certaines distributions)
chkconfig et les run level
Debian Like (Ubuntu, etc.)
0 : Arrêt 1 : Mode maintenance 2 à 5 : Mode multi utilisateur complet avec serveur graphique si installé. 6 : Redémarrage
Attention : inittab a été remplacé par Upstart sous Ubuntu
RedHat Like (CentOS, Mandriva, etc.)
0 : Arrêt 1 : Mode maintenance 2 : Mode multiutilisateur (sans la couche réseau) 3 : Mode multiutilisateur (avec la couche réseau) 4 : Inutilisé 5 : Mode multiutilisateur avec serveur graphique 6 : Redémarrage
Pour lister les run level d'un service :
chkconfig --list nom_du_service
(Pensez à installer chkconfig via apt/yum si non installé)
Pour définir les run level d'un service :
chkconfig --level 23456 nom_du_service on
notice : remplacer "23456" par les run level souhaités
Connaître la version d'une distribution Debian
more /etc/debian_version
Tunnel SSH avec translation de port local (local forwarding)
ssh -L <port_local>:<hote_cible>:<port_destination> user@server -pXX
(xx = port ssh, à préciser si différent de 22)
Exemple :
ssh -L 9089:localhost:3389 xhark@109.238.2.200 -p443
Cela aura pour effet de rediriger toutes les requêtes arrivant sur le port 9089 de votre machine local vers le port 3389 de la machine distante. Dans cet exemple, il s'agit d'une connexion sur un serveur Windows ayant OpenSSH écoutant sur le port 443. Le but est de réaliser un tunnel SSH pour prendre le contrôle en bureau à distance (RDP) sur le port par défaut 3389.
Tunnel SSH avec translation de port dynamique (dynamic forwarding)
ssh -D <port_local> @<hote_cible> -pXX
Exemple :
ssh -D 8080 xhark@109.238.2.200 -p443
Dans cet exemple nous ouvrons un tunnel dynamique qui permettra de surfer à travers le tunnel SSH via un proxy de type Socks.
Afficher l'historique des connexions SSH
last | more
Terminer une session shell (logout en terminal)
combinaison des touches : ctrl+D
Archive .gz
Liste les fichiers contenus dans l'archive :
gunzip -l archive.gz
Extraire (dans le dossier courant)
gunzip -d archive.gz
Archive .tar
Extraire (dans le dossier courant) :
tar xvf archive.tar
Archive .tar.gz
Compresser :
tar zcvf archive.tar.gz mon_rep/
z : compresser en utilisant gzip
c : creation
v : bavard (liste les fichiers à l'écran)
f : fichier
Extraire :
tar zxvf archive.tar.gz
Décompresser un BZ2 :
tar xjvf archive.tar.bz2
Compresser en ZIP
zip -r nom_du_fichier.zip repertoire_ou_fichier
r : récursif
Décompresser une archive ZIP
unzip nom_du_fichier.zip -d dossier_de_destination
Droits (chmod)
Tableau de correspondance binaire,logique et décimal :
Binaire --- Logique --- Décimal 000 -------- (---) ------- 0 001 -------- (--x) ------- 1 010 -------- (-w-) ------- 2 011 -------- (-wx) ------- 3 100 -------- (r--) ------- 4 101 -------- (r-x) ------- 5 110 -------- (rw-) ------- 6 111 -------- (rwx) ------- 7
Plus d'infos sur le chmod chez Linux-France
Pour tout ce qui concerne SUID, GUID et le Sticky Bit voir ici.
Arbre des processus
ps axjf
Résume les commandes linux importantes :
info coreutils
Documentation rapide sur une commande :
whatis ma_commande
Rechercher un fichier avec locate
locate monfichier
Pour mettre à jour votre base de recherche :
updatedb
Rechercher un fichier avec find
find /chemin -iname 'monfichier'
Exemple :
find / -iname '*.conf'
Localiser une commande
whereis ma_commande
Lister tous fichiers du répertoire courant
ls -all
Afficher le répertoire courant
pwd
Lister seulement les adresses IP des interfaces réseau
ifconfig | grep 'inet'
Lister les processus
ps aux | grep 'nom du processus recherché'
pstree
Réaliser et compresser un dump mysql (GZ)
mysqldump -u utilisateur base_mysql | gzip > /repertoire/de/destination/mondump.gz
Accéder à un partage Windows / Samba
mkdir /mnt/windows
mount -t cifs //adresseip/monpartage /mnt/windows -o user=utilisateur,pass=motdepasse
Envoyer un email en bash
Sans pièce jointe :
echo -e "Corps du mail\nCeci est un retour a la ligne" | mail -s "Sujet du mail" votre@email.tld
Avec un fichier en lieu et place du corps du mail (ici aussi) :
mail -s "Le sujet de mon message" votre@email.tld < piece_jointe.ext
Pièce jointe avec un echo + mutt :
echo -e "Corps du mail\nCeci est un retour a la ligne" | mutt "votre@email.tld" -b "destinataire-en-copie@email.tld" -s "Sujet du mail" -a piece_jointe.ext
ou avec mutt + pièce jointe (sans echo) :
mutt -s "Sujet du mail" -a piecejointe < "Contenu du mail"
Mémo de scripts shell / bash
Les filtres (grep, cut, tr, sed)
Informations relatives au système (matériel)
Je vous recommande de prendre connaissance de cette page.
Autres commandes à garder sous le coude
Voir chez CrouCrou
Toutes les commandes ?
Par ailleurs, si vous recherchez toutes les commandes fondamentales :
- consultez le wiki de Linux France
- voici une très bonne synthèse (version miroir mirroir document PDF) :
Sans bien sûr parler commandes dites "de base" : reboot, ping, nslookup, etc. Voici une carte heuristique des commandes Linux.
Systèmes AIX
Voir le mémo chez System-Linux.eu
Afficher le répertoire courant
pwd










Déjà 17 commentaires
dit :
9 juillet 2009 à 13h40
Hop imprimé
9 juillet 2009 à 15h45
Pour « Lister les processus » il y aussi pgrep
et son pendant très utile: pkill
(genre pkill -9 firefox)
10 juillet 2009 à 9h59
Merci pour ces commandes!
C’est vrai qu’il y en a tellement que ca devient difficile de tout retenir…
14 juillet 2009 à 15h26
C’est incroyable le nombre de commandes et combinaisons possibles qu’il est possible d ‘utiliser sous LINUX!
dit :
17 novembre 2009 à 10h28
J’aurai aussi mis la combinaison de find avec grep et l’option -H pour rechercher les fichiers contenant un mot définis et afficher leurs noms.
Mais merci pour le résumé.
17 novembre 2009 à 10h42
Il est vrai que j’ai omis de parler de find, je ferai un autre update
16 décembre 2009 à 12h48
[...] Vous pouvez imaginer de nombreuses utilisations. Par exemple : créer un cron journalier qui se chargera d’envoyer un email de rappel à chaque utilisateur dépassant son quota. Ou bien de recevoir ce fichier chaque jour par email (cf. « les commandes qui vous feront gagner du temps« ). [...]
dit :
17 juillet 2010 à 16h05
tar zcvf archive.tar.gz mon_rep/
c : creation
v : bavard
j : compresser
f : nom du fichier suivi
Il y a pas une erreur ici ?!
18 juillet 2010 à 0h05
@Yamy : c’est corrigé (« j » devient « z » dans la légende, la commande était bonne)
5 novembre 2010 à 15h13
[...] belle compilation de commandes Linux pour gagner du temps : [...]
13 mai 2011 à 20h29
Il y a rien sur la commande Cron, mais sinon, c’est pas ces petits rappels des commandes.
10 août 2011 à 18h19
Merci pour la commande mail avec pièce jointe ! Ca marche ! Et c’est simple !
14 septembre 2012 à 16h40
[...] Les commandes sous Linux qu’il vous faut connaître pour gagner du temps : via @xhark [...]
19 novembre 2012 à 16h38
[...] Lien utile chez Blogmotion. [...]
18 décembre 2012 à 20h52
[...] Je l'ai ajouté à billet sur les commandes linux qui vous feront gagner du temps. [...]
16 mars 2013 à 14h25
[...] (6) Quelques commandes linux utiles ! [01/03/2013 @ 10:26:45] [...]
28 mars 2013 à 20h06
[...] [...]