Me pregunto cómo Activity Monitor
se relacionan estos dos procesos si el niño (Safari Web Content) no tiene el ppid
del principal (Safari). pstree
, que usa the ppid
para organizar el árbol, no muestra ninguna relación entre ellos.
Aquí hay otro ejemplo, caffeinate
se inició desde un script de shell dentro BetterTouchTool
usando nohup
, y nuevamente pstree
no muestra ninguna relación.
En realidad, lo que necesito es enviar una kill
señal a los "niños" como Safari Web Content
usar shell script
o C
api sabiendo solo el "Safari" pid
. Y creo que esto podría ayudar.
Los procesos "secundarios" de Safari son en realidad hijos del sistema init ( launchd
que tiene PID 1
), lo que explica por qué pstree
u otras herramientas de Unix no pueden hacer uso de la relación pid (o grupo de procesos) principal habitual:
% ps axo pid,ppid | egrep '81921|81925|82022'
81921 1
81925 1
82022 1
En su lugar, deberá utilizar una API de Apple; la launchctl
utilidad indica que el "dominio" o "ASID" puede ser relevante:
% sudo launchctl procinfo 82022 | grep -1 81921
domain = com.apple.xpc.launchd.domain.pid.Safari.81921
asid = 100006
--
--
responsible pid = 81921
responsible unique pid = 81921
responsible path = /Applications/Safari.app/Contents/MacOS/Safari
Pero publiquemos esta información antes de probar qué launchctl kill ...
hace algo parecido.
(También tenga en cuenta que lo anterior es de Mac OS X 10.11.6, es posible que Apple haya cambiado las interfaces desde entonces).
saagarjha
responsibility_get_pid_responsible_for_pid
de libquarantine.