Dans le passé, lorsque j'ai dû diagnostiquer quelque chose comme cela, j'ai utilisé la fonction kill.d script de 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;
}
L'exécuter et ensuite l'exécuter killall Finder
dans un autre shell se traduit par :
[user@fozzy Scripts]$ sudo kill.d.sh
FROM COMMAND SIG TO RESULT
155 launchd 15 4294900609 -1
66872 killall 15 66687 0
Ce qui vous indique ce qui (killall at PID 66872 with Signal 15) a tué quel processus (dans ce cas, 66687 mon instance du Finder alors en cours d'exécution) et le résultat. Il ralentit quelque peu le système pendant son exécution, mais devrait vous fournir les résultats dont vous avez besoin - notez simplement le PID de votre Finder à l'avance, puis laissez-le s'exécuter (soit pendant que vous travaillez, soit pendant la nuit pour éviter de perturber votre travail) et regardez ce qui a tué ce PID.