User Tools

Site Tools


informatique:linux:commandes_linux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:linux:commandes_linux [2022/12/19 08:29] – [Exemples] trier par date de modification pteuinformatique:linux:commandes_linux [2025/04/25 07:57] (current) – [diff] ignore option pteu
Line 1: Line 1:
- 
 ====== Commandes Linux ====== ====== Commandes Linux ======
  
Line 126: Line 125:
 Jul 19 02:30:00 bast2 atd[221981]: Starting job 17 (a0001101a5b44a) for user 'admin' (2006) Jul 19 02:30:00 bast2 atd[221981]: Starting job 17 (a0001101a5b44a) for user 'admin' (2006)
 </code> </code>
 +
 +=====auditd=====
 +
 +Permet d'auditer / debugguer des comportements bas niveau du système, comme par exemple déterminer quel processus réalise des requêtes :
 +<code bash>
 +apt install auditd
 +
 +# mise en place de l'audit
 +auditctl -a exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET
 +# lister les logs de l'audit
 +ausearch -i -ts today -k SOCKET
 +# supprimer l'audit
 +auditctl -d exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET
 +</code>
 +src: [[https://serverfault.com/questions/192893/how-can-i-identify-which-processes-are-generating-udp-traffic-on-linux|how-can-i-identify-which-processes-are-generating-udp-traffic]]
 +
 =====awk===== =====awk=====
  
Line 529: Line 544:
 =====diff===== =====diff=====
  
-diff permet d'afficher les différence entre 2 fichiers : +diff permet d'afficher les différences entre 2 fichiers : 
-<code>+<code bash>
 cd /tmp ; echo "toto" > toto ; echo "titi" > titi cd /tmp ; echo "toto" > toto ; echo "titi" > titi
 diff toto titi diff toto titi
Line 538: Line 553:
  > titi  > titi
 </code> </code>
 +
 +On peut ignorer des motifs avec l'option ''-I <motif>'', par exemple pour ignorer les commentaires : ''diff -I "^#" toto titi''.
  
 Un patchfile c'est un fichier qui contient la sortie d'un diff : Un patchfile c'est un fichier qui contient la sortie d'un diff :
-<code>+<code bash>
 diff -u toto titi > toto_titi.patch diff -u toto titi > toto_titi.patch
 </code> </code>
 Pour patcher toto avec les modifications de titi on utilise la commande **patch** avec le patchfile : Pour patcher toto avec les modifications de titi on utilise la commande **patch** avec le patchfile :
-<code>+<code bash>
 patch -b toto toto_titi.patch patch -b toto toto_titi.patch
  patching file toto  patching file toto
Line 566: Line 583:
 dig mx pteu.fr                # MX (serveur de mail) du domaine dig mx pteu.fr                # MX (serveur de mail) du domaine
 dig pteu.fr @9.9.9.9       # interroger le @serveurDNS spécifié dig pteu.fr @9.9.9.9       # interroger le @serveurDNS spécifié
 +dig pteu.fr @127.0.0.1 -p5353      # interroger le @serveurDNS spécifié sur un port perso (non standard)
 dig +noall +answer pteu.fr    # permet de n'afficher que la ligne le résultat (ANSWER) de la requête dig +noall +answer pteu.fr    # permet de n'afficher que la ligne le résultat (ANSWER) de la requête
 </code> </code>
Line 790: Line 808:
 </code> </code>
  
-Liste des options les plus utilisées (totalement subjectif) :+Liste des options utiles (totalement subjectif) :
   * ''-type d'' pour spécifier le type du fichier recherché (notamment **d**irectory, regular **f**ile, symbolic **l**ink)   * ''-type d'' pour spécifier le type du fichier recherché (notamment **d**irectory, regular **f**ile, symbolic **l**ink)
   * ''-name nom'' permet de spécifier un nom de fichier ou un motif. Si motif, il est recommandé de le saisir entre "" ou d'échapper proprement les caractères interprétés (ex : ''-name \*.txt'' ou ''-name "*.txt"'') sous peine de rencontrer l'erreur suivante : //find: les chemins doivent précéder l'expression : <un fichier texte>//   * ''-name nom'' permet de spécifier un nom de fichier ou un motif. Si motif, il est recommandé de le saisir entre "" ou d'échapper proprement les caractères interprétés (ex : ''-name \*.txt'' ou ''-name "*.txt"'') sous peine de rencontrer l'erreur suivante : //find: les chemins doivent précéder l'expression : <un fichier texte>//
Line 796: Line 814:
   * ''-type f -executable'' permet d'afficher les fichiers exécutables. Fonctionne aussi avec ''-readable'' et ''-writable''.   * ''-type f -executable'' permet d'afficher les fichiers exécutables. Fonctionne aussi avec ''-readable'' et ''-writable''.
   * ''-regex 'expr_reg''' permet d'utiliser une expression régulière comme critère de recherche   * ''-regex 'expr_reg''' permet d'utiliser une expression régulière comme critère de recherche
-  * ''-exec'' permet d'exécuter une commande pour chaque résultat de la commande ''find'' (voir exemples)+  * ''-exec'' permet d'exécuter une commande pour chaque résultat de la commande ''find'' (voir exemples). On peut additionner plusieurs commandes à exécuter, en spécifiant plusieurs fois le paramètre ''-exec''
   * ''-size +1000M'' ne valide que les fichiers dont la taille est supérieure à 1000 Mo.   * ''-size +1000M'' ne valide que les fichiers dont la taille est supérieure à 1000 Mo.
   * ''-printf'' pour contrôler la sortie et n'afficher que des champs spécifiques du fichier ; voir la partie exemples plus bas.   * ''-printf'' pour contrôler la sortie et n'afficher que des champs spécifiques du fichier ; voir la partie exemples plus bas.
Line 827: Line 845:
 find . -regextype posix-egrep -iregex '.*.avi|.*.mkv|.*.mp4|.*.m4v|.*.m2ts' | sed 's/.*\///g' | sort find . -regextype posix-egrep -iregex '.*.avi|.*.mkv|.*.mp4|.*.m4v|.*.m2ts' | sed 's/.*\///g' | sort
  
-# supprimer toutes ces maudites miniatures Windows : +afficher puis supprimer supprimer toutes ces maudites miniatures Windows : 
-find . -name Thumbs.db -exec rm {} \;+find . -name Thumbs.db -exec echo {} \; -exec rm -f {} \;
  
 # attribuer des permissions à tous les sous-répertoires contenus dans le répertoire pics : # attribuer des permissions à tous les sous-répertoires contenus dans le répertoire pics :
Line 1893: Line 1911:
   * ''netstat -s'' permet d'afficher les statistiques réseau de la machine (les compteurs IP, de connections TCP ou UDP)   * ''netstat -s'' permet d'afficher les statistiques réseau de la machine (les compteurs IP, de connections TCP ou UDP)
  
 +=====NetworkManager=====
 +
 +Utilitaire de configuration réseau utilisé par défaut sous Redhat/RockyLinux/feu CentOS.
 +
 +src: https://docs.rockylinux.org/fr/guides/network/basic_network_configuration/
 +<code bash>
 +# Etat du service
 +systemctl status NetworkManager
 +
 +# Editer fichier de conf
 +vim /etc/sysconfig/network-scripts/ifcfg-ens18
 +TYPE=Ethernet
 +PROXY_METHOD=none
 +BROWSER_ONLY=no
 +BOOTPROTO=none
 +DEFROUTE=yes
 +IPV4_FAILURE_FATAL=no
 +IPV6INIT=no
 +NAME=ens18
 +UUID=xxxx-xx
 +DEVICE=ens18
 +ONBOOT=yes
 +IPADDR=192.168.0.1
 +PREFIX=24
 +GATEWAY=192.168.0.254
 +DNS1=192.168.0.254
 +DNS2=1.1.1.1
 +IPV6_DISABLED=yes
 +
 +# Appliquer la conf réseau
 +nmcli connection up ens18
 +
 +# Vérifier bonne application de la conf :
 +nmcli device show ens18
 +ip a
 +ip route
 +</code>
 =====nslookup===== =====nslookup=====
  
Line 2280: Line 2335:
 .. à peu près similaire à la commande ''who -r''. .. à peu près similaire à la commande ''who -r''.
  
 +
 +=====scp=====
 +
 +**Ssh CoPy** (SCP) est une commande qui permet de transférer des fichiers par une connexion SSH.
 +
 +Sous Windows il existe les programmes ''pscp'' (en ligne de commande) et l'excellent [[http://fr.wikipedia.org/wiki/WinSCP|WinSCP]]. Sous Linux, il est possible d'utiliser [[http://fr.wikipedia.org/wiki/GFTP|gFTP]] si l'on veut un interface graphique. Sous Mac j'utilise [[http://rsug.itd.umich.edu/software/fugu/|Fugu]].
 +
 +La syntaxe en CLI est la suivante :
 +<code bash>
 +scp fichier_local user@serveur.com:/path
 +</code>
 +Il faut noter qu'un //path// relatif (sans le "/") est par défaut la home de l'utilisateur sous lequel on s'est connecté.
 +
 +Exemples
 +<code bash>
 +# uploader le fichier local test.txt vers la home de l'utilisateur toto sur serveur.com :
 +scp test.txt toto@serveur.com:
 +
 +# télécharger dans le répertoire courant (.) test.txt, qui se trouve sur serveur.com
 +scp toto@serveur.com:test.txt .
 +
 +# uploader tout le dossier test vers le sous répertoire incoming :
 +scp -r test toto@serveur.com:incoming
 +
 +# 3 façon d'uploader 2 fichiers vers un serveur
 +scp 1.zip 2.zip serveur.com:
 +scp {1,2}.zip serveur.com:
 +scp *.zip serveur.com:
 +
 +# télécharger plusieurs fichiers en une même commande SCP (ici 1.zip et 2.zip)
 +scp serveur.com:/tmp/\{1,2\}.zip .
 +
 +# copier un fichier entre 2 serveurs distants (remote to remote)
 +scp toto@serveur1.com:test.txt titi@serveur2.com:
 +</code>
 +
 +Les paramètres possibles sont :
 +  * ''-P port'' pour préciser un port spécifique
 +  * ''-r'' pour les transfert récursifs (copier le contenu d'un dossier par exemple)
 +  * ''-o ssh_option'' : permet de passer des options SSH pour le transfert (ce sont les même que la commande ssh)
  
 =====script===== =====script=====
Line 2300: Line 2395:
 <code bash> <code bash>
 # afficher le contenu du fichier en remplaçant toto par titi # afficher le contenu du fichier en remplaçant toto par titi
-cat fichier.txt | sed 's/toto/titi'+cat fichier.txt | sed 's/toto/titi/'
  
 # même chose en plus simple # même chose en plus simple
-sed 's/toto/titi' fichier.txt+sed 's/toto/titi/' fichier.txt
 </code> </code>
 +A noter que le délimiteur ''/'' est arbitraire, la commande fonctionne avec n'importe quel autre : ''sed 's|toto|titi|' fichier.txt'' on peut choisir le plus visuel.
  
 Par défaut le résultat est affiché dans le terminal ; si on précise un fichier on peut choisir d'enregistrer les modifications dans celui-ci, en ajoutant l'option ''-i'' : Par défaut le résultat est affiché dans le terminal ; si on précise un fichier on peut choisir d'enregistrer les modifications dans celui-ci, en ajoutant l'option ''-i'' :
Line 2347: Line 2443:
 <code bash> <code bash>
 sed '/toto/,/titi/d' sed '/toto/,/titi/d'
 +</code>
 +
 +  * remplacer le motif "MOTIF" par "REPLACE" uniquement sur les ligne matchant le motif "SELECT"
 +<code bash>
 +sed '/SELECT/s/MOTIF/REPLACE/' toto.txt
 </code> </code>
  
Line 2460: Line 2561:
 </code> </code>
  
 +====Remplacer un quote====
 +
 +Pour ne pas interpréter le quote il faut découper le sed pour qu'il concatène son contenu :
 +<code bash>
 +echo \'toto\'
 +'toto'
 +
 +echo \'toto\'| sed 's/'\''/\"/g'
 +"toto"
 +</code>
 +Ici sed va concaténer les 3 parts :
 +<code bash>
 +s/
 +\'
 +/\"/g
 +</code>
 ====Liens utiles==== ====Liens utiles====
  
Line 2659: Line 2776:
 </code> </code>
  
 +
 +=====strace=====
 +
 +Permet de débugguer les appels système d'un processus.
 +
 +Liens :
 +  * [[https://linuxfr.org/users/raphj/journaux/debugger-un-probleme-de-performance-avec-strace|Débugger un problème de performance avec strace]] (journal LinuxFR)
 =====strings===== =====strings=====
  
Line 2713: Line 2837:
 =====tar===== =====tar=====
  
-Un outil d'archivage de données qui permet de créer une archive à partir de fichiers/arborescence.+Un outil d'archivage de données qui permet de créer une archive à partir de fichiers/arborescence. On peut utiliser le flag ''-v'' (verbose) pour afficher les fichiers/dossier ajoutés à l'archive.
  
 <code bash> <code bash>
 # pour archiver le répertoire ./toto/ et tout son contenu (répertoires et fichiers normaux). # pour archiver le répertoire ./toto/ et tout son contenu (répertoires et fichiers normaux).
 # (toto.tar désigne le nom de l'archive qu'on veut créer, il doit avoir l'extension ''.tar'') # (toto.tar désigne le nom de l'archive qu'on veut créer, il doit avoir l'extension ''.tar'')
-tar cvf toto.tar ./toto+tar cf toto.tar ./toto
  
 # archiver ET compresser le fichier grâce à gunzip (-z) ou bunzip (-y) : # archiver ET compresser le fichier grâce à gunzip (-z) ou bunzip (-y) :
-# -c pour compresser, -v pour un affichage verbeux, -f pour préciser le fichier +# -c pour compresser, -v pour un affichage verbeux, -f pour préciser le fichier de sortie 
-tar czvf toto.tar.gz ./toto+tar cvzf toto.tar.gz ./toto
  
 # extraire (-x) le contenu d'une archive gunzip (-z) : # extraire (-x) le contenu d'une archive gunzip (-z) :
 tar zxf toto.tar tar zxf toto.tar
 +
 +# exclure le répertoire "dir" et le fichier titi.txt de l'archive
 +tar cfz toto.tar --exclude=./toto/titi.txt --exclude=./toto/dir ./toto
 +
 +# équivalent en listant les fichiers à exclure dans un fichier externe
 +cat exclude-fic.txt
 +./toto/titi.txt
 +./toto/dir
 +
 +tar cfz toto.tar --exclude-from exclude-fic.txt ./toto
 </code> </code>
  
Line 2827: Line 2961:
 Affiche la liste des processus et permet d'observer en temps réel l'activité de la mémoire et du processeur. Affiche la liste des processus et permet d'observer en temps réel l'activité de la mémoire et du processeur.
  
 +=====touch=====
  
 +Permet de modifier les dates de dernier accès et de dernière modification d'un fichier.
 +
 +<code bash>
 +# modifier les dates d'accès et de modification avec celle du jour
 +touch toto.txt
 +# pour ne changer que l'une d'elle, préciser -a pour date d'accès ou -m pour date de modification
 +
 +# modifier avec la date spécifiée en option
 +touch -d "1999-12-31 23:59:59" toto.txt
 +</code>
 =====tr===== =====tr=====
  
Line 2848: Line 2993:
 L'outil envoie un paquet à ''IP'' avec un TTL de 1. Le paquet n'ira pas plus loin que le premier routeur qui enverra un paquet ''ICMP TTL Exceeded'' avec sa propre adresse IP. En incrémentant le TTL ainsi de suite jusqu'à atteindre la destination, on obtient les IPs de tous les routeurs intermédiaires. L'outil envoie un paquet à ''IP'' avec un TTL de 1. Le paquet n'ira pas plus loin que le premier routeur qui enverra un paquet ''ICMP TTL Exceeded'' avec sa propre adresse IP. En incrémentant le TTL ainsi de suite jusqu'à atteindre la destination, on obtient les IPs de tous les routeurs intermédiaires.
  
-Certains routeurs ne communiquent pas d'information et affichent %%???%% ou %%* * *%%.+Certains routeurs ne communiquent pas d'information et affichent ''???'' ou ''* * *'' ; ou indique que l'hôte ne répond pas (ICMP destination host unreachable) : ''!H''.
 <code bash> <code bash>
 traceroute google.fr traceroute google.fr
Line 2867: Line 3012:
 </code> </code>
  
-Par défaut le protocole UDP/33434-5 est utilisé mais il peut être filtré. On peut donc demander au traceroute de changer de port (''-p 53'' par ex.), d'utiliser de l'ICMP (''-I'') ou du TCP (''-T'').+Par défaut le protocole UDP/33434-5 est utilisé mais il peut être filtré. On peut donc demander au traceroute de changer de port (''-p 53'' par ex.), d'utiliser de l'ICMP (''-I'') ou du TCP (''-T''mais il faudra être root.
  
 =====trap===== =====trap=====
Line 3034: Line 3179:
 <code bash> <code bash>
 usermod -G "" user1 usermod -G "" user1
 +</code>
 +
 +Simplement ajouter un utilisateur dans un groupe existant :
 +<code bash>
 +usermod -aG GROUP USER
 </code> </code>
 =====vi===== =====vi=====
informatique/linux/commandes_linux.1671438558.txt.gz · Last modified: 2022/12/19 08:29 by pteu