Filtrer le journal avec la commande d'écran

2

En appuyant sur Ctrl+ A, Hme laisse enregistrer la sortie de la screencommande. Cependant, le fichier de sortie est trop volumineux. Est-il possible d'appliquer un grepfiltre semblable à celui-ci afin que je puisse contrôler ce qui est enregistré?

Par exemple, je souhaiterais peut-être ne consigner que les lignes contenant la phrase foo bar.

curryage
la source

Réponses:

0

Question interessante. Je viens juste de survoler man screen, je ne suis donc pas absolument sûr s'il est possible d'atteindre cet objectif sans utiliser d'outils externes. Cependant, on peut utiliser un tube nommé et une combinaison de tail et grep pour faire ceci:

$ mkfifo /tmp/fifo/fifo
$ tail -f /tmp/fifo/fifo | grep --line-buffered bar >> /tmp/DONE

À l'intérieur screenfaire:

logfile /tmp/fifo/fifo

et commencez à vous connecter. Une fois la journalisation terminée, seules les lignes qu'il contient barseront enregistrées /tmp/DONE. Comme il est dit dans man fifo:

Un fichier spécial FIFO (un canal nommé) est similaire à un canal, à la différence qu’il est accessible en tant que partie du système de fichiers. Il peut être ouvert par plusieurs processus de lecture ou d'écriture. Lorsque les processus échangent des données via la FIFO, le noyau transmet toutes les données en interne sans les écrire dans le système de fichiers. Ainsi, le fichier spécial FIFO ne contient aucun contenu sur le système de fichiers; l'entrée de système de fichiers sert simplement de point de référence pour que les processus puissent accéder au canal de communication en utilisant un nom dans le système de fichiers.

Cela signifie que cela /tmp/fifo/fifone prend pas d'espace sur le disque. Cette solution a fonctionné pour moi, mais je ne sais pas quels en sont les effets secondaires négatifs ou les inconvénients.

MODIFIER:

Je viens de remarquer qu'ils recommandent d'utiliser fifodans man script:

-f, --flush Rince la sortie après chaque écriture. C'est bien pour la télécoopération: une personne fait 'mkfifo foo; script -f toto, et un autre peut superviser en temps réel ce qui se fait avec "cat foo".

Au cas où vous ne le sauriez pas, script est un utilitaire qui enregistre également une session de terminal.

Arkadiusz Drabczyk
la source