背景

背景

背景

SSHサーバーを実行していて削除したいユーザーがいます。このユーザーは、現在最初に終了する必要があるいくつかのプロセスを実行しているため、削除できません。

これは、現在使用中のユーザーのすべてのプロセスIDを見つけるために使用しているパイプラインです。

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:]]単純にコマンドの後に追加することでこの問題を解決できましたが、awk他の状況で役に立つと思ってファイルの最初の行を削除する方法を探しています。

ベストアンサー1

注:システムにすでにpgrep/がある場合は、pkillここでホイールを再発明することです。システムにこれらのユーティリティがない場合は、psブロックされていないPIDのリストを直接取得するように出力形式を指定できます。ps -u user -opid=

すでに使用している場合は、awk最初の行(レコード)を削除するために別途の手順を経ずにレコード番号に条件を追加するだけです。NR

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

あなたが言及したので、この場合に必要な式は次のとおりですheadtailtail -n +2

おすすめ記事