Table des matières

Le mode console

Principe de syntaxe :
commande [option1|option2] <paramètres requis> {paramètres facultatifs}

Plusieurs façons de lancer un Terminal (Ubuntu 22.04) :

- Alt + F2 et taper gnome-terminal
- CTRL + ALT + Fn où Fn est une des touches F3 à F6, pour basculer dans une console virtuelle.
- CTRL + ALT + F2 pour sortir du mode console virtuelle.
- ALT + Fn pour basculer entre les consoles virtuelles ouvertes

- Revenir directement à la racine : cd /
- Revenir directement à la racine de l’utilisateur local : cd
- Pour créer un nouveau fichier vierge : touch nom_du_fichier
- Pour exécuter un fichier qui n'est pas un exécutable, le faire précéder de “point espace”.

Sudo ou comment se donner les droits administrateur

une règle simple :
- Utiliser sudo pour les commandes et les programmes fonctionnant et exécutés depuis le terminal.
- Utiliser gksudo ou gksu pour démarrer un programme graphique avec les droits administrateur
Exemple : Alt + F2 - gksu gedit (ou gksu gedit /chemin/fichier)

Pour rendre la console root permanent :
- Une fois la console ouverte, taper sudo -i (ou sudo su) + mot de passe de la session courante.
ou
- Alt + F2 et taper gksudo xterm

Tout savoir sur le sudo : http://doc.ubuntu-fr.org/sudo

Editeur de texte en ligne de commande : vi

vi fichier.xxx ou sudo vi fichier.xxx

Quand on ouvre l'éditeur vi, il est par défaut dans le mode interactif (ou mode sélection)
Ce mode permet :

Le mode insertion permet d'insérer des caractères :

Le mode commande permet de lancer des commades telles que “quitter” ou “enregistrer”

Opérations courantes

Commandes de base

Rechercher un fichier :
- depuis la racine : find / | grep nomdufichier ou find / -name smb.conf
- depuis le dossier courant : find . | grep nomdufichier ou find . -name smb.conf

Rechercher une chaine de caractères dans un fichier :
- depuis la racine : find / -type f -exec grep -l chainecaractère {} \;
- depuis le dossier courant : find . -type f -exec grep -l chainecaractère {} \;

Rechercher un fichier de type dossier dant le nom est monDossier et le supprimer de manière récursive :
- depuis le dossier courant : find . -type d -name “monDossier” -exec rm -rf {} \;

Compter le nombre de fichiers (sans compter les dossiers) : ls -lR *|grep ^-|wc -l

Lister les services : faire un ls ou un ls -l sur le dossier /etc/init.d
Redémarrer le service Samba : sudo service smbd restart

Pour trouver le chemin du fichier exécutable d'une application : whereis
Exemple : whereis blender ⇒ /usr/bin/blender

sudo shutdown -h now (arrêter le pc)
sudo shutdown -r now (redémarrer le pc)

Monter un disque ou une partition locale :
- Rechercher le matériel (sdc) et la partition à monter (sdc1, sdc2…) : mount ou df -h ou fdisk -l
- Créer un point de montage : sudo mkdir /media/stock (par exemple)
- Monter le disque : sudo mount -t [type] /dev/sdc2 /media/stock
- Dans le cas d'un format “ext”, le type de fichiers est normalement détecté par la commande mount.
- La commande suivante suffira : sudo mount /dev/sdc2 /media/stock
- Dans le cas d'un format FAT ou NTFS il faudra remplacer [type] par vfat (Fat32) ou ntfs-g3 (NTFS)
- sudo umount /media/stock

Monter un répertoire local sur un répertoire distant :

Démonter le répertoire local sur lequel a été monté un répertoire distant :

sudo umount /media/docs

Monter une clé USB :
- Rechercher le matériel (sdb) et la partition à monter (sdb1, sdb2…) : mount ou df -h ou fdisk -l
- Créer un point de montage : sudo mkdir /media/disk (par exemple)
- Monter la clé : sudo mount /dev/sdb1 /media/disk
(mount -t vfat /dev/sdb1 /media/disk pour préciser le système de fichier FAT)
- sudo umount -f /media/disk

Copier un fichier vers le dossier monté précédement :
- cp /opt/virtual_Machine/Osiris.vmdk /media/disk

Copier tout le contenu d'un dossier vers le dossier monté précédement :
- cp -rv /opt/virtual_Machine/osiris/ /media/disk

Connaître son système

Connaître son matériel

http://doc.ubuntu-fr.org/materiel
http://doc.ubuntu-fr.org/connaitre_son_materiel

Quand tout est perdu...

…Avant un reboot hard de la machine :

Gestion des archives

tar -tvf archive.tar : Lire une archive
tar -tzvf archive.tar.gz : Lire une archive compressée en Gzip
tar -xvf archive.tar : Extraire une archive
tar -xzvf archive.tar.gz : Extraire une archive compressée en Gzip
tar -cvf archive.tar /répertoire : Créer une archive
tar -czvf bureau.tar.gz /home/fred/Bureau : Créer une archive compressée en Gzip

Commandes réseau

(fonctionne si les paquets “links” et “sox” sont installés (par défaut sur Ubuntu))
- sudo mii-tool eth0 : permet de vérifier si la carte réseau est bien connectée (réponse link ok si active)
Si la carte réseau ne porte pas le nom eth0 on peut rechercher dans les messages de démarrage du noyau le changement de nom avec la commade suivante : dmesg | grep “eth”
- Si la carte wifi est active et que l'on est sûr qu'il y a des réseaux, la commande iwlist scan doit renvoyer des réseaux sinon c'est que la carte est désactivée.
- La commande route -n permettra de déterminer l'IP de la box.

netstat -taupen (affiche la liste des ports occupés)

Pour vider le cache DNS et le recharger (équivalent ipconfig /flushdns)
sudo /etc/init.d/dns-clean start
sudo /etc/init.d/dns-clean restart
sudo /etc/init.d/dns-clean force-reload

Divers

Pour importer une clé de signature, voir didacticiel
http://doc.ubuntu-fr.org/tutoriel/comment_modifier_sources_maj

Pour modifier l'orientation EXIF d'un fichier jpeg
- jpegexiforient -1 … -8 nomdufichier.jpg

Commandes avancées, fonctions, fichier bash

Dans une ligne de commandes, le | sert à imbriquer les commandes les unes à la suite des autres dans le but de faire traiter par la commande suivante le résultat de la commande précédente.
Utiliser le ; si l’on veut faire suivre plusieurs commandes indépendantes.

&& = AND
|| = OR
\ ; = met fin à une ligne de commandes

Pour exécuter en ligne de commande un fichier qui n’est pas un exécutable, le faire précéder de “point espace”.

Pour lire le niveau de gestion avançé de puissance pour le disque dur :
sudo hdparm -I /dev/sda | grep power

Pour régler un niveau de gestion de puissance pour le disque dur (255 désactive le parcage des têtes) :
sudo hdparm -B 255 /dev/sda

Gestion des paquets APT

APT est un projet relativement vaste, qui prévoyait à l'origine une interface graphique. Il repose sur une bibliothèque contenant le cœur de l'application et apt-get est la première interface — en ligne de commande — développée dans le cadre du projet. apt est une deuxième interface en ligne de commande fournie par APT qui corrige quelques erreurs de conception de apt-get.
De nombreuses interfaces graphiques sont ensuite apparues en tant que projets extérieurs : synaptic (interface graphique), aptitude (qui inclut à la fois une interface en mode texte et une interface graphique, bien que pas encore complète), wajig, etc. Le frontal le plus recommandé est apt. A noter cependant que les syntaxes en ligne de commande d'aptitude et d'apt-get sont très similaires (source).

Fichier des dépôts : /etc/apt/sources.list (éditer le fichier sources.list : apt edit-sources)
Les commandes suivante s'exécutent en root

Mise à jour de la liste des paquets disponibles : apt update
Installer les dernières versions de tous les paquets : apt upgrade ou apt full-upgrade
(La commande full-upgrade remplit la même fonction que upgrade mais peut aussi supprimer des paquets installés si cela est nécessaire pour résoudre un conflit entre des paquets.)
Installer un nouveau paquet : apt install <paquet>
Supprimer un paquet : apt remove <paquet>
Désinstaller les paquets indiqués avec leurs dépendances logicielles : apt autoremove <paquet>
Supprimer un paquet et ses fichiers de configuration : apt purge <paquet>
Désinstalle les paquets indiqués, les dépendances logicielles et leurs fichiers de configuration :

apt autoremove --purge <paquet>

Sans nom de paquet, désinstalle toutes les dépendances devenues inutiles et leurs fichiers de configuration :

apt autoremove --purge

Trouver des informations sur un paquet (installé ou pas) : sudo apt show <nom_du_paquet>
Utiliser apt pour trouver un paquet installé : sudo apt list –installed | grep <nom_du_paquet>
Rechercher l’existence d'un paquet avec dpkg : sudo dpkg -l | grep <nom_du_paquet>
- Indique la version si le paquet est installé : apt-cache policy <nom_du_paquet> | grep Installé
- Donne le status du paquet (installé ou pas) : dpkg -s <nom_du_paquet> | grep Status

Supprime la totalité des paquets d'installation présents dans /var/cache/apt/archives : apt clean
Possibilité de cumuler plusieurs commandes :

apt update && apt full-upgrade && apt autoremove --purge
sudo apt autoremove && sudo apt clean

Dépôts PPA

Pour lister les dépôts PPA présents sur votre système :

ls -l /etc/apt/sources.list.d/

Pour avoir le détail de tous les dépôts (PPA ou non) en une seule fois :

grep -Enrv --include='*.list' --include='*.sources' '^#|^$' /etc/apt

Ajout d'un PPA aux sources logicielles :

sudo add-apt-repository ppa:<nom_du_dépôt>
sudo apt update

Sources : (1) (2)

Gestion des paquets SNAP et Flatpak

ffmpeg

Installation de ffmpeg et liste des codecs disponibles :

sudo apt update
sudo apt install ffmpeg
ffmpeg -encoders
ffmpeg -decoders
ffmpeg -formats
ffmpeg -codecs

Vérifier la version de ffmpeg

ffmpeg -version

Exemple de conversions basiques :

ffmpeg -i input.mp4 output.webm
ffmpeg -i VideoFreebox.m2ts VideoFreebox.mp4  --> lisible sur tous supports

Exemple de conversion en x264 un fichier encodé en x265

ffmpeg -i input.mkv -c:v libx264 -crf 23 -preset medium output.mkv

Exemple de conversion plus complexe qui converti un fichier mts en avi :

ffmpeg -i input.mts -vcodec mjpeg -b 100M -acodec pcm_s16be output.avi

Sources :

Gestion des utilisateurs

Lister les utilisateurs ou les groupes :

compgen -u
compgen -g

Lister les groupes d'un utilisateur :

id <nom_user>
groups <nom_user>

Lister les membres d'un groupe :

getent group <nom_group>

Lister les connexions en cours sur le serveur :

who -u
users
w

Fermer une session utilisateur via la console :

sudo skill -KILL -u utilisateur

Pour fermer un terminal dont la connexion a été perdue (ssh par exemple)
Identifier la console à fermer :

~$ w
 11:54:31 up 15 days, 21:34,  6 users,  load average: 0,00, 0,00, 0,03
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
ubuntu   tty1     -                24oct.23 15days  0.45s  0.16s -bash
ubuntu   pts/0    -                24oct.23 15days  0.04s  0.25s sudo su
bhervoue pts/1    10.220.100.58    08:57    2:56m  0.72s  0.09s sshd: bhervouet [priv]
bhervoue pts/2    10.220.100.58    08:57   29:03   0.66s  0.69s sudo su -
friche   pts/3    10.185.124.75    11:02    1.00s  0.13s  0.00s w
friche   pts/4    10.185.124.75    11:50    4:17   0.02s  0.02s -bash

La commande w permet de visualiser les utilisateurs connectés et la commande en cours d'exécution. Dans l'exemple ci-dessus, je suis donc actuellement connecté sur 2 terminaux pts/3 & pts/4. On voit également que la commande w a été exécutée sur le terminal pts/3 et que le terminal pts/4 est inactif depuis 4 min et 17 sec. Il faut donc fermer le terminal pts/4.

Identifier le processus lié au terminal à fermer pts/4

ps -ef | grep friche@pts/4 | grep -v grep
friche     91990   91929  0 11:50 ?        00:00:00 sshd: friche@pts/4

Le terminal pts/4 est donc lié au processus 91990.

Fermer le terminal :

kill -s 9 91990

Créer un nouvel utilisateur :

sudo adduser <nom_new_user>

Ajouter un utilisateur à un groupe :

sudo adduser <nom_user> <nom_group>
sudo usermod -aG <nom_group> <nom_user>

Supprimer un utilisateur d'un groupe :

sudo deluser <nom_user> <nom_group>

Supprimer un utilisateur du système :

sudo userdel -r <nom_user>
sudo deluser --remove-home <nom_user>

Modifier un (ou son) mot de passe

sudo passwd <nom_user>

Saisir deux fois le nouveau mot de passe et le confirmer.

CRON

Pour vérifier si cron est en cours de fonctionnement exécuter la commande suivante :

ps aux | grep cron

La commande doit retourner au minimum une ligne de ce style :

root     	617  0.0  0.0   9420  2800 ?    	Ss   17:00   0:00 /usr/sbin/cron -f

Si la commande ne renvoie rien c'est que cron n'est pas démarré ou pas installé.

Installation rapide de cron sous Ubuntu :

sudo apt update && sudo apt install cron

Une fois installé, pour être sûr que le service soit lancé au démarrage du serveur, exécuter la commande suivante :

sudo systemctl enable cron

Voici quelques-unes des commandes de base :

crontab -e  —> pour créer et modifier un fichier crontab.
crontab -l  —> pour consulter les tâches planifiées de l'utilisateur courant.
crontab -r  —> pour supprimer les fichiers crontab.
sudo crontab -u utilisateur -e  —> pour modifier le fichier crontab d’un autre utilisateur avec un accès super-utilisateur.
sudo crontab -u utilisateur -l  —> pour consulter les tâches d’un autre utilisateur.
crontab -a nom_du_fichier  —> pour installer le nom_du_fichier sous forme de fichier crontab (sur certains systèmes, -a n’est pas nécessaire).

Pour créer une tâche Cron, le plus simple dans un premier temps est d'éditer le fichier de tâches Cron par la commande

crontab -e

Cette commande édite le fichier de tâches Cron de l'utilisateur courant. Chaque utilisateur a ses propres taches Cron, et donc son propre fichier de taches Cron.
Dans ce fichier chaque ligne correspond à une tache, et chaque ligne est composée de 5 champs séparés par des espaces.

Voici un exemple de tâche Cron qui exécute un script PHP pour la régénération de la table annuaire
Toutes les heure à partir de 7h30, de 7h à 20h, de lundi à vendredi :

# Génération de l'annuaire toutes les heures
30 7-20/1 * * mon,tue,wed,thu,fri /usr/bin/php /var/www/annuaire/generation_annuaire.php

Définition des entrées :

*    *    *    *    *   /home/user/bin/somecommand.sh
|    |    |    |    |            |
|    |    |    |    |    Commande ou Script à exécuter
|    |    |    |    |
|    |    |    | Jour de la semaine(0-6 | Sun-Sat)
|    |    |    |
|    |    |  Mois(1-12)
|    |    |
|    |  Jour du mois(1-31)
|    |
|   Heure(0-23)
|
Min(0-59)

Caractères appropriés à utiliser dans chaque fichier crontab :

Pour aller plus loin…

* * * * * nom_utilisateur /bin/touch /home/me/ding_dong
sudo crontab -e

Source 1
Source 2