スラムポート終了ループの失敗

スラムポート終了ループの失敗

.NET Frameworkで指定された特定のポートを使用して、すべてのプロセスを終了する必要があるbash関数を作成しようとしていますport_arraykill-portたとえば、ポートを使用して関数を直接呼び出すと、kill-port "80";forループ内で呼び出すと奇妙なエラーが発生しますkill

Usage:
kill [options] <pid> [...]

Options:
<pid> [...]            send signal to every <pid> listed
-<signal>, -s, --signal <signal>
                    specify the <signal> to be sent
-l, --list=[<signal>]  list all signal names, or convert one to a name
-L, --table            list all signal names in a nice table

-h, --help     display this help and exit
-V, --version  output version information and exit

For more details see kill(1).

コードは次のとおりです。

#!/bin/bash

port_array=( 5057 5061 5056 );
function kill-ports () {
    ports=( "$@" )
    for i in "${ports[@]}"; 
    do
        kill-port $i;
    done
};

function kill-port () {
   lsof -i tcp:"$1" | awk 'NR!=1 {print $2}' | xargs kill;
}


kill-ports "${port_array[@]}";

おそらく私の間違いを監督しているでしょう。しかし、ここで問題が何であるかを教えてくれる人がいれば感謝します。

挨拶、

シラ

ベストアンサー1

kill-ports() {
   for port in "$@"; do fuser -n tcp "$port" -k -TERM; done
}

(この場合は必ず引用符は必要ありませんが、必ず引用符を使用することをお勧めします。そうしないと、人々から苦情/訂正を受けます。)

おすすめ記事