Команда для удаления первого N числа строк на входе

Задний план

Я запускаю SSH-сервер и хочу, чтобы этот пользователь хотел удалить. Я не могу удалить этого пользователя, потому что в настоящее время он запускает несколько процессов, которые мне нужно сначала убить.

Это конвейер, который я использую в настоящее время для выяснения всех идентификаторов процесса пользователя, которого я использую в настоящее время:

ps -u user | awk '{print $1;}' 

Результат выглядит следующим образом:

 PID 2121 2122 2124 2125 2369 2370 

Я хочу передать это, чтобы kill -9 чтобы убить все процессы, чтобы я мог удалить этого глупого пользователя следующим образом:

 ps -u user | awk '{print $1;}' | sudo xargs kill -9 

Но это не работает из-за заголовка PID :

 kill: failed to parse argument: 'PID' 

Вопрос

Я думаю, что должна быть простая команда Unix для удаления первой строки ввода.

Я знаю, что я могу использовать для этого tail но я не хочу подсчитывать, сколько строк содержит вход, чтобы точно определить, сколько я хочу отображать.

Я ищу что-то вроде head или tail но инвертированное (вместо отображения только первой / последней части потока он отображает все, кроме начала / конца потока).

Заметка

Мне удалось решить эту проблему, просто добавив | grep [[:digit:]] | grep [[:digit:]] после моей команды awk но я все еще ищу способ удалить первую строку файла, как я думаю, будет весьма полезен в других сценариях.

2 Solutions collect form web for “Команда для удаления первого N числа строк на входе”

ПРИМЕЧАНИЕ. Если ваша система уже имеет pgrep / pkill то вы повторно изобретаете колесо здесь. Если ваша система не имеет этих утилит, то вы должны иметь возможность форматировать вывод ps для получения необремененного списка PID непосредственно, например, ps -u user -opid=

Если вы уже используете awk , нет необходимости проходить через дополнительный процесс, чтобы удалить первую строку (запись): просто добавьте условие на номер записи NR

 ps -u user | awk 'NR>1{print $1;}' 

Поскольку вы упоминаете head и tail , формула, которую вы, вероятно, хотите в этом случае, имеет tail -n +2

Когда я писал этот вопрос, я выяснил решение, использующее sed .

Удаление одной строки в начале ввода

Для удаления одной строки используйте sed 1d .

Удаление нескольких строк при начале ввода

Чтобы удалить N количество строк, используйте sed 1,Nd

  • Для удаления первых 5 строк используйте sed 1,5d

  • Чтобы удалить первые 10 строк, используйте sed 1,10d

  • Чтобы удалить первые 25 строк, используйте sed 1,25d

Трубопровод

Таким образом, конвейер становится в сценарии:

 ps -u user | awk '{print $1;}' | sed 1d | sudo xargs kill -9 ^ removes the PID header 
  • grep не работает в цикле for по списку
  • tail -f не выводит результат в live CD на Ubuntu
  • Извлечь диапазон элементов из i-го элемента в j-й элемент, вплоть до n-го элемента из списка
  • После виртуального файла?
  • Подавлять сообщения об усечении файла при использовании хвоста
  • выход tailf как параметр скрипта
  • Tail -f передается через grep, не выводящий в файл, но выводит на консоль
  • Греп от конца файла до начала
  • $ (tail) в переменную удаления \ n
  • Скользящее среднее в файле журнала с awk или другими утилитами unix?
  • Как я могу контролировать файл, который полностью воссоздается во время его запуска?
  • Interesting Posts

    Почему я продолжаю получать файл wget-log в ~ на Arch Linux?

    Установка Oracle Java 8

    Как добавить ngnix за сервер haproxy

    Как определить временные ограничения для группы пользователей за сеанс

    Как запустить исполняемый файл с systemd перед отключением NetworkManager

    Начать сеанс SSH в другой директории, чем домашний каталог, и заблокировать их там

    Начисление PS1 асинхронно

    Вставить строку или строку после последнего экземпляра определенной переменной поиска в цикле

    Использование Putty / plink для scp для именованного канала

    Как освободить место на полностью полном объеме?

    Настройка внешнего жесткого диска для использования с несколькими Linux-ПК

    дисплей выключается с помощью ctrl + alt + f1

    Сделать `locate` способным искать файлы на внешнем жестком диске

    «ALL ALL = (ALL) NOPASSWD: ALL» было автоматически добавлено в мой файл / etc / sudoers. Это нарушение безопасности?

    Установка пароля root для облачного изображения Fedora 22

    Linux и Unix - лучшая ОС в мире.