tcpreplay 実行後、Ctrl + C が効かず
バックグラウンドで流れ続けることがあったのでメモ。
ps aux とは
実行中の 全プロセスを一覧表示するコマンド。
$ ps aux
各オプションの意味
- a : 他ユーザーのプロセスも表示
- u : ユーザー名やCPU/メモリ使用率を表示
- x : ターミナルに紐づかないプロセスも表示(デーモン等)
→ 実質「今動いてる全部のプロセスを見る」用
ps aux の出力で見るべき列
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
特に重要なのはこれだけ:
- PID : プロセスID(kill で使う)
- %CPU / %MEM : 負荷確認
- COMMAND : 実行されているコマンド
tcpreplay のプロセスを削除する流れ
tcpreplay プロセス確認
$ ps aux | grep tcpreplay
root 24567 99.2 0.3 ... tcpreplay -i eth0 test.pcap
vboxuser 24601 0.0 0.0 ... grep tcpreplay
- 対象の
PIDは 24567 -
grep tcpreplayの行は無視
まずは通常 kill(SIGTERM)
$ kill 24567
24567 は
tcpreplayプロセス確認 で取得した PID
- SIGTERM(15)
- 正常終了を促すシグナル
止まらない場合(tcpreplay はよくある)
$ kill -9 24567
- SIGKILL(9)
- プロセスを問答無用で即終了
SIGKILL(9)とは
Linux ではプロセスに シグナルを送って制御している。
| 番号 | シグナル | 意味 |
|---|---|---|
| 15 | SIGTERM | 終了してね |
| 2 | SIGINT | Ctrl + C |
| 9 | SIGKILL | 即死(強制終了) |
SIGKILL の特徴:
- 無視できない
- 後処理できない
- 必ず止まる
→ ファイルクローズや後始末は一切行われないため、最終手段。
全部止めていい場合
$ sudo pkill tcpreplay
以上