web-dev-qa-db-fra.com

La commande `reset` efface-t-elle la mémoire de session utilisée par les commandes?

Il y a une commande reset que je peux utiliser dans bash, qui, je pense, fait partie de core-utils. Est-ce que cela nettoie la RAM utilisée par les commandes précédentes de la session Terminal?

Je veux dire tout ce qui est écrit dans le terminal et la mémoire utilisée par les commandes.

4
userDepth

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.[...]

Donc, il réinitialise complètement la session de terminal dans laquelle vous vous trouvez, purgeant toutes les données (il sera toujours stocké ~/.bash_history bien que, supprimez-le si vous vous sentez secret). Si vous souhaitez simplement recharger les paramètres, vous pouvez exécuter . ~/.bashrc. Si vous souhaitez simplement avoir une fenêtre de terminal vierge sans réinitialisation, exécutez clear ou appuyez sur Ctrl + L.

4
NeoTheThird

reset provient de ncurses et non coreutils.

Il réinitialise de nombreuses propriétés du terminal, mais de loin pas toutes. De plus, dans de nombreux émulateurs de terminal, y compris les versions récentes de gnome-terminal, il efface également la totalité de la mémoire tampon de défilement, en ce sens qu'elle n'est plus accessible via l'interface utilisateur, par exemple. en utilisant la barre de défilement.

Je ne suis pas sûr de ce que vous entendez par RAM (je veux dire, je sais évidemment ce que cela signifie, mais je ne comprends pas tout à fait l'aspect que vous demandez).

Un émulateur de terminal est libre d'implémenter le comportement souhaité de la manière qu'il souhaite. Par exemple. il peut utiliser un langage de programmation ou une bibliothèque avec garbage collection, auquel cas vous n’avez pratiquement aucun contrôle lorsque les données disparaissent de la RAM.

Le terminal GNOME a une implémentation très complexe de l’historique de défilement. Un peu plus que les lignes normalement visibles (c’est-à-dire si vous n’avez pas fait défiler en arrière) sont conservées dans la RAM. Après un certain temps, les données qui ont été extraites sont converties dans un format différent (toujours en RAM), groupées en blocs plus grands, une fois qu'un bloc complet est rempli, puis compressé, crypté et écrit sur le disque. (Tout cela en supposant que vte-0.40 ou une version plus récente; les versions antérieures étaient assez différentes.) Mais le processus RAM est toujours en cours jusqu'à ce que quelque chose d'autre (c'est-à-dire encore plus de données dans le terminal) prenne sa place. Il existe également un cache de lecture où il pourrait être présent.

Mais tout cela ne devrait être pertinent que si vous examinez l'empreinte mémoire du processus pour des raisons telles que tenter de comprendre quelles données peuvent être récupérées si une personne pénètre dans un système en direct et obtient un accès root. En ce sens, rien ne garantit que les données effacées visuellement par reset ne soient pas du tout récupérables. Il peut-être existe toujours dans la RAM ou sur le disque (chiffré avec une clé se trouvant dans RAM jusqu'à ce que vous fermiez l'onglet de terminal donné).

Si vous êtes un utilisateur habituel qui examine le comportement visible du processus par l'utilisateur, ce comportement visible par l'utilisateur est tout ce dont vous devez vous soucier. Ce n'est pas pertinent (et il est assez difficile à suivre) lorsque les données sont réellement effacées de la mémoire RAM du processus. .

Alors, supposons que vous ne vous souciez pas de la RAM, mais du comportement visible de l'utilisateur pour les utilisateurs "normaux". Si oui, alors oui, après un reset, il n’ya aucun moyen de récupérer ces données.

2
egmont