Ich frage mich, wie Activity Monitor
diese beiden Prozesse zusammenhängen, wenn das Kind (Safari-Webinhalt) nicht das ppid
des Hauptprozesses (Safari) hat. pstree
, das verwendet, ppid
um den Baum zu organisieren, zeigt keine Beziehung zwischen ihnen.
Hier ist ein weiteres Beispiel, das von einem Shell-Skript innerhalb mit caffeinate
gestartet wurde und wieder keine Beziehung zeigt.BetterTouchTool
nohup
pstree
kill
Was ich eigentlich brauche, ist ein Signal an "Childs" zu senden, wie Safari Web Content
die Verwendung von shell script
oder C
api, die nur die "Safari" kennen pid
. Und ich denke, das könnte helfen.
Die "untergeordneten" Prozesse von Safari sind eigentlich Kinder des Init-Systems ( launchd
das PID hat 1
), was erklärt, warum pstree
oder andere solche Unix-Tools die übliche Eltern-PID- (oder Prozessgruppen-) Beziehung nicht verwenden können:
% ps axo pid,ppid | egrep '81921|81925|82022'
81921 1
81925 1
82022 1
Stattdessen müssen Sie eine Apple-API verwenden; Das launchctl
Dienstprogramm gibt an, dass die "Domäne" oder "ASID" relevant sein kann:
% 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
Aber lassen Sie uns diese Informationen posten, bevor wir testen, was so etwas launchctl kill ...
tut.
(Beachten Sie auch, dass das Obige von Mac OS X 10.11.6 stammt, die Schnittstellen wurden seitdem möglicherweise von Apple geändert.)
saagarjha
responsibility_get_pid_responsible_for_pid
von libquarantine.