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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    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 membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    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
    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
    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 membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

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

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