Si le fichier est en cours d'utilisation (utiliser /usr/sbin/lsof pour confirmer), ça ne marche car il y a deux descripteurs de fichier ouverts sur le même fichier. C'est le dernier qui ferme le fichier qui défini la taille.
Exemple :
$ free -s 1> toto &
[1] 17839
[ attendons un peu]
$> toto
$ cat /dev/null> toto ; ll toto ; sleep 2 ; ll toto
-rw-r--r-- 1 f.matias users 0 fév 24 02:38 toto
-rw-r--r-- 1 f.matias users 72996 fév 24 02:38 toto
La première taille à 0 de toto c'est car le jobs %1 n'a pas encore écrit depuis la fermeture du fichier par "> toto".
C'est même une caratéristique appréciée d'unix. Imaginons le "drame" si le process qui écrit en continu fait un seek ! Ça nous priverait aussi de la possibilité d'écriture pas plusieurs process dans un fichier.
Cette caractéristique, n'est pas lié au shell mais au noyau.
[^] # Re: vider un fichier / créer un fichier vide
Posté par matiasf . En réponse au message [Terminal] vider un fichier / créer un fichier vide. Évalué à 2.
Exemple :
$ free -s 1> toto &
[1] 17839
[ attendons un peu]
$> toto
$ cat /dev/null> toto ; ll toto ; sleep 2 ; ll toto
-rw-r--r-- 1 f.matias users 0 fév 24 02:38 toto
-rw-r--r-- 1 f.matias users 72996 fév 24 02:38 toto
La première taille à 0 de toto c'est car le jobs %1 n'a pas encore écrit depuis la fermeture du fichier par "> toto".
C'est même une caratéristique appréciée d'unix. Imaginons le "drame" si le process qui écrit en continu fait un seek ! Ça nous priverait aussi de la possibilité d'écriture pas plusieurs process dans un fichier.
Cette caractéristique, n'est pas lié au shell mais au noyau.