Question Récupérer un script en cours depuis une session de terminal


Donc j'utilise Écran GNU gérer plusieurs scripts / programmes en cours d'exécution. Le multiplexage et la décoloration sont très utiles.

J'ai supprimé un script du disque et j'ai maintenant du mal à trouver la sauvegarde. Cependant, une des sessions de terminal exécutait le script avant la suppression du fichier et continue de fonctionner correctement.

Existe-t-il un moyen de pirater la session de terminal qui exécute actuellement le script pour récupérer le contenu de ce fichier?


34
2017-07-20 09:13


origine


Également: Comment récupérer un fichier supprimé s'il est encore ouvert par un processus? - SU, Relier un fichier supprimé - muru


Réponses:


recherchez le pid du script en utilisant ps

ps -ef|grep script.sh
Fdo  8983  8463  0 12:28 pts/2    00:00:00 /bin/bash ./script.sh

vérifier /proc/$PID/fd/; il devrait y avoir un lien brisé vers le fichier de script, mais cat  devrait travail (pendant que le script est en cours d'exécution!):

cat /proc/8983/fd/255 
#!/bin/bash
# script contents!

bonne chance!


60
2017-07-20 10:37



@mrc Je pense que ça marche, parce que le contenu des fichiers, est chargé en mémoire - c4f4t0r
Bonne suggestion! C'est aussi un avertissement que @fdo doit mettre en place une routine de sauvegarde décente, parce que la prochaine fois, il n'aura peut-être pas cette chance. - Criggie
@ c4f4t0r Rien à voir avec le chargement en mémoire ou non. Linux ne va pas explicitement supprimer un fichier (inode) tant qu'il y a des handles ouverts - le fichier reste sur le disque, occupant de l'espace. rm et autres outils dissocier le fichier, en supprimant le lien du fichier prénom aux données réelles (référencées par inode), mais tant qu’une référence existe (lien physique ou handle ouvert), l’inode n’est pas supprimé. - Bob
Juste curieux ... comment avez-vous su pour vérifier fd 255? Ou est-ce juste un exemple? - gardenhead
@gardenhead C'est un exemple. - immibis