Astuces sur les systèmes (GNU/Linux)

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 <outputname> --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 :
<x> = Hilight / illuminé la colonne correspondant à l'option précédemment sélectionné
<c> = Afficher le chemin absolue de la commande
<d> = Modifier le temps du rafraîchissement de la page
<k> = 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"
<insert>  = "sélection de plusieurs fichiers"
<altgr> + i = "déselections de plusieurs fichiers"
x = "inverse la selection"
<ctrl> + r = "reload"
<ctrl> + <enter> = "apparait dans le shell"
<esc> + <tab> = "completion"
<altgr> + <\> = "menu raccourcis vers les répertoires courants"
<alt> + <shift> + ? = "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