88 votes

Dump de la mémoire d'un processus linux vers un fichier

Est-il possible de vider la mémoire actuelle allouée à un processus (par PID) dans un fichier ? Ou de la lire d'une manière ou d'une autre ?

0 votes

Vous pouvez utiliser mon preuve de concept script qui se lit comme suit /proc/$pid/mem .

2 votes

Vous pouvez également lire superuser.com/questions/236390/ et utiliser gcore à la place.

3voto

Hallgrim Points 7198

Homme proc dit :

/proc/[pid]/mem Ce fichier peut être utilisé pour accéder aux pages de mémoire d'un processus d'un processus à travers open(2), read(2), et lseek(2).

Peut-être que cela peut vous aider

2 votes

Ce n'est pas suffisant, la lecture d'un autre processus nécessite une combinaison de /proc/<pid>/{mem,*maps}, ptrace, et une certaine gestion des signaux pour éviter de suspendre le processus cible.

2 votes

@Tobu En effet, . J'ai écrit un preuve de concept script .

2voto

Outil pour vider le processus sur la sortie standard, pcat/memdump :

0 votes

Celui-ci est obsolète (supprimé à la demande du mainteneur) ; j'ai quand même installé l'ancien paquet et il a échoué avec "Input/output error ; did you use GCC with another machine's header files ?".

1voto

Maxymus Points 437

Vous pouvez maintenant utiliser procdump de la suite SysInternals sur Linux :

https://github.com/Microsoft/ProcDump-for-Linux

0voto

Nopius Points 359

Si vous voulez vider un segment de mémoire séparé du processus en cours d'exécution sans créer un énorme fichier core (par exemple avec gcore), vous pouvez utiliser un petit outil à partir de aquí . Il y a également une ligne dans le README si vous souhaitez vider tous les segments lisibles dans des fichiers séparés.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X