====== Linux ====== ===== find ===== find . -type d -name "xxx" find . -type f -exec chmod -x {} \; Pour traiter les répertoires : -type d ==== Chaînage ==== find . -maxdepth 1 -type d -newermt 2018-01-03 | cut -d'/' -f 6 | grep 2017 find . -maxdepth 1 -type d | grep -Ev "/[0-9]{4}$" | xargs rmdir -Ev : Expression régulière étendue + résultat inversé ==== Additionner la taille des fichiers recherchés ==== find /path/to/files/ -name *.log* | xargs du -hs --total | tail -1 ===== sed ===== sed -i 's/regex/string/g' file ==== Chaînage ==== cat infile | sed 's/regex1/string/' | sed -r 's/re\(g\)ex2/\str\1ing/' > outfile -E, -r, --regexp-extended ==== rsync ==== Script de sauvegarde #!/bin/bash # A script to perform incremental backups using rsync set -o errexit set -o nounset set -o pipefail readonly SOURCE_DIR="${HOME}" readonly BACKUP_DIR="/mnt/data/backups" readonly DATETIME="$(date '+%Y-%m-%d_%H:%M:%S')" readonly BACKUP_PATH="${BACKUP_DIR}/${DATETIME}" readonly LATEST_LINK="${BACKUP_DIR}/latest" mkdir -p "${BACKUP_DIR}" rsync -av --delete \ "${SOURCE_DIR}/" \ --link-dest "${LATEST_LINK}" \ --exclude=".cache" \ "${BACKUP_PATH}" rm -rf "${LATEST_LINK}" ln -s "${BACKUP_PATH}" "${LATEST_LINK}" # crontab -e # 0 */12 * * * /path/to/backup-script.sh ---- ===== Encodage des caractères ===== ==== Voir l'encodage d'un fichier ==== file -i file.txt ou uchardet file.txt ==== Ajouter le BOM à un fichier UTF-8 ==== sed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' file.txt ---- ===== Logging ===== ==== Logger la sortie d'une commande tout en l'affichant dans la console ==== echo "gromf!" 2>&1 | tee log.out ==== Compter le nombre de lignes par seconde ajoutées à un fichier de log ==== tail -f /var/log/haproxy.log | pv --line-mode --rate > /dev/null ---- ===== Gestion des disques et de l'espace disque ===== ==== Agrandissement d'une partition suite au redimensionnement d'un disque ==== A adapter selon le disque à redimensionner. Initier un scan des nouvelles caractéristiques du disque : echo 1 > /sys/class/block/sda/device/rescan Vérifier la prise en compte de la demande de scan : dmesg [9937790.353627] sd 0:0:2:0: [sda] 419430400 512-byte logical blocks: (215 GB/200 GiB) [9937790.353767] sda: detected capacity change from 209715200 to 419430400 Si nécessaire, installer growpart.\\ Sous Debian : apt install cloud-utils Agrandir la partition : growpart /dev/sda 1 Agrandir le système de fichier : resize2fs /dev/sda1 Pour automatiser le processus, il est possible de planifier l'exécution d'un script.\\ Attention, le script n'a pas été testé !\\ Source : https://codenotary.com/blog/enlarge-a-disk-and-partition-of-any-linux-vm-without-a-reboot\\ Par exemple, créer la tâche planifiée suivante dans ''/etc/cron.d/resize_disk'' : */5 * * * * root /usr/local/bin/disk_resize.sh Contenu de disk_resize.sh : #!/bin/bash LOGFILE=/data/log/speed/resize.log LOCKFILE=/tmp/enlarge.lock export PATH=/usr/sbin:/usr/bin:/sbin:/bin dotlockfile -r 0 $LOCKFILE || exit 1 echo 1 > /sys/class/block/sda/device/rescan sleep 5 GROWPART_OUT=`growpart /dev/sda 2` if [ $? -eq 0 ]; then echo `date` >> $LOGFILE echo "trying to resize fs" >> $LOGFILE echo $GROWPART_OUT >> $LOGFILE resize2fs /dev/sda2 >> $LOGFILE 2>&1 echo `date` >> $LOGFILE echo "resize done" >> $LOGFILE fi echo 1 2>/dev/null >/sys/class/block/sdb/device/rescan sleep 5 GROWPART_OUT=`growpart /dev/sdb 1` if [ $? -eq 0 ]; then echo `date` >> $LOGFILE echo "trying to resize fs" >> $LOGFILE echo $GROWPART_OUT >> $LOGFILE resize2fs /dev/sdb1 >> $LOGFILE 2>&1 echo `date` >> $LOGFILE echo "resize done" >> $LOGFILE fi dotlockfile -u $LOCKFILE ==== Contrôler la taille des fichiers du système ==== duc index -x --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/net --exclude=/run -v --debug / ==== Monitorer la taille d'un fichier en temps réel ==== watch -n 1 "ls -lh /root/.cache/duc | awk '{print \$5}'" ===== Gestion des utilisateurs ===== ==== Ajouter un utilisateur à un groupe ==== usermod -aG ==== Désactiver un compte utilisateur ==== usermod -L -e 1 -e 1 : Date d'expiration au 02/01/1970 -> Désactivation définitive ---- ===== Gestion des processus ===== ==== Tuer à l'aide de la commande ps ==== kill $(ps aux |grep -i illustrator | awk '{print $2}') ===== Interactivité ===== ==== Enregistrer une saisie ==== read -p "Veuillez saisir du texte" VAR ==== Enregistrer une saisie de mot de passe ==== read -s -p "Mot de passe :" PASSWD ---- ===== Gestion de l'énergie ===== ==== Eteindre la machine ==== shutdown -h now OU init 0 ==== Niveaux d'exécution ==== * 0 — Arrêt. * 1 — Mode texte mono-utilisateur. * 2 — Pas utilisé * 3 — Mode texte multi-utilisateurs complet. * 4 — Pas utilisé * 5 — Mode graphique multi-utilisateurs complet (avec un écran de connexion de type X Window) * 6 — Redémarrage. ===== Gestion du réseau ===== ==== Renouveler le bail DHCP ==== Libération du bail sudo dhclient -r Obtention d'un nouveau bail sudo dhclient ==== Désactiver IPv6 ==== === Méthode Grub === /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1" update-grub /etc/netconfig #udp6 tpi_clts v inet6 udp - - #tcp6 tpi_cots_ord v inet6 tcp - - === Methode systemctcl === sudo vim /etc/sysctl.d/60-custom.conf net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 sudo sysctl -p sudo systemctl restart procps cat /proc/sys/net/ipv6/conf/all/disable_ipv6 1 ===== Gestion de la localisation ===== ==== Configuration du clavier ==== dpkg-reconfigure keyboard-configuration ==== Réparation des problèmes de langues ==== perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_TIME = "fr_FR.UTF-8", LC_MONETARY = "fr_FR.UTF-8", LC_ADDRESS = "fr_FR.UTF-8", LC_TELEPHONE = "fr_FR.UTF-8", LC_NAME = "fr_FR.UTF-8", LC_MEASUREMENT = "fr_FR.UTF-8", LC_IDENTIFICATION = "fr_FR.UTF-8", LC_NUMERIC = "fr_FR.UTF-8", LC_PAPER = "fr_FR.UTF-8", LANG = "en_GB.UTF-8" are supported and installed on your system. sudo locale-gen fr_FR.UTF-8 sudo dpkg-reconfigure locales ===== Sécurité ===== ==== sudo ==== ==== Ajouter un utilisateur au sudoers ==== La commande consiste simplement à ajouter l'utilisateur au groupe sudo. usermod -aG sudo === Augmenter le délai de saisie du mot de passe === sudo visudo Defaults timestamp_timeout=3600 -1 : illimité Pour un utilisateur en particulier : Defaults:username timestamp_timeout=3600 === Masquer les astérisques lors de la saisie du mot de passe === echo 'Defaults !pwfeedback'|sudo tee /etc/sudoers.d/0pwfeedback Le nom du fichier 0pwfeedback peut être à adapter selon les configurations. ===== Divers ===== ==== Exécuter en tant que ==== === Utilisateur standards === su - -c "" === Spécifier le groupe et le shell === su -g -s /bin/bash -c "" ==== Exécuter une commande n fois ==== for i in {1..n}; do command; done; ==== Exécuter une commande à intervalles réguliers ==== watch -n 1 date ==== Supprimer les noyaux inutilisés ==== echo $(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p') $(dpkg --list | grep linux-headers | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p') | xargs sudo apt-get -y purge sudo apt autoremove --purge ==== Déporter l'affichage en tant que root ==== sudo xauth add $(xauth -f ~befe/.Xauthority list|tail -1) ==== Créer un répertoire et se rendre à l'intérieur dans la foulée ==== mcd() { mkdir "$@" 2> >(sed s/mkdir/mcd/ 1>&2) && cd "$_"; } ==== Vérifier les mises à jour du BIOS (et autres firmwares) ==== fwupdmgr get-upgrades