192 votes

Qu'est-ce qui génère le message "fichier texte occupé" sous Unix ?

Quelle opération génère l'erreur "fichier texte occupé" ? Je suis incapable de le dire exactement.

Je pense que c'est lié au fait que je crée un script python temporaire (en utilisant tempfile) et que j'utilise execl à partir de celui-ci, mais je pense que execl modifie le fichier en cours d'exécution.

3voto

Cameron Kerr Points 249

Vous constaterez peut-être que ce phénomène est plus fréquent sur les partages réseau CIFS/SMB. Windows ne permet pas l'écriture d'un fichier lorsqu'un autre fichier est ouvert, et même si le service n'est pas Windows (il peut s'agir d'un autre produit NAS), il reproduira probablement le même comportement. Potentiellement, il pourrait également s'agir d'une manifestation d'un problème NAS sous-jacent vaguement lié au verrouillage/réplication.

3voto

Stephane Eybert Points 161

Si vous essayez de construire phpredis sur une machine Linux, vous devrez peut-être lui laisser le temps de terminer la modification des droits d'accès aux fichiers. sleep avant d'exécuter le fichier :

chmod a+x /usr/bin/php/scripts/phpize \
  && sleep 1 \
  && /usr/bin/php/scripts/phpize

3voto

Poutrathor Points 1047

Si vous exécutez le fichier .sh à partir d'une connexion ssh avec un outil tel que MobaXTerm, et si cet outil dispose d'un utilitaire d'enregistrement automatique pour modifier le fichier distant à partir de la machine locale, cela verrouillera le fichier.

La fermeture et la réouverture de la session SSH le résolvent.

2voto

ScottWelker Points 156

Je n'en connais pas la cause mais je peux vous proposer une solution simple et rapide.

Je viens d'expérimenter cette bizarrerie sur CentOS 6 après avoir cat > shScript.sh (pâte, ^Z ) puis en éditant le fichier dans KWrite. Curieusement, il n'y a pas eu d'instance discernable ( ps -ef ) du script en cours d'exécution.

Je me suis contenté d'une solution rapide consistant à cp shScript.sh shScript2.sh puis j'ai pu exécuter shScript2.sh . Puis j'ai supprimé les deux. C'est fait !

1voto

firo Points 83

Une de mes expériences :

Je modifie toujours le raccourci clavier par défaut de Chrome par ingénierie inverse. Après la modification, j'ai oublié de fermer Chrome et j'ai exécuté ce qui suit :

sudo cp chrome /opt/google/chrome/chrome
cp: cannot create regular file '/opt/google/chrome/chrome': Text file busy

En utilisant strace, vous pouvez trouver plus de détails :

sudo strace cp ./chrome /opt/google/chrome/chrome 2>&1 |grep 'Text file busy'
open("/opt/google/chrome/chrome", O_WRONLY|O_TRUNC) = -1 ETXTBSY (Text file busy)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X