2009-07-27 7 views
0

J'ai quelques petits scripts que j'utilise pour surveiller certains aspects de notre application qui résident dans une boucle infinie avec un sommeil de 3 secondes et affichent simplement la sortie de ps aux | grep -i app_name ou mysql -e "SHOW SLAVE STATUS\G" juste pour que je peut facilement regarder pendant quelques minutes sans toucher aucune touche, ce que je voudrais savoir, c'est comment je pourrais «actualiser» les valeurs sur l'écran au lieu de les ajouter, je suppose que le meilleur exemple que j'ai est top, ça rafraîchit valeurs au lieu d'imprimer en continu à l'écran.Remplacer la sortie dans une boucle dans le script bash

Toute aide serait grandement appréciée.

Merci

Répondre

2

vous pouvez inclure la commande "clear" dans votre boucle (sans regarder votre code)

+0

Argh, si facile! Fonctionne magnifiquement, merci! (Je me sens si bête!) :) – Christian

+1

mais il effacerait tout l'écran .. n'est-il pas un moyen de supprimer une ligne sur stdout tout comme en utilisant \ b en C – sud03r

5

Essayez watch utilitaire. Il exécute une commande arbitraire dans un intervalle configurable (-n flag). Il peut également mettre en évidence les différences de sortie entre les actualisations (indicateur -d).

+0

Excellent travail. la montre est très cool, ne l'a jamais su auparavant. Merci! – Christian

1

Vous pouvez également utiliser echo -n -e « \ b » pour annuler votre sortie précédente avec echo -n « sortie » pour maintenir votre nouvelle sortie sur la ligne effacée

0

La façon la plus simple sans doute:

watch -n 3 'ps aux | grep -i app_name' 
Questions connexes