24 votes

Y a-t-il quelque chose de plus fort que "Force Quit" ?

J'ai une application qui ne veut pas mourir : elle a disparu du dock, mais la fenêtre reste (avec un ballon de plage, si je passe la souris dessus). Elle n'utilise pas de CPU, mais je veux qu'elle disparaisse.

Y a-t-il quelque chose de plus fort que "Force Quit", pour vraiment vraiment tuer une application ?

0 votes

Je ne sais pas si c'est plus fort, mais essayez Apps > Utilities > Activity Monitor. Trouvez le processus, et forcez la sortie. Si cela ne fonctionne pas, notez le numéro du processus, allez dans le Terminal et tapez "kill #" où # est le numéro du processus. HTH

6 votes

Le bouton d'alimentation ?

1 votes

@DanielLawson Malheureusement, ces situations aboutissent généralement à cela.

14voto

Robin Robinson Points 1031

Si vous connaissez le nom de l'application, vous pouvez vérifier dans le moniteur d'activité si elle est toujours en cours d'exécution et essayer de la fermer de force. Si cela ne fonctionne pas, notez l'ID du processus (pid) de l'application. Allez dans le 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, essayez kill -3 [pid] et si cela ne fonctionne pas kill -9 [pid] . Si le processus appartient à un autre utilisateur (ce qui est peu probable), vous devrez peut-être remplacer le fichier kill con sudo kill et tapez votre mot de passe lorsque vous y êtes invité.

Si l'application ne s'affiche pas dans le moniteur d'activité ou si vous n'avez pas pu kill il se peut que la fenêtre soit un reliquat coincé ailleurs et que l'application ne fonctionne tout simplement plus. Dans ce cas, il est parfois (mais pas toujours) possible de fonctionner en killall SystemUIServer ou killall Dock .

Si rien ne fonctionne, vous devrez vous déconnecter et vous reconnecter ou redémarrer. Les quelques fois où j'en suis arrivé là, l'application était tellement bloquée qu'elle empêchait de se déconnecter ou de s'éteindre, et j'ai dû redémarrer brutalement.

0 votes

J'ai essayé toutes ces solutions (y compris sudo même si le processus m'appartient), sans changement. Will killall SystemUIServer affecter les autres applications ouvertes, comme oublier la position des fenêtres ?

0 votes

Probablement pas ; cela détruira la plupart des éléments de votre barre de menu et bien d'autres choses. Vous pouvez également essayer killall Dock ce qui dé-minimisera toutes les fenêtres minimisées (je vais modifier la réponse pour ajouter l'astuce du Dock).

0 votes

Quelles sont les options -3 y -9 faire ?

7voto

La fenêtre de sortie forcée, killall et kill tous les processus envoient des signaux TERM par défaut. Vous pouvez utiliser killall -kill si cela ne fonctionne pas.

L'utilitaire killall tue les processus sélectionnés par leur nom, par opposition à la sélection par pid comme le fait kill(1). Par défaut, il enverra un signal TERM à tous les processus ayant un UID réel identique à celui de l'appelant de killall et correspondant au nom procname. Le super-utilisateur est autorisé à tuer n'importe quel processus.

Si vous exécutez sudo dtrace -n 'proc:::signal-send /pid/ { printf("%s -%d %d",execname,args[2],args[1]->pr_pid); }' et quitter une application à partir de la fenêtre de sortie forcée, le signal est généralement affiché comme -15 (TERM). Mais lorsque vous quittez un processus en 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é comme -9 (KILL).

SIGTERM est le signal par défaut envoyé à un processus par les commandes kill ou killall. Il provoque la fin d'un processus, mais contrairement au signal SIGKILL, il peut être capté et interprété (ou ignoré) par le processus. Par conséquent, SIGTERM revient à demander à un processus de se terminer gentiment, permettant le nettoyage et la fermeture des fichiers. Pour cette raison, sur de nombreux systèmes Unix, lors de l'arrêt, init émet SIGTERM à tous les processus qui ne sont pas essentiels à l'arrêt, attend quelques secondes, puis émet SIGKILL pour mettre fin de force à tous les processus restants.

0 votes

De bonnes informations ici, mais aucune de ces variantes pour tuer le processus ne semble avoir d'effet sur celui-ci.

0 votes

Si même pas SIGKILL fonctionne, l'application est probablement en un sommeil ininterrompu et il n'y a rien que vous puissiez faire (à part redémarrer).

0 votes

Je me demande également s'il s'agit d'une application utilisateur, comme mail.app ou pages.app, ou d'un processus système, comme Spotlight, ou d'un processus d'arrière-plan, comme Plex (que j'ai du mal à supprimer).

7voto

ManKetnas Points 1

J'ai eu des situations où Force Quit, Activity Monitor, kill et d'autres méthodes n'ont pas fonctionné, et mon Mac ne pouvait pas s'éteindre à cause de cela.

Dans ce cas, un sudo shutdown -r now a fonctionné quand rien d'autre n'a fonctionné, et c'est probablement mieux que de faire un arrêt brutal via le bouton d'alimentation.

1voto

jm666 Points 7802

Comme dans les réponses ci-dessus, la manière la plus forte de terminer un processus est de SIGKILL par exemple kill -9 process_id .

Cependant, il existe des processus qui sont tout simplement impossibles à Force Quit ni kill . Ils ont appelé comme zombie processus.

Voici un court script qui va créer une zombie pendant deux minutes :

perl -e 'if($p=fork) {print "unkillable pid:$p\n" ;system("ps -l"); sleep(120)}'

Exécutez le script ci-dessus dans le Terminal et vous obtiendrez une sortie, comme la suivante :

     unkillable pid:50571
        UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN     S             ADDR TTY           TIME CMD
        501 47380 47379     4006   0  31  0  2448416   2900 -      S                   0 ttys000    0:00.36 -bash
        501 50570 47380     4006   0  31  0  2443512   1424 -      S+                  0 ttys000    0:00.01 perl -e if($p=fork) {print "u
#THIS-> 501 50571 50570     2006   0   0  0        0      0 -      Z+                  0 ttys000    0:00.00 (perl)
        501 12795 12794     4006   0  31  0  2448296   1752 -      S+                  0 ttys001    0:00.75 -bash
        501 50123 50122     4006   0  31  0  2448296   2688 -      S+                  0 ttys002    0:00.14 -bash

Si vous vérifiez la colonne d'état du processus impossible à tuer (dans ce cas : 50571), vous voyez l'image suivante Z drapeau, ce qui signifie zombie .

Vous pouvez essayer d'envoyer n'importe quel kill signal (par exemple kill -9 50571 ) et le processus existera toujours. De toute façon, cela ne nuit pas beaucoup à votre système, parce qu'en fait il n'existe pas - il occupe seulement la table du processus.

Dans l'exemple ci-dessus, il sera effacé dans 120 secondes.

0voto

Brock Vond Points 201

C'est ce que vous devriez faire :

  1. Dans le moniteur d'activité, double-cliquez sur le processus OU cliquez sur l'icône Info pour ouvrir la fenêtre du processus.
  2. Vous verrez le numéro du processus dans la ligne Groupe de processus sous la forme processName(####) où "####" est le numéro de votre processus.
  3. Ouvrez le terminal et tapez "sudo kill ####" sans les guillemets et appuyez sur la touche Entrée.
  4. Entrez votre mot de passe, le terminal n'affichera pas votre saisie ici.
  5. Le processus est tué.

Il est préférable de supprimer un processus de ce type en mode sans échec si vous voulez tenter une désinstallation.

Santé, Bryan

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X