web-dev-qa-db-fra.com

regarder la taille du fichier sur linux

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

36
texai

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}'"
55
larsks
watch -n 5 "du -h club_prod.sql"
38
tamasgal

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 fichier
  • pv - mesure le flux de données dans le tube
  • > /dev/null - la sortie standard est supprimée

Remarque: parfois pv peut ne pas être préinstallé

J'espère que cela aidera quelqu'un :)

14
Jacajack

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.)

7
geekosaur
watch -n 5 "ls -lh club_prod.sql | awk '{print \$5}'"
4
myki

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 disque
  • stat: 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.

2
kvantour

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.

1
Osiris

Vous pouvez effectuer ceci comme ça:

while true; do
  du -s **file_or_directory**
 sleep **time_interval**
done
0
Punja Solanki
#!/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
0
Marcelo Pacheco