O comando 'reset' limpa a memória da sessão usada pelos comandos?

3

Existe um comando reset que eu posso usar no bash, que eu acho que faz parte do core-utils . Ele limpa a RAM usada pelos comandos anteriores da sessão do Terminal?

Quero dizer tudo escrito no terminal e memória usada pelos comandos.

    
por userDepth 20.01.2017 / 14:34

2 respostas

3

De man reset :

reset - reinitialization
       When  invoked  as  reset,  tset  sets  cooked and echo modes, turns off
       cbreak and raw modes, turns on newline translation and resets any unset
       special  characters  to  their default values before doing the terminal
       initialization described above.  This is useful after  a  program  dies
       leaving a terminal in an abnormal state.[...]

Portanto, reinicializa completamente a sessão de terminal em que você está, eliminando todos os dados (ainda será armazenado ~/.bash_history , exclua isso se estiver se sentindo reservado). Se você quiser apenas recarregar as configurações, poderá executar . ~/.bashrc . Se você quiser apenas ter uma janela de terminal em branco sem redefinir, execute clear ou clique em Ctrl + L .

    
por NeoTheThird 20.01.2017 / 15:01
2

reset vem de ncurses , não coreutils .

Ele redefine muitas propriedades do terminal, mas de longe nem todas. Também em muitos emuladores de terminal, incluindo versões recentes do gnome-terminal, ele também limpa todo o buffer de rolagem no sentido de que ele não está mais acessível por meio da interface do usuário, por exemplo, usando a barra de rolagem.

Eu não tenho certeza do que você quer dizer com RAM (quero dizer, eu obviamente sei o que isso significa, mas eu não entendo qual aspecto você está perguntando).

Um emulador de terminal é livre para implementar o comportamento desejado da maneira que desejar. Por exemplo. ele pode usar uma linguagem de programação ou biblioteca com coleta de lixo, caso em que você dificilmente tem controle quando os dados realmente desaparecem da RAM.

O Terminal GNOME tem uma implementação muito complexa do histórico de rolagem. Um pouco mais do que as linhas normalmente visíveis (ou seja, supondo que você não rolou de volta) são mantidos na RAM. Depois de algum ponto, os dados que foram rolados para fora são convertidos em um formato diferente (ainda na RAM), colocados em lotes em blocos maiores, depois que um bloco completo é preenchido, depois é compactado, criptografado e gravado no disco. (Tudo isso assumindo vte-0,40 ou mais recente; as versões mais antigas eram bem diferentes.) Mas ainda está na RAM do processo até que algo mais (ou seja, ainda mais dados no terminal) tome seu lugar. Também há um cache de leitura onde pode estar presente.

Mas tudo isso só deve ser relevante se você examinar a pegada de memória do processo por motivos como tentar entender quais dados podem ser recuperados se alguém invadir um sistema ativo e obter acesso root. Nesse sentido, não há garantias de que os dados visualmente eliminados por reset não sejam recuperáveis. ainda pode estar lá na RAM, ou no disco (criptografado com uma chave que está na RAM até que você feche a guia do terminal).

Se você é um usuário regular examinando o comportamento visível do usuário do processo, então esse comportamento visível do usuário é tudo que você deve se preocupar, é irrelevante (e é muito difícil de seguir) quando os dados são realmente eliminados RAM do processo.

Então, vamos supor que você não se importa realmente com a RAM, você se preocupa com o comportamento visível do usuário para usuários "regulares". Se sim, então sim, depois de um reset , não há como recuperar esses dados.

    
por egmont 20.01.2017 / 22:12