informatique:linux:commandes_linux
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| informatique:linux:commandes_linux [2019/07/04 09:01] – ntp pteu | informatique:linux:commandes_linux [2025/09/15 14:10] (current) – [NetworkManager] pteu | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | {{tag> | ||
| - | |||
| ====== Commandes Linux ====== | ====== Commandes Linux ====== | ||
| Cet article présente des commandes système sous Linux. En général on obtient de l'aide sur une commande en tapant '' | Cet article présente des commandes système sous Linux. En général on obtient de l'aide sur une commande en tapant '' | ||
| - | Les commandes réseaux sont décrites ici : [[linux | + | Les commandes réseaux sont décrites ici : [[informatique: |
| Line 67: | Line 65: | ||
| + | =====arping===== | ||
| + | |||
| + | Détecter une adresse IP usurpée / duplicate : | ||
| + | <code bash> | ||
| + | arping -D -q -I eth0 -c 2 192.168.0.5 | ||
| + | </ | ||
| =====aspell===== | =====aspell===== | ||
| Vérificateur d' | Vérificateur d' | ||
| Line 86: | Line 90: | ||
| Permet de programmer l' | Permet de programmer l' | ||
| - | Enfin, on peut spécifier l' | + | On peut spécifier l' |
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| <code bash> | <code bash> | ||
| Line 112: | Line 121: | ||
| On peut utiliser les fichier ''/ | On peut utiliser les fichier ''/ | ||
| + | On peut consulter les journaux d' | ||
| + | <code bash> | ||
| + | Jul 19 02:30:00 bast2 atd[221981]: | ||
| + | </ | ||
| + | |||
| + | =====auditd===== | ||
| + | |||
| + | Permet d' | ||
| + | <code bash> | ||
| + | apt install auditd | ||
| + | |||
| + | # mise en place de l' | ||
| + | auditctl -a exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET | ||
| + | # lister les logs de l' | ||
| + | ausearch -i -ts today -k SOCKET | ||
| + | # supprimer l' | ||
| + | auditctl -d exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET | ||
| + | </ | ||
| + | src: [[https:// | ||
| =====awk===== | =====awk===== | ||
| Line 146: | Line 174: | ||
| (voir '' | (voir '' | ||
| + | =====blkid===== | ||
| + | Affiche les attributs des disques/ | ||
| + | <code bash> | ||
| + | /dev/sda1: UUID=" | ||
| + | /dev/sda2: UUID=" | ||
| + | /dev/sdb1: UUID=" | ||
| + | /dev/sdb2: UUID=" | ||
| + | /dev/md0: LABEL=" | ||
| + | /dev/md1: UUID=" | ||
| + | </ | ||
| =====cal===== | =====cal===== | ||
| Line 256: | Line 294: | ||
| Pour modifier la date d' | Pour modifier la date d' | ||
| <code bash> | <code bash> | ||
| - | chage -E YYYY-MM-DD < | + | chage -E YYYY-MM-DD < |
| </ | </ | ||
| + | ou lancer l' | ||
| + | <code bash> | ||
| + | chage < | ||
| + | </ | ||
| =====chattr/ | =====chattr/ | ||
| Line 268: | Line 309: | ||
| * effacement total : '' | * effacement total : '' | ||
| + | |||
| + | =====chkconfig===== | ||
| + | |||
| + | Commande pour configurer les services activer au démarrage du système. | ||
| + | <code bash> | ||
| + | # lister les états de tous les services | ||
| + | chkconfig --list | ||
| + | |||
| + | # activer le service toto (resp. désactiver avec " | ||
| + | # optionnel : préciser les runlevels concernés, par défaut 2345) | ||
| + | chkconfig toto on [--level 35] | ||
| + | |||
| + | # lister l' | ||
| + | chkconfig --list toto | ||
| + | toto 0: | ||
| + | </ | ||
| =====chmod===== | =====chmod===== | ||
| Line 364: | Line 421: | ||
| * '' | * '' | ||
| + | =====command===== | ||
| + | Permet de lancer la commande fournie en paramètre en ne la recherchant que dans les commandes système ou dans le PATH. Invoquée avec '' | ||
| + | |||
| + | <code bash> | ||
| + | command -V cd | ||
| + | cd est une primitive du shell | ||
| + | </ | ||
| =====cp===== | =====cp===== | ||
| **c**o**p**y ; copier de fichier. | **c**o**p**y ; copier de fichier. | ||
| Line 396: | Line 460: | ||
| <code bash> | <code bash> | ||
| # Pour afficher la date au format YYYY/ | # Pour afficher la date au format YYYY/ | ||
| - | date +%Y/%m/%d-%H:%M:%S | + | date "+%Y/%m/%d %H:%M:%S" |
| - | 2009/06/25-15:07:56 | + | 2009/06/25 15:07:56 |
| # afficher le compteur (timestamp) de l' | # afficher le compteur (timestamp) de l' | ||
| - | date +%s | + | date "+%s" |
| 1441816670 | 1441816670 | ||
| Line 412: | Line 476: | ||
| # afficher la date dans 5 mois et 4 jours (regarde, on peut même faire des fautes, c'est pris en compte !) : | # afficher la date dans 5 mois et 4 jours (regarde, on peut même faire des fautes, c'est pris en compte !) : | ||
| date --date=' | date --date=' | ||
| + | # afficher la date, 89 jours après le 26 mai 2022 : | ||
| + | date -d "26 may 2022 +89 days" | ||
| + | Tue Aug 23 00:00:00 UTC 2022 | ||
| # mettre à jour la date et l' | # mettre à jour la date et l' | ||
| Line 417: | Line 484: | ||
| </ | </ | ||
| + | Pour comparer des dates, on les convertit au format '' | ||
| + | <code bash> | ||
| + | date=$(date -d 2020-12-15 +%s) | ||
| + | now=$(date +%s) | ||
| + | |||
| + | if [ $date -lt $now ]; then | ||
| + | echo "date est dans le passé !" | ||
| + | fi | ||
| + | </ | ||
| =====dd===== | =====dd===== | ||
| Line 434: | Line 510: | ||
| <code bash> | <code bash> | ||
| pkill -USR1 dd | pkill -USR1 dd | ||
| + | </ | ||
| + | |||
| + | |||
| + | =====declare===== | ||
| + | |||
| + | Permet de déclarer des variables en bash et leur affecter des attributs ; il équivaut à la commande '' | ||
| + | |||
| + | Liste des attributs existants : | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Utiliser '' | ||
| + | |||
| + | <code bash> | ||
| + | # exemple d' | ||
| + | declare -i int=2 | ||
| + | echo "int vaut $int" | ||
| + | let "int += 1" | ||
| + | echo "int vaut $int" | ||
| + | unset int | ||
| + | |||
| + | # exemple d' | ||
| + | declare -r const=pierre | ||
| + | echo "const vaut $const" | ||
| + | const=sable | ||
| + | echo "const vaut $const" | ||
| </ | </ | ||
| =====diff===== | =====diff===== | ||
| - | diff permet d' | + | diff permet d' |
| - | < | + | < |
| cd /tmp ; echo " | cd /tmp ; echo " | ||
| diff toto titi | diff toto titi | ||
| Line 447: | Line 556: | ||
| > titi | > titi | ||
| </ | </ | ||
| + | |||
| + | On peut ignorer des motifs avec l' | ||
| 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 : | ||
| - | < | + | < |
| diff -u toto titi > toto_titi.patch | diff -u toto titi > toto_titi.patch | ||
| </ | </ | ||
| 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 : | ||
| - | < | + | < |
| patch -b toto toto_titi.patch | patch -b toto toto_titi.patch | ||
| | | ||
| Line 475: | Line 586: | ||
| dig mx pteu.fr | dig mx pteu.fr | ||
| dig pteu.fr @9.9.9.9 | dig pteu.fr @9.9.9.9 | ||
| + | dig pteu.fr @127.0.0.1 -p5353 | ||
| + | dig +noall +answer pteu.fr | ||
| </ | </ | ||
| + | Récupérer le numéro de série (serial number) d'une zone (enlever //+short// pour un résultat plus verbeux) : | ||
| + | <code bash> | ||
| + | dig +short SOA pteu.fr | ||
| + | dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 | ||
| + | </ | ||
| + | |||
| + | Interroger tous les serveurs faisant autorité d'une zone : | ||
| + | <code bash> | ||
| + | dig +nssearch pteu.fr | ||
| + | SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 213.251.188.149 in 0 ms. | ||
| + | SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 2001: | ||
| + | SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 2001: | ||
| + | SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 213.251.128.149 in 2 ms. | ||
| + | </ | ||
| =====dirname===== | =====dirname===== | ||
| Line 639: | Line 766: | ||
| ethtool -s eth0 speed 1000 duplex full autoneg on | ethtool -s eth0 speed 1000 duplex full autoneg on | ||
| + | Afficher les statistiques de la carte eth0: '' | ||
| =====exit===== | =====exit===== | ||
| Line 683: | Line 811: | ||
| </ | </ | ||
| - | Liste des options | + | Liste des options |
| * '' | * '' | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | * '' | ||
| * '' | * '' | ||
| - | * '' | + | * '' |
| * '' | * '' | ||
| * '' | * '' | ||
| Line 719: | Line 848: | ||
| find . -regextype posix-egrep -iregex ' | find . -regextype posix-egrep -iregex ' | ||
| - | # supprimer toutes ces maudites miniatures Windows : | + | # afficher puis supprimer |
| - | find . -name Thumbs.db -exec rm {} \; | + | find . -name Thumbs.db |
| # 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 745: | Line 874: | ||
| # on peut additionner les conditions de recherches avec -a (AND) et -o (OR) | # on peut additionner les conditions de recherches avec -a (AND) et -o (OR) | ||
| find . \( -name ' | find . \( -name ' | ||
| - | </ | ||
| + | Pour trier les résultats par date de modification : | ||
| + | find . \( -name ' | ||
| + | </ | ||
| =====flock===== | =====flock===== | ||
| Line 836: | Line 967: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| Il est possible d' | Il est possible d' | ||
| Line 927: | Line 1061: | ||
| =====history===== | =====history===== | ||
| - | Permet d' | + | Permet d' |
| <code bash> | <code bash> | ||
| history | history | ||
| Line 937: | Line 1071: | ||
| | | ||
| </ | </ | ||
| + | |||
| + | Lors de la fermeture de session, cette liste est ajoutée au fichier indiqué dans la variable '' | ||
| + | * le format de timestamp de chaque commande avec la variable '' | ||
| + | * la taille de l' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | Exemple : | ||
| + | <file bash .bashrc> | ||
| + | HISTCONTROL=ignoredups: | ||
| + | HISTTIMEFORMAT=" | ||
| + | HISTSIZE=10000 | ||
| + | HISTFILESIZE=20000 | ||
| + | </ | ||
| On peut relancer une commande de l' | On peut relancer une commande de l' | ||
| Line 959: | Line 1107: | ||
| </ | </ | ||
| - | On efface l' | + | On efface l' |
| On peut loguer (dans ''/ | On peut loguer (dans ''/ | ||
| Line 1002: | Line 1150: | ||
| ymir | ymir | ||
| </ | </ | ||
| + | |||
| + | =====iconv===== | ||
| + | |||
| + | iconv est un utilitaire de conversion et d' | ||
| + | <code bash> | ||
| + | # Supprimer les caractères accentués: | ||
| + | echo " | ||
| + | eei | ||
| + | </ | ||
| + | |||
| =====id===== | =====id===== | ||
| Line 1129: | Line 1287: | ||
| =====ip===== | =====ip===== | ||
| - | Couteau suisse réseau, il permet de configurer les paramètres ip d'une interface réseau. | + | Couteau suisse réseau, il permet de configurer les paramètres ip d'une interface réseau. Dans de plus en plus de distributions, |
| <code bash> | <code bash> | ||
| + | # afficher les interfaces | ||
| ip addr show | ip addr show | ||
| 1: lo: < | 1: lo: < | ||
| Line 1142: | Line 1301: | ||
| 3: eth1: < | 3: eth1: < | ||
| | | ||
| + | |||
| + | # afficher la table de routage | ||
| + | ip route | ||
| + | default via 10.10.22.249 dev ens3 onlink | ||
| + | 10.10.22.0/ | ||
| + | |||
| + | # affecter ou supprimer une adresse IP à une interface | ||
| + | ip addr add 10.0.0.1 255.255.255.0 dev eth0 | ||
| + | ip addr del 10.0.0.1 255.255.255.0 dev eth0 | ||
| + | |||
| + | # afficher les voisins | ||
| + | ip neigh | ||
| </ | </ | ||
| + | Équivalence anciennes/ | ||
| + | ^ anciennes commandes ^ équivalent ip ^ | ||
| + | | ifconfig -a | ip a | | ||
| + | | ifconfig enp6s0 down | ip link set enp6s0 down | | ||
| + | | ifconfig enp6s0 up | ip link set enp6s0 up | | ||
| + | | ifconfig enp6s0 10.0.0.24 netmask 255.255.255.0 dev enp6s0 | ip addr add 10.0.0.24/ | ||
| + | | ifconfig enp6s0 mtu 9000 | ip link set enp6s0 mtu 9000 | | ||
| + | | ifconfig enp6s0:0 10.0.0.25 | ip addr add 10.0.0.25/ | ||
| + | | netstat | ss | | ||
| + | | netstat -tulpn | ss -tulpn | | ||
| + | | netstat -neopa | ss -neopa | | ||
| + | | netstat -g | ip maddr | | ||
| + | | route | ip r | | ||
| + | | route add -net 10.0.0.0 netmask 255.255.255.0 dev enp6s0 | ip route add 10.0.0.0/24 dev enp6s0 | | ||
| + | | route add default gw 10.0.0.254 | ip route add default via 10.0.0.254 | | ||
| + | | arp -a | ip neigh | | ||
| + | | arp -v | ip -s neigh | | ||
| + | | arp -s 10.0.0.33 1:2:3:4:5:6 | ip neigh add 10.0.1.33 lladdr 1:2:3:4:5:6 dev enp6s0 | | ||
| + | | arp -i enp6s0 -d 10.0.0.254 | ip neigh del 10.0.0.254 dev wlp7s0 | | ||
| =====ipcs===== | =====ipcs===== | ||
| Line 1401: | Line 1591: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | * '' | ||
| <code bash> | <code bash> | ||
| Line 1463: | Line 1654: | ||
| Pour lister le hardware de la machine. | Pour lister le hardware de la machine. | ||
| + | |||
| + | =====lslogins===== | ||
| + | |||
| + | **lslogins** affiche des informations sur les utilisateurs du système. | ||
| + | |||
| + | <code bash> | ||
| + | lslogins -u dude | ||
| + | Nom d' | ||
| + | UID: 1000 | ||
| + | Champ gecos: | ||
| + | Répertoire personnel: | ||
| + | Interpréteur de commandes: | ||
| + | Aucun identifiant: | ||
| + | Groupe primaire: | ||
| + | GID: 1000 | ||
| + | Groupes supplémentaires: | ||
| + | Identifiants de groupes supplémentaires: | ||
| + | Dernière connexion: | ||
| + | Dernier terminal: | ||
| + | Dernier nom d’hôte: | ||
| + | Silencieux: | ||
| + | Processus en cours d' | ||
| + | |||
| + | Dernières connexions : | ||
| + | 09:18 sshd[417179]: | ||
| + | 10:21 sshd[428104]: | ||
| + | 10:21 sshd[428104]: | ||
| + | </ | ||
| =====lsmod===== | =====lsmod===== | ||
| Line 1656: | Line 1875: | ||
| =====netcat===== | =====netcat===== | ||
| - | Permet | + | Netcat (nc) est un couteau-suisse réseau qui permet |
| * '' | * '' | ||
| * '' | * '' | ||
| Line 1663: | Line 1882: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | |||
| + | * pour tester si des ports sont ouverts sur une machine distante: | ||
| + | <code bash> | ||
| + | # -z = on n' | ||
| + | # -v = mode verbeux | ||
| + | # -t = TCP (-u pour UDP) | ||
| + | # 80: numéro de port à tester | ||
| + | $ nc -zvt 10.0.0.1 80 | ||
| + | Connection to 10.0.0.1 80 port [tcp/ssh] succeeded! | ||
| + | |||
| + | # On peut remplacer un port par une liste de port (séparés par des espaces : "80 443") | ||
| + | # ou une plage de ports (" | ||
| + | # Par défaut on teste en TCP ; pour utiliser UDP, ajouter le paramètre -u | ||
| + | # (ex ici pour tester le DNS et le SYSLOG) : | ||
| + | $ nc -zv 10.0.0.1 -u 53 514 | ||
| + | </ | ||
| * Créer un automate qui renvoie au client tout ce que ce dernier envoie dans la socket : | * Créer un automate qui renvoie au client tout ce que ce dernier envoie dans la socket : | ||
| Line 1707: | Line 1942: | ||
| * '' | * '' | ||
| + | =====NetworkManager===== | ||
| + | |||
| + | Utilitaire de configuration réseau utilisé par défaut sous certaines distribution Linux comme Debian 12 actuellement (2025), mais ça évolue. | ||
| + | |||
| + | Il existe plusieurs interfaces pour amnipuler cet outil: | ||
| + | * **nmcli** en ligne de commande | ||
| + | * **nmtui** interface semi-graphique (s' | ||
| + | * **NetworkManager** sous Gnome, KDE ou tout autre Windows Manager | ||
| + | |||
| + | Pour voir quel service réseau gère la conf réseau sur votre Linux: | ||
| + | <code bash> | ||
| + | echo "Quel service gère le réseau sur cette machine ?" | ||
| + | if systemctl is-active --quiet NetworkManager; | ||
| + | echo " | ||
| + | elif systemctl is-active --quiet systemd-networkd; | ||
| + | echo " | ||
| + | elif [ -d / | ||
| + | echo " | ||
| + | else | ||
| + | echo "Aucun apparemment!" | ||
| + | fi | ||
| + | </ | ||
| + | |||
| + | src: https:// | ||
| + | <code bash> | ||
| + | # Etat du service | ||
| + | systemctl status NetworkManager | ||
| + | |||
| + | # Editer fichier de conf / | ||
| + | vim / | ||
| + | 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 | ||
| + | </ | ||
| + | |||
| + | Quelques commandes de diagnostique: | ||
| + | <code bash> | ||
| + | nmcli device status | ||
| + | DEVICE | ||
| + | br0 bridge | ||
| + | docker0 | ||
| + | lo | ||
| + | enp1s0 | ||
| + | enp2s0 | ||
| + | wlp3s0 | ||
| + | veth8881b47 | ||
| + | |||
| + | nmcli connection show | ||
| + | NAME UUID TYPE DEVICE | ||
| + | br0 | ||
| + | docker0 | ||
| + | lo edd7c96b-1336-44f4-8106-1caf773d1d91 | ||
| + | br0 port 1 7f58ed28-4a46-47d9-8ef7-e32cc5663b76 | ||
| + | br0 port 2 920763f3-3e3e-46db-9231-09b1b58deeef | ||
| + | |||
| + | nmcli device wifi list | ||
| + | IN-USE | ||
| + | |||
| + | nmcli device show | ||
| + | GENERAL.DEVICE: | ||
| + | GENERAL.TYPE: | ||
| + | GENERAL.HWADDR: | ||
| + | GENERAL.MTU: | ||
| + | GENERAL.STATE: | ||
| + | GENERAL.CONNECTION: | ||
| + | GENERAL.CON-PATH: | ||
| + | IP4.ADDRESS[1]: | ||
| + | IP4.GATEWAY: | ||
| + | IP4.ROUTE[1]: | ||
| + | IP4.ROUTE[2]: | ||
| + | IP4.DNS[1]: | ||
| + | IP4.DOMAIN[1]: | ||
| + | IP6.ADDRESS[1]: | ||
| + | IP6.ADDRESS[2]: | ||
| + | IP6.GATEWAY: | ||
| + | IP6.ROUTE[1]: | ||
| + | IP6.ROUTE[2]: | ||
| + | IP6.ROUTE[3]: | ||
| + | </ | ||
| + | |||
| + | Configurer une interface en IP statique sur le device " | ||
| + | <code bash> | ||
| + | nmcli con mod " | ||
| + | nmcli con mod " | ||
| + | nmcli con mod " | ||
| + | nmcli con mod " | ||
| + | </ | ||
| =====nslookup===== | =====nslookup===== | ||
| Line 1906: | Line 2250: | ||
| </ | </ | ||
| + | =====printf===== | ||
| + | |||
| + | Comme [[informatique: | ||
| + | <code bash> | ||
| + | a=12; b=34; c=' | ||
| + | printf 'a=%i, b=%i, c=%s\n' | ||
| + | a=12, b=34, c=toto | ||
| + | </ | ||
| + | '' | ||
| + | |||
| + | Pour formater l' | ||
| + | <code bash> | ||
| + | a=12; b=34; c=' | ||
| + | # on aligne $a et $b à droite sur 5 colonnes, et $c à gauche sur 20 colonnes | ||
| + | printf ' | ||
| + | a= 12, b= 34, c=toto | ||
| + | </ | ||
| + | |||
| + | ====Afficher x fois le même caractère==== | ||
| + | |||
| + | Pour afficher 10 fois le caractère " | ||
| + | <code bash> | ||
| + | printf ' | ||
| + | ========== | ||
| + | </ | ||
| =====ps===== | =====ps===== | ||
| Line 1930: | Line 2299: | ||
| </ | </ | ||
| + | Afficher les processus les plus consommateurs de mémoire/de CPU : | ||
| + | <code bash> | ||
| + | ps -eo pmem, | ||
| + | ps -eo pmem, | ||
| + | </ | ||
| =====pstree===== | =====pstree===== | ||
| Line 1970: | Line 2344: | ||
| **pwck** vérifie l´intégrité des fichiers de mots de passe. Il vaut mieux le lancer en root car il doit accéder notamment à ''/ | **pwck** vérifie l´intégrité des fichiers de mots de passe. Il vaut mieux le lancer en root car il doit accéder notamment à ''/ | ||
| + | |||
| + | =====readarray===== | ||
| + | |||
| + | Créer un tableau à partir d'un flux ou d'un fichier, d'une case par ligne. | ||
| + | <code bash> | ||
| + | readarray -t T_LINES < fichier.txt | ||
| + | |||
| + | cat fichier.txt | readarray -t T_LINES | ||
| + | </ | ||
| + | |||
| =====readlink===== | =====readlink===== | ||
| Line 2007: | Line 2391: | ||
| * Ajouter l' | * Ajouter l' | ||
| <code bash> | <code bash> | ||
| - | route add default gw 192.168.0.1 | + | route add default gw 192.168.0.1 |
| </ | </ | ||
| Line 2031: | Line 2415: | ||
| <code bash> | <code bash> | ||
| echo " | echo " | ||
| + | </ | ||
| + | |||
| + | Pour ajouter des routes persistantes, | ||
| + | * __sous Redhat/ | ||
| + | <code bash / | ||
| + | 10.0.211.0/ | ||
| + | </ | ||
| + | * sous Debian, il faut ajouter une ligne dans le fichier : | ||
| + | <code bash / | ||
| + | up route add -net 10.0.211.0/ | ||
| </ | </ | ||
| Line 2044: | Line 2438: | ||
| .. à peu près similaire à la commande '' | .. à peu près similaire à la commande '' | ||
| + | |||
| + | =====scp===== | ||
| + | |||
| + | **Ssh CoPy** (SCP) est une commande qui permet de transférer des fichiers par une connexion SSH. | ||
| + | |||
| + | Sous Windows il existe les programmes '' | ||
| + | |||
| + | La syntaxe en CLI est la suivante : | ||
| + | <code bash> | ||
| + | scp fichier_local user@serveur.com:/ | ||
| + | </ | ||
| + | Il faut noter qu'un //path// relatif (sans le "/" | ||
| + | |||
| + | Exemples | ||
| + | <code bash> | ||
| + | # uploader le fichier local test.txt vers la home de l' | ||
| + | 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: | ||
| + | |||
| + | # uploader tout le dossier test vers le sous répertoire incoming : | ||
| + | scp -r test toto@serveur.com: | ||
| + | |||
| + | # 3 façon d' | ||
| + | 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:/ | ||
| + | |||
| + | # copier un fichier entre 2 serveurs distants (remote to remote) | ||
| + | scp toto@serveur1.com: | ||
| + | </ | ||
| + | |||
| + | Les paramètres possibles sont : | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| =====script===== | =====script===== | ||
| Line 2061: | Line 2495: | ||
| =====sed===== | =====sed===== | ||
| - | **S**tream **ED**itor est une commande qui permet d' | + | **S**tream **ED**itor est une commande qui permet d' |
| + | <code bash> | ||
| + | # afficher le contenu du fichier en remplaçant toto par titi | ||
| + | cat fichier.txt | sed ' | ||
| - | * Filtre pour remplacer une IP par X.X.X.X | + | # même chose en plus simple |
| + | sed ' | ||
| + | </ | ||
| + | A noter que le délimiteur ''/'' | ||
| + | |||
| + | Par défaut le résultat est affiché dans le terminal ; si on précise un fichier on peut choisir d' | ||
| <code bash> | <code bash> | ||
| - | sed "s/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1, | + | # remplacer toto par titi dans le fichier (sans afficher le résultat) |
| + | sed -i 's/toto/ | ||
| + | # idem, mais en sauvegardant le fichier original avec l' | ||
| + | # cela créra 2 fichiers : fichier.txt (modifié) et fichier.txt.bck (l' | ||
| + | sed -i".bck" | ||
| </ | </ | ||
| - | | + | <WRAP center round important 60%> |
| + | Les caractères suivants doivent être échappés (préfixés par un '' | ||
| + | </ | ||
| + | |||
| + | * Afficher la 3ème ligne d'un fichier | ||
| + | Afficher la 3ème ligne d'un fichier : | ||
| <code bash> | <code bash> | ||
| - | echo "La PhraSe avec Des LeTTres | + | sed -n '3p' < |
| - | la phrase avec des lettres | + | sed '3!d' |
| - | # et respectivement | + | sed ' |
| + | </code> | ||
| + | |||
| + | | ||
| + | <code bash> | ||
| + | sed -n ' | ||
| + | </code> | ||
| + | |||
| + | * Afficher les lignes de 2 à 5 d'un fichier ; alternative : afficher les lignes de 2 jusqu' | ||
| + | <code bash> | ||
| + | sed -n '2,5p' < | ||
| + | sed -n '2,/sys/p' | ||
| </ | </ | ||
| - | (Le "&" | ||
| * Ajouter une ligne en début de fichier : | * Ajouter une ligne en début de fichier : | ||
| Line 2082: | Line 2543: | ||
| (il s'agit d'un " | (il s'agit d'un " | ||
| - | * Afficher | + | * Afficher |
| <code bash> | <code bash> | ||
| - | sed -i" | + | sed '/ |
| </ | </ | ||
| - | * Afficher un fichier à partir de la 3ème ligne : | + | * remplacer le motif " |
| <code bash> | <code bash> | ||
| - | sed -n '3,$p' | + | sed '/ |
| </ | </ | ||
| - | * Afficher les lignes de 2 à 5 d' | + | * Supprimer la 5eme ligne du fichier |
| <code bash> | <code bash> | ||
| - | sed -n '2,5p' | + | sed -i '5d' |
| - | sed -n ' | + | |
| </ | </ | ||
| * Supprimer les lignes contenant toto dans le fichier toto.txt : | * Supprimer les lignes contenant toto dans le fichier toto.txt : | ||
| <code bash>sed -i '/ | <code bash>sed -i '/ | ||
| + | |||
| + | * Supprimer les lignes __ne contenant pas__ toto dans le fichier toto.txt : | ||
| + | <code bash>sed -i '/ | ||
| * Supprimer les lignes vides | * Supprimer les lignes vides | ||
| Line 2108: | Line 2571: | ||
| sed -e ' | sed -e ' | ||
| </ | </ | ||
| + | |||
| + | * Remplacer les adresses IP par X.X.X.X | ||
| + | <code bash> | ||
| + | sed " | ||
| + | </ | ||
| + | |||
| + | * Convertir les minuscules en majuscules (ou inversement) | ||
| + | <code bash> | ||
| + | echo "La PhraSe avec Des LeTTres n' | ||
| + | la phrase avec des lettres n' | ||
| + | # et respectivement ' | ||
| + | </ | ||
| + | (Le "&" | ||
| * On peut réutiliser des patterns entre () qui ont matchées avec \1, \2. Par exemple, pour inverser les 3 termes séparés par des virgules : | * On peut réutiliser des patterns entre () qui ont matchées avec \1, \2. Par exemple, pour inverser les 3 termes séparés par des virgules : | ||
| Line 2168: | Line 2644: | ||
| <code bash> | <code bash> | ||
| ls --color=y | sed ' | ls --color=y | sed ' | ||
| + | </ | ||
| + | |||
| + | ====Supprimer les lignes paires==== | ||
| + | |||
| + | <code bash> | ||
| + | sed ' | ||
| + | </ | ||
| + | (en commençant à la ligne 2, puis toutes les 2 lignes ('' | ||
| + | |||
| + | Équivalent : en partant de la première ligne, puis toutes les 2 lignes ('' | ||
| + | <code bash> | ||
| + | sed -n ' | ||
| + | </ | ||
| + | |||
| + | Autres équivalents : | ||
| + | <code bash> | ||
| + | sed -n ' | ||
| + | sed -n ' | ||
| + | </ | ||
| + | |||
| + | ====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 \' | ||
| + | ' | ||
| + | |||
| + | echo \' | ||
| + | " | ||
| + | </ | ||
| + | Ici sed va concaténer les 3 parts : | ||
| + | <code bash> | ||
| + | s/ | ||
| + | \' | ||
| + | /\"/g | ||
| </ | </ | ||
| ====Liens utiles==== | ====Liens utiles==== | ||
| Line 2274: | Line 2785: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | * '' | ||
| Exemple : | Exemple : | ||
| Line 2339: | Line 2851: | ||
| ss dport \> 1024 | ss dport \> 1024 | ||
| </ | </ | ||
| + | =====stat===== | ||
| + | |||
| + | Commande permettant d' | ||
| + | |||
| + | <code bash> | ||
| + | # Affichage des informations du fichier toto.txt | ||
| + | $ stat toto.txt | ||
| + | Fichier : « toto.txt » | ||
| + | | ||
| + | Périphérique : | ||
| + | Accès : (0644/ | ||
| + | | ||
| + | Modif. : 2018-08-30 18: | ||
| + | Changt : 2018-08-30 17: | ||
| + | Créé : - | ||
| + | </ | ||
| + | |||
| + | On peut filtrer le résultat par type d' | ||
| + | <code bash> | ||
| + | # N' | ||
| + | $ stat -c " | ||
| + | 2018-08-30 18: | ||
| + | |||
| + | # Afficher la taille du fichier (ici il est vide) | ||
| + | $ stat -c " | ||
| + | 0 | ||
| + | </ | ||
| + | |||
| + | |||
| + | =====strace===== | ||
| + | |||
| + | Permet de débugguer les appels système d'un processus. | ||
| + | |||
| + | Liens : | ||
| + | * [[https:// | ||
| =====strings===== | =====strings===== | ||
| Affiche les chaines de caractères imprimable dans le fichier spécifié (c'est donc peu utile sur les fichiers texte). | Affiche les chaines de caractères imprimable dans le fichier spécifié (c'est donc peu utile sur les fichiers texte). | ||
| - | | + | <code bash> |
| + | strings toto.exe | ||
| + | </ | ||
| =====su===== | =====su===== | ||
| Line 2392: | Line 2940: | ||
| =====tar===== | =====tar===== | ||
| - | Un outil d' | + | Un outil d' |
| - | par exemple on veut archiver | + | |
| - | tar cvf toto.tar ./toto | + | |
| - | (// | + | |
| - | On peut archiver ET compresser le fichier grâce à gunzip (option | + | Options courantes de création d'archive: |
| - | | + | * ''-h / < |
| + | | ||
| + | * '' | ||
| + | * ''< | ||
| - | Plus tar__d__, | + | <code bash> |
| - | tar zxf toto.tar | + | # pour archiver |
| + | # (toto.tar désigne le nom de l' | ||
| + | tar cf toto.tar | ||
| + | # 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 de sortie | ||
| + | tar cvzf toto.tar.gz ./toto | ||
| + | |||
| + | # extraire (-x) le contenu d'une archive gunzip (-z) : | ||
| + | tar zxf toto.tar | ||
| + | |||
| + | # exclure le répertoire " | ||
| + | tar cfz toto.tar --exclude=./ | ||
| + | |||
| + | # équivalent en listant les fichiers à exclure dans un fichier externe | ||
| + | cat exclude-fic.txt | ||
| + | ./ | ||
| + | ./toto/dir | ||
| + | |||
| + | tar cfz toto.tar --exclude-from exclude-fic.txt ./toto | ||
| + | </ | ||
| + | =====tee===== | ||
| + | |||
| + | Permet de copier l' | ||
| + | <code bash> | ||
| + | $ echo toto | tee fic.log | ||
| + | toto | ||
| + | |||
| + | $ echo titi | tee -a fic.log | ||
| + | titi | ||
| + | |||
| + | $ cat fic.log | ||
| + | toto | ||
| + | titi | ||
| + | </ | ||
| =====telnet===== | =====telnet===== | ||
| Line 2455: | Line 3036: | ||
| Connection closed by foreign host. | Connection closed by foreign host. | ||
| </ | </ | ||
| + | |||
| + | Pour fermer une connexion telnet qui ne répond plus ou dont on n' | ||
| + | |||
| =====time===== | =====time===== | ||
| Permet de calculer le temps d' | Permet de calculer le temps d' | ||
| - | | + | <code bash> |
| - | + | time sleep 3 | |
| - | real 0m3.015s | + | |
| - | | + | |
| - | | + | |
| + | </ | ||
| La commande retourne le temps réel (//real//), le temps en mode utilisateur (//user//) et le temps en mode système (//sys//). | La commande retourne le temps réel (//real//), le temps en mode utilisateur (//user//) et le temps en mode système (//sys//). | ||
| + | Pour mesurer le temps de plusieurs commandes pipées (chainées avec un pipe '' | ||
| + | <code bash> | ||
| + | time -f " | ||
| + | </ | ||
| + | |||
| + | |||
| + | =====timeout===== | ||
| + | |||
| + | **timeout** permet de lancer une commande et de la killer si elle n'est pas terminée dans le laps de temps indiqué. Syntaxe : '' | ||
| + | |||
| + | <code bash> | ||
| + | timeout 10s ping google.fr | ||
| + | </ | ||
| =====top===== | =====top===== | ||
| Line 2471: | Line 3069: | ||
| Affiche la liste des processus et permet d' | Affiche la liste des processus et permet d' | ||
| + | =====touch===== | ||
| + | Permet de modifier les dates de dernier accès et de dernière modification d'un fichier. | ||
| + | |||
| + | <code bash> | ||
| + | # modifier les dates d' | ||
| + | touch toto.txt | ||
| + | # pour ne changer que l'une d' | ||
| + | |||
| + | # modifier avec la date spécifiée en option | ||
| + | touch -d " | ||
| + | </ | ||
| =====tr===== | =====tr===== | ||
| Line 2488: | Line 3097: | ||
| </ | </ | ||
| =====traceroute===== | =====traceroute===== | ||
| - | [[http:// | ||
| - | L' | ||
| - | Certains routeurs ne communiquent pas d'informations | + | [[http:// |
| + | L' | ||
| + | |||
| + | Certains routeurs ne communiquent pas d'information | ||
| <code bash> | <code bash> | ||
| traceroute google.fr | traceroute google.fr | ||
| Line 2510: | Line 3120: | ||
| </ | </ | ||
| + | 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 ('' | ||
| + | =====trap===== | ||
| + | |||
| + | **trap** permet d' | ||
| + | * '' | ||
| + | <code bash> | ||
| + | 1) SIGHUP | ||
| + | 6) SIGABRT | ||
| + | 11) SIGSEGV | ||
| + | 16) SIGSTKFLT | ||
| + | 21) SIGTTIN | ||
| + | 26) SIGVTALRM | ||
| + | 31) SIGSYS | ||
| + | 38) SIGRTMIN+4 | ||
| + | 43) SIGRTMIN+9 | ||
| + | 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 | ||
| + | 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 | ||
| + | 58) SIGRTMAX-6 | ||
| + | 63) SIGRTMAX-1 | ||
| + | </ | ||
| + | Le code '' | ||
| + | * '' | ||
| + | |||
| + | Par exemple, pour afficher un message lors d'une erreur provoquant un EXIT, ainsi que la ligne qui la génère : | ||
| + | <code bash> | ||
| + | trap "echo Erreur à la ligne $LINENO" | ||
| + | </ | ||
| + | |||
| + | C'est utile pour effacer les fichiers temporaires en cas d' | ||
| + | <code bash> | ||
| + | trap "rm -f $TMPFIC1 $TMPFIC2 $TMPFIC3" | ||
| + | </ | ||
| =====type===== | =====type===== | ||
| - | **type** est une commande interne de bash qui indique comment chaque | + | **type** est une commande interne de bash qui permet de savoir à quoi correspond un "nom" |
| - | * '' | ||
| <code bash> | <code bash> | ||
| - | # lister toutes les fonctions | + | type -t ls |
| - | declare | + | builtin |
| - | [..] | + | |
| - | declare | + | type -t l |
| + | alias | ||
| + | |||
| + | type l | ||
| + | l is aliased to ' | ||
| + | |||
| + | type -t ssh | ||
| + | | ||
| + | type ssh | ||
| + | ssh is hashed (/ | ||
| - | # afficher le code de celle-ci (équivalent de " | ||
| type -a titreterm | type -a titreterm | ||
| - | titreterm | + | titreterm |
| - | titreterm () | + | |
| - | { | + | { |
| if [[ $# -eq 1 && -n $1 ]]; then | if [[ $# -eq 1 && -n $1 ]]; then | ||
| echo -ne " | echo -ne " | ||
| fi | fi | ||
| - | } | + | } |
| </ | </ | ||
| + | |||
| + | Voir aussi : [[informatique: | ||
| =====update-rc.d===== | =====update-rc.d===== | ||
| Line 2636: | Line 3287: | ||
| <code bash> | <code bash> | ||
| usermod -G "" | usermod -G "" | ||
| + | </ | ||
| + | |||
| + | Simplement ajouter un utilisateur dans un groupe existant : | ||
| + | <code bash> | ||
| + | usermod -aG GROUP USER | ||
| </ | </ | ||
| =====vi===== | =====vi===== | ||
| - | Un éditeur de texte en mode texte plus ou moins fourni | + | Vi (abréviation de **vi**sual) est un éditeur de texte en mode console présent |
| - | =====vipw===== | + | =====vi*===== |
| - | C'est la commande à utiliser pour éditer, avec vi, le fichier | + | Composés du préfixe **vi** (comme d'éditeur de texte) suivi de la commande à configurer, **vipw**, **vigr** ou **visudo** sont des " |
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | Leur utilisation est vivement recommandée dans la mesure où, souvent, leur action ne se limite pas à l' | ||
| + | * de mettre à jour d' | ||
| + | * de vérifier la syntaxe pour ne pas bloquer le système en cas d' | ||
| + | L' | ||
| + | |||
| + | Au passage, pour configurer l' | ||
| + | * **update-alternatives --config editor** sous Debian | ||
| + | * **select-editor** (utilise la variable $SELECTED_EDITOR, | ||
| + | * éditer le fichier ~/.bashrc pour y ajouter l'une des lignes suivantes : | ||
| + | <code bash> | ||
| + | export VISUAL=vi | ||
| + | export EDITOR=vi | ||
| + | </ | ||
| =====vmstat===== | =====vmstat===== | ||
| Line 2747: | Line 3419: | ||
| Affiche les utilisateurs connectés à la machine, et depuis quand. | Affiche les utilisateurs connectés à la machine, et depuis quand. | ||
| - | | + | <code bash> |
| - | | + | who |
| - | + | | |
| - | Permet aussi d' | + | dude |
| - | | + | toto |
| - | run-level 3 May 31 11:36 | + | |
| + | # afficher le runlevel précédent et courant (comme la commande '' | ||
| + | who -r | ||
| + | | ||
| + | # afficher uniquement l' | ||
| + | who -m | ||
| + | | ||
| + | </ | ||
| =====xargs===== | =====xargs===== | ||
| Line 2767: | Line 3445: | ||
| permet de récupérer le pid de // | permet de récupérer le pid de // | ||
| + | Autre use case, en utilisant les paramètres '' | ||
| + | <code bash> | ||
| + | echo -ne ' | ||
| + | cat toto | xargs -L3 -P2 echo | ||
| + | 1 2 3 | ||
| + | 4 | ||
| + | </ | ||
| + | C'est utile pour des opérations plus CPUvore comme le calcul de hash MD5 par ex: | ||
| + | <code bash> | ||
| + | ls | ||
| + | tata toto | ||
| + | |||
| + | find . -maxdepth 1 -type f -print0 | xargs -L1 -P4 -0 md5sum >> md5sums | ||
| + | |||
| + | cat md5sums | ||
| + | b4af4c692f2a8c7dda9abc8ee657997d | ||
| + | 257cde944bf50d4fe05001bc33dd0ca4 | ||
| + | e5084550439c3c39e1b0e53b47018058 | ||
| + | </ | ||
| =====yum===== | =====yum===== | ||
informatique/linux/commandes_linux.1562230908.txt.gz · Last modified: 2019/07/04 09:01 by pteu