IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

AWK, commande systeme et variable


Sujet :

Linux

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 1
    Points
    1
    Par défaut AWK, commande systeme et variable
    Bonjour,

    Je viens poster ici car je debute en Bash et je planche sur un probleme depuis un moment.

    Je dois programmer un script permettant de detecter l'arret de certains processus et de les relancer le cas écheant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #!/bin/bash
    cat /home/user/Desktop/processus.txt | awk -F" " '{
    PROC=system("ps -A | grep -c cron")
    $2=PROC
    system("echo " $2)
    }'
    Le fichier processus.txt est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <nom du processus> <Commande de lancement>
    Donc en gros, mon idée était :
    - Parcourir le fichier processus.txt
    - Effectuer un grep sur la commande ps avec le nom du processus
    - Si le "ps -A | grep -c" me renvoi une ligne, je ne fais rien, sinon, je relance le processus.

    Le problème est que je n'arrive pas à récupérer le résultat que la commande ps dans une variable. La commande est executé, m'affiche la ligne correspondant dans la console, mais la variable ne contient rien.

    J'ai essayé beaucoup de combinaisons : PROC, $PROC, $(system(...))...
    Et la je commence à secher.

    Pendant que j'y suis, je dois aussi faire un script de gestion des ressources (cpu, memoire, reseau, ...), mais j'ai en gros le même problème. En plus, je dois faire ce script en version poste et en version reseau (avec centralisation des données de tous les postes), et la je suis totalement paumé
    Et pour combler tout ca, le tout doit être POSIX

    Donc voila, si quelqu'un pouvait me filer un coup de pouce, ce serait vraiment cool :p

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Personne ne peut m'aider ?

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    au lieu de compter les lignes, tu peux juste tester si grep retourne quelque chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat processus.txt | awk '{if (system("ps -A|grep "$1)){system($0)}}'

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    si tu veux vraiment retrouver le résultat d'une commande système dans awk, il te faut employer getline

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    cat processus.txt | awk '{
      cmd="ps -ef|grep -c "$1;
      cmd|getline;
      x=$0;
      printf "x=%d\n",x;
      close(cmd)}'

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup, je vais tester ca dès que possible.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    [Edit]Oups, j'ai rien dit, erreur de ma part, ca fonctionne bien, merci :p [/Edit]

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    J'ai donc testé le code.
    Tout cela marche très bien mais me pose un petit probleme :
    une fois passée la commande getline, je n'ai plus accès aux variables $1, $2, ect... correspondant au fichier (elles contiennent toutes la valeur de la commande system).

    Or, une fois récupérée le resultat de la commande ps, je dois afficher le nom du processus (contenu donc dans le fichier), et le relancer.

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    exact, il faut donc les sauver avant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    awk '{tmp1=$0; cmd="ps"; cmd|getline;tmp2=$0;close(cmd);print tmp1,tmp2}'

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Salut, je voulez savoir a tout hasard... tu fais ces scripts pour ton école?? par exemple l'itin???

    @+

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par nicotine78 Voir le message
    Salut, je voulez savoir a tout hasard... tu fais ces scripts pour ton école?? par exemple l'itin???

    @+
    Bonne pioche

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Ahhhh dur dur!!!
    Pas facile de se lancer ds les scripts, surtout quand y connait pas grand chose.. moi perso je suis rester a zero ^^ le ratrappage a pas vraiment avancé... et pourtant on se rapproche du jour J!!!
    En plus, on me demande du script pour Linux en entreprise aussi: la galère!
    Ben écoute bon courage et si tu as envie de partager y'a pas de problème

    @++

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Ouai, sans soucis, je galere un peu beaucoup la

    J'ai presque fini le N1, mais je sens très mal le n2 oO

    Surtout que j'ai pas que l'unix a rattraper :'(

  13. #13
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Tiens d'ailleurs c ca faut faire le N1 et N2 quel que soit ton niveau de départ ou pas??? Enfin les 2 sont obligatoires pour tout le monde??
    AH ouais moi aussi g pas ke celui la a rattraper... j'avais 8 matières dont le projet..enfin validé on ne sait pas trop comment mais bon!!!
    Tu te diriges sur quel option en M1? Moi pour l'instant c l'ILM... verra bien!

  14. #14
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut

    http://club.developpez.com/regles/#L4.12
    Nous ne sommes pas là non plus pour faire vos exercices.

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Si j'avais voulu qu'on fasse mon exercice, j'aurais scanné l'énnoncé, lol.

    Oui, il faut faire les niveau N1 et N2 obligatoirement.
    Perso je me dirige vers ASA
    Tu as quoi d'autre à passer toi ?

Discussions similaires

  1. Awk : commande system
    Par bobby.dick dans le forum AIX
    Réponses: 3
    Dernier message: 30/01/2010, 08h19
  2. Commande SYSTEM de awk sous Windows Vista
    Par LouisMarieTls dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 24/12/2007, 16h50
  3. [awk] Récupérer une commande system dans un awk
    Par zebulon90 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 18/09/2007, 10h52
  4. Utilisez des variables dans une commande system()
    Par Invité1 dans le forum C++
    Réponses: 2
    Dernier message: 05/01/2007, 22h54
  5. Problème avec l'utilisation de la commande system awk
    Par vbcasimir dans le forum Linux
    Réponses: 3
    Dernier message: 05/10/2004, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo