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 watchcomo watch showqueuea 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 file2y usar watchun 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
headpueden leer más de 10 líneas y no dejan nada paratailleer. No se supone que la utilidad haga eso y creo que las herramientas GNU se comportan bien a este respecto. Úselohead; echo '...'; tailpara poner los puntos allí también.headno leer en exceso? (lo mismo en Mac, parece leer por bloques)headimplementació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
teepara dejar que la salida vaya directamenteheady 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=3para 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*nlíneas.En algunas implementaciones de awk, el uso
for (x in a) print a[x];de laENDparte 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
mes el número de líneas en el archivo, ym < 2neso imprimirá2n - mlí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 ano 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==1aNR <= 10(o algo), y luego recopilar líneas en un búfer (¿circular?) Que luego generará en elENDbloque.