J'ai une application qui ne mourra pas: elle a disparu du dock, mais la fenêtre reste (avec un beachball, si je la souris). Il n'utilise pas de CPU, mais je veux qu'il s'en aille.
Existe-t-il quelque chose de plus fort que "Forcer à quitter" pour vraiment vraiment tuer une application?
SIGTERM
Réponses:
Si vous connaissez le nom de l'application, vous pouvez vérifier dans le moniteur d'activité pour voir si elle y est toujours en cours d'exécution et essayer de forcer la fermeture. Si cela ne fonctionne pas, notez l'ID de processus de l'application (pid). Accédez au terminal et tapez
kill [pid]
, en remplaçant "[pid]" par le numéro que vous avez noté précédemment. Si cela ne fonctionne pas, essayezkill -3 [pid]
et si cela ne fonctionne paskill -9 [pid]
. Si le processus appartient à un autre utilisateur (ce n'est pas probable), vous devrez peut-être le remplacerkill
parsudo kill
et taper votre mot de passe lorsque vous y serez invité.Si l'application n'apparaît pas dans le moniteur d'activité ou si vous ne pouvez pas le
kill
faire, la fenêtre peut être bloquée ailleurs et l'application ne fonctionne tout simplement plus. Dans ce cas, parfois (pas toujours) cela peut fonctionner verskillall SystemUIServer
oukillall Dock
.Si rien de tout cela ne fonctionne, vous devrez vous déconnecter puis vous reconnecter ou redémarrer. Les quelques fois où j'en suis arrivé à ce point, l'application était si bloquée qu'elle empêchait la déconnexion ou la fermeture, j'ai donc dû redémarrer dur.
la source
sudo
, même si le processus m'appartient), sans changement. Celakillall SystemUIServer
affectera- t -il mes autres applications ouvertes, comme oublier les positions des fenêtres?kill -l
, -3 est SIGQUIT et -9 est SIGKILL ("kill non capturable, non ignorable").man kill
(qui figure parmi les 10 meilleures commandes UNIX de tous les temps) pour les voir toutes.La fenêtre Forcer à quitter
killall
, etkill
tous les processus d'envoi de signaux TERM par défaut. Vous pouvez utiliserkillall -kill
si cela ne fonctionne pas.Si vous exécutez
sudo dtrace -n 'proc:::signal-send /pid/ { printf("%s -%d %d",execname,args[2],args[1]->pr_pid); }'
et quittez une application à partir de la fenêtre de fermeture forcée, le signal est généralement affiché sous la forme -15 (TERM). Mais lorsque vous quittez un processus d'arrière-plan (ou une application qui n'est pas affichée dans le Dock) à partir du moniteur d'activité, le signal est généralement affiché sous la forme -9 (KILL).la source
SIGKILL
fonctionne même pas , l'application est probablement en veille sans interruption , et il n'y a vraiment rien à faire (à moins de redémarrer).J'ai eu des situations où Forcer à quitter, Moniteur d'activité
kill
et d'autres méthodes ne fonctionnaient pas et mon Mac ne pouvait pas s'arrêter à cause de cela.Dans ce cas, cela a
sudo shutdown -r now
fonctionné quand rien d'autre ne le ferait, et c'est probablement mieux que de faire un arrêt dur via le bouton d'alimentation.la source
Comme dans les réponses ci-dessus, le moyen le plus efficace de mettre fin à tout processus est
SIGKILL
, par exemplekill -9 process_id
.Cependant, il existe des processus qui sont tout simplement impossibles à
Force Quit
nikill
. Ils ont appelé commezombie
processus.Voici un petit script qui va créer un
zombie
processus pendant deux minutes:Exécutez le script ci-dessus dans le terminal et vous obtiendrez une sortie, comme la suivante:
Si vous cochez la colonne d'état pour le processus impossible à tuer (dans ce cas: 50571), vous voyez le
Z
drapeau, ce qui signifiezombie
.Vous pouvez essayer d'envoyer n'importe quel
kill
signal (par exemplekill -9 50571
) et le processus existera toujours. Quoi qu'il en soit, cela ne blesse pas beaucoup votre système, car il n'existe en fait pas - occupe uniquement la table de processus.Dans l'exemple ci-dessus, en 120 secondes, il sera effacé.
la source
Voici ce que vous devez faire:
Il est préférable de supprimer un processus comme celui-ci en mode sans échec si vous souhaitez tenter une désinstallation.
À la vôtre, Bryan
la source