debian:tips

Ceci est une ancienne révision du document !


Moyen simple pour libérer des ressources est de désactiver les services inutiles qui se lancent automatiquement au démarrage.

 chkconfig

 netstat -ntu | tail -n+3 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
  • n : Afficher les ip en numérique
  • t : Afficher le traffic tcp
  • u : Afficher le traffic udp

netstat -laputen


 DOSSIER_MUSIQUE="/home/user/direction/dossier"
 find "$DOSSIER_MUSIQUE" -maxdepth 2 -type d | sed "1d;s@$DOSSIER_MUSIQUE@@;s@/.*/@ -@"

 
du -h --max-depth=2 | sort -n

du -sh * | sort -rn

Meilleur lecture

du -sk * | sort -rn 
 
.bashrc

alias dus="du -sk $* | sort -rn | sed -e 's=.*\t\(.*\)=\"\1\"=' | xargs du -sh"

function dirsize()
{
if [ -z $1 ]; then
dir="."
else
dir=$1
fi
find $dir -type d -maxdepth 1 -mindepth 1 -exec du -sh '{}' \; 2>/dev/null \ | perl -pe "s/\t.*\/(.*)$/\t$(echo '\033[01;32m')\1$(echo '\033[0m')/gi"
echo
echo "Total: " $(du -sh $dir 2>/dev/null | awk '{print $1}')
}

tous les fichiers de configuration qui restent sur votre système une fois certains logiciels désinstallés :

   # dpkg -l | grep  "^rc" | awk '{ print $2 }' | xargs dpkg --purge  
  
  

Pour savoir combien les utilisateurs de votre système consomment d'espace disque, il suffit de faire une boucle for :

   for dir in $(ls /home); do du -sh /home/$dir; done

La ligne de commande nous offre différents outils pour afficher la taille de vos fichiers.

Nous avons par exemple la commande du (disk usage) qui dispose de différentes options pour afficher la taille des fichiers :

 
  du -shc -- *
16M     Desktop
248K    documents
40G     media
8.0K    nohup.out
560M   projects
94M     security.docs

taille supérieure à 4000Ko ou 4Mo, utiliser la commade find l'avantage recherche récursive dans tous les sous répertoires :

 find ~/  -type f -size +4000k -exec ls -lh {} \;

fichiers de moins de 4000Ko :

find ~/ -type f -size -4000k -exec ls -lh {} \;

L'option -type f indique que nous recherchons des fichiers de type régulier et ~/ indique que c'est notre répertoire personnel. La commande find dispose de nombreuses options que vous trouverez dans le man.

Pour trouver la taille des répertoires, nous devons utiliser :

find ~/ -type d -exec du -sh {} \;

Nous aurions pu utiliser aussi xargs :

find ~/ -type d | xargs du -sm | sort -g 

même résultat sauf que l'utilisation des “pipes” (“|”) ralenti l'exécution de la commande.

Trier par date de modification

<xterm2>

 00:50:22-[root@echosystem:/var/log] $ ls -lct  apache2/
 total 470668
-rwxrwxrwx 1 www-data adm  30837415 20 nov.  00:51 blackbox_test2.log.1
-rwxrwxrwx 1 www-data adm  60615893 20 nov.  00:51 www.echosystem.fr-access.log.1
-rwxrwxrwx 1 www-data adm  38934346 20 nov.  00:51 blackbox.log
-rwxrwxrwx 1 www-data adm   1411028 20 nov.  00:50 ssl_access.log.1
-rwxrwxrwx 1 www-data adm   1075185 20 nov.  00:45 www.echosystem.fr-error.log.1
-rwxrwxrwx 1 www-data adm     12706 20 nov.  00:41 error.log.1
-rwxrwxrwx 1 www-data adm  35931153 20 nov.  00:02 blackbox.log.1

</xterm2>

Rechercher un mot dans un fichier avec un path +find

  
  grep "managed-keys" `file * | egrep 'script|text' | awk -F: '{print $1}'`
  
  
  

#find /tmp -xdev -size +2000 -type f -exec ls -l {} \;

-rw-r–r– 1 root system 1091846 02 nov 17:37 /tmp/toto

La commande 'grep' est ce qu'on appelle une commande “filtre”. C'est à dire qu'elle permet de retrouver un contenu précis dans un fichier, ou dans le retour d'une commande.

Par exemple, pour retourner à l'écran toutes les lignes du fichier “smb.conf” qui contiennent le mot “path”, on procedera d'une de ces deux manières : $

  
  root@coteobscur.net:~# grep "path" /etc/samba/smb.conf root@coteobscur.net:~# cat /etc/samba/smb.conf | grep "path"
  

'grep' permet également de rechercher les lignes qui commencent ou finissent par une chaîne donnée. Pour rechercher des lignes qui commencent par “ii” dans le retour de 'dpkg -l“ :

root@coteobscur.net:~# dpkg -l | grep “^ii” Recherche des lignes du fichier “smb.conf” qui finissent par “yes” :

root@coteobscur.net:~# grep "yes$" /etc/samba/smb.conf Enfin, on peut également demander à 'grep' de rechercher les lignes ne contenant pas la chaîne renseignée : 

root@coteobscur.net:~# grep -v "/bin/bash" /etc/passwd (option "-v" pour reverse). On obtiendra ici la liste des utilisateurs du système ne disposant pas d'une session utilisant le shell "bash".

Un autre usage courant de 'grep' est l'option ”-i“ (ignore), qui permet d'ignorer la casse de la chaîne recherchée.

 gael@twelve:$
 tree /home/ | grep -i firefox

|– Firefox_wallpaper.png

Les options de 'grep' et de ses dérivés sont très nombreuses, mais nous avons vu ici les cas d'utilisation les plus fréquents. Bien entendu, toutes les options présentées ici sont cumulables, par exemple dans la commande suivante : gael@twelve:$ grep -vi “^Gael” /etc/passwd qui retournera toutes les lignes du fichier /etc/passwd ne commençant pas par “gael”, “Gael”, “GAEL”, … etc.

La commande 'man grep' est à consulter pour plus de détails.

La commande 'find' permet de rechercher un/des fichier(s), un/des dossier(s). La syntaxe d'une recherche classique (recherche d'un fichier dans une branche d'arborescence) est la suivante :

 gael@twelve:/$ find /home/ -name *.pdf
 /home/gael/factures/juillet/15.07.09-facture_78.pdf
 gael@twelve:/$ Ce qui revient à dire : find (où) -name (quoi)

Outre les recherches classiques, on peut également rechercher les objets appartenant à un utilisateur :

gael@twelve:/$ find /datas/ -user gael
/datas/perso/gael/
/datas/perso/gael/my_pensebete.txt
/datas/perso/gael/repondeur.ogg

Ici encore, la page man de 'find' est à consulter pour connaître toutes les (nombreuses) possibilités offertes par cette commande.

 
 find | xargs grep

En combinant les deux commandes 'grep' et 'find' vues précédemment, on peut obtenir des résultats étonnement efficaces.

Par exemple, on peut rechercher dans la totalité de l'arborescence les fichiers qui contiennent, en majuscules ou minuscules, le mot “passwd” :

     gael@twelve:$ find / -type f | xargs grep -i passwd 
     
     Cette commande recherche dans le système tous les objets de type "**fichier**", et recherche ensuite dans chacun d'eux la chaîne de caractères "**passwd**".

La commande 'xargs', après le pipe, est indispensable pour appliquer le 'grep' sur chaque fichier renvoyé par 'find'. Sans 'xargs', la recherche de la chaîne de caractère ne se ferait que sur la sortie standard de la commande 'find', donc la liste des noms des fichiers, et non leur contenu.

  Équivalent MS-DOS/MS Windows : find
  Signification : rechercher
  Permet de chercher des fichiers et éventuellement d'exécuter des commandes sur ceux-ci ; la recherche est récursive c'est-à-dire qu'elle concerne le répertoire de départ et toute sa descendance (sous-répertoires ainsi que toute leur descendance …)
  

Options les plus fréquentes :

  1. name : Recherche d'un fichier par son nom
  2. iname : Même chose que -name mais insensible à la casse
  3. type : Recherche de fichier d'un certain type
  4. atime : Recherche par date de dernier accès
  5. mtime : Recherche par date de dernière modification
  6. link : Recherche du nombre de liens au fichier
  7. user : Recherche de fichiers appartenant à l'utilisateur donné
  8. group : Recherche de fichiers appartenant au groupe donné

Actions les plus fréquentes :

  1. exec : Exécute la commande donnée aux fichiers trouvés
  2. ok : Même chose que -exec mais demande une confirmation
  3. ls : exécute la commande ls à chaque fichier trouvé

Opérateurs les plus fréquents :

  1. a : Opérateur ET
  2. o : Opérateur OU

! ou -not : Opérateur NOT

Exemples d'utilisation :

simple

Placez-vous dans le répertoire à partir duquel la recherche récursive doit être effectuée et faites :

  find monfichier*
  Recherche un fichier commençant par "monfichier"
  find -name *monfichier*.ogg
  Recherche un fichier contenant "monfichier" et ayant pour extention ".ogg"

avancé

  find /home/ -name monfichier
  Recherche le fichier monfichier dans toute la descendance de /home/
  find . -name "*.c"
  Recherche tous les fichiers ayant une extension .c
  find . -mtime -5
  Recherche les fichiers du répertoire courant qui ont été modifiés entre maintenant et il y a 5 jours
  find /home/ -mtime -1 \! -type d
  Recherche uniquement les fichiers (! -type d signifie n'était pas un répertoire) ayant été modifiés ces dernières 24h
  find . ! -user root
  Affiche tous les fichiers n'appartenant pas à l'utilisateur root
  find . \( -name '*.wmv' -o -name '*.wma' \) -exec rm {} \;
  Recherche et supprime tous les fichiers WMA et WMV trouvés
  find . \( -type f -exec sudo chmod 664 "{}" \; \) , \( -type d -exec sudo chmod 775 "{}" \; \)
  Modifie récursivement les droits en 664 sur les fichiers et en 775 sur les répertoires en une seule instruction

IP debian 9

$  hostname --ip-address

Supprimer les ^M d'un fichier (Windows).

Il peut arriver que vous ayez les caractères ^M affichés en fin de ligne d'un fichier texte écrit sous Windows. Pour les enlever, tapez :

$ tr -d 'r' < fichier_windows.txt > fichier_windows_converti.txt

Recherche de fichiers modifié 3 jours avant

$ find . -mtime -3 -print

  • debian/tips.1586525085.txt
  • Dernière modification : 2020/04/10 15:24
  • de erreur32