Linux Cheat Sheet

Linux Cheat Sheet

Nicolas Schmid Lv3

Informations système

RAM

Afficher toutes les infos RAM de la machine:

1
sudo dmidecode -t 17 | grep -E "Size|Speed|Type|Manufacturer|Part Number|Configured"

Wireguard

VPN Open Source, je l’utilise pour publier des ports de mon serveur depuis mon VPS vu que y’a pas d’IP publique chez moi.

Commandes

Générer la clé publique et privée d’un serveur:

1
docker exec -it wireguard /bin/sh
1
wg genkey | tee privatekey | wg pubkey > publickey

Afficher les clés et les copier:

1
2
cat /privatekey
cat /publickey

Docker-compose

Le même sur tous les hosts, le /etc/wireguard contient la configuration wg0.conf.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
services:
wireguard:
image: linuxserver/wireguard:latest
container_name: wireguard
cap_add:
- NET_ADMIN
network_mode: host
volumes:
- /dev/net/tun:/dev/net/tun
- /data/wireguard:/etc/wireguard
environment:
- WG_COLOR_MODE=always
- LOG_LEVEL=info
restart: always

VPS

Configuration wg0.conf:

1
2
3
4
5
6
7
8
9
[Interface]
Address = {VPS_WG_IP}/24
ListenPort = 51820
PrivateKey = {VPS_PRIVATEKEY}

# Peer : Remote Host
[Peer]
PublicKey = {HOST_PUBLICKEY}
AllowedIPs = {HOST_WG_IP}/32,{HOST_LAN_IP}/32

Dans AllowedIPs, mettre l’IP Wireguard de l’host distant et l’IP qu’il a dans son LAN pour y accéder directement.

Host à distance

Configuration wg0.conf:

1
2
3
4
5
6
7
8
9
[Interface]
Address = {HOST_WG_IP}/24
PrivateKey = {HOST_PRIVATEKEY}

[Peer]
PublicKey = {VPS_PUBLICKEY}
Endpoint = {VPS_PUBLIC_IP}:51820
AllowedIPs = {VPS_WG_IP}/32
PersistentKeepalive = 25

Ubuntu Server Debloat & Power Optimisation

Comment rendre un Ubuntu server ultra light et réduire la consommation énergétique !

Tuto avec GPU Nvidia mais c’est pas obligatoire.

Mise à jour entière et nettoyage

1
sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y

Outils obligatoires / utiles:

1
sudo apt install btop htop nvtop curl wget nano -y

Driver Nvidia et utils (ex: ``nvidia-smi`)

1
2
sudo apt install nvidia-driver-580-server -y
sudo apt install nvidia-utils-580-server -y

Désactiver TOUS les services inutiles:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# Désactiver les services inutiles
systemctl disable cloud-config.service
systemctl disable cloud-final.service
systemctl disable cloud-init-local.service
systemctl disable cloud-init-main.service
systemctl disable cloud-init-network.service
systemctl disable snapd.service
systemctl disable snapd.socket
systemctl disable snapd.apparmor.service
systemctl disable snapd.seeded.service
systemctl disable snapd.autoimport.service
systemctl disable snapd.snap-repair.timer
systemctl disable ModemManager.service
systemctl disable udisks2.service
systemctl disable vgauth.service
systemctl disable open-iscsi.service
systemctl disable multipathd.service
systemctl disable thermald.service
systemctl disable ubuntu-advantage.service
systemctl disable ua-reboot-cmds.service
systemctl disable ua-timer.timer
systemctl disable apport.service
systemctl disable apport-autoreport.path
systemctl disable apport-autoreport.timer
systemctl disable apport-forward.socket
systemctl disable apt-daily.timer
systemctl disable apt-daily-upgrade.timer
systemctl disable update-notifier-download.timer
systemctl disable update-notifier-motd.timer
systemctl disable fwupd-refresh.timer
systemctl disable man-db.timer
systemctl disable logrotate.timer
systemctl disable dpkg-db-backup.timer
systemctl disable motd-news.timer
systemctl disable sysstat.service
systemctl disable sysstat-collect.timer
systemctl disable sysstat-rotate.timer
systemctl disable sysstat-summary.timer
systemctl disable e2scrub_reap.service
systemctl disable e2scrub_all.timer
systemctl disable mdcheck_start.timer
systemctl disable mdcheck_continue.timer
systemctl disable mdmonitor-oneshot.timer

Détruire SNAP une fois pour toutes:

1
2
3
4
5
6
7
snap list
systemctl stop snapd
systemctl disable snapd
apt purge -y snapd
rm -rf /snap
rm -rf /var/snap
rm -rf /var/lib/snapd

Démarer la race de cloud init:

1
2
3
apt purge -y cloud-init
rm -rf /etc/cloud
rm -rf /var/lib/cloud

Enlever modem manager:

1
apt purge -y modemmanager libqmi-glib5

Enlever les features de stockage SAN:

1
2
3
systemctl stop multipathd
systemctl disable multipathd
apt purge -y multipath-tools

Script d’auto-optimisation

Fichier /usr/local/bin/server-power-save.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash

##
## Économie GPU
##

# Persistence mode
nvidia-smi -pm 1
nvidia-smi -q | grep "Persistence Mode"

# Power limit (ton réglage)
nvidia-smi -pl 150
nvidia-smi --query-gpu=power.limit --format=csv

# Lock Clock
nvidia-smi --lock-gpu-clocks=2100,2400
nvidia-smi -q | grep Graphics
# Pour désactiver clock lock: sudo nvidia-smi --reset-gpu-clocks

# Vérification
nvidia-smi --query-gpu=power.limit,power.draw --format=csv

##
## Économie CPU
##

# Autotune Powertop
powertop --auto-tune

# Powersave mode
cpupower frequency-set -g schedutil

# Disable Turbo
echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo

Activer l’exécution du script:

1
chmod +x /usr/local/bin/server-power-save.sh

Démarrage automatique avec le serveur. Fichier /etc/systemd/system/server-power.service:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=Server Power Saving Configuration
After=network.target nvidia-persistenced.service
Wants=nvidia-persistenced.service

[Service]
Type=oneshot
ExecStartPre=/bin/sleep 15
ExecStart=/usr/local/bin/server-power-save.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Activer le service:

1
2
sudo systemctl daemon-reload
sudo systemctl enable server-power.service

Reclean et update le tout

1
sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo reboot

Désactiver IPv6

On va pas se mentir, c’est rare IPv6 dans un homelab, je préfère le désactiver de mes host:

1
sudo nano /etc/sysctl.d/99-disable-ipv6.conf

Contenu:

1
2
3
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Activer la configuration

1
sudo sysctl --system

Installer des pilotes iGPU Intel

Cette installation est testée sur les puces de 4th, 6th, 7th et 9th gen d’intel (leur iGPU)

1
2
3
4
5
6
7
8
9
10
11
sudo apt update && sudo apt install -y \
pciutils \
intel-gpu-tools \
vainfo \
clinfo \
clpeak \
intel-media-va-driver-non-free \
i965-va-driver \
intel-opencl-icd \
ocl-icd-libopencl1 \
python3-pyopencl

Tests de performance

Utile pour connaître la réelle performance d’un système Linux.

Système entier

Comment mettre à jenoux le serveur entier ? voici le secret:

1
stress-ng --cpu 0 --cpu-method all --vm 0 --vm-bytes 90% --hdd 0 --hdd-bytes 5G --iomix 0 --metrics-brief

Explication des paramètres:

Paramètre Effet destructeur
--cpu 0 Détecte le nombre total de cœurs de ton processeur et lance un processus de stress sur chacun d’entre eux.
--cpu-method all C’est la clé de ta demande : au lieu de faire un simple calcul, cela fait tourner cycliquement plus de 80 algorithmes différents (virgule flottante, cryptographie AES, hachage, compression, matrices, etc.). Cela garantit que toutes les unités de calcul physiques (ALU, FPU, registres) de ton CPU sont martelées.
--vm 0 --vm-bytes 90% Lance un processus par cœur qui va allouer, écrire, lire et libérer en boucle 90% de ta RAM disponible. Cela sature la bande passante mémoire et détruit le cache L1/L2/L3 du processeur. (On évite 100% pour que le noyau Linux ne tue pas le test instantanément via l’OOM Killer).
--hdd 0 --hdd-bytes 5G Lance un processus par cœur qui va écrire, lire, et supprimer des fichiers de 5 Go en boucle sur ton disque dur/SSD. Attention : sur un SSD, cela va littéralement brûler ses cycles d’écriture (TBW) à une vitesse folle.
--iomix 0 Génère un mélange chaotique d’opérations d’entrées/sorties (lecture, écriture, synchronisation) pour saturer les contrôleurs de la carte mère.
--metrics-brief Affiche un résumé des performances (bogo-ops) une fois le test terminé ou interrompu.

Stockage

Simuler la demande d’une database:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fio \
--name=realistic \
--directory=/ \
--filename=fio-test.bin \
--size=10 \
--rw=randrw \
--rwmixread=70 \
--bs=4k \
--ioengine=io_uring \
--iodepth=32 \
--numjobs=4 \
--direct=1 \
--runtime=60 \
--time_based \
--group_reporting

Test de vitesse d’écriture pure:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fio \
--name=seq-write \
--directory=/mnt/Data/Drop_Box \
--filename=fio-test.bin \
--size=15G \
--rw=write \
--bs=1M \
--ioengine=io_uring \
--iodepth=64 \
--numjobs=1 \
--direct=1 \
--invalidate=1 \
--runtime=60 \
--time_based \
--group_reporting

Test de lecture pure:

1
2
3
4
5
6
7
8
9
10
11
12
fio \
--name=seq-read \
--filename=/mnt/Data/Drop_Box/fio-test.bin \
--rw=read \
--bs=1M \
--ioengine=io_uring \
--iodepth=64 \
--numjobs=1 \
--direct=1 \
--runtime=60 \
--time_based \
--group_reporting

Réseau

Une machine écoute sur un port:

1
iperf3 -s

L’autre envoie la sauce dedans:

1
iperf3 -c <IP_HOST> -P 8

Rclone Backup

Pour lancer la sauvegarde Rclone, utiliser cette commande

1
2
3
4
rclone sync /data swissbackup:remote/data \
--links \
--metadata \
--create-empty-src-dirs

Pour restaurer une sauvegarde

1
2
3
4
rclone sync swissbackup:remote/data /data \
--links \
--metadata \
--create-empty-src-dirs
  • Title: Linux Cheat Sheet
  • Author: Nicolas Schmid
  • Created at : 07.06.2026 15:06:00
  • Updated at : 22.08.2026 16:14:42
  • Link: https://doc.spacesdata.net/2026/06/07/Linux-Cheat-Sheet/
  • License: This work is licensed under CC BY-NC-SA 4.0.