===== Astuces sur les systèmes (GNU/Linux) ===== Ressources: * https://www.gnu.org/software/coreutils/manual/coreutils.pdf ==== Espaces disques ==== duc index -Hxpd /home/btatu/srv.idx /srv duc ui -d /home/btatu/srv.idx /srv ==== Les droits de fichiers/dossiers ==== * Pour les fichiers : find / -type -f -perm -o+w * Pour les dossiers : find / -type -d -perm -o+w * Changer les droits de plusieurs fichiers (récursif): find -type [-f|-d] -exec chmod 640 {} \; * Le sticky bit : ls -lah /tmp/ drwxrwxrwt 1 root root 844 févr. 12 14:47 . Le bit 't' ou sticky bit est un droit particulier qui permet à n'importe quel utilisateur d'écrire dans le répertoire avec la restriction que seul le propriétaire du fichier peut le modifier et le supprimer. * Lister les fichiers avec les droits suid : find ~ -type f -perm -4000 * Lister les fichiers avec les droits guid : find ~ -type f -perm -2000 * Réparer en masse des liens symboliques : find -L /path/to/dir/ -xtype l -exec ls -al {} \; * Lister les fichiers qui ont été modifier durant les 60 dernière minutes : find / ­not ­path '/sys*' ­not ­path '/proc*' ­mmin ­60 * Masque de création de fichiers appliqué pour l'utilisateur courent : umask 077 . touch test ls -lah -rw------- 1 bruno bruno 0 févr. 12 15:11 test * Lister les fichier modifié il y a moins de 10 minutes : find . -maxdepth 1 -mmin -10 * Lister les fichier dont il ont été modifier il y a moins de 48 heures: find . -mtime +1 * Lister les fichiers dont l'utilisateur à le droit d'écriture : find . -type f -perm -u=w * Supprimer les fichiers cachés : find -type f -name '.*' -exec rm {} \; * Supprimer tous les répertoires vides : find . -type d -empty -print -exec rmdir -f {} \; Option Signification: -name Recherche par nom de fichier. -type Recherche par type de fichier. -user Recherche par propriétaire. -group Recherche par appartenance à un groupe. -size Recherche par taille de fichier. -atime Recherche par date de dernier accès. -mtime Recherche par date de dernière modification. -ctime Recherche par date de création. -perm Recherche par autorisations d'accès. -links Recherche par nombre de liens au fichier. Ou même la signification précise : find . -mtime +0 # recherche des fichiers modifiés depuis plus de 24 heures find . -mtime 0 # trouver des fichiers modifiés au cours des 24 dernières heures uniquement find . -mtime -1 # recherche des fichiers modifiés il y a moins d'un jour (idem que -mtime 0) find . -mtime 1 # recherche les fichiers modifiés entre 24 et 48 heures il y a ==== Lister le poids des dossiers ==== du -h -d 1 |grep -v "^0" |sort -h -r ==== Changer les programmes par défaut ==== update-alternatives --config x-window-manager update-alternatives --config x-session-manager update-alternatives --config editor update-alternatives --list python update-alternatives --remove python /usr/bin/python2.7 update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1 ==== Convertir du mkv à Webm ===== ffmpeg -i input.mkv -c:v libvpx -qmin 0 -qmax 50 -crf 10 -b:v 2M -c:a libvorbis output.webm ==== Convertir du mkv à mp3 ==== find . -type f -name "*.mkv" -exec bash -c 'FILE="$1"; ffmpeg -i "${FILE}" -vn -c:a libmp3lame -y "${FILE%.mkv}.mp3";' _ '{}' \; === Enregistrer son écran et audio === ffmpeg -f alsa -channels 1 -sample_rate 44100 -i hw:4 -f x11grab -s 1920x1080 -framerate 24 -probesize 42M -i :0.0+0,0 -preset ultrafast -pix_fmt yuv420p camera1.mp4 ffmpeg -threads auto -f x11grab -s 1280x800 -i :0.0+0,0 -c:v libvpx -vpre 720p conf.webm https://ffmpeg.org/documentation.html === Capturer une entrée vidéo (webcam) === Liston les formats supportés: v4l2-ctl -list-formats-ext -d /dev/video0 Affichons la sortie de la webcam: mpv av://v4l2:/dev/video0 --untimed --profile=low-latency On peut utiliser son fichier de configuration : ~/.config/mpv/input.conf === Fusionner enregistrement audio et vidéo === Admettons que la vidéo est ok mais que l'audio est trop grand où l'on souhaite récupérer la partie entre 6m4s et 31m50s : ffmpeg -i confbridge.wav -ss 00:06:04.0 -t 00:31:50.0 output.wav ffmpeg -i video-obs.mkv -i output.wav -map 0:0 -map 1:0 output-file-name.webm ==== Gérer un disque ==== //Vérifier les commandes... (sans doute fausse)// * Table de partition : mmls partition.img * Lister les fichiers de la partition : fls -o 258 -r partition.img * Récupérer depuis un inode : icat -o 2018 -r partition.img 246775 > rev.txt ==== Modifier le comportement de l'écran ==== * Résolution : On recherche la résolution que l'on souhaite si elle est présente: DISPLAY=:0 gnome Si ce n'est pas le cas, alors on indique la taille de que l'on souhaite avec sa fréquence de rafraichissement : cvt 2560 1080 60 On copiera la sortie pour la pousser sur l'autre programme : xrandr --newmode "2560x1080_60.00" 230.00 2560 2720 2992 3424 1080 1083 1093 1120 -hsync +vsync On indique que cette résolution rejoin le périphérique en question: xrandr --addmode HDMI-1 "2560x1080_60.00" * brightness : xrandr --output eDP-1 --brightness 1 * Gamma : xgamma -gamma 1 xrandr --output --gamma 0.5:1.0:1.0 * Allumer un ecran : xrandr -d :0 --output DP-1 --auto * Positionner les écrans : xrandr --output LVDS1 --auto --output HDMI1 --auto --right-of LVDS1 * Changer la lumière de l'écran : echo 10 > /sys/class/backlight/intel_backlight/brightnes ==== aperçu des tâches avec top (htop) ===== * Les processus les plus gourmands en processeurs ou en mémoire top -o %CPU top -o %MEM * Afficher uniquement les processus d'un utilisateur top -u www-data * Définir le temps de rafraîchissement à 1,5 secondes top -d 1,5 * Quitter l'interface après 10 secondes top -n 10 * Admettons que l'on veut pendant 30 secondes observer l'activité de l'utilisateur toto top -u toto -n 30 -d 1,5 * Liste des commandes disponible depuis l'interface : = Hilight / illuminé la colonne correspondant à l'option précédemment sélectionné = Afficher le chemin absolue de la commande = Modifier le temps du rafraîchissement de la page = kill le processus par son ID ==== Avoir des infos sur le procéssus en cours d'utilisation ==== ps -ef ps -u $USER ps -u $USER -o cmd ps -eo euser,pid,tty,time,cmd ==== Afficher un message dans un autre tty ==== tail -f /var/log/messages > /dev/tty1 & ==== Modifier le rotation des ventilateurs (fan) ==== apt install lm-sensors fancontrol sensors-detect service module-init-tools restart pwmconfig service fancontrol start ==== Modifier la fréquence système ==== cpufreqd cpufrequtils cpufreq-info cpufreq-set --governor powersave cpufreq-set --max 1.20Ghz Voir en temps réel le changement des fréquence : cat /proc/cpuinfo |grep "cpu MHz" ==== Gestion audio ==== Il y a moyen d'utiliser pavucontrol. Sinon il existe amixer du paquet **alsamiwergui**. Par exemple pour activer le son, il faudra lancer la commande : amixer sset 'Master' on Pour lister les différentes sources : amixer scontrols ==== Gestion de plusieurs écrans ==== * Mettre le second écran à gauche de l'écran principal : xrandr --output DVI1 --right-of HDMI1 --auto * Lister tous les écrans : xrandr //Ceux qui ont une étoiles, sont ceux qui sont actif// ==== Cloner son disque ==== * On peut copier bit par bit ainsi : ddrescue -d -f -r3 /dev/sda /mnt/clone.disk //A noté qu'il vaut mieux l'enregistré sur un disque dont la taille est supérieure au disque sélectionné pour le clonage.// ==== Lancer un programmes au bout de 10 minutes ==== at now + 10 minutes > poweroff Puis faire : **CRTL+D** ==== Lister les erreurs au boot ==== dmesg --level=err ==== Changer la date / l'heure ==== date --set 1998-11-02 date --set 21:08:0 ==== Désactiver la veille ==== nano /etc/systemd/logind.conf HandleLidSwitch=ignore ==== Historique de connexion ==== last ==== Vider le swap ==== swapoff -a && swapon -a Vérifier que le swap soit vidé avec cette commande : swapon -s Nom de fichier Type Taille Utilisé Priorité /dev/sda1 partition 2047996 0 -1 ==== Vider le cache de la RAM ==== Cette astuce peut contribuer à libérer la mémoire de Linux sans redémarrage. Note: Il s'agit d'une opération non-destructive. *Pour libérer pagecache: #> sync; echo 1 > /proc/sys/vm/drop_caches *Pour libérer dentries et inodes: #> sync; echo 2 > /proc/sys/vm/drop_caches *Pour libérer pagecache, dentries et inodes: #> sync; echo 3 > /proc/sys/vm/drop_caches * Remise Par défaut : #> sync; echo 0 > /proc/sys/vm/drop_caches ==== La commande sed ==== * Visualiser le remplacement d'une chaine (avant par après) : sed 's/avant/apres/g' fichier.txt * Remplacer et enregistrer le remplacement d'une chaine (avant par après) : sed -i 's/avant/apres/g' fichier.txt * Afficher uniquement les lignes de 5 à 10 d'un fichier : sed '5,10p' -n fichier.txt * Récupérer la ligne ayant le mot "recherche" (fonction similaire à grep): sed -n '/recherche/p' fichier.txt ==== Conserver un programme en arrière plan ==== * Avec Screen Installer le paquet en question : apt-get install screen Lancer une nouvelle fenêtre : screen -S NOM_DE_LA_FENETRE Pour s'en détacher, il faut faire avec les touches du clavier : **ctrl** et **a** puis **d** Pour re-ouvrir la fenêtre en question : screen -x NOM_DE_LA_FENETRE Lister les fenêtres actives : screen -r ==== Midnight commander ==== Ce logiciel permet de remplacer nautilus en mode console. + = "sélection de fichiers avec un filtre" = "sélection de plusieurs fichiers" + i = "déselections de plusieurs fichiers" x = "inverse la selection" + r = "reload" + = "apparait dans le shell" + = "completion" + <\> = "menu raccourcis vers les répertoires courants" + + ? = "rechercher des fichiers" On peut visualiser le contenu d'un fichier compressé avec la touche F2 ==== Gestion des paquets ==== * Liste les fichiers installé par le paquet : dpkg-query -L $PAQUET * Information sur la version des paquets disponible : apt-cache policy $PAQUET ==== Gestion des partitions ==== dumpe2fs -h /dev/sda2 ===== Autoriser l'usage de la sourie et du clavier distant ==== Installer x2x sur chacun des machines: yay -S x2x apt install x2x Configurer SSH en éditant /etc/ssh/sshd_config : X11Forwarding yes On relance SSH pour ensuite executer la commande suivante qui aura pour principe de se connecter à la machine distante en prositionnant l'écran à l'est ssh -YXC 192.168.0.70 'x2x -east -to :0' ===== Convertir un fichier PDF en livret ===== Il y a besoin de ces dépendances : apt install pdfjam texlive-latex-recommended Puis mettre à l'orientation paysage en mettant les pages rangé par deux: pdfjam --nup 2x1 Flyer\ La\ Base_V3.pdf --outfile /tmp/out.pdf --landscape === Gestion des clés apt === apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com apt-key list |grep expi apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 879FC61BE78F1DC0 ==== Déplacer des datadir ==== * Exemple de mysql : rsync -aP /var/log/mysql/ /home/mysql-binlog systemctl status mysql systemctl stop mysql rsync -aP /var/log/mysql/ /home/mysql-binlog mv -i /var/log/mysql/ /var/log/mysql.old ln -s /home/mysql-binlog/ /var/log/mysql systemctl start mysql systemctl status mysql ==== Autres ==== * Liste en temps reel les commandes lancé depuis l'espace utilisateur sysdig -c spy_users * Copier un fichier en appliquant les droits dessus : install -m 700 /source.txt /destination.txt * Télécharger des vidéos youtube dont les TV comprennent les encodages : youtube-dl -f 137+140 --merge-output-format=mkv --add-metadata "https://www.youtube.com/watch?v=k98esvB9E40&index=1&list=PLRVWztDBSD_Jh0PwXtJ0wBP0TLtHga1_Y" * Découper et ordonner des données ? cat liste.txt | gawk '{ split($0, a, "-"); res = substr(a[1], length(a[1]), 1); if (res == 1) white++; if (res == 0) black++; if (res == 2) draw++;} END { print NR, white, black, draw }' * Augmenter la luminausité d'un écran echo 50 > /sys/class/backlight/adp-backlight/birghtness