tło
Korzystam z serwera SSH i mam tego użytkownika, którego chcę usunąć. Nie mogę usunąć tego użytkownika, ponieważ obecnie uruchomił kilka procesów, które muszę najpierw zabić.
Jest to potok, którego używam obecnie, aby znaleźć wszystkie identyfikatory procesów użytkownika, którego aktualnie używam:
ps -u user | awk '{print $1;}'
Dane wyjściowe wyglądają następująco:
PID
2121
2122
2124
2125
2369
2370
Chcę to potokować, kill -9aby zabić wszystkie procesy, aby móc usunąć tego głupiego użytkownika w następujący sposób:
ps -u user | awk '{print $1;}' | sudo xargs kill -9
Ale to nie działa z powodu PIDnagłówka:
kill: failed to parse argument: 'PID'
Pytanie
Myślę, że aby usunąć pierwszy wiersz danych wejściowych, musi istnieć proste polecenie uniksowe.
Wiem, że mogę to wykorzystać, tailale nie chcę liczyć, ile wierszy zawiera dane wejściowe, aby dowiedzieć się dokładnie, ile chcę wyświetlić.
Szukam czegoś podobnego headlub tailodwróconego (zamiast wyświetlać tylko pierwszą / ostatnią część strumienia wyświetla wszystko oprócz początku / końca strumienia).
Uwaga
Udało mi się rozwiązać ten problem miałem po prostu dodając | grep [[:digit:]]po moim awkdowództwem, ale ja wciąż szuka sposobu, aby usunąć pierwszy wiersz pliku, jak myślę, byłoby bardzo przydatne w innych scenariuszach.
awkpolecenie).
NRnpawk 'NR>1 {print $1;}'. Jeszcze lepiej - użyjpgrep -ulubpkill -u