¿Cómo obtener procesos que actualmente ejecutan semáforos por / proc?
16
Me pregunto cómo hacer que los procesos ejecuten actualmente semáforos /proc. Supongo que es posible por el subdirectorio SysVIPC, pero no sé cómo usar estos comandos.
En /proc/PID/maps, puede ver la asignación de memoria de un proceso y los semáforos POSIX se muestran como archivos adjuntos /dev/shm. Sin embargo, no estoy seguro acerca de los semáforos de SysV.
lgeorget
@lgeorget y yo hemos confirmado que los semáforos POSIX y SysV aparecen de hecho en el /proc/PID/mapsarchivo para un PID determinado.
slm
Pero aparentemente, los fragmentos de memoria compartida también aparecen como entradas /dev/shmy son bastante indistinguibles de los semáforos (excepto si tienen nombres inteligentes).
lgeorget
Respuestas:
21
Mi única experiencia al tratar con semáforos y memoria compartida es a través del uso del comando ipcs. Eche un vistazo a la página de manual de ipcs para obtener más detalles.
Este comando muestra qué procesos tienen semáforos:
Hasta donde sé, solo se semget(2)muestran los semáforos del Sistema V (aquellos con los que se obtiene ), por ipcs -slo que si está utilizando los semáforos POSIX (con los que se obtiene sem_open(2)), debe usar otro método.
lgeorget
¿Conoce algún comando de terminal que devolverá la variedad sem_open (2)? Sólo curioso. Todo lo que sé sobre los semáforos está en la respuesta anterior 8-).
slm
No, ese es el problema. ;) Como ipcsdice la página de manual: "La utilidad ipcs de Linux no es totalmente compatible con la utilidad ipcs POSIX". así que no estoy seguro de que hayan pensado en algo para POSIX IPC. Tal vez un lanzamiento futuro de ipcs:).
lgeorget
los contenidos de mapambos son una variedad de semáforos pensados, ¿correcto?
slm
Supongo que sí. De una forma u otra, los semáforos tienen que estar unidos en algún lugar de la memoria del proceso. Pero no estaba seguro de que los semáforos SysV también se crearan en el pseudo-sistema de archivos /dev/shm. Ahora tenemos la respuesta. :)
/proc/PID/maps
, puede ver la asignación de memoria de un proceso y los semáforos POSIX se muestran como archivos adjuntos/dev/shm
. Sin embargo, no estoy seguro acerca de los semáforos de SysV./proc/PID/maps
archivo para un PID determinado./dev/shm
y son bastante indistinguibles de los semáforos (excepto si tienen nombres inteligentes).Respuestas:
Mi única experiencia al tratar con semáforos y memoria compartida es a través del uso del comando
ipcs
. Eche un vistazo a la página de manual de ipcs para obtener más detalles.Este comando muestra qué procesos tienen semáforos:
Con el semid conocido, podemos consultar información adicional sobre los PID que tienen semáforos (tenga en cuenta que hay 8 - la columna nsems):
La columna pid son estos procesos. O se puede mirar hacia arriba usando
ps
o una mirada a través del/proc
sistema de archivos,/proc/<pid>
.Por ejemplo:
POSIX y SystemV
Partiendo de un comentario dejado por @lgeorget, busqué en el
/proc/2265/map
contenido de mi PID 2265 y encontré las siguientes/dev/shm
referencias:fuente
semget(2)
muestran los semáforos del Sistema V (aquellos con los que se obtiene ), poripcs -s
lo que si está utilizando los semáforos POSIX (con los que se obtienesem_open(2)
), debe usar otro método.ipcs
dice la página de manual: "La utilidad ipcs de Linux no es totalmente compatible con la utilidad ipcs POSIX". así que no estoy seguro de que hayan pensado en algo para POSIX IPC. Tal vez un lanzamiento futuro deipcs
:).map
ambos son una variedad de semáforos pensados, ¿correcto?/dev/shm
. Ahora tenemos la respuesta. :)