• [^] # Re: vider un fichier / créer un fichier vide

    Posté par . En réponse au message [Terminal] vider un fichier / créer un fichier vide. Évalué à 2.

    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.