Forum général.général Probleme de sortie de commande top

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
3
mai
2013

Salut à tous,

un peu désespéré, je poste ici car je ne m'en sort pas…

J'essaie de récupérer des noms de programmes depuis la commande top, lancée depuis une crontab. Ce sont des process python, et j'utilise l'option "c" pour afficher le nom complet de la commande lancée.

La commande : /usr/bin/top -bc -n 1

Quand je la lance en console, ca fonctionne bien :
1664 toto 20 0 733m 429m 2816 S 0 4.2 77:49.31 /usr/bin/python2.5 /usr/bin/twistd -d /logs/prog1 prog1 -p 5000
1695 toto 20 0 702m 308m 1796 S 0 3.0 2:57.67 /usr/bin/python2.5 /usr/bin/twistd -d /logs/prog2 prog2 -p 5001
2177 toto 20 0 1445m 1.0g 3228 S 0 10.3 77:37.94 /usr/bin/python2.5 /usr/bin/twistd -d /logs/prog3 prog3 -p 5002

Quand je la lance via cron avec récupération dans un fichier, j' ai

1664 toto 20 0 109m 16m 996 S 0 0.2 0:00.21 /usr/bin/python2.5
1695 toto 20 0 999m 647m 5584 S 0 6.3 52:09.19 /usr/bin/python2.5
2177 toto 20 0 1300m 876m 3168 S 0 8.6 16:54.92 /usr/bin/python2.5

J'ai tenté de rajouter le PATH dans mon script, mais rien n'y fait…
Des idées ?

  • # Pourquoi pas la commande ps ?

    Posté par  (site web personnel) . Évalué à 5.

    ps -aux | grep python
    Je pense que cette commande devrait te convenir, non ?

    Top est plutôt utilisé pour un affichage dynamique et une analyse en temps réel ce qui se prête peu à un usage pour une sauvegarde dans un fichier.

  • # ps

    Posté par  . Évalué à 1.

    Ah ben oui…
    C'est tout con mais j'étais parti sur top. ps marche bien aussi dans mon cas, merci :)

  • # Largeur d'affichage ?

    Posté par  . Évalué à 1.

    Bonjour,

    Tu utilises quelle version de top ? De mon côté (sous Debian sid), j'ai une version prcps-ng 3.3.4 et je n'arrive pas à reproduire le comportement que tu indiques :
    - soit j'ai la commande complète, éventuellement tronquée (mais la ligne se termine avec un +) ;
    - soit j'ai uniquement le nom de la commande (mais j'ai alors python2.5 et non pas /usr/bin/python2.5)
    De ton côté, tu sembles avoir des lignes de longueur variable… Est-ce que tu rediriges la sortie de top directement dans un fichier ou bien est-ce que tu fais d'autres traitements avant ?

    Pour avoir les lignes de commande complètes (dans la plupart des cas), j'utilise l'option -w 512 ou bien je définis la variable COLUMNS à 512 avant d'exécuter top (512 est la valeur max)

    COLUMNS=512  /usr/bin/top -bc -n 1 >>/tmp/top.txt
    /usr/bin/top -bc -n 1 -w 512 >>/tmp/top.txt
    
    

    A+
    JJD

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.