Je veux regarder la taille croissante d'un seul fichier, donc j'utilise cette commande:
texai@maelstrom ~$ ls -lh club_prod.sql | awk '{print $5}'
116M
Maintenant, je veux regarder ce résultat toutes les 5 secondes donc:
texai@maelstrom ~$ watch -n 5 ls -lh club_prod.sql | awk '{print $5}'
mais cette commande ne renvoie aucun résultat
Vous canalisez la sortie de watch
dans awk
. Si vous simplifiez votre ligne de commande, vous avez:
watch <some arguments> | awk '{print $5}'
Ce n'est pas ce que tu veux. Essayer:
watch -n 5 "ls -lh club_prod.sql | awk '{print \$5}'"
watch -n 5 "du -h club_prod.sql"
Pas exactement lié, mais si vous souhaitez surveiller le taux de croissance d'un fichier, vous pouvez utiliser la commande suivante:
tail -f yourfile.txt | pv > /dev/null
tail -f
- sort les données ajoutées au fichierpv
- mesure le flux de données dans le tube> /dev/null
- la sortie standard est suppriméeRemarque: parfois pv
peut ne pas être préinstallé
J'espère que cela aidera quelqu'un :)
Vous devez citer le pipeline pour qu'il soit fait danswatch
.
watch -n 5 "ls -lh club_prod.sql | awk '{print \$5}'"
Notez également le \
ajouté à \$5
car les guillemets externes sont maintenant des guillemets doubles, dans lesquels $
- les variables sont développées. (Les autres méthodes de cotation sont généralement plus laides que cela.)
watch -n 5 "ls -lh club_prod.sql | awk '{print \$5}'"
L'utilisation de watch
est correcte, mais l'utilisation de ls
j'éviterais. Je recommanderais l'utilisation de stat
ou du
, mais cela dépend de ce que vous voulez.
du
: Si vous voulez que l'espace soit occupé sur votre disquestat
: Si vous voulez le nombre d'octets que contient votre fichier (combien d'octets puis-je lire dans le fichier)Imaginez travailler avec un système de fichiers compressé, ou avec le traitement de fichiers clairsemés, la fragmentation interne, les blocs indirects ...
Dans les deux cas, le résultat serait:
$ watch -n 5 'stat --printf "%s\n" file'
$ watch -n 5 'du -B1 file'
Les deux résultats peuvent en fait être obtenus dans une seule commande avec stat
:
$ watch -n 5 'stat --printf "%s %b %B\n" file'
Le produit des deux dernières colonnes est le résultat de du
.
Pour une observation rapide et détaillée de la croissance d'un fichier, toutes les 0,1 seconde:
watch -n 0.1 "ls -l /mnt/some/file | awk '{print \$5}' | sed -re ' :rep ; s/([0-9])([0-9]{3})($|[^0-9])/\1,\2\3/ ; t rep '"
Cela produira quelque chose comme 62 673 539 072.
Vous pouvez effectuer ceci comme ça:
while true; do
du -s **file_or_directory**
sleep **time_interval**
done
#!/bin/bash
# Watch File Size and Growth
# Author: Marcelo Pacheco - [email protected]
# Syntax: watchfilesize filetomonitor
nm="$1"
while true
do
sz=$(stat -c %s "$nm")
sleep 1m
sz1=$(stat -c %s "$nm")
echo Growth: $(((sz1-sz)/1024))KB/min Size: $((sz1/1024/1024))MB
sz=$sz1
done