Catégorie « Linux »

Quelques trucs sur UNIX/Linux #2

Ré-écriture d'URL avec Apache

Les règles de ré-écriture peuvent se placer soit dans le .htaccess, soit dans httpd.conf (ou dans les fichiers dédiés à chaque vhost). Il y a une subtile différence de syntaxe entre les deux cas : dans le cas du httpd.conf, URL relatives présentes dans les expressions rationnelles doivent être précédées d'un / et pas dans le cas du .htaccess.

Exemples :

.htaccess

RewriteCond %{HTTP_HOST} www.example.com
RewriteRule ^toto.html$ http://example.com/youpi.html$1 [R=301,L]

httpd.conf

RewriteCond %{HTTP_HOST} www.example.com
RewriteRule ^/toto.html$ http://example.com/youpi.tml$1 [R=301,L]

Résultat suivant dans la recherche dans l'historique de commandes

Lorsqu'on recherche dans l'historique via ctrl+r, taper à nouveau ctrl+r permet de passer au résultat suivant.

Déterminer la taille d'un dossier

Pour déterminer la taille d'un dossier on peut utiliser du, notamment avec les options :

  • h (human readable) : pour avoir un résultat lisible (type "1,7G") plutôt qu'un nombre d'octets
  • s : pour ne pas détailler tous les sous-dossiers

Exemples :

> du -hs .
2,7G     .
> du -hs ./*
8,0K     ./changeRepo.sh
2,7G     ./instances

Quelques trucs sur UNIX/Linux #1

Les habitués du mode console n'apprendront probablement rien de cet article mais pour ceux qui, comme moi, ne s'en servent qu'occasionnellement, ça peut s'avérer instructif.

Recherche dans l'historique

On a vu il y a quelques temps qu'on pouvait alléger l'historique des commandes saisies en ignorant les doublons. Si la commande que vous recherchez est malgré cela noyée dans la masse, vous pouvez utiliser ctrl+r et taper les premiers caractères de la commande recherchée pour la retrouver.

Blocage de la console

Le raccourci ctrl+s permet de suspendre le terminal (saisie et exécution). Pour le débloquer, le raccourci est ctrl+q donc si le terminal se bloquer mystérieusement (ce qui peut arriver vu que ctrl+s est le raccourci de sauvegarde dans la majorité des éditeurs de texte graphiques et qu'il n'est pas rare de le taper machinalement après une saisie), tentez ça avant de frapper sauvagement sur votre clavier ;)

Retrouver les plus gros fichier de votre système

Une partition est pleine, il faut faire de la place ! Oui, mais où sont les gros fichiers qui consomment tout l'espace ? Telle est la situation dans laquelle je me suis retrouvé pas plus tard qu'il y a 5 minutes...

Après une brève recherche sur le net (que je en compte pas refaire à l'avenir, d'où l'intérêt d'en donner le résultat ici :)), voici la réponse avec une combinaison de du et sort :

du -S <noeud-de-l'arborescence> | sort -n

Soit dans mon cas, pour lister tous les dossiers du système :

du -S / | sort -n

On retrouvera alors les dossiers contenant les plus gros fichiers en fin de liste. Par contre, ça peut mettre un peu de temps à s'exécuter vu que ça fait le tour de tous les dossiers.


Doublons dans l'historique de commandes

Lorsque l'on travaille sous Linux, on se retrouve souvent à taper un bon nombre de fois les mêmes commandes. Du coup l'historique des commandes (accessible notamment via les flèches) n'est rapidement plus très praticable tant il est redondant.

Pour régler ce genre de problème, on peut utiliser la variable shell HISTCONTROL. Celle-ci peut prendre différentes valeurs :

  • ignoredups :
    lorsqu'une commande est identique à la précédente n'est pas ajoutée à l'historique, ce qui évite de se retrouver avec une dizaine de uptime à la file quand on surveille la charge du serveur.
  • ignorespace :
    lorsqu'une commande commence par un espace, elle n'est pas ajoutée à l'historique, ainsi on peut choisir quelle commande ajouter ou non.
  • ignoreboth :
    cumule les comportements des deux valeurs précédentes.
  • erasedups :
    lorsqu'une commande est tapée, toutes les commandes identiques présentes dans l'historique sont supprimées. Ceci est particulièrement intéressant pour éviter d'avoir son historique parasité par un grand nombre de ls, ps, cd .. et autres commandes courantes.
  • enfin pour revenir au comportement classique, il suffit d'affecter une chaine vide.

Cette valeur peut être affectée de plusieurs manières :

  • pour la session courante uniquement via la commande :
    export HISTCONTROL=valeur
  • pour toutes les sessions, en ajoutant HISTCONTROL=valeur dans votre fichier bashrc
  • pour tous les utilisateurs (uniquement si vous êtes administrateur de la machine, bien entendu) en ajoutant HISTCONTROL=valeur dans le fichier bashrc global trouvable dans /etc.