Comment afficher les processus dynamiquement avec une entête statique
Fermé
BillyV33
-
Modifié le 20 avril 2019 à 08:04
billyV33 Messages postés 23 Date d'inscription dimanche 10 février 2019 Statut Membre Dernière intervention 9 mars 2022 - 26 avril 2019 à 18:12
billyV33 Messages postés 23 Date d'inscription dimanche 10 février 2019 Statut Membre Dernière intervention 9 mars 2022 - 26 avril 2019 à 18:12
A voir également:
- Comment afficher les processus dynamiquement avec une entête statique
- Comment faire un tableau croisé dynamique - Guide
- Afficher mot de passe wifi android - Guide
- Afficher appdata - Guide
- Afficher les commentaires word - Guide
- Afficher les modifications word - Guide
7 réponses
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
19 avril 2019 à 22:02
19 avril 2019 à 22:02
ok...
!
top -d 2
!
bonjour
effectivement je l'avais remarqué top avait ce comportement...
mais là on me demande, pour monTP!, et il me manque deux questions et c'est pour demain!!!
en tout cas!
voilà ce qu'on me demande :
MERCIIII!!! lEprofSonDkon d'être encore là ! :):)
effectivement je l'avais remarqué top avait ce comportement...
mais là on me demande, pour monTP!, et il me manque deux questions et c'est pour demain!!!
en tout cas!
voilà ce qu'on me demande :
## Fonctionnement
minitop contient une "boucle infinie" qui lui permet de rester en cours d'execution. Toutes les 1 seconde l'appel à `ps` est renouvelé et (c'est là que je bogue!) l'affichage des nouvelles lignes se fait par dessus les anciennes lignes. Visuellement cela reste presque statique, comme l'appel au programme "top".
On peut quitter le programme en utilisant simplement Ctrl-C.
L'appel à `ps` doit être fait de la manière suivante :
- afficher tous les processus du système
- afficher les colonnes suivantes :
le nom d'utilisateur, le pid, l'utilisation du cpu, le pourcentage de la mémoire physique que le process occupe, le temps CPU cumulé, et le nom de la commande.
Les options à afficher sont les mêmes en cas d'option sans la boucle infinie.
(et ici on me perd complètement!)
Pour afficher par dessus des lignes déjà écrites, vous allez avoir besoin de la page de manuel "console_codes" et de caractères spéciaux. Cherchez le paragraphe qui contient "CSI sequence".
## Exemples
Pour mieux comprendre comment utiliser ces caractères spéciaux, testez ça :
```sh
echo -e "coucou___ \033[4Di"
echo -e "coucou___ \033[1Di"
echo -e "coucou___ \033[10DQ"
echo -e "coucou___ \033[13Cplus loin: bonjour"
MERCIIII!!! lEprofSonDkon d'être encore là ! :):)
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
20 avril 2019 à 00:07
20 avril 2019 à 00:07
d'abord, il faut faire un "clear" de la console, c'est-à-dire déplacer le curseur tout en haut du terminal (HOME) et effacer l'écran
ensuite, tu affiches l'en-tête
puis, à chaque tour de boucle, il faut positionner le curseur à la ligne 2 colonne 0
dans la page man, ESC correspond au code
les passage en italique sont des fonctionnalités ANSI/CSI
il n'y a pas de secret, il faut "jouer" avec les séquences pour voir comment elles fonctionnent.
AH! MES YEUX !
LES BALISES CODES !!!
ensuite, tu affiches l'en-tête
puis, à chaque tour de boucle, il faut positionner le curseur à la ligne 2 colonne 0
dans la page man, ESC correspond au code
\033[donné dans les exemples.
les passage en italique sont des fonctionnalités ANSI/CSI
il n'y a pas de secret, il faut "jouer" avec les séquences pour voir comment elles fonctionnent.
AH! MES YEUX !
LES BALISES CODES !!!
Vraiment désolée pour le balises ! décidément je suis bouchée!!
je pensais avoir bien mis ma petite ligne de code bien en évidence!
Peux-tu me faire un exemple STP parce que je ne saisi pas où je me trompe et ça m’énerve de devoir t’arracher les yeux à chaque fois!!!
Encore merci pour tes explications!:):)
je vais regarder ça et je reviens..
:):)
je pensais avoir bien mis ma petite ligne de code bien en évidence!
ps -o suser,pid,%cpu,%mem,cputime,comm | head
Peux-tu me faire un exemple STP parce que je ne saisi pas où je me trompe et ça m’énerve de devoir t’arracher les yeux à chaque fois!!!
Encore merci pour tes explications!:):)
je vais regarder ça et je reviens..
:):)
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
20 avril 2019 à 01:42
20 avril 2019 à 01:42
un exemple ? de mise entre balises CODE ?
< code sh >#!/bin/bash
echo "des balises code" < /code >
pour que ça fonctionne, supprime l'espace après < , et avant >
:)
un exemple de ANSI Escape Code ?
< code sh >#!/bin/bash
echo "des balises code" < /code >
pour que ça fonctionne, supprime l'espace après < , et avant >
:)
un exemple de ANSI Escape Code ?
#!/bin/bash echo for ((n=12;n>=0;n--)) do echo -e "\033[1F\033[0K$n" sleep 1 done
bonsoir lEprofSonDkon !:)
j'ai trouvé ça pour l'instant mais je ne sais pas si je suis dans la bonne voie!
je vais analyser ta ligne echo pour bien la comprendre! c'est un peu comme quand on veut changer notre prompt
WOW je ne pensais pas pouvoir comprendre quelque chose à tout ça mais avec ton aide les idées
deviennent de plus en plus claires! ! MERCIII!!!!!
estcequepourlesbalisescestmieux? j'ai peur pour tes yeux!!!
j'ai trouvé ça pour l'instant mais je ne sais pas si je suis dans la bonne voie!
je vais analyser ta ligne echo pour bien la comprendre! c'est un peu comme quand on veut changer notre prompt
#!/bin/sh #1- effacer l'écran #2- afficher l'en-tête #3- à chaque tour de boucle, il faut positionner le curseur à la ligne 2 colonne 0 # tput cup X Y si je ne veux pas qu'il soit trop détaché je pourrais mettre 1 0 if [ "$num_lignes" -ge 1 -a "$num_lignes" -le 25 2>/dev/null ]; then clear ps -o user,pid,%cpu,%mem,cputime,comm | head -n 1 while [ 1 ]; do tput cup 2 0 ps -o user=,pid=,%cpu=,%mem=,cputime=,comm= | head -n "$num_lignes" sleep 1 done exit 0 fi
WOW je ne pensais pas pouvoir comprendre quelque chose à tout ça mais avec ton aide les idées
deviennent de plus en plus claires! ! MERCIII!!!!!
estcequepourlesbalisescestmieux? j'ai peur pour tes yeux!!!
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
>
BillyV33
Modifié le 20 avril 2019 à 04:49
Modifié le 20 avril 2019 à 04:49
si l'énoncé demande des séquences CSI,
il ne faut pas envoyer les erreurs de test vers /dev/null.
mais, est-ce que ça ne pourrait pas être aussi simple que de nettoyer l'écran à chaque boucle, et en renvoyant le curseur tout en haut ?
finalement, on s'en fout de l'en-tête, il sera écraser à chaque fois, tant pis pour lui.
ou bien faut-il ne pas nettoyer le terminal ?
alors, il faut connaître le nombre de lignes produit par
il n'est pas dit dans l'énoncé que le nombre de lignes doit être restreint, mais il doit l'être par rapport au terminal.
je spoile un peu, mais là, je ne sais pas comment expliquer sans te montrer, donc autant te montrer sans expliquer; cela t'es laissé comme exercice supplémentaire.
heu, non.
la balise code "entrante", c'est
et entre les deux, tu mets le code.
il y a un bouton, à côté des boutons [B] [ I ] [S], et une flèche pour choisir le langage.
tputne sera pas accepté.
il ne faut pas envoyer les erreurs de test vers /dev/null.
mais, est-ce que ça ne pourrait pas être aussi simple que de nettoyer l'écran à chaque boucle, et en renvoyant le curseur tout en haut ?
finalement, on s'en fout de l'en-tête, il sera écraser à chaque fois, tant pis pour lui.
while true do printf '"CSI sequence" à trouver' ps -o user,pid,%cpu,%mem,cputime,comm sleep 1 done
ou bien faut-il ne pas nettoyer le terminal ?
alors, il faut connaître le nombre de lignes produit par
ps!
il n'est pas dit dans l'énoncé que le nombre de lignes doit être restreint, mais il doit l'être par rapport au terminal.
unset nbL; while true ; do nbL=$(ps x --sort -%cpu -o user,pid,%cpu,%mem,cputime,comm | head -n $LINES | tee -a /dev/tty | wc -l); sleep 1; printf '"CSI sequence" à trouver' $nbL; done;}
je spoile un peu, mais là, je ne sais pas comment expliquer sans te montrer, donc autant te montrer sans expliquer; cela t'es laissé comme exercice supplémentaire.
heu, non.
la balise code "entrante", c'est
<code sh>(sh pour du code shell), et la balise code "fermante", c'est </code>,
et entre les deux, tu mets le code.
il y a un bouton, à côté des boutons [B] [ I ] [S], et une flèche pour choisir le langage.
merci beaucoup IEprofSonDkon ! :)
je vais voir si je vais avoir le temps de me pencher un peu plus sur cette question demain
j'en ai une autre à faire et toutes les explications des démarches
mais en passant j'ai trouvé
je pense que ça fait ce que je cherche mais je ne réussi pas à être sûr de ce que je vois...
je vais me coucher mon cerveau est mort!
c'est un vrais plaisir ! apprend plein de choses... j'aurais aimé avoir plus de temps mais bon!
Merci encore pour ton aide ! :):)
tes yeux vont mieux se reposer!!! :):)
je vais voir si je vais avoir le temps de me pencher un peu plus sur cette question demain
j'en ai une autre à faire et toutes les explications des démarches
mais en passant j'ai trouvé
\033[H et \033[J
je pense que ça fait ce que je cherche mais je ne réussi pas à être sûr de ce que je vois...
je vais me coucher mon cerveau est mort!
c'est un vrais plaisir ! apprend plein de choses... j'aurais aimé avoir plus de temps mais bon!
Merci encore pour ton aide ! :):)
tes yeux vont mieux se reposer!!! :):)
ALLÔ lEprofSonDkon !
je pense que la nuit porte conseil! je pense avoir trouvé....
\033[1;0H je vais peut-être rajouter quelque comme le clear... à voir je vais tester
Merci encore!!! :):) tu m'as vraiment mise sur la bonne voie!
je pense que la nuit porte conseil! je pense avoir trouvé....
\033[1;0H je vais peut-être rajouter quelque comme le clear... à voir je vais tester
Merci encore!!! :):) tu m'as vraiment mise sur la bonne voie!
#!/bin/sh num_lignes="$1" if [ "$num_lignes" -ge 1 -a "$num_lignes" -le 25 2>/dev/null ]; then clear while [ 1 ]; do affiche=$(ps -o user=,pid=,%cpu=,%mem=,cputime=,comm= | head -n "$num_lignes") echo "\033[1;0H$affiche" sleep 1 done exit 0 fi
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
>
BillyV33
20 avril 2019 à 18:00
20 avril 2019 à 18:00
non, ce n'est pas ça.
Move cursor to beginning of the line, N lines up (default 1)
désolé, je n'avais pas vu ton message précédent.
\033[n;mHplace le curseur à la ligne
ndepuis la ligne 1 du terminal, ça ne déplace pas le curseur de
nlignes vers le haut, c'est-à-dire du nombre de lignes affichées.
Move cursor to beginning of the line, N lines up (default 1)
désolé, je n'avais pas vu ton message précédent.
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
>
BillyV33
20 avril 2019 à 16:17
20 avril 2019 à 16:17
argh, non. toujours pas.
il manque la balise "ouvrante"
il manque la balise "ouvrante"
<code>.
Bonjour IEprofSonDkon!
Désolée pour le silence !!! je n'avais pas d'internet où j'étais!
Merci pour la réponse! Finalement, j'ai fait le mauvais choix... bon..
Mais il y a-t-il un moyen pour tester si ça se passe bien? parce que à part de regarder l'écran qui rafraîchi tous les 1 seconde et qui reste à la même place, je ne savais pas si c'était bon ou non ce qui était en train de ce passer
En tout cas, tout est rendu, donc c'est vraiment juste pour curiosité personnelle!:)
C'est un sujet que j'aurai bien aimer approfondir un peu plus
Merci encore et encore pour ton aide précieux!! :):)
Je vais attendre un peu pour mettre résolu. Si tu as une suggestion pour les tests :)
Merci et bonne journée! :):)
Désolée pour le silence !!! je n'avais pas d'internet où j'étais!
Merci pour la réponse! Finalement, j'ai fait le mauvais choix... bon..
Mais il y a-t-il un moyen pour tester si ça se passe bien? parce que à part de regarder l'écran qui rafraîchi tous les 1 seconde et qui reste à la même place, je ne savais pas si c'était bon ou non ce qui était en train de ce passer
En tout cas, tout est rendu, donc c'est vraiment juste pour curiosité personnelle!:)
C'est un sujet que j'aurai bien aimer approfondir un peu plus
Merci encore et encore pour ton aide précieux!! :):)
Je vais attendre un peu pour mettre résolu. Si tu as une suggestion pour les tests :)
Merci et bonne journée! :):)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 415
20 avril 2019 à 11:20
20 avril 2019 à 11:20
Salut,
Et la commande watch, ça ne ferait pas l'affaire ?
Et la commande watch, ça ne ferait pas l'affaire ?
watch -t -d "ps x --sort -%cpu -o user,pid,%cpu,%mem,cputime,comm | head -n 5"
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 415
>
BillyV33
20 avril 2019 à 16:51
20 avril 2019 à 16:51
Je crains que non (man ps (posix)) ;-\
Bonjour sipe31!
Bon! je pense que mon script pour cette question est complètement raté!
Mais bon, au moins j'ai appris des choses! :) surtout celles à ne pas faire Haha!
Je l'avais regardé le man pourtant c'est pour ça que je me posais la question .
Je vais relire les tout... en prenant le temps de traduire un peu certains passages... l'anglais ce n'est pas ma force !:)
Merci encore et désolée aussi pour se silence prolongé! Pas d'internet.. pas de cellulaire ...! ça fait du bien de temps en temps!
Bonne journée :)
Bon! je pense que mon script pour cette question est complètement raté!
Mais bon, au moins j'ai appris des choses! :) surtout celles à ne pas faire Haha!
Je l'avais regardé le man pourtant c'est pour ça que je me posais la question .
Je vais relire les tout... en prenant le temps de traduire un peu certains passages... l'anglais ce n'est pas ma force !:)
Merci encore et désolée aussi pour se silence prolongé! Pas d'internet.. pas de cellulaire ...! ça fait du bien de temps en temps!
Bonne journée :)
billyV33
Messages postés
23
Date d'inscription
dimanche 10 février 2019
Statut
Membre
Dernière intervention
9 mars 2022
26 avril 2019 à 18:12
26 avril 2019 à 18:12
je mets à résolu
Merci beaucoup! :)
Merci beaucoup! :)