web-dev-qa-db-fra.com

`watch`,` tail`, `grep` dans la combinaison` `windows.tmux` de` byobu`

Je suis en train de (ré) écrire mon windows.tmux pour mes sessions byobu fréquemment utilisées. Ci-dessous, mon exigence précise:

Je voudrais avoir un onglet (ou une fenêtre?) Avec une invite racine. (Au départ, il attend le mot de passe Sudo). Je voudrais que le second soit divisé horizontalement. Dans la partie supérieure, je veux surveiller mon /var/log/syslog et dans la partie inférieure dmesg. Jusqu'à présent, je suis capable de réaliser les tâches suivantes:

new-session -AD -s 'root' Sudo su - ;
new-window -n log watch -n 1 tail -n 15 /var/log/syslog
split-window watch dmesg | tail -15;

Cependant, le problème (qui est totalement hors de propos pour ce fil) du fait qu'il y a beaucoup d'entrées dans mon syslog (presque 4/5 lignes par seconde), ce que j'aimerais éviter en surveillant. Je voudrais donc grep -v sur ces lignes. La combinaison de watch, tail et grep peut être obtenue selon mon besoin (grâce à steeldriver pour sa réponse ici . )

watch -n 1 'tail -n 15 /var/log/syslog | grep -v -E "pattern1|pattern2"'

Ici commence le problème: Si j'inclus la ligne suivante dans mon window.tmux

new-window -n log watch -n 1 'tail -n 15 /var/log/syslog | grep -v -E "pattern1|pattern2"'

Je reçois,

sh: 1: tail -n 15 /var/log/syslog | grep -v -E "pattern1|pattern2": not found

En fait, le problème le plus général est que si j'encapsule la commande entre guillemets (simple ' ou double "), j'obtiens la même erreur.

La sortie de byobu --version est:

byobu version 5.116
tmux 2.3

J'utilise GNU bash, version 4.4.7(1)-release le 17.04.

Merci d'avance - Mike

Je n'ai pas expérimenté avec screen. Est-ce possible en utilisant screen?

1
Mike V.D.C.

Dans votre bashrc créer un alias

alias monitor_log='tail -n 15 /var/log/syslog | grep -v -E "pattern1|pattern1"'

Votre windows.tmux peut être:

new-session -AD -s 'root' Sudo su - ;
new-window -n log;
split-window watch dmesg | tail -15;

Cela vous donnera un invite-bash dans la deuxième division en haut de la fenêtre et dmesg dans le bas. Et ensuite, donnez votre commande watch préférée:

watch -n 1 'tail -n 15 /var/log/syslog | grep -v -E "pattern1|pattern2"'

Pas sûr que vous puissiez créer un alias pour cela!

J'espère que cela t'aides.

1
user5325