いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

ファイルを開いているプロセスを探してkillする (linux, fuser, -k)

関連記事

ポート番号からプロセスを探す (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してくれていますね。

参考情報

fuser(1) - Linux manual page


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。