Sur les clusters basés sur la file d'attente, la file d'attente des travaux en attente est affichée à partir d'une commande, par exemple showqueue
.
La commande renvoie, en colonnes, une liste de données raisonnables comme les noms, etc., mais les colonnes / données n'ont pas vraiment d'importance pour la question.
J'aime utiliser l'utilitaire watch
comme watch showqueue
parfois (avec un alias de alias watch="watch "
pour forcer l'expansion d'alias de ma commande à regarder). Il y a des données précieuses (travaux en cours), dans les premières lignes, puis des travaux en attente, etc., et quelques résumés précieux à la fin.
Cependant, parfois la sortie de showqueue disparaît de l'écran (Incroyable, je sais)! Idéalement, j'aimerais avoir un moyen de voir le début et la fin du fichier en même temps.
Le meilleur que j'ai jusqu'à présent est:, showqueue > file; head -n 20 file > file2; echo "..." >> file2 ; tail -n 20 file >> file2; cat file2
et en utilisant watch
un alias de cela.
Quelqu'un sait-il quelque chose d'un peu plus flexible ou d'un seul utilitaire? Ma solution devient un peu plus désagréable avec des boucles bash pour rendre le "..." break multilined, ce n'est pas du tout adaptatif au redimensionnement de la fenêtre du terminal, et je suis sûr qu'il y a plus que j'ai manqué.
Aucune suggestion?
la source
seq 30 | (head && tail)
par exemple).Réponses:
Cherchez-vous à faire quelque chose comme ce qui suit? Affiche la sortie de la tête et de la queue.
la source
head
peuvent lire plus de 10 lignes et ne laisser rientail
à lire. L'utilitaire n'est pas censé faire cela et je pense que les outils GNU se comportent bien à cet égard. Utilisez-le égalementhead; echo '...'; tail
pour obtenir les points.head
de ne pas trop lire? (même sur Mac, il semble lire par blocs)head
implémentation que je connaisse qui lit un octet à la fois pour éviter de lire après le 10e saut de ligne est la fonction intégrée dehead
ksh93.En utilisant la même approche que vous, en utilisant un fichier temporaire, mais en le faisant légèrement plus court:
Cela ne souffrirait pas des mêmes problèmes que discuté dans une autre réponse , mais serait peut - être montrer les mêmes lignes deux fois si la sortie était inférieure à 40 lignes.
la source
tee
pour laisser la sortie entrer directementhead
et en utilisant uniquement la sortie enregistrée pourtail
.solution awk pour un nombre arbitraire de lignes affichées depuis la tête et la queue (changez
n=3
pour définir le montant):Comme il est écrit, les parties tête et queue ne se chevaucheront pas , même si l'entrée est plus courte que les
2*n
lignes.Dans certaines implémentations awk, l'utilisation
for (x in a) print a[x];
dans laEND
partie fonctionne également. Mais en général, il n'est pas garanti de retourner les entrées du tableau dans le bon ordre, et ce n'est pas le cas par exemple dans mawk.la source
m
est le nombre de lignes dans le fichier, etm < 2n
, cela imprimera2n - m
les lignes vides. Regardez aussi ici ;-).for (x in a)
va itérer dans l'ordre uniquement dans GNU awk ; si vous pensez que cela fonctionnemawk
aussi, testez avec> 10 valeurs.x in a
n'était pas bien. Fixé maintenant, merci. Il y a aussi une autre réponse awk dans la question à laquelle Stéphane est lié. J'aime bien le truc modulo!Vous pouvez utiliser un simple script awk. Ajout d'un tampon circulaire n = 3 pour les 3 dernières lignes
Après la mise à jour, ce n'est plus simple,
la source
NR==1
àNR <= 10
(ou quelque chose), puis collecter des lignes dans un tampon (circulaire?) Que vous sortirez plus tard dans leEND
bloc.