#1 Le 03/01/2016, à 18:51
- tartuff
[RESOLU]Probleme avec la commande jobs
Bonsoir,
J'ai quelques pépins avec la commande jobs, je veux juste lancer la commande top
en arrière plan et ensuite c'est moi qui arrête le processus en question.
Entre temps je demande avec la commande jobs la liste des processus en arrière plan
et alors j'ai la ligne suivante:
[code][1]+ Arrêté top[/code]
Comme si la commande jobs arrête les processus en arrière plan.
Enfin quand je kill moi même le processus, j'ai pas l'impression
que quelque chose est changé.
C'est la même ligne.
Liste des commandes:
top &
[1] 3631
jobs
[1]+ Arrêté top
kill 3631
jobs
[1]+ Arrêté top
D’après la man
The shell associates a job with each pipeline. It keeps a table of
currently executing jobs, which may be listed with the jobs command.
Dernière modification par tartuff (Le 05/01/2016, à 11:36)
Hors ligne
#2 Le 03/01/2016, à 19:44
- Watael
Re : [RESOLU]Probleme avec la commande jobs
salut,
ps -C top
devrait montré que top est toujours en cours d'exécution.
pour le tuer, je dois aller jusqu'à SIGKILL
je ne sais pas pourquoi top se stoppe quand il est en background.
en même temps, mettre en arrière-plan une commande conçue pour afficher des données en continu n'a pas de sens àmha.
Dernière modification par Watael (Le 03/01/2016, à 19:45)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 03/01/2016, à 21:27
- alius
Re : [RESOLU]Probleme avec la commande jobs
Si tu veux lancer top en background bien que j'avouerai ne pas comprendre l'utilité d'une telle manipulation il y a un moyen simple de le faire en utilisant la commande screen et d'y lancer la le programme top puis enfin de détacher screen de terminal avec Ctrl+b puis d. Cela aura pour effet de laisser en background la session screen avec top.
Alius
Hors ligne
#4 Le 03/01/2016, à 22:56
- tartuff
Re : [RESOLU]Probleme avec la commande jobs
la commande
ps -C top
le retour
ps -C top
PID TTY TIME CMD
3781 pts/0 00:00:00 top
D’après le man:
By default, ps selects all processes with the same effective user ID (euid=EUID) as the
current user and associated with the same terminal as the invoker. It displays the process
ID (pid=PID), the terminal associated with the process (tname=TTY), the cumulated CPU time
in [DD-]hh:mm:ss format (time=TIME), and the executable name (ucmd=CMD). Output is unsorted
by default.
Je ne comprends pas pourquoi la variable TIME reste a 0.
Normalement le comme top est en arriere plan et je ne l'ai pas tuer.
TIME devrai augmenter.
Même en rafraîchissant plusieurs fois dans le même terminal, taper plusieurs fois la commande
ps -C top
TIME ne bouge pas d'un pouce et reste à 0
J'ai pas l'impression que top soit toujours en vie ?
La commande top est la seul commande que je connais qui "bouge"'.
Comme cette commande est toujours actif c'est plus facile de voir lorsque est bien "tuée".
Si par exemple je tape une commande qui fait un truc puis qui quelque temps après ce rendort ...
Puis ensuite je l'aurai remis sur le devant de la scene, je l'aurai vu également direct.
Voila de pourquoi la commande top ...
Watael la commande SIGKILL chez moi ne fonctionne pas mais je sais même pas si top tourne en arrière plan.
Dernière modification par tartuff (Le 03/01/2016, à 22:57)
Hors ligne
#5 Le 04/01/2016, à 21:30
- Totor
Re : [RESOLU]Probleme avec la commande jobs
Si tu veux lancer top en background bien que j'avouerai ne pas comprendre l'utilité d'une telle manipulation il y a un moyen simple de le faire en utilisant la commande screen et d'y lancer la le programme top puis enfin de détacher screen de terminal avec Ctrl+b puis d. Cela aura pour effet de laisser en background la session screen avec top.
Pas besoin de tant d'artifice pour avoir top en arrière plan sans qu'il soit arrêté...
Il suffit de lancer top en mode batch :
top -b &
Mais lancé comme tel, cela pollue l'affichage du terminal. Il est donc préférable de rediriger la sortie de top vers un fichier/device...
Pour détacher le processus mis en background du terminal, il faut utiliser la builtin bash disown
top -b >/tmp/top.log &
disown -h %+
Le seul inconvénient, c'est que l'on ne peut pas récupérer la tâche en foreground comme avec screen.
Dernière modification par Totor (Le 04/01/2016, à 21:30)
-- Lucid Lynx --
Hors ligne
#6 Le 05/01/2016, à 11:31
- tartuff
Re : [RESOLU]Probleme avec la commande jobs
Totor merci pour les explications.
La commande top ne semble pas du tout appropriée pour les manipulation que je voulais tester.
J'ai trouver un moyen pour stopper la commande top en arrière -> exit
top &
[1] 2730
exit
exit
Il y a des tâches stoppées.
[1]+ Arrêté top
jobs
[1]+ Arrêté top
La commande exit stoppe tous les commandes en arrière plan.
Et ce n'est pas la même chose que de faire un simple kill même si jobs affiche la même chose.
top &
[1] 2833
kill 2833
[1]+ Arrêté top
exit
exit
Il y a des tâches stoppées.
Mais passer par un exit pour stopper une commande en arrière plan n'est pas top non plus.
Dernière modification par tartuff (Le 05/01/2016, à 11:36)
Hors ligne