Je veux que mon PC émette un bip système à chaque événement de queue
J'ai la commande suivante
tail -f development.log | grep "something rare"
Existe-t-il un moyen simple de le canaliser vers quelque chose qui émet un bip? comme
tail -f development.log | grep "something rare" | beep
si oui, la sortie grep sera-t-elle toujours affichée?
Réponses:
Définissez simplement ce
beep
qui suit:Ensuite, vous pouvez utiliser votre commande:
la source
sed
ou similaire (entre queue et grep) avec une expression rationnelle remplacer lesomething rare
avec lui-même plusieurs fois. Le nombre de fois que cela doit être fait dépend de la quantité de tampon du tuyau.tail -f development.log | stdbuf -oL -eL grep "something rare" | beep
L'écran GNU a une fonction intégrée pour émettre un bip lorsqu'une fenêtre donnée change: voir la section pertinente de la page de manuel .
Résumé du titre:
Comme indiqué dans les commentaires, cela émettra un bip à chaque nouvelle entrée de journal, pas seulement celles qui correspondent à "quelque chose de rare", donc cela ne fait pas tout à fait ce que l'OP a demandé. Encore une astuce utile pour connaître IMHO.
Vous pouvez tirer le meilleur parti des deux mondes en ouvrant deux
screen
fenêtres (<C-a> c
pour ouvrir une fenêtre,<C-a> <C-a>
pour basculer entre deux fenêtres):tail -f yourfile.log | grep 'something rare'
tail -f yourfile.log
Ensuite, vous pouvez vous asseoir en regardant le journal défiler dans la fenêtre 2, et vous obtiendrez un bip de la fenêtre 1 lorsque "quelque chose de rare" se produit.
screen
est incroyablement polyvalent - je recommande fortement de le lire.la source
tail -f yourfile.log | grep something\ rare
plutôt quetail -f logfile
something rare
. Modifié pour refléter cela. Le grep fonctionnerait, mais il ne verrait pas le reste du journal, seulement les lignes rares - si je comprends bien, il veut pouvoir regarder le journal entier défiler, mais être alerté sur des événements spécifiques.Vous pouvez empêcher la sortie d'être mise en mémoire tampon dans la commande grep. Voir man grep pour plus de détails.
Vous pouvez diriger la sortie grep vers un bip.
L'exemple suivant est tiré du bip de l'homme ...
Il y a beaucoup de bonnes choses dans ces manuels. Si seulement nous n'avions pas à les lire pour le trouver. ;-)
la source
La commande watch a une option --beep, et vous pouvez également définir l'intervalle d'interrogation, mais la norme avec 2 sec devrait être ok
la source
watch
fonctionne en exécutant votre paramètre / commande toutes les sections (intervalle), puis en envoyant les résultats à l'exécution précédente. Ainsi, vous voudrez utiliser la version normale de la commande tail, au lieu d'utilisertail -f
watch --beep
et l'enveloppement de ma queue / grep, je n'ai toujours pas reçu de bip).Vous pouvez utiliser sed pour ajouter le contrôle-G comme suit:
ou simplement sur des lignes rares, sans utiliser grep, comme suit:
qui dit: sur les lignes où se produit quelque chose de rare, s tout ubstitute pour la même chose avec le contrôle-G clouée sur la fin et l' impression (mais ne pas imprimer les lignes qui ne correspondent pas ). Fonctionne très bien!
la source
Hm, délicat. On pourrait peut-être faire quelque chose comme ça?
Ou dans votre cas
Il semble cependant faire un tampon. Je vais voir s'il existe un moyen de désactiver cette mise en mémoire tampon par la
for
boucle.Apparemment, vous devriez pouvoir ajuster la mise en mémoire tampon du tuyau à l'aide de
ulimit -p
mais cela continue de me plaindre de l'argument invalide. J'ai également trouvé un article qui prétend que vous devez recompiler le noyau pour modifier cette limite.la source
Dans un travail précédent, je ne pouvais pas obtenir un veilleur fiable avec commande-fu juste, alors j'avais un script d'emballage comme celui ci - dessous, qui a contrôlé le fichier toutes les poll_duration secondes et les nouvelles lignes rassemblés de pour l'expression intéressé.
C'était sur une machine Unix. Sous Linux, vous pouvez faire mieux en utilisant son interface inotify filewatcher. Si ce paquet ( inotify-tools sur Ubuntu) est présent, remplacez
avec
Cet appel bloque jusqu'à ce que le fichier soit modifié. La version bloquante est presque aussi efficace que ce que vous obtiendriez avec la
tail -f
version si le tube pouvait être configuré pour fonctionner sans mise en mémoire tampon.Remarque: Le script fait d'abord un
head --lines=$new_linecount
pour s'assurer que les lignes ajoutées au fichier après l'avoir vérifié ne biaisent pas le morceau du fichier qui est vérifié dans cette boucle.la source