Como fazer com que minha tela responda novamente?

2

Meu MacBook Pro está funcionando, o ssh funciona bem, mas a tela não responde mais.

A tela está congelada como o gelo da Antártica. O mouse não se move na tela. A hora do relógio não muda.

A luz Caps Lock do teclado está respondendo.

Você pode me ajudar a fazer minha tela responder novamente, por favor?

O que eu preciso é simplesmente ter minha tela respondendo, para usar meu Mac e continuar o que estava fazendo.

Nicolas Barbulesco
fonte
11
Esta é uma ótima pergunta. Eu já estive nessa situação tantas vezes - a GUI fica congelada, mas o SSH funciona bem - e ainda não sei como reiniciar a GUI sem reiniciar a máquina inteira. George, a pergunta não é sobre o que causou o congelamento, é sobre como se recuperar dele.
Sergei

Respostas:

1

Como você pode fazer o ssh na caixa, você pode começar a interromper os processos um por um e, eventualmente, você reinicializará a caixa ou liberará o item que mantém a CPU / GUI congelada.

Eu provavelmente faria essas coisas em ordem de gravidade:

  1. Inicie um backup da máquina do tempo antes de matar qualquer coisa tmutil startbackup --block --rotation
  2. Se eu não quiser salvar o trabalho (já que isso mata todos os aplicativos abruptamente ) - interrompa o processo da janela de login e faça login novamente.
  3. Se eu quiser salvar algum trabalho, mate todos os processos do usuário que não pertencem ao usuário que precisa salvar o trabalho.
  4. Em seguida, mate todos os processos do usuário que não precisam ser salvos. (Aplicativos e afins)
  5. Em seguida, use AppleScript para informar a cada aplicativo que precisa salvar o trabalho para sair. (supondo que a GUI não responda neste momento)

osascript -e 'saiu do aplicativo "Take Five"'

Nesse ponto, você precisará listar os aplicativos específicos necessários para salvar o trabalho e perguntar se há alguma maneira de forçar um salvamento (talvez eles usem o salvamento automático e recuperem todo o trabalho de qualquer maneira) ou apenas emita uma reinicialização / reinicialização comando e continue usando a máquina e recupere o que puder do seu último backup.

bmike
fonte
Na etapa 2. Eu acho que matar loginwindowterminaria toda a minha sessão.
Nicolas Barbulesco
11
Sim - daí o aviso se você não quiser salvar seu trabalho. Vou reforçar que até explicitamente ;-)
bmike
11
o osascript funciona bem na sessão do terminal local (coisas como osascript -e 'tell application "Sublime Text" to activate ' -e 'tell application "System Events" to keystroke "s" using command down'), mas se executado a partir do ssh, até o seu quit appexemplo falha Application isn’t running. (-600). Não consigo obter o JavaScript para interagir com nenhum aplicativo do ssh até o momento. Mais estranheza: osascript -e 'tell app "system Events" to activate' obras de sessão remota, falha de sessão local (O aplicativo não está funcionando)
Sergei
Dang - Talvez eu precise procurar para descobrir como anexar o osascript a uma sessão de logon (ou talvez o processo necessário seja o que está bloqueando a sua sessão?), Pode ser uma causa perdida de qualquer maneira ...
bmike
@Sergei - Muito estranho. A ativação de eventos Apple remotos pode ajudar.
Nicolas Barbulesco
1

Matar WindowServero tirará da maioria das situações, mas todos os aplicativos da GUI morrerão e serão reiniciados com ele.

A solução é salvar dados em todos os aplicativos que não o fazem automaticamente usando o Applescript
ps ax | grep -i appname
osascript save.scpt 6546, onde 6546 é o PID do seu aplicativo

O script pressionará Cmd + S e (opcionalmente) Enter

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

PS Isso funciona da sessão SSH para aplicativos como Sublime Text , mas não consigo descobrir o caminho para dizer ao aplicativo para sair normalmente. É um killou outro reboot. Este último deve cuidar de aplicativos compatíveis com o recurso "Continuar".

Sergei
fonte
Спасибо Sergei, mas não é isso que eu quero. Quero recuperar minhas mãos na minha sessão . Está lá, e está correndo, apenas tem um véu preto sobre ele. Salvar arquivos não é suficiente. Por exemplo, no Safari, tenho uma janela com texto em um formulário, e em outra janela, um vídeo pausado às 10:36 ... Você entendeu.
Nicolas Barbulesco
# key code 36 # EnterO que é isso ? Eu não sei disso no AppleScript.
Nicolas Barbulesco
É a tecla "Return". Se o documento ainda não tiver um nome, o CMD + S exibirá a caixa de diálogo "Salvar como ...". Retorno único salva documento como "Untitled"
Sergei
2
Em teoria, você pode usar o VNC para colocar suas mãos na sessão da GUI.
27714 Sergei
Agora eu encontrei uma explicação de sintaxe. “Também a partir do Mac OX X v10.5, o AppleScript permite o uso do símbolo # como um token de comentário ao final da linha (o tradicional hífen duplo (-) também é suportado).” Portanto, esta linha é um comentário ; # commentssão incomuns no AppleScript. Não vejo como isso pode pressionar Return.
Nicolas Barbulesco 26/06
1

Sei que esta é uma resposta tardia e você já deve ter desistido. Fiz uma pesquisa rápida e descobri que você pode ativar o compartilhamento de tela (VNC) via SSH sem 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

Copiei esse comando literalmente daqui . Você quer omitir a restartbandeira, acredito. Conecte-se à sua máquina com um cliente VNC, salve todo o seu trabalho e reinicie a máquina.

aglasser
fonte
Eu tentei habilitar remotamente o VNC - sem sucesso. Este comando inicia o VNC apenas uma vez (até desligar ou reiniciar)? Ou esse comando habilita o VNC permanentemente? Eu acho que a resposta é permanente .
Nicolas Barbulesco 26/06