Outils pour utilisateurs

Outils du site


commandes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
commandes [2022/04/25 10:40] luccommandes [2025/03/01 13:14] (Version actuelle) luc
Ligne 1: Ligne 1:
 +====== Commandes utiles ======
 +Ici sont listées quelques commandes utiles avec leurs paramètres qui me sont le plus souvent utiles, on est au coeur du concept de l'aide mémoire.
  
 +===== Information sur le système =====
 +<code|bash>
 +# voir toutes les infos
 +uname -a
 +# voir le hostname
 +uname -n
 +#voir le type de processeur (cible pour compilation)
 +uname -p
 +
 +# des infos sur le CPU
 +cat /proc/cpuinfo
 +# sur la RAM 
 +cat /proc/meminfo
 +#voir le type de RAM, slot par slot
 +dmidecode --type 17
 +</code>
 +
 +===== Quelques outils pour gérer les partitions =====
 +<code bash>
 +# voir l'espace occupé
 +df -h
 +
 +# voir les infos des partitions (Id, type système de fichiers, ..)
 +blkid  # En root
 +
 +# afficher les partitions (sous format arborescent, mais pas tous les id --> blkid)
 +lsblk  # en root
 +
 +# créer, supprimer, modifier des partitions (notamment le type pour pouvoir ensuite formater ntfs --> ext4 par exemple)
 +fdisk /dev/sda # sans préciser le numéro, on agit sur le disque)
 +
 +# formater une partition avec un système de fichier particulier
 +mkfs.ext4 /dev/sda2
 +
 +# éditer le label d'une partition
 +e2label /dev/sda2 LABEL_NAME
 +</code>
 +
 +===== Occupation des ressources =====
 +<code bash>
 +top
 +# ou
 +htop # à installer depuis les dépôts
 +</code>
 +
 +===== Occupation des connexions réseaux =====
 +<code>bmon</code>
 +
 +----
 +
 +===== Tunnel ssh =====
 +//Voir aussi [[ssh]]//\\
 +ainsi, le port_distant du serveur est accessible sur la machine locale sur le port_local
 +<code bash>
 +ssh user@domain.tld -L port_local:localhost:port_distant
 +# -L clientport:host:hostport
 +# je suppose que host est vis-à-vis du serveur
 +</code>
 +
 +----
 +
 +===== Mettre à jour la date et l'heure automatiquement =====
 +<code>ntpdate fr.pool.ntp.org</code>
 +//des explications viendront peut-être un jour//
 +
 +----
 +
 +===== Modifier le hostname de la machine =====
 +Editer le fichier ''/etc/hostname''
 +
 +----
 +
 +===== Screen =====
 +
 +<code bash>
 +# créer un screen
 +screen -S nom
 +
 +# se détacher d'un screen
 +ctrl + a + d
 +
 +# lister les screens
 +screen -ls
 +
 +# se rattacher à un screen
 +screen -r nom
 +
 +# se rattacher à un screen avec possiblité de plusieurs vues en simultané
 +screen -x nom
 +</code>
 +
 +<code bash>
 +# pour resoudre temporairement et sans reboot le [screen is terminating] lorsque screen est executé par un user non-root
 +# For a fix without reboot (if you can't reboot right now):
 +sudo mount -o remount,gid=5,mode=620 /dev/pts
 +</code>
 +
 +----
 +
 +===== blkid =====
 +
 +blkid (en tant que root) liste les partitions /dev/sdxx leur LABEL, leur UUID et le type de système de fichier formaté etx4
 +
 +===== dd, créer des clés usb bootable (pour installer un OS) =====
 +
 +Il faut commencer par récupérer le fichier .iso de votre distribution, ensuite on puet utiliser "dd" :
 +
 +<code>
 +dd if=<fichier> of=/dev/sdx bs=4M; sync
 +</code>
 +
 +Avec :
 +
 +  *''<fichier>'' le nom de l'image à écrire, par exemple "netinst.iso" ;
 +  *''<périphérique>'' est le périphérique correspondant à la clef USB, par exemple /dev/sda ou /dev/sdb (et pas /dev/sda**1** ou autre partition, il faut pointer le périphérique)
 +  *''bs=4M'' indique à dd de lire et écrire des blocs de 4 mégaoctets pour améliorer les performances. La valeur par défaut est de 512 octets, ce qui rend l'opération beaucoup plus lente ;
 +  *''sync'' à la fin permet de s'assurer que toutes les écritures sont réalisées avant la fin de la commande.
 +
 +----
 +
 +===== Gestion des utilisateurs =====
 +
 +<code bash>
 +## Créer un utilisateur
 +adduser [OPTIONS] utilisateur
 +# Les OPTIONS intéressantes peuvent être :
 +# --no-create-home        : ne crée pas de répertoire home
 +# --ingroup nomGroupe     : par défaut, l'utilisateur est créé dans un groupe
 +#           qui porte son nom, on peut choisir de le créer dans un autre groupe
 +
 +## Créer un groupe
 +addgroup groupe
 +
 +## Ajouter un utilisateur déjà existant à un groupe déjà existant
 +usermod -G groupe utilisateur
 +
 +## Supprimer un utilisateur
 +deluser [OPTIONS] utilisateur
 +# les OPTIONS intéressantes peuvent être :
 +# --remove-home       : supprime le répertoire personnel
 +# --remove-all-files  : supprime tous les fichiers possédés par l'utilisateur
 +# --backup            : sauvegarde les fichiers ds une archive placée à la racine "/"
 +
 +## Supprimer un utilisateur d'un groupe
 +deluser utilisateur groupe
 +</code>
 +
 +On peut trouver la liste des utilisateurs et des groupes dans les fichiers suivants :
 +''/etc/passwd''
 +''/etc/group''
 +
 +===== Gestion des droits sur les fichiers/répertoires =====
 +
 +<code bash>
 +## Changer le propriétaire d'un fichier/rep
 +chown [-R] path
 +# -R      : recursive, pour les dossiers et fichiers contenus ds ces dossiers
 +# path    : nom du fichier ou du répertoire
 +
 +## Changer les droits d'accès
 +chmod [-R] ugoa +-= rwx path
 +chmod [-R] 777 path
 +# -R      : recursive, pour les dossiers et fichiers contenus ds ces dossiers
 +# ugoa    : user group other all
 +# +-=     : pour ajouter, enlever, fixer à
 +# rwx     : read write execute (aussi nécessaire pour parcourir un dossier un dossier)
 +# path    : nom du fichier ou du répertoire
 +
 +## Changer les droits d'accès aux dossiers et sous-dossiers (mais seulement les dossiers)
 +find PATH -type d -exec chmod o+rx {} +
 +</code>
 +
 +----
 +
 +===== firewalld (fedora) =====
 +
 +<code bash>
 +## Commandes en cli via firewall-cmd
 +
 +## ETAT
 +# pour connaitre l'état de la zone par défaut (= actuelle probablement) :
 +firewall-cmd --list-all
 +
 +
 +## SERVICES (= entrées pré-configurées)
 +# liste des services supportés
 +firewall-cmd --get-services
 +# ajouter un service (à la zone par défaut)
 +firewall-cmd --add-service=<nomService>
 +# enlever un service : --remove-service=
 +
 +
 +## PORT
 +# pour ajouter un port
 +firewall-cmd --add-port=8888/tcp ou udp
 +# pour enlever un port --remove-port=
 +
 +
 +</code>
 +
 +===== Screenshot sous Gnome =====
 +
 +C'est tout simple, il suffit d'utiliser la touche ''PRINTSCREEN'' ou ''IMPRIME ECRAN'' selon le clavier que vous possédez :
 +
 +  * Appuyer sur ''PRINTSCREEN'' pour prendre une capture de tout le bureau
 +  * Appuyer sur ''ALT'' + ''PRINTSCREEN'' pour prendre une capture de la fenêtre active
 +  * Appuyer sur ''SHIFT'' + ''PRINTSCREEN'' pour prendre une capture d'une zone délimitée avec la souris
 +
 +
 +===== Rajouter un prefixe incrémental =====
 +
 +<code bash>
 +find -name "*.pdf" -printf '%f\n' | sort | gawk 'BEGIN{ a=1 }{ printf "mv \"%s\" \"EMAIL %02d - %s\"\n", $0, a++, $0}' | bash
 +</code>
 +
 +
 +===== rsync =====
 +
 +avec ssh et un port custom, c'est tout simple : 
 +<code bash>
 +rsync -e 'ssh -p 2222' user@server:path/file destination
 +
 +# ou
 +rsync -port 2222 source user@destination:path/
 +
 +</code>
 +
 +Pour afficher des infos utiles sur quels fichiers sont transférés, et pourquoi :
 +<code bash>
 +rsync -ah --info=stats2,name1,del --out-format="%o %i %n" OneDrive_1_23-06-2021 backup_test_rsync/
 +</code>
 +
 +Autres options à regarder/surveiller 
 +<code bash>
 +rsync
 +--safe-links : ne pas suivre les liens hors de l'arborescence renseignée
 +--mkpath     : crée les dossiers à la destination s'ils sont manquants, évite les erreurs et les plantages
 +</code>
 +
 +===== cron / crontab =====
 +
 +C'est un utilitaire de l'ancienne époque (avant systemd) qui permet de programmer des executions récurrentes. Il semble encore supporté à l'heure de systemd (il y a un binding ?), surement car il est assez simple et extrêmement populaire.
 +
 +Les règles cron s'écrivent dans le crontab avec la commande ''crontab -e''. On peut afficher les règles écrites avec ''crontab -l''. Il y a un crontab par utilisateur, et les uns ne voient pas celles des autres.
 +
 +Attention, l'interpréteur par défaut semble être ''/bin/sh'', je vous encourage donc à spécifier des chemins absolus vers vos programmes. La commande ''which zpool'' peut vous donner le chemin absolu de cette commande.
 +
 +L'horaire de l'execution se programme avec m h DayOfMonth Mon DayOfWeek. on peut mettre un chiffre pour programmer l'execution à 5h par exemple. l'étoile ''*'' permet de signifier "n'importe quel" (ou tous). On peut aussi configurer toutes les 5 minutes avec ''*/5''.
 +
 +Par défaut, crontab envoie des emails en cas d'erreurs. On peut rediriger les sorties vers des fichiers avec ''>> /path/to/log_file'' et même rediriger les erreurs (sorite 2) vers la sortie standard (sortie 1) avec ''2>&1''.
 +
 +<code>
 +# exemple de crontab 
 +# m h  dom mon dow   command
 +
 +# ZFS : scrub = check et répare les erreurs (si possible car redondance)
 +30 0 * * 1 /sbin/zpool scrub Abathur >> /root/log_scrub_Abathur 2>&1
 +</code>
 +
 +===== Micro loopback avec Pulseaudio ======
 +
 +depuis un terminal (mode user, pas besoin de root)
 +<code bash>
 +# Activer le loopback
 +pactl load-module module-loopback latency_msec=1
 +
 +# Désactiver le loopback
 +pactl unload-module module-loopback
 +</code>
 +
 +===== Allumer/éteindre une interface réseau =====
 +
 +C'est vraiment pour du debug, Linux devrait gérer ça tout seul !\\
 +Depuis un terminal (en mode root)
 +<code bash>
 +ip link set enp4s0 up
 +ip link set enp4s0 down
 +</code>
 +
 +===== Compter des fichiers =====
 +
 +== solution 1 : avec ls == 
 +
 +Compter les fichiers dans un dossier et ses sous-dossiers (approx, plutôt utile pour comparer)
 +<code bash>
 +# PRE-REQUIS : avoir un ls vierge, sans alias. Au besoin, on reset l'alias
 +unalias ls
 +
 +# La commande magique
 +ls -R <FOLDER> | wc -l
 +
 +# Notes :
 +# ls -R pour avoir la récursivité, mais rajoute des lignes vides et des lignes "contenu du dossier X:"
 +# wc -l permet de compter les nouvelles lignes dans le pipe (c'est le séparateur que renvoie ls entre 2 entrées)
 +# éviter ls -l, car des ajouts avec statistiques sont rajoutées
 +# possibile -A : pour rajouter les fichiers cachés 
 +</code>
 +
 +== solution 2 : avec find ==
 +
 +''find'' permet de lister par défaut récursivement fichiers et dossiers, il suffit de le combiner avec ''wc -l''
 +<code bash>
 +find <FOLDER> | wc -l
 +</code>
 +
 +===== Limiter la taille dans une console =====
 +
 +Parfois on veut limiter la réponse à un écran (certaines consoles n'ont pas de scroll), il suffit d'utiliser un pipe vers ''less'':
 +
 +<code bash>
 +ls -l DIR_WITH_A_LOT_OF_FILES | less
 +</code>