Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
php-bash:aide-memoire [2019/06/04 10:52] – [Xrandr : augmenter sa résolution] cyrille | php-bash:aide-memoire [2024/06/13 18:34] (Version actuelle) – [Détection & installation des microprogrammes manquants] cyrille | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ~~LASTMOD~~ | ||
+ | |||
====== Aide mémoire Linux ====== | ====== Aide mémoire Linux ====== | ||
- | Quelques liens | + | ===== Pourquoi ne pas lancer des applis X via le compte root (si non prévues) ===== |
+ | |||
+ | |||
+ | __Traduction d'un extrait d' | ||
+ | |||
+ | // | ||
+ | **Exécuter des applications GUI en tant que root | ||
+ | |||
+ | " | ||
+ | doivent être conscients. Comme l'a dit Emmanuele Bassi, un développeur GNOME: «il n'y a pas de * vraies * raisons | ||
+ | technologiques justifiées pour lesquelles quiconque devrait exécuter une application GUI en tant que root. | ||
+ | En exécutant des applications GUI en tant qu' | ||
+ | de code qui n'ont pas été audités correctement pour s' | ||
+ | également du code qui touchera des fichiers dans votre $ HOME et peut changer leur propriété sur le système | ||
+ | de fichiers; connectez-vous, | ||
+ | de sécurité massive et béante [...]. " | ||
+ | |||
+ | __Sources__ | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | |||
+ | Quelques liens : | ||
* [[https:// | * [[https:// | ||
* [[http:// | * [[http:// | ||
Ligne 10: | Ligne 35: | ||
* [[http:// | * [[http:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | |||
+ | ----- | ||
+ | __**Creation de paquets debians**__ | ||
+ | |||
+ | *[[ https:// | ||
+ | *[[ https:// | ||
+ | *[[ https:// | ||
+ | *[[https:// | ||
+ | *[[https:// | ||
+ | *[[ https:// | ||
+ | *[[https:// | ||
+ | *[[ https:// | ||
+ | *[[https:// | ||
+ | |||
=====Programmation BASH==== | =====Programmation BASH==== | ||
*[[https:// | *[[https:// | ||
*[[https:// | *[[https:// | ||
+ | *[[http:// | ||
+ | |||
+ | ===== BASH et les chaines de caractères ==== | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
=====Perte mot de passe root===== | =====Perte mot de passe root===== | ||
Ligne 52: | Ligne 102: | ||
- | ===== Aptitude Apt-get Apt ===== | + | ===== Gel de paquets |
- | Gestion | + | |
- | <code bash>sudo dpkg --list | grep ^hi | + | Geler un paquet (n’apparait plus lors des mises à jour) |
- | sudo aptitude search " | + | <code bash># aptitude hold LePaquet</ |
+ | |||
+ | Degeler un paquet (réapparait lors des mises à jour) | ||
+ | <code bash># aptitude unhold LePaquet</ | ||
+ | |||
+ | |||
+ | Recherche | ||
+ | <code bash># dpkg --list | grep ^hi | ||
+ | # aptitude search " | ||
</ | </ | ||
Ligne 182: | Ligne 240: | ||
=====Bash : recursif===== | =====Bash : recursif===== | ||
- | <code bash># | + | <code bash># |
dossierDeTravail="/ | dossierDeTravail="/ | ||
Ligne 412: | Ligne 470: | ||
<code bash>00 21 2 6 * XDG_RUNTIME_DIR=/ | <code bash>00 21 2 6 * XDG_RUNTIME_DIR=/ | ||
+ | Voir aussi [[https:// | ||
+ | |||
+ | ===== Modifier la date des fichiers Récursif ===== | ||
+ | |||
+ | <code bash> | ||
+ | avec [u][b]date/ | ||
+ | |||
+ | __**En pratique**__ | ||
+ | Création d'un répetoire à plusieurs niveaux et fichiers de test | ||
+ | <code bash> | ||
+ | ragnarok@Fenrir: | ||
+ | |||
+ | On regarde les dates | ||
+ | <code bash> | ||
+ | date/: | ||
+ | total 4 | ||
+ | drwxr-xr-x 2 ragnarok ragnarok 4096 juin 5 10:33 sousdate | ||
+ | -rw-r--r-- 1 ragnarok ragnarok | ||
+ | -rw-r--r-- 1 ragnarok ragnarok | ||
+ | |||
+ | date/ | ||
+ | total 0 | ||
+ | -rw-r--r-- 1 ragnarok ragnarok 0 juin 5 10:33 test3 | ||
+ | -rw-r--r-- 1 ragnarok ragnarok 0 juin 5 10:33 test4</ | ||
+ | |||
+ | On les avances de 2 jours | ||
+ | <code bash> | ||
+ | |||
+ | On vérifie | ||
+ | <code bash> | ||
+ | date/: | ||
+ | total 4 | ||
+ | drwxr-xr-x 2 ragnarok ragnarok 4096 juin | ||
+ | -rw-r--r-- 1 ragnarok ragnarok | ||
+ | -rw-r--r-- 1 ragnarok ragnarok | ||
+ | |||
+ | date/ | ||
+ | total 0 | ||
+ | -rw-r--r-- 1 ragnarok ragnarok 0 juin | ||
+ | -rw-r--r-- 1 ragnarok ragnarok 0 juin | ||
+ | |||
+ | C'est OK | ||
+ | |||
+ | __**Note**__ | ||
+ | <code bash> | ||
+ | |||
+ | <code bash>-a = accessed | ||
+ | -m = modified | ||
+ | -t = timestamp - use [[CC]YY]MMDDhhmm[.ss] time format | ||
+ | </ | ||
+ | |||
+ | ===== echo $var / echo " | ||
+ | |||
+ | echo " | ||
+ | |||
+ | |||
+ | |||
+ | ===== RUN fsck MANUALLY ===== | ||
+ | |||
+ | |||
+ | “Exécuter fsck manuellement.” | ||
+ | |||
+ | Note que bien que les incohérences du système de fichiers ont été corrigées mais il ne s’en est pas forcément tiré sans dommage (perte de fichiers ou de modifications de fichiers). Au mieux les inodes faisant partie de la liste chaînée orpheline corrompue étaient des fichiers temporaires qui auraient de tout façon été supprimés à l’arrêt ou au redémarrage, | ||
+ | |||
+ | P H Debian fr | ||
+ | |||
+ | |||
+ | ===== Pour les utilisateurs du shell ===== | ||
+ | |||
+ | |||
+ | Afin de ne pas laisser de **tty** ou **consoles actives** lorsque l'on quitte le PC (physiquement), | ||
+ | |||
+ | Pour cela utiliser la variable **TMOUT** à positionner en secondes. | ||
+ | |||
+ | Pour un user uniquement : | ||
+ | Editer son **.bashrc** ou **.profile** et ajouter | ||
+ | |||
+ | <code | download> | ||
+ | # Export TMOUT | ||
+ | # Délai inactivité avant deconnexion | ||
+ | TMOUT=600 | ||
+ | |||
+ | </ | ||
+ | Vous serez déconnecté automatiquement au bout de 10 minutes (si 300, 5 minutes... ). | ||
+ | |||
+ | Très utile en cas de connexion **ssh** également, ça évite de laisse une connexion ouverte sur un serveur distant (surtout en root).... | ||
+ | |||
+ | Afin que ce paramètre soit pris en compte de suite, recharger votre .bashrc | ||
+ | <code | download> | ||
+ | source .bashrc | ||
+ | </ | ||
+ | |||
+ | Si vous voulez appliquer ce paramètre à tous vos users : apporter cette modification sur ce fichier | ||
+ | <code | download> | ||
+ | sudo nano / | ||
+ | </ | ||
+ | |||
+ | et | ||
+ | <code | download> | ||
+ | sudo source | ||
+ | </ | ||
+ | |||
+ | ===== Utilisateurs et services ===== | ||
+ | Connaitre l' | ||
+ | |||
+ | <code bash>ps auxn | ||
+ | ps auxnww</ | ||
+ | |||
+ | <code bash>ps -eo euser, | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | |||
+ | ===== Récupérer les mails d’un fichier sous Linux ===== | ||
+ | |||
+ | Parse le fichier, récupère les mails, supprime les doublons et redirige la sortie standard via un fichier texte | ||
+ | |||
+ | <code bash>$ grep -i -o ' | ||
+ | |||
+ | ===== Inverse un motif dans un fichier selon des patterns ===== | ||
+ | <code bash>cat file.txt | awk ' | ||
+ | |||
+ | ===== Supprimer les kernels non utilisés ===== | ||
+ | |||
+ | <code bash># dpkg -l ' | ||
+ | |||
+ | |||
+ | |||
+ | ===== Lister les repo d'apt et les sources.list ===== | ||
+ | <code bash> find /etc/apt -type f -name ' | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | <code bash> | ||
+ | ===== Temps d' | ||
+ | |||
+ | <code bash>/ | ||
+ | |||
+ | ===== nmap ===== | ||
+ | |||
+ | |||
+ | Scanner plusieurs IP | ||
+ | <code bash> | ||
+ | |||
+ | Scanner une plage d'IP | ||
+ | <code bash> | ||
+ | nmap 192.168.1.*</ | ||
+ | |||
+ | Scanner la totalité d'un réseau | ||
+ | <code bash> | ||
+ | |||
+ | |||
+ | Exclure un poste du scan | ||
+ | <code bash> | ||
+ | |||
+ | Scann et recherche machine Up ou Down | ||
+ | <code bash> | ||
+ | |||
+ | ===== xfce4 : changer fond écran ligne de commande ===== | ||
+ | |||
+ | |||
+ | Afin de déterminer les paramètres à utiliser, lancer | ||
+ | <code bash>$ xfconf-query -c xfce4-desktop -m</ | ||
+ | |||
+ | Et modifier de façon traditionnelle le wallpaper | ||
+ | |||
+ | {{ : | ||
+ | <code bash> | ||
+ | $ xfconf-query -c xfce4-desktop -m | ||
+ | Commencer à surveiller le canal « xfce4-desktop » : | ||
+ | |||
+ | définir: / | ||
+ | |||
+ | |||
+ | Pour avoir toutes les options de xfce4-desktop | ||
+ | <code bash> | ||
+ | |||
+ | Modifier instantanément le wallpaper | ||
+ | <code bash>$ xfconf-query | ||
+ | |||
+ | |||
+ | |||
+ | ===== glances | ||
+ | Eviter les soucis de mise en page | ||
+ | <code bash> | ||
+ | alias glances=' | ||
+ | |||
+ | ===== Mise à jour cassée ou interrompue ===== | ||
+ | Nettoyer s'il y a des reliquats d' | ||
+ | <code | download> | ||
+ | su - | ||
+ | apt update | ||
+ | </ | ||
+ | |||
+ | Lancer la réparation | ||
+ | <code | download> | ||
+ | dpkg --configure -a | ||
+ | apt install -f | ||
+ | </ | ||
+ | |||
+ | Finir ta mise à jour (éventuellement) | ||
+ | <code | download> | ||
+ | apt upgrade | ||
+ | </ | ||
+ | |||
+ | ===== Réparer une clef USB ===== | ||
+ | |||
+ | |||
+ | Identifier sa clef USB | ||
+ | <code | download> | ||
+ | $ lsblk | ||
+ | </ | ||
+ | ou | ||
+ | <code | download> | ||
+ | $ blkid | ||
+ | </ | ||
+ | On doit voir alors une sortie de ce style "/ | ||
+ | |||
+ | Démonter la clef si elle est montée | ||
+ | <code | download> | ||
+ | # umount /dev/sdXY | ||
+ | </ | ||
+ | |||
+ | Réparer la clef USB | ||
+ | <code | download> | ||
+ | # fsck /dev/sdXY | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Crontab sans notification mail ===== | ||
+ | |||
+ | Par défaut, lorsqu' | ||
+ | |||
+ | Pour désactiver les notifications par e-mail, ajoutez< | ||
+ | > /dev/null 2>&1 | ||
+ | </ | ||
+ | |||
+ | Cela redirige toute la sortie de la tâche cron vers le périphérique **/ | ||
+ | |||
+ | Par exemple, la tâche cron suivante n' | ||
+ | |||
+ | < | ||
+ | 15 * * * Sun | ||
+ | </ | ||
+ | |||
+ | Pour reprendre la réception des notifications par e-mail des tâches cron, supprimez simplement **> /dev/null 2>& | ||
+ | |||
+ | |||
+ | |||
+ | ===== FLAC TO MP3 ===== | ||
+ | |||
+ | **Avec ffmpeg** | ||
+ | < | ||
+ | parallel ffmpeg -i {} -qscale:a 0 {.}.mp3 ::: ./*.flac | ||
+ | </ | ||
+ | |||
+ | |||
+ | **Avec lame** | ||
+ | |||
+ | < | ||
+ | #!/bin/bash | ||
+ | |||
+ | for a in ./*.flac; do | ||
+ | # give output correct extension | ||
+ | OUTF=" | ||
+ | |||
+ | # get the tags | ||
+ | ARTIST=$(metaflac " | ||
+ | TITLE=$(metaflac " | ||
+ | ALBUM=$(metaflac " | ||
+ | GENRE=$(metaflac " | ||
+ | TRACKNUMBER=$(metaflac " | ||
+ | DATE=$(metaflac " | ||
+ | |||
+ | # stream flac into the lame encoder | ||
+ | flac -c -d " | ||
+ | --ta " | ||
+ | --tn " | ||
+ | done | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== WMA TO MP3 ===== | ||
+ | |||
+ | **En une ligne** | ||
+ | < | ||
+ | |||
+ | **En script** | ||
+ | |||
+ | |||
+ | <code | download> | ||
+ | #!/bin/bash | ||
+ | for i in *.wma; do | ||
+ | j=" | ||
+ | soundconverter -b -m audio/mpeg -s .mp3 " | ||
+ | done | ||
+ | </ | ||
+ | ===== Redimensionner des images ===== | ||
+ | |||
+ | < | ||
+ | for f in *.jpeg ; do convert $f -resize 50% new_$f; done | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Chercher [dans] les logs ===== | ||
+ | |||
+ | Avec systemd, nous avons obtenu journalctl qui permet facilement un filtrage à grain fin comme celui-ci: | ||
+ | |||
+ | < | ||
+ | sudo journalctl --since "2 days ago" | ||
+ | sudo journalctl --since " | ||
+ | sudo journalctl -b # last boot | ||
+ | sudo journalctl -k # kernel messages | ||
+ | sudo journalctl -p er # by priority (emerg|alert|crit|err|warning|info|debug) | ||
+ | sudo journalctl -u sshd # by unit | ||
+ | sudo journalctl _UID=1000 # by user id | ||
+ | </ | ||
+ | ===== Fonction bash pour la gestion des couleurs ===== | ||
+ | |||
+ | <code | download> | ||
+ | |||
+ | #!/bin/bash | ||
+ | |||
+ | couleur_rouge () { | ||
+ | echo -e " | ||
+ | } | ||
+ | |||
+ | echo "Une phrase avec un $(couleur_rouge mot) voilà" | ||
+ | </ | ||
+ | |||
+ | Et pour le référenciel des couleurs et bien plus : https:// | ||
+ | |||
+ | |||
+ | ===== Retrouver la date de mise à jour d'un logiciel ===== | ||
+ | |||
+ | |||
+ | <code | download> | ||
+ | grep installed / | ||
+ | </ | ||
+ | |||
+ | Exemple, avec VLC | ||
+ | |||
+ | |||
+ | <code | download> | ||
+ | grep installed / | ||
+ | 2022-01-26 16:39:29 status half-installed libvlccore9: | ||
+ | 2022-01-26 16:39:29 status half-installed libvlc5: | ||
+ | 2022-01-26 16:39:29 status half-installed vlc:amd64 3.0.16-1+b5 | ||
+ | 2022-01-26 16:39:29 status half-installed vlc-bin: | ||
+ | 2022-01-26 16:39:29 status half-installed libvlc-bin: | ||
+ | 2022-01-26 16:39:40 status half-installed vlc-plugin-base: | ||
+ | 2022-01-26 16:39:41 status half-installed vlc-plugin-skins2: | ||
+ | 2022-01-26 16:39:41 status half-installed vlc-plugin-qt: | ||
+ | 2022-01-26 16:39:41 status half-installed vlc-plugin-video-output: | ||
+ | 2022-01-26 16:41:11 status half-installed vlc-plugin-access-extra: | ||
+ | 2022-01-26 16:41:11 status half-installed vlc-plugin-notify: | ||
+ | 2022-01-26 16:41:11 status half-installed vlc-plugin-samba: | ||
+ | 2022-01-26 16:41:11 status half-installed vlc-plugin-video-splitter: | ||
+ | 2022-01-26 16:41:12 status half-installed vlc-plugin-visualization: | ||
+ | 2022-01-26 16:41:54 status installed libvlccore9: | ||
+ | 2022-01-26 16:41:54 status installed vlc-plugin-qt: | ||
+ | 2022-01-26 16:42:48 status installed vlc-plugin-notify: | ||
+ | 2022-01-26 16:42:48 status installed vlc-plugin-samba: | ||
+ | 2022-01-26 16:42:49 status installed vlc-plugin-skins2: | ||
+ | 2022-01-26 16:42:50 status installed vlc-plugin-video-splitter: | ||
+ | 2022-01-26 16:42:50 status installed libvlc5: | ||
+ | 2022-01-26 16:42:51 status installed vlc-plugin-visualization: | ||
+ | 2022-01-26 16:42:51 status installed vlc-plugin-access-extra: | ||
+ | 2022-01-26 16:42:53 status installed libvlc-bin: | ||
+ | 2022-01-26 16:42:55 status installed vlc-bin: | ||
+ | 2022-01-26 16:44:03 status installed vlc-plugin-video-output: | ||
+ | 2022-01-26 16:44:04 status installed vlc-plugin-base: | ||
+ | 2022-01-26 16:44:04 status installed vlc:amd64 3.0.16-1+b6 | ||
+ | 2022-01-26 16:44:05 status installed libvlc-bin: | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Retrouver la date de mise à jour d'un logiciel ===== | ||
+ | |||
+ | <code | download> | ||
+ | awk '/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== fsck : régler le laps de temps de verif système ===== | ||
+ | Pour connaître le réglage par défaut de la vérification de ta partition sda1 par exemple, | ||
+ | |||
+ | |||
+ | <code | download> | ||
+ | # LANG=C tune2fs -l /dev/sda1 | egrep -i "mount count|Check interval|Last|Next" | ||
+ | </ | ||
+ | |||
+ | Pour lancer la vérification avec fsck tous les 20 montages de la partition sda1, | ||
+ | |||
+ | |||
+ | <code | download> | ||
+ | # tune2fs -c 20 /dev/sda1 | ||
+ | </ | ||
+ | |||
+ | Pour lancer la vérification avec fsck tous les 20 jours de la partition sda1, | ||
+ | |||
+ | <code | download> | ||
+ | # tune2fs -i 20d /dev/sda1 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Droits sur rep de pub web ===== | ||
+ | |||
+ | A défaut | ||
+ | |||
+ | <code | download> | ||
+ | #!/bin/sh | ||
+ | |||
+ | chown -R www-data: | ||
+ | |||
+ | find /var/www -name " | ||
+ | |||
+ | find /var/www -name " | ||
+ | </ | ||
+ | |||
+ | ===== Lister les noyaux ===== | ||
+ | <code | download> | ||
+ | echo; dpkg -l | awk ' | ||
+ | </ | ||
+ | < | ||
+ | ii linux-image-5.10.0-10-amd64 | ||
+ | ii linux-image-5.10.0-15-amd64 | ||
+ | ii linux-image-5.10.0-17-amd64 | ||
+ | ii linux-image-5.10.0-19-amd64 | ||
+ | ii linux-image-amd64 | ||
+ | |||
+ | Noyau courant : 5.10.0-19-amd64 x86_64 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Connaître son screensize ===== | ||
+ | |||
+ | **Avec xrand** | ||
+ | <code | download> | ||
+ | $ xrandr | awk '/ connected/ | ||
+ | 13,9615 inches | ||
+ | </ | ||
+ | |||
+ | **Avec python3** | ||
+ | |||
+ | Le script | ||
+ | <code | download> | ||
+ | # | ||
+ | import gi | ||
+ | gi.require_version(' | ||
+ | from gi.repository import Gdk | ||
+ | |||
+ | dsp = Gdk.Display.get_default() | ||
+ | n_mons = dsp.get_n_monitors() | ||
+ | |||
+ | print((" | ||
+ | |||
+ | for i in range(n_mons): | ||
+ | mon = dsp.get_monitor(i) | ||
+ | mon_name = mon.get_model() | ||
+ | w = mon.get_width_mm()/ | ||
+ | h = mon.get_height_mm()/ | ||
+ | d = ((w**2)+(h**2))**(0.5) | ||
+ | print((" | ||
+ | </ | ||
+ | |||
+ | L' | ||
+ | |||
+ | <code | download> | ||
+ | $ python3 screensize.py | ||
+ | Screen width height diagonal | ||
+ | -------------------------------- | ||
+ | eDP-1 12.2 6.9 14.0 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Rebooter sur une entrée grub de son choix ===== | ||
+ | |||
+ | <code | download> | ||
+ | # grub-reboot X | ||
+ | # reboot now | ||
+ | </ | ||
+ | |||
+ | Et X préciser l' | ||
+ | |||
+ | |||
+ | ===== Détection & installation des microprogrammes manquants | ||
+ | |||
+ | Très intéressante cette entrée dans le manuel, je l' | ||
+ | https:// | ||
+ | |||
+ | § 6.4.3 Finaliser le système installé | ||
+ | |||
+ | <code | download> | ||
+ | # apt install isenkram-cli | ||
+ | </ | ||
+ | |||
+ | |||
+ | <code | download> | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | ===== Changer la couleur de fond du terminal | ||
+ | <code | download> | ||
+ | $ echo -e ' | ||
+ | </ | ||
+ | |||
+ | <code | download> | ||
+ | $ echo -e ' | ||
+ | </ |