Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

alius a écrit :

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