Πέμπτη, 23 Οκτωβρίου 2008

Το shell μετράει αντί για μένα

Disclaimer note: Αν είσαι παλαίμαχος της κονσόλας, μεταβλήσου άνετα (από το 'μεταβολή'... για τα μπάζα; το μήνυμα έγινε σαφές πάντως, ε;). Αν πάλι είσαι τηλέ-μαχος (i.e. νοοτροπίας 'μακριά κι αγαπημένοι' με το terminal) και κάνει κάποιο από τα ερωτηματικο-συννεφάκια σου match με τον τίτλο, μείνε.

Μου αρέσει όταν καταφέρνω να πάρω αυτό που θέλω κατ'ευθείαν από τη γραμμή εντολών και, πιο συγκεκριμένα, από το bash shell. Χαίρομαι σα χαζό :)! Επειδή θα το ξεχάσω
σίγουρα, ορίστε πως του ζητάω την εξής απάντηση:

Θέλω να μάθω πόσα μηχανάκια από το cluster (στην ουσία leaf nodes) τελείωσαν τη δουλειά τους. Σε κάθε leaf node κρατώ ένα αρχειάκι status.bar, που περιέχει τη λέξη:

  • FREE όταν δεν τρέχω τίποτα στο συγκεκριμένο μηχάνημα,
  • BUSY όταν έχω ξεκινήσει κάποιο process (π.χ. java) και
  • DONE όταν το process τερματίσει.
Η είσοδός μου στο cluster γίνεται μέσω του root node με ssh και από εκεί μπορώ ν'ανοίξω remote shell (rsh) σε οποιοδήποτε leaf node θέλω. Το cluster διαθέτει 24 μηχανήματα. Για να μην κάθεται ο κάθε χρήστης και εκτελεί την ίδια διαδικασία 24 φορές, ο admin διαθέτει ορισμένα bash script-άκια που εκτελούν batch εργασίες, όπως το doall:
for a in `echo $LEAF_NODES`; do echo $a: ;rsh $a $*; done
Έτσι, λοιπόν, για να δω σε πόσα από τα leaf nodes η java έχει τελειώσει τη δουλειά της, γράφω στο command line:
[usr@root node]$ doall cat status.bar | grep -c 'DONE'
12
και, τσααακ, το shell μού επιστρέφει ένα ωραιότατο νουμεράκι
. Δεν είναι πολύ ωραίο :);

Back to work!

Δεν υπάρχουν σχόλια: