DOC:UNIX:Commandes : Différence entre versions
| (9 révisions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 57 : | Ligne 57 : | ||
ex : trouver la taille des dossiers .trash" de MisTRAL | ex : trouver la taille des dossiers .trash" de MisTRAL | ||
| − | |||
| − | = | + | <syntaxhighlight lang="bash"> |
| + | du -k `find /mnt/nfsshare/6.0/MiSTRAL/raid \ | ||
| + | -maxdepth 2 \ | ||
| + | -name '*.trash' \ | ||
| + | -type d ` | \ | ||
| + | perl -ni -e '$i += $_ ; END {printf "%.02f Mo" , $i/1024/1024 ."\n"}' | ||
| + | </syntaxhighlight> | ||
| − | + | = bash = | |
| − | |||
| − | + | == créer 100 fichiers (vides) en 1 commande == | |
| + | |||
| + | Utilisation de l'opérateur <code>..</code> : | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | $ touch {0..9}{0..9}.fic | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | == renommage de fichiers en masse == | ||
| + | |||
| + | |||
| + | ex : changer l'extension de fichiers : *.fic en *.txt | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | $ for file in `find -name "*.fic"`; do mv "$file" "${file/.fic/.txt}" ; done | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | == connaître les processus qui utilisent la swap == | ||
| + | |||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | for proc in /proc/[0-9]*; do | ||
| + | awk '/VmSwap/ { print $2 "\t'`readlink $proc/exe | awk '{ print $1 }'`'" }' $proc/status; | ||
| + | done | sort -n | awk '{ total += $1 ; print $0 } END { print total "\tTotal" }' | ||
| + | </syntaxhighlight> | ||
Version actuelle datée du 17 juillet 2023 à 06:58
Recettes de cuisine & commandes utiles
Comment dire à linux qu'un disque (LUN SAN) a changé de taille ?
la commande a lancer est :
# blockdev --rereadpt /dev/sdx (x = lettre associée au LUN)
# dmesg SCSI device sdc: drive cache: write back w/ FUA sdc: detected capacity change from 42949672960 to 214748364800 sdc: sdc1 SCSI device sdc: 419430400 512-byte hdwr sectors (214748 MB) sdc: Write Protect is off sdc: Mode Sense: a5 00 10 08
# fdisk -l /dev/sdx Disk /dev/sdx: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 1 26108 209712478+ 8e Linux LVM
Puis, il faut rescanner les chemins, soit avec en lancant simplement multipath soit en utilisant le démon multipathd
# multipathd -k"resize multipath mpathX"
Comment zipper (ou traiter) un ensemble de fichiers contenant des caractères blancs dans le nom ?
la commande magique :
find <nom rép> -name '*.pdf' -print | sed "s/'/\\\'/g" | xargs -I "{}" zip -9m "{}".zip "{}"
que fait cette commande ?
elle recherche à partir d'un répertoire donné tous les fichiers PDF, affiche leurs noms, protège le caractère ' ' s'il y a lieu et ZIP le fichier en compression maximale
petite variante :
find . -mtime +365 -name '*.pdf' -print | sed "s/'/\\\'/g" | xargs -I "{}" zip -9m "{}".zip "{}"
idem que précédemment, mais ne prend que les fichiers modifiés il y à plus d'un an à partir du répertoire courant
Comment supprimer les sous dossiers vides d'un répertoire
find /symlnks/io/jobs/workflows/wkftwist -depth -mindepth 2 -type d -empty -mtime +1 -print | xargs rmdir
recherche tous les sous dossiers (-type d ) vides (-empty) modifiés il y a plus d'un jour (-mtime +1) en ne prenant en compte qu'à partir du 2è niveau (-depth -mindepth 2)
Commande equivalente à un "tree size" par répertoire
ex : trouver la taille des dossiers .trash" de MisTRAL
du -k `find /mnt/nfsshare/6.0/MiSTRAL/raid \
-maxdepth 2 \
-name '*.trash' \
-type d ` | \
perl -ni -e '$i += $_ ; END {printf "%.02f Mo" , $i/1024/1024 ."\n"}'bash
créer 100 fichiers (vides) en 1 commande
Utilisation de l'opérateur .. :
$ touch {0..9}{0..9}.ficrenommage de fichiers en masse
ex : changer l'extension de fichiers : *.fic en *.txt
$ for file in `find -name "*.fic"`; do mv "$file" "${file/.fic/.txt}" ; done
connaître les processus qui utilisent la swap
for proc in /proc/[0-9]*; do
awk '/VmSwap/ { print $2 "\t'`readlink $proc/exe | awk '{ print $1 }'`'" }' $proc/status;
done | sort -n | awk '{ total += $1 ; print $0 } END { print total "\tTotal" }'