Comment faire en sorte que mon écran réponde?

2

Mon MacBook Pro est en cours d'exécution, ssh fonctionne bien, mais l'écran ne répond plus.

L'écran est gelé comme la glace de l'Antarctique. La souris ne bouge pas sur l'écran. L'heure de l'horloge ne change pas.

Le voyant Verrouillage majuscule du clavier répond.

Pouvez-vous m'aider à faire en sorte que mon écran réponde, s'il vous plaît?

Ce dont j'ai besoin, c'est simplement que mon écran réponde, pour pouvoir utiliser mon Mac et continuer à faire ce que je faisais.

Nicolas Barbulesco
la source
1
C'est une excellente question. Je me suis souvent retrouvé dans cette situation - l'interface graphique est gelée, mais SSH fonctionne correctement - et je ne sais toujours pas comment redémarrer l'interface graphique sans redémarrer la totalité de la machine. George, la question n'est pas de savoir ce qui a causé le gel, mais de savoir comment s'en remettre.
Sergei

Réponses:

1

Comme vous pouvez entrer dans la boîte, vous pouvez commencer à supprimer les processus un par un et vous pourrez éventuellement redémarrer la boîte ou libérer l'élément qui tient le processeur / l'interface graphique figé.

Je ferais probablement ces choses par ordre de gravité:

  1. Lancer une sauvegarde de la machine temporelle avant de tuer quoi que ce soit tmutil startbackup --block --rotation
  2. Si je ne me soucie pas de sauver du travail (depuis tue toutes les applications brusquement ) - tuez le processus loginwindow et reconnectez-vous.
  3. Si je tiens à enregistrer du travail, supprimez tous les processus utilisateur n'appartenant pas à l'utilisateur qui doit enregistrer le travail.
  4. Ensuite, supprimez tous les processus utilisateur qui n'ont pas besoin de travail enregistré. (Apps et autres)
  5. Ensuite, utilisez AppleScript pour indiquer à chaque application qui doit sauvegarder le travail de quitter. (en supposant que l'interface graphique n'est pas sensible à ce stade)

osascript -e 'quitte l'application "Take Five"'

À ce stade, vous devrez soit répertorier les applications spécifiques dont vous avez besoin pour enregistrer le travail et demander s'il est possible de forcer une sauvegarde (peut-être utiliser la sauvegarde automatique et récupérer tout le travail de toute façon) ou simplement émettre un redémarrage / redémarrage commande et continue à utiliser la machine et récupère ce que tu peux de ta dernière sauvegarde.

bmike
la source
A l'étape 2. Je pense que tuer loginwindow quitterait toute ma session.
Nicolas Barbulesco
1
Oui, d'où l'avertissement si vous ne voulez pas sauvegarder votre travail. Je vais renforcer ça explicitement ;-)
bmike
1
osascript fonctionne bien à partir d'une session de terminal locale (des choses comme osascript -e 'tell application "Sublime Text" to activate ' -e 'tell application "System Events" to keystroke "s" using command down' ), mais si vous courez de ssh, même votre quit app exemple échoue avec Application isn’t running. (-600). Jusqu'à présent, je ne parviens pas à faire appel à osascript pour interagir avec les applications de ssh Plus d'étrangeté: osascript -e 'tell app "system Events" to activate' fonctionne à partir d'une session REMOTE, échoue à partir d'une session locale (l'application n'est pas en cours d'exécution)
Sergei
Dang - Je devrai peut-être creuser pour trouver comment attacher du code osascript à une session de connexion (ou peut-être que le processus requis est celui qui bloque votre session?) Cela pourrait être une cause perdue de toute façon ...
bmike
@Sergei - Très étrange. Permettant Événements Apple à distance peut aider.
Nicolas Barbulesco
1

Meurtre WindowServer vous sortir de la plupart des situations, mais toutes les applications GUI vont mourir et redémarrer avec elle.

La solution consiste à enregistrer des données dans toutes les applications qui ne le font pas automatiquement à l'aide d'Applescript.
ps ax | grep -i appname
osascript save.scpt 6546, où 6546 est le PID de votre application

Le script va appuyer sur Cmd + S et (éventuellement) entrer

on run argv
tell application "System Events"
    set theprocs to every process whose unix id is item 1 of argv
    repeat with proc in theprocs
        set the frontmost of proc to true
        delay 1
        keystroke "s" using command down
        delay 1
        # key code 36 # Enter
    end repeat
end tell
end run

P.S. Cela fonctionne à partir de la session SSH pour des applications comme Texte sublime , mais je n'arrive pas à trouver le moyen de dire à l'application de quitter gracieusement. C'est soit kill ou reboot. Ce dernier devrait s'occuper des applications qui supportent la fonctionnalité "Reprendre".

Sergei
la source
Спасибо Sergei, mais ce n'est pas ce que je veux. Je veux me remettre la main à ma session . C'est là, et ça court, il y a juste un voile noir dessus. L'enregistrement de fichiers ne suffit pas. Par exemple, dans Safari, j'ai une fenêtre avec du texte dans un formulaire et dans une autre fenêtre, une vidéo est suspendue à 10h36 ... Vous voyez l'idée.
Nicolas Barbulesco
# key code 36 # Enter Qu'est-ce que c'est ? Je ne le sais pas dans AppleScript.
Nicolas Barbulesco
C'est la touche "Retour". Si le document n'a pas encore de nom, CMD + S ouvrira la boîte de dialogue "Enregistrer sous ...". Le retour unique enregistre le document sous "Sans titre"
Sergei
2
En théorie, vous pouvez utiliser VNC pour mettre la main sur votre session d'interface graphique.
Sergei
Maintenant, j'ai trouvé une explication de syntaxe. «À partir de Mac OX X v10.5 également, AppleScript permet d’utiliser le symbole # en tant que jeton de commentaire de fin de ligne (le double tiret traditionnel (-) est également toujours pris en charge).» Donc, cette ligne est un commentaire; # comments sont inhabituels dans AppleScript. Je ne vois pas comment cela pourrait appuyer sur Return.
Nicolas Barbulesco
1

Je sais que c'est une réponse tardive et vous avez peut-être déjà abandonné. J'ai fait une recherche rapide et constaté que vous pouvez activer le partage d'écran (VNC) via SSH sans AppleScript.

sudo  /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
-activate -configure -access -on -clientopts -setvnclegacy -vnclegacy yes \
-clientopts -setvncpw -vncpw mypasswd -restart -agent -privs -all

J'ai copié cette commande mot à mot ici . Vous voulez omettre le restart drapeau, je crois. Connectez-vous à votre ordinateur avec un client VNC, enregistrez tout votre travail et redémarrez l'ordinateur.

aglasser
la source
J'avais essayé d'activer à distance VNC - en vain. Cette commande lance-t-elle VNC une seule fois (jusqu'à l'arrêt ou le redémarrage)? Ou cette commande active-t-elle VNC de manière permanente? Je pense que la réponse est en permanence .
Nicolas Barbulesco