Linuxコマンドfuserは、特定のファイルやディレクトリがどのプロセスによって使用されているかを確認する際に非常に便利です。この記事では、fuserコマンドとは何か、そしてさまざまなオプションを活用する方法について説明します。
目次
fuserコマンドとは?
fuserは、ファイルまたはディレクトリに関連するプロセスを確認するために使用されるLinuxコマンドです。ファイルシステム上で、特定のファイルがどのプロセスによって使用中かを確認できます。例えば、あるプロセスがファイルをロックしているため、削除や移動ができない場合、そのプロセスを特定して終了させる方法を提供します。
fuserコマンドの基本的な使い方
最も基本的なfuserコマンドは次のように使用します。
fuser [ファイルまたはディレクトリのパス]
ShellScript次のように、fuserコマンドでa.txtファイルを使用しているプロセスID(PID)を確認できます。

オプション説明
fuserコマンドにはさまざまなオプションがあり、より詳細な操作が可能です。よく使われるいくつかの便利なオプションを紹介します。
-kオプション: プロセスの終了
fuser -kオプションを使用すると、特定のファイルを使用中のプロセスを強制的に終了できます。このオプションは注意して使用する必要があります。なぜなら、実行中のプロセスを強制終了するため、システムやプログラムが不安定になる可能性があるからです。
fuser -k a.txt
ShellScriptこのコマンドは、a.txtファイルを使用しているすべてのプロセスを終了します。実行結果はプロセス番号を表示する形で通知されます。

さらに、以下のようにプロセスが動作していたプロセスが終了したことを確認できます。

-iオプション: ユーザーに確認を求める
-kオプションと併用できる-iオプションは、プロセスを終了する前にユーザーに確認を求めます。誤って重要なプロセスを終了することを防ぐための良い方法です。
fuser -k -i a.txt
ShellScriptこのコマンドを入力すると、各プロセスを終了する前に「Kill process xxxxx ? (y/N)」というメッセージが表示されます。

-vオプション: 詳細情報の表示
-vオプションは、ファイルを使用中のプロセスの詳細情報を表示します。このオプションを使用すると、プロセスIDだけでなく、そのプロセスの所有者、プロセスの状態、コマンドなどの追加情報を確認できます。
fuser -v a.txt
ShellScriptこのコマンドは、a.txtファイルを使用しているすべてのプロセスに関する詳細情報を表示します。以下の図では、pythonアプリケーションがそのファイルにアクセスしていることが確認できます。

-uオプション: ユーザー名の表示
fuser -uオプションを使用すると、ファイルを使用中のプロセスだけでなく、そのプロセスを実行しているユーザーの名前も表示されます。
fuser -u /home/user/test.txt
ShellScriptこのコマンドは、ファイルを使用しているプロセスIDに加え、そのプロセスを実行しているユーザーの名前も表示します。

-mオプション: マウントされたファイルシステムの確認
-mオプションは、ファイルシステム全体に関連するプロセスを確認する際に便利です。特定のファイルではなく、ファイルシステム全体の情報を知りたい場合に使用します。
fuser -m /dev/stdout
ShellScriptこのコマンドは、以下のように/dev/stdoutを使用しているすべてのプロセスを出力します。

注意事項
fuserコマンドは強力ですが、非常に慎重に使用する必要があります。特に-kオプションを使用する際は、システムの重要なプロセスを終了しないように注意してください。プロセスを終了すると、データの損失やシステムの不安定さが発生する可能性があります。また、ルート権限が必要な場合もあるので、コマンド実行時にsudoをつけて使用する必要がある場合もあります。
sudo fuser -k /home/user/test.txt
ShellScriptまとめ
Linuxでファイルやディレクトリがどのプロセスによって使用中かを確認する際、fuserコマンドは非常に役立ちます。基本的な使い方だけでなく、さまざまなオプションを通じてプロセスの終了、ユーザー情報の確認、詳細情報の表示などが行えます。しかし、特にプロセスを強制終了する機能は慎重に使用する必要があり、システムの不安定さやデータ損失を防ぐために注意が必要です。fuserコマンドをうまく活用することで、Linuxシステム管理におけるさまざまな問題を効果的に解決できます。