Développeur FullStack & Devops

Notes et mémos techniques

Linux Shell tips & tricks

Recharger des fichiers de conf sans se déconnecter

. ~/.profile

est strictement équivalent à:

source ~/.profile

la commande source exécute le script spécifié dans le shell actuel.

Obtenir son adresse IP publique

dig +short myip.opendns.com @resolver1.opendns.com
curl -s http://whatismyip.akamai.com
curl wgetip.com

Changer de Shell

Vérifier si on est en shell Bash:

echo $SHELL retourne /bin/bash

puis pour passer sous Fish par exemple ajouter le path du binaire du nouveau Shell dans /etc/shells puis:

chsh -s /usr/bin/fish

Lister les port écoutés

sudo netstat -tupln

Raccourcis Bash

CTRL + A : début de ligne CTRL + E : fin de ligne

ALT + B : reculer 1 mot ALT + F : avancer 1 mot

!une_commande : exécute la commande avec les arguments de sa dernière exécution (ex: !ls)

CTRL + R : permet de naviguer à travers l'historique des commandes (interractif)

source

Correction du décallage d'heure en dual boot

Pour corriger de l'horloge en dual-boot avec Windows ie le passage de Linux a Windows génère un décallage de l'heure système, le paramètre "RTC in local TZ" doit passer de no à yes

sudo timedatectl set-local-rtc 1 --adjust-system-clock

source

timedatectl est issue de l'écosystème linux-systemd

Localiser un binaire

la commande command -v est à favoriser par rapport à which qui est un process externe (sécurité, performances etc.) et cherche les binaires (pas uniquement dans le PATH)

command -v monbinaire

locate recherche des entrées dans une base de données mlocate mise à jour régulièrement par la système. Cherche une correspondance sur tout le chemin, il est possible d'utiliser le -r (regex)

locate -r '^.\*/monbinaire

find peut avec les arguments -exec ou -ok être utilisé pour exécuter des instructions sur les résultats de la commande

find -name '\*onbinaire' -print -ok ls -l {} \;

grep -R en excluant des dossiers

grep -iR --exclude-dir=node_modules ' port ' \*

Fichiers et droits

chown possède de nombreuses options, pour affecter des dossiers/fichiers de façon sélective:

chown www-data:www-data /tmp/toto # modifie user:groupe
chown -R www-data:www-data /tmp/toto # modifie récursivement
chown -h www-data:www-data /tmp/toto # modifier les droits sur les symlinks eux même (et non la cible du lien)
chown --from=behrouze www-data /tmp/toto # modifie le owner des fichier de l'utilisateur spécifié
chown --from=:old-group :new-group /tmp/toto # modifie le groupe des fichier du groupe old-group
chown --reference=fichier-source fichier-cible # copie les droits d'un fichier existant
chown g+s www-data /toto/ # utilisation du SGID, appliqué à tout nouveau fichier créé

Debugger en Bash

mode debug: set -x  et pour remettre en mode normal: set +x

Executer une succession de commandes en root

sudo sh -c 'cat fichier|grep -v "#" > /etc/nginx/sites-available/monsite.conf'

Grep

grep -A 5 # affiche les 5 lignes suivants le pattern trouvé
grep -B 5 # précédent
grep -C 5 # avant et après
grep -E -w 'version|number' fichier # cherche les mots version OU number dans le fichier

MAJ du système

Pour appliquer les MAJ de sécurité automatiquement utiliser l'utilitaire unattended-upgrades. A noter que mettre un apt update dans un crontab sera souvent en échec car le PATH n'est pas setté.

# pour vérifier la date du dernier apt update voir la date de dernière modif du fichier pkgcache.bin :
ls -l /var/cache/apt/pkgcache.bin

# ou avec les détails des dates d'accès :
stat /var/cache/apt/pkgcache.bin

# le dernier apt upgrade :
tail -1 /var/log/apt/history.log

Changer l'éditeur de texte par défaut

Un éditeur de text par défaut doit être sélectionné pour utiliser par exemple les commandes tels que crontab -e , et nous avons le choix parmis les éditeurs installés (souvent au moins vim et nano):

select-editor

Changer le nom de sa machine

vi /etc/hostname
vi /etc/hosts

Distribution Linux

Pour déterminer la distribution les infos se trouvent:

cat /etc/os-release
cat /proc/version

Reboots

affiche la date et heure des 3 derniers redémarrage (complète uptime  qui donne la durée)

last -x|grep shutdown | head -3  

Grub

Pour customiser Grub (OS loader) en ajoutant la mémorisation du dernier choix, ainsi que l'ajout d'une image de background perso, il faut éditer le fichier sudo vi /etc/default/grub  et ajouter/modifier :

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_BACKGROUND="/home/behrouze/Images/Grub.jpg"

et faire prendre en compte les modifications par un sudo update-grub.

admin-linux
bash
linux
memo
shell
tips
dual-boot
rédigé le 16/05/18 par Behrouze
A proposCheat SheetsOutilsVidéos