Antecedentes
Estoy ejecutando un servidor SSH y tengo este usuario que quiero eliminar. No puedo eliminar a este usuario porque actualmente está ejecutando algunos procesos que primero debo eliminar.
Este es el canal que estoy usando actualmente para encontrar todos los identificadores de proceso del usuario que estoy usando actualmente:
ps -u user | awk '{print $1;}'
El resultado se ve así:
PID
2121
2122
2124
2125
2369
2370
Quiero canalizar esto para kill -9matar todos los procesos para poder eliminar a este estúpido usuario como este:
ps -u user | awk '{print $1;}' | sudo xargs kill -9
Pero esto no funciona debido al PIDencabezado:
kill: failed to parse argument: 'PID'
La pregunta
Estoy pensando que tiene que haber un simple comando de Unix para eliminar la primera línea de entrada.
Soy consciente de que puedo usar tailesto, pero no quiero contar cuántas líneas contiene la entrada para determinar exactamente cuántas quiero mostrar.
Estoy buscando algo como heado tailinvertido (en lugar de mostrar solo la primera / última parte de la transmisión, muestra todo menos el inicio / final de la transmisión).
Nota
Logré resolver este problema que tenía simplemente agregando | grep [[:digit:]]después de mi awkcomando, pero todavía estoy buscando una forma de eliminar la primera línea de un archivo, ya que creo que sería bastante útil en otros escenarios.

NRpor ejemploawk 'NR>1 {print $1;}'. Mejor aún: usepgrep -uopkill -uawkcomando).Respuestas:
NOTA: si su sistema ya tiene
pgrep/pkillentonces está reinventando la rueda aquí. Si su sistema no tiene estas utilidades, entonces debería poder formatear la salidapspara obtener la lista PID no gravada directamente, por ejemplops -u user -opid=Si ya está usando
awk, no es necesario pasar por un proceso adicional para eliminar la primera línea (registro): simplemente agregue una condición en el número de registroNRComo mencionas
headytail, la fórmula que probablemente quieras en este caso estail -n +2fuente
tail -n +2era exactamente lo que estaba buscando!psno se imprima un encabezado-opid=, ya que eso evita que la salida aparezca nunca. Si un usuario futuro decide ordenar lapssalida en el medio de la tubería, la suposición awk / sed / tail puede romperse.Mientras escribía esta pregunta, descubrí una solución usando
sed.Eliminar una línea al comienzo de la entrada
Para eliminar una línea, use
sed 1d.Eliminar varias líneas al comienzo de la entrada
Para eliminar el
Nnúmero de líneas, usesed 1,NdPara eliminar las primeras 5 líneas, use
sed 1,5dPara eliminar las primeras 10 líneas, use
sed 1,10dPara eliminar las primeras 25 líneas, use
sed 1,25dLa tubería
Entonces la tubería se convierte en el escenario se convierte en:
fuente