En los clústeres basados en colas, la cola de trabajos pendientes se muestra desde un comando, por ejemplo showqueue
.
El comando devuelve, en columnas, una lista de datos razonables como nombres, etc., pero las columnas / datos realmente no importan para la pregunta.
Me gusta usar la utilidad watch
como watch showqueue
a veces (con un alias de alias watch="watch "
forzar la expansión de mi comando para mirar). Hay datos valiosos (trabajos en ejecución), en las primeras líneas, luego trabajos pendientes, etc., y algunos resúmenes valiosos al final.
Sin embargo, a veces la salida de showqueue sale de la pantalla (¡Increíble, lo sé!) Idealmente, me gustaría poder ver el principio y el final del archivo al mismo tiempo.
Lo mejor que tengo hasta ahora es: showqueue > file; head -n 20 file > file2; echo "..." >> file2 ; tail -n 20 file >> file2; cat file2
y usar watch
un alias de eso.
¿Alguien sabe de algo un poco más flexible o de utilidad única? Mi solución se vuelve un poco más desagradable con los bucles bash para hacer que el "..." se rompa en varias líneas, no se adapta para cambiar el tamaño de la ventana del terminal, y estoy seguro de que hay más que me perdí.
¿Alguna sugerencia?
fuente
seq 30 | (head && tail)
por ejemplo).Respuestas:
¿Estás buscando hacer algo como lo siguiente? Muestra la salida de la cabeza y la cola.
fuente
head
pueden leer más de 10 líneas y no dejan nada paratail
leer. No se supone que la utilidad haga eso y creo que las herramientas GNU se comportan bien a este respecto. Úselohead; echo '...'; tail
para poner los puntos allí también.head
no leer en exceso? (lo mismo en Mac, parece leer por bloques)head
implementación que sé que lee un byte a la vez para evitar leer más allá de la décima línea nueva es la construcción de ksh93head
.Usando el mismo enfoque que usted, usando un archivo temporal, pero haciéndolo un poco más corto:
Esto no sufriría de los mismos problemas que se discutió bajo otra respuesta , pero sería posible mostrar la misma línea dos veces si la salida fue más corto de 40 líneas.
fuente
tee
para dejar que la salida vaya directamentehead
y solo usar la salida guardada paratail
.Solución awk para un número arbitrario de líneas que se muestran desde la cabeza y la cola (cambie
n=3
para establecer la cantidad):Como está escrito, las partes de la cabeza y la cola no se superpondrán, incluso si la entrada es más corta que las
2*n
líneas.En algunas implementaciones de awk, el uso
for (x in a) print a[x];
de laEND
parte también funciona. Pero en general, no se garantiza que devuelva las entradas de la matriz en el orden correcto, y no lo hace, por ejemplo, en mawk.fuente
m
es el número de líneas en el archivo, ym < 2n
eso imprimirá2n - m
líneas vacías. También mira aquí ;-).for (x in a)
iterará en orden solo en GNU awk ; si crees que también funcionamawk
, prueba con> 10 valores.x in a
no estaba bien. Solucionado ahora, gracias. También hay otra respuesta awk en la pregunta vinculada a Stéphane. ¡Sin embargo, me gusta el truco del módulo!Puedes usar un script awk simple. Se agregó un búfer circular allí n = 3 para las últimas 3 líneas
Sin embargo, después de la actualización ya no es simple,
fuente
NR==1
aNR <= 10
(o algo), y luego recopilar líneas en un búfer (¿circular?) Que luego generará en elEND
bloque.