関連記事
ポート番号からプロセスを探す (linux, lsof) - いろいろ備忘録日記
ポート番号からプロセスを探す(2) (linux, fuser) - いろいろ備忘録日記
ファイルを開いているプロセスを探す (linux, fuser) - いろいろ備忘録日記
概要
以下、自分用のメモです。いつも使いたいときに忘れているので、ここにメモメモ。。。
特定のファイルを握っているプロセスを知りたいときって、結構あります。
関連記事で使ったfuserコマンドを使って調べられます。
んで、その時についでにそのプロセスもkillしたいときも結構あります。
その場合は、以下のように fuser コマンドを使います。
$ fuser -v -k /path/to/file
サンプル
以下、Gitpodで試した結果です。
何でも良いので、ファイルを握り続けるプログラムを作成
package main import ( "os" "os/signal" ) func main() { f, err := os.Open("test.txt") if err != nil { panic(err) } defer f.Close() sigCh := make(chan os.Signal, 1) signal.Notify(sigCh, os.Interrupt) <-sigCh }
起動して、fuser コマンドで確認してみます。
$ ./app & [1] 3659 $ fuser -v -k test.txt USER PID ACCESS COMMAND /home/gitpod/playground/app/test.txt: dev 3659 f.... app [1]+ 強制終了 ./app
test.txtを握っているのは app って名前のプロセスですって表示して、その上でkillしてくれていますね。
参考情報
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。