Comment puis-je quitter top sans quitter la sortie du terminal?

29

Comment est-ce que top se ferme de la même manière que less se ferme, c'est-à-dire sans laisser de sortie à l'écran?

Ceci est la version que j'ai:

procps-ng version 3.3.9
    
posée Arraval 07.03.2018 - 14:59
la source

5 réponses

47

Quand vous commencez comme ça ...

top && clear

... l'écran disparaît après avoir quitté top avec q.

Cela ressemble plus à less :

tput smcup ; top ; tput rmcup

( smcup bascule vers un écran secondaire où la commande top est exécutée et lorsque vous quittez top rmcup revient à l'écran normal)

Vous pouvez utiliser la commande top pour faire cela ( Comment puis-je créer un alias Bash permanent? )

    
réponse donnée Rinzwind 07.03.2018 - 15:15
la source
31

Ironiquement, 1 , c'était brièvement le comportement de top . Dans 3.3.8, top a effacé l'écran, mais pas dans les versions passées ou depuis. Voir bogue Red Hat # 977561 :

  

La suppression d’écran est le résultat indirect des modifications du terminal   manipulations introduites par Jim Warner (auteur du «top»   outil) afin de supprimer l’inondation de l’outil «top» avec SIGWINCH   les signaux générés par certaines des applications de terminal largement utilisées. Il   était moi qui a signalé la question des inondations et il a essayé de faire de son mieux   afin de le résoudre et publié un correctif pour le problème sous forme de 8   engagements distincts. Le commit introduisant le clearing d'écran a le   hachage suivant: 'dedaf6e1a81738ff08ee8e8523871e12f555ad6d'.

En raison du rapport de bogue, Jim a ensuite corrigé le problème pour effacer le résultat de la version 3.3. 9 .

top n'a pas d'options ou de paramètres de configuration pour contrôler cela, AFAICT, il s'agit d'un comportement entièrement codé en dur. Vous souhaiterez peut-être déposer une demande de fonctionnalité à l'adresse lien .

Jusque-là, vous pouvez clear manuellement, comme Rinzwind suggéré , ou utiliser tput comme le suggère steeldriver.

Il est intéressant de noter que le commit mentionné ci-dessus contient également une bonne explication de la commande est en fait le même que ce qui a été fait à l'origine dans le code:

  

Un tampon de défilement utilisé dans plusieurs émulateurs de terminaux pourrait être un réel   dérangement pour un utilisateur suite à des opérations de redimensionnement. Supplémentaire   des frappes au clavier sont souvent nécessaires pour rendre correctement   affichage du haut.

     

Après de nombreuses recherches, nous avons déterré deux chaînes terminfo qui ont le   effet de désactiver / restaurer ce tampon de retour en arrière. Ils étaient   bien caché sous un titre de chaînes 'pour démarrer / terminer des programmes en utilisant   Coupe'. À son tour, «cup» traite de la capacité d'adressage du curseur d'un tty.

     

Nous ne nous soucions pas de ce que vous appelez ou de ce à quoi ils se réfèrent tant qu'ils   finis le travail. Et ça fait vraiment! Soyez avisé, cependant, qu'il y   sont des effets secondaires, dont plusieurs peuvent même être considérés comme   bénéfique:

     
  • enter_ca_mode / smcup / ti désactive la mise en mémoire tampon de défilement (et cela   bon, c'est ce que nous avions toujours espéré)

  •   
  • exit_ca_mode / rmcup / te restaure le tampon de défilement (mais aussi   restaure le contenu de l'écran existant pré-top) (différent de   anciens résultats de fin de programme) (où ce dernier écran de rendu était   laissé intact

  •   

... qui correspond aux commandes tput smcup et tput rmcup .

1 xkcd obligatoire.

    
réponse donnée muru 07.03.2018 - 15:22
la source
15

Le comportement que vous recherchez de moins est intégré à une alternative appelée htop. Vous pouvez l'installer avec:

sudo apt-get install htop

Plus précisément, il passe en mode écran alternatif avant de commencer à conserver le contenu de l’écran d’origine lorsque vous fermez htop. Il a également une variété d'autres améliorations sur le dessus de procps. Une fois installé, vous pouvez simplement l'exécuter en tant qu'utilisateur régulier:

htop
    
réponse donnée penguin359 07.03.2018 - 23:30
la source
4

Vous pouvez utiliser watch :

watch top -b

Il est par défaut de mettre à jour toutes les deux secondes, par ex. -n1 pendant une seconde si vous souhaitez modifier ce comportement. Pour quitter watch , appuyez sur Ctrl + C au lieu du Q habituel.

Une autre approche consiste à ouvrir une nouvelle fenêtre de terminal, par ex. avec xterm :

xterm -e top

Cela se comporte exactement comme top le fait normalement, la fenêtre se ferme lorsque vous quittez top avec Q et bien sûr elle ne laisse aucune sortie dans le terminal à partir duquel vous l'avez démarrée. Ajoutez & à la fin de cette commande pour le démarrer en arrière-plan et relâchez immédiatement le terminal.

    
réponse donnée dessert 07.03.2018 - 18:57
la source
1

Comme le fait remarquer la réponse de Rinzwind, la commande clear efface la sortie de top de l'écran.

Après avoir quitté top , vous pouvez également utiliser Ctrl + L pour effacer le top de sortie de l'écran. Cependant, après chaque commande, vous pouvez toujours faire défiler l'écran pour voir l'ancienne sortie top .

Pour effacer l’écran, de sorte que la sortie top ne puisse pas être redirigée, utilisez la commande reset :

top && reset

Une autre option pour donner cette "nouvelle apparence" à une nouvelle session consiste à exécuter un "écran de démarrage ASCII" (si vous en avez un). Dans mon cas, je courrais:

top && reset && now && screenfetch

  • Mon script now appelle la météo, le calendrier ( cal ) et toilet avec le temps voulu.
  • screenfetch peint le logo et les statistiques de la machine Ubuntu.
réponse donnée WinEunuuchs2Unix 10.03.2018 - 03:57
la source

Lire d'autres questions sur les étiquettes