===== 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