Comment obtenir des processus exécutant actuellement des sémaphores par / proc?
16
Je me demande comment obtenir des processus exécutant actuellement des sémaphores /proc? Je suppose que c'est possible par le sous-répertoire SysVIPC, mais je ne sais pas comment utiliser ces commandes.
Dans /proc/PID/maps, vous pouvez voir le mappage de la mémoire d'un processus et les sémaphores POSIX s'affichent sous forme de fichiers joints dans /dev/shm. Je ne suis pas sûr des sémaphores SysV.
lgeorget
@lgeorget et moi-même avons confirmé que les sémaphores POSIX et SysV apparaissent en fait dans le /proc/PID/mapsfichier pour un PID donné.
slm
Mais apparemment, les fragments de mémoire partagée apparaissent également comme des entrées dans /dev/shmet ils sont assez indiscernables des sémaphores (sauf s'ils ont des noms intelligents).
lgeorget
Réponses:
21
Ma seule expérience dans le traitement des sémaphores et de la mémoire partagée consiste à utiliser la commande ipcs. Jetez un œil à la page de manuel ipcs pour plus de détails.
Cette commande vous montre quels processus ont des sémaphores:
Avec le semid connu, nous pouvons demander des informations supplémentaires sur les PID qui ont des sémaphores (notez qu'il y en a 8 - la colonne nsems):
La colonne pid sont ces processus. Vous pouvez les rechercher à l' aide psou regarder à travers le /procsystème de fichiers, /proc/<pid>.
Par exemple:
$ more /proc/2265/cmdline
mono
POSIX et SystemV
À partir d'un commentaire laissé par @lgeorget, j'ai fouillé dans le /proc/2265/mapcontenu de mon PID 2265 et j'ai trouvé les /dev/shmréférences suivantes :
Pour autant que je sache, seuls les sémaphores System V (ceux que vous obtenez semget(2)) apparaissent, ipcs -sdonc si vous utilisez des sémaphores POSIX (ceux que vous obtenez sem_open(2)), vous devez utiliser une autre méthode.
lgeorget
Connaissez-vous des commandes de terminal qui renverront la variété sem_open (2)? Juste curieux. Tout ce que je sais sur les sémaphores se trouve dans la réponse ci-dessus 8-).
slm
Non, c'est ça le problème. ;) Comme le ipcsdit la page de manuel: "L'utilitaire Linux ipcs n'est pas entièrement compatible avec l'utilitaire POSIX ipcs." donc je ne suis pas sûr qu'ils aient même pensé à quelque chose pour POSIX IPC. Peut-être une future version de ipcs:).
lgeorget
le contenu de la mapsont les deux variétés de sémaphores pensé, correct?
slm
Je suppose. D'une manière ou d'une autre, les sémaphores doivent être attachés quelque part dans la mémoire du processus. Mais je n'étais pas sûr que les sémaphores SysV aient également été créés dans le pseudo-système de fichiers /dev/shm. Maintenant, nous avons la réponse. :)
/proc/PID/maps
, vous pouvez voir le mappage de la mémoire d'un processus et les sémaphores POSIX s'affichent sous forme de fichiers joints dans/dev/shm
. Je ne suis pas sûr des sémaphores SysV./proc/PID/maps
fichier pour un PID donné./dev/shm
et ils sont assez indiscernables des sémaphores (sauf s'ils ont des noms intelligents).Réponses:
Ma seule expérience dans le traitement des sémaphores et de la mémoire partagée consiste à utiliser la commande
ipcs
. Jetez un œil à la page de manuel ipcs pour plus de détails.Cette commande vous montre quels processus ont des sémaphores:
Avec le semid connu, nous pouvons demander des informations supplémentaires sur les PID qui ont des sémaphores (notez qu'il y en a 8 - la colonne nsems):
La colonne pid sont ces processus. Vous pouvez les rechercher à l' aide
ps
ou regarder à travers le/proc
système de fichiers,/proc/<pid>
.Par exemple:
POSIX et SystemV
À partir d'un commentaire laissé par @lgeorget, j'ai fouillé dans le
/proc/2265/map
contenu de mon PID 2265 et j'ai trouvé les/dev/shm
références suivantes :la source
semget(2)
) apparaissent,ipcs -s
donc si vous utilisez des sémaphores POSIX (ceux que vous obtenezsem_open(2)
), vous devez utiliser une autre méthode.ipcs
dit la page de manuel: "L'utilitaire Linux ipcs n'est pas entièrement compatible avec l'utilitaire POSIX ipcs." donc je ne suis pas sûr qu'ils aient même pensé à quelque chose pour POSIX IPC. Peut-être une future version deipcs
:).map
sont les deux variétés de sémaphores pensé, correct?/dev/shm
. Maintenant, nous avons la réponse. :)