In passato, quando ho bisogno di diagnosticare qualcosa di simile, ho utilizzato lo script kill.d di Brendan Gregg :
dtrace:::BEGIN
{
/* Print header */
printf("%5s %12s %5s %-6s %s\n","FROM","COMMAND","SIG","TO","RESULT");
}
syscall::kill:entry
{
/* Record target PID and signal */
self->target = arg0;
self->signal = arg1;
}
syscall::kill:return
{
/* Print source, target, and result */
printf("%5d %12s %5d %-6d %d\n",
pid,execname,self->signal,self->target,(int)arg0);
/* Cleanup memory */
self->target = 0;
self->signal = 0;
}
Eseguendolo e quindi eseguendo killall Finder
in un'altra shell si ottiene:
[user@fozzy Scripts]$ sudo kill.d.sh
FROM COMMAND SIG TO RESULT
155 launchd 15 4294900609 -1
66872 killall 15 66687 0
Che ti dice cosa (killall al PID 66872 con Signal 15) ha ucciso quale processo (in questo caso, 66687 mia istanza in esecuzione del Finder) e il risultato. Rallenta il sistema mentre è in esecuzione, ma dovrebbe fornirti i risultati di cui hai bisogno: prendi nota del tuo PID del Finder prima della mano, quindi eseguilo (mentre lavori o durante la notte per evitare di interrompere il tuo lavoro ) e guarda per vedere cosa ha ucciso quel PID.