回答:
ターミナルを開きます:
fuser -c /media/KINGSTON
次のようなものが出力されます。
/media/KINGSTON/: 3106c 11086
これにより、このボリュームを使用しているプロセスのPIDがわかります。pidの末尾の余分な文字は、追加情報を提供します。(3106cのc)
c-プロセスは現在の作業ディレクトリとしてファイルを使用しています
m-ファイルはmmapでマップされています
o-プロセスは開いているファイルとして使用しています
r-ファイルはプロセスのルートディレクトリ
t-プロセスはアクセスしていますテキストファイルとしてのファイル
y-このファイルはプロセスの制御端末です
アンマウントするには、そのPIDを強制終了して、アンマウントを再試行します
sudo kill -9 3106 11086
sudo umount /media/KINGSTON
注:これらのpidの正確なアプリケーション名を見つけるには、このコマンドを使用できます
cat /proc/<pid>/cmdline
例えば : cat /proc/11086/cmdline
これは以下のようなものを出力します。
evince^@/media/KINGSTON/Ubuntu-guide.pdf^@
これが役立つことを願って
ps <pid>
、/ procのファイルを編集する代わりに、コマンド名と引数を確認することをお勧めします。
最も便利なツールはlsof です。どのファイルがどのプロセスで使用されているかを示します。/media/KINGSTON
がマウントポイントの場合(デバイス名も機能します)、次のコマンドは、このマウントポイントで使用されているすべてのファイルを表示します。
lsof /media/KINGSTON
このコマンドを通常のユーザーとして実行すると、独自のプロセスのみが表示されます¹。実行sudo lsof /media/KINGSTON
して、すべてのユーザーのプロセスを確認します。
出力はlsof
次のようになります。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
zsh4 31421 gilles cwd DIR 8,1 4096 130498 /var/tmp
zsh4 31421 gilles txt REG 8,1 550804 821292 /bin/zsh4
zsh4 31421 gilles mem REG 8,1 55176 821326 /usr/lib/zsh/4.3.10/zsh/complist.so
zsh4 31421 gilles 12r REG 8,1 175224 822276 /usr/share/zsh/functions/Completion.zwc
COMMAND
カラムショープログラムの実行ファイルの名前とPID
列示すプロセスID。NAME
列には、ファイル名を示しています。(deleted)
開いているときにファイルが削除されたかどうかを確認できます(ファイルが削除されると、名前はなくなりますが、ファイルを使用する最後のプロセスがファイルを閉じるまで存在し続けます)。USER
自明であるべきです。他の列はFD
、おそらくを除いて重要ではありません。おそらく、プロセスによるファイルの使用方法を示しています。
cwd
:現在の作業ディレクトリtxt
:プログラム実行可能²mem
:メモリマップファイル(ここでは、開いているファイルと考えてください)r
読み取りやw
書き込みなどの開始モードを示しますファイルが開いているウィンドウを機械的に見つける方法はありません(これは実際には技術的に意味がありません:プロセスに複数のウィンドウがある場合、ファイルは特にウィンドウに関連付けられていません)。プロセスのウィンドウ(そしてもちろん、プロセスはウィンドウを持つ必要はありません)。ただし、通常、コマンド名とファイル名は、攻撃者を見つけてファイルを適切に閉じるのに十分です。
ファイルを閉じることができず、すべてを終了したいkill 31421
場合31421
は、(プロセスIDは)またはkill -HUP 31421
(「ハングアップ」)でプロセスを強制終了できます。単純な殺害でうまくいかない場合は、極端な偏見を持って殺してください:kill -KILL 31421
。
lsof、glsofにはGUIがありますが、まだプライムタイムにはまだ準備が整っておらず、Ubuntu用にパッケージ化されていません。
¹
LSOFは、他のユーザのプロセスに関するいくつかの情報を一覧表示することができますが、それはマウントポイントを検出しませんので、あなたがマウントポイントを指定した場合、それらを表示されません。
²
実行可能コードは、実行可能形式の議論ではしばしばテキストと呼ばれます。
また、これは助けることができます:
lsof | grep \/media\/KINGSTON
grep "media/KINGSTON"
一方、フューザーコマンドは大幅に改善されました。1つのコマンドですべてのジョブを実行できます。
$ sudo fuser -ickv /"mountpoint"
どこで:
k
は問題のプロセスを強制終了します。v
予め番組プロセスとそのユーザi
確認を求めます。 一部のプロセスが抵抗する場合は、最も頑固なプロセスを殺すfuser -ickv -9
(またはより一般的に-SIGNAL
)で再試行します。
しかし、あなたは常にいくつかの「不滅の」プロセスを見つけるでしょう...!
この場合、私は最近使用することを学びました
$ sudo umount --lazy --force <mountpoint>
最後のリソースとして、これまで毎回それが機能していました。
vboxmanage
。-_-