Linux : suppression d'un programme (fichier) pendant qu'il s'exécute - Divers - Linux et OS Alternatifs
Marsh Posté le 13-01-2011 à 20:53:43
je peux me tromper mais il me semble que tant qu'un fichier est ouvert, il n'est pas réellement supprimé du disque (l'inode n'est pas libéré). Même si son nom habituel a disparu.
Marsh Posté le 14-01-2011 à 09:21:59
Hum... Je n'ai peut-être pas été très clair...
De manière plus pratique, voilà mon problème : je développe un programme serveur sur une machine de développement A, puis je transfère par une commande "scp" mon fichier programme vers une machine de test B pour l'exécuter.
Jusqu'à récemment, j'utilisais une CentOS 5.2. Sur cette distribution, je pouvais écraser le fichier sur la machine B, même si l'ancien programme était en cours d'exécution. Je n'avais plus qu'à relancer le programme et le tour était joué.
Depuis peu, je suis passé à une CentOS 5.5. Mon souci, c'est que ma commande "scp" sort en erreur lorsque j'essaie de transférer le fichier programme de A vers B si l'ancien programme est en train de tourner. Il faut donc que j'arrête le programme sur B, que je transfère le nouveau programme de A vers B, puis que je l'exécute sur B.
Bon, ca ne fait qu'une opération en plus, mais vous connaissez les informaticiens : on est tous des fainéants ! En fait, au delà de l'aspect pratique, j'aimerais bien comprendre quel mécanisme se cache derrière tout ca. (Où cela se situe-t-il ? Est-ce une option du noyau, ou cela se paramètre-t-il ailleurs ?)
Marsh Posté le 14-01-2011 à 19:14:21
Je pense que POSIX te garanti que tu puisse remplacer un fichier ouvert.
Tu te chope quoi comme erreur?
Marsh Posté le 14-01-2011 à 19:39:10
Là comme ça, en lisant CentOS, je pense à selinux
Mais bon, à priori ça doit pas s'appliquer à un truc fait maison sans que tu l'aies voulu...
Marsh Posté le 17-01-2011 à 14:11:08
@ Bigon :
La commande scp me sort le message suivant :
scp : <Nom du programme> : Text file busy
Plutôt curieux pour un fichier binaire...
Dans la foulée, j'ai utilisé la commande 'fuser' sur le fichier programme, pour voir qu'il est utilisé par lui-même !
@ e_esprit :
se_linux est désactivé sur ma configuration, donc je doute que ca puisse venir de là.
Je me suis demandé si le système de fichier (ext3) pouvait avoir une influence, mais je ne vois pas à quel niveau.
Marsh Posté le 13-01-2011 à 16:19:30
Bonjour,
J'ai pu constater sur certaines machines sous Linux qu'on peut remplacer un programme (son fichier), alors qu'il est en train de s'exécuter. J'imagine qu'il est chargé intégralement en mémoire et que le fichier n'est donc pas ouvert pendant l'exécution, ce qui rend ainsi possible la suppression du fichier.
Or, j'ai pu aussi constater qu'avec certaines distributions, le fait de pouvoir supprimer ou remplacer un fichier programme pendant son exécution ne marche plus. (J'espère que je suis assez clair...)
Quelqu'un sait-il à quoi est lié ce mécanisme, et comment l'activer ou le désactiver ?
Merci d'avance.