次の簡単なスクリプトがあるとしますaction.sh
。
#!/bin/bash
echo -n 'a' | nc a.b.c.d p
action.sha
ここに住所を割り当てるキャラクターを配置してくださいa.b.c.d
。
しかしnc
、時には中断して終了したい場合もあります。
$ ./action.sh
^C
これはうまく機能し、ゾンビは残りません。
バックグラウンドに置いて終了しようとするとnc
アクティブなままであるため、手動でクリーンアップする必要があります。
& ./action.sh &
[1] 28747
& kill -15 28747 //here nc is still running! I have to find its PID and terminate it
終了信号を受信したときに終了を要求する方法もありますかaction.sh
?nc
答え1
#!/bin/bash
trap ctrl_c INT
function ctrl_c() {
# redirect to stderr to avoid showing errors in case nc isn't found
kill -9 $(pgrep nc) > /dev/null 2>&1
}
echo -n 'a' | nc a.b.c.d p
答え2
kill
これは、以下を呼び出すことで達成することもできます。
kill 15 -28747
15終了信号です(終了を示すには9を使用してください)。28747私の質問の親プロセスのPID。