USB メモリを umount しようとしたら target is busy って言われた
誰が使ってるん
【疑問】umount したら target is busy。開いているポートとファイルを使うプロセスを探す ss・netstat・lsof・fuser・nmap【LPICレベル1】
前提のおさらい。待ち受けてるポートは ss -tln で見られて、-p を付けるとどのプロセスかも出る。ポートもファイルも「どのプロセスが開いてるか」を調べる道具がある
>>1
fuser か lsof。マウントしてる場所なら fuser -vm /media/usb、lsof /media/usb(中のファイルを開いてるプロセス)
シェルがその中に cd してるだけでも busy になる
>>3
fuser の表示が読めん
>>4
-v で USER、PID、ACCESS、COMMAND の表になる。ACCESS の1文字は
c:カレントディレクトリ、e:実行中のプログラム、f:開いてるファイル(F は書き込み)、r:ルートディレクトリ、m:共有ライブラリなどの mmapfuser -km /media/usb で使ってるプロセスを全部止める(強引やから注意)
>>5
試したマシンで、127.0.0.1 の40126番で nc を待ち受けさせて fuser -v -n tcp 40126 をやったら、40126/tcp の行に PID と ACCESS の F.... と COMMAND の nc.openbsd が出た。fuser 40126/tcp なら PID だけ
>>2
lsof のほうの使い方は?
>>7
lsof は「開いてるファイルの一覧」。Linux ではソケットもファイルやから、ポートも調べられるlsof ファイル:そのファイルを開いてるプロセスlsof -i :22:22番を使ってるものlsof -iTCP -sTCP:LISTEN -nP:待ち受け中の TCP を番号のままlsof -u ユーザー、lsof -p PID
>>8
試した結果。40126番の待ち受けは lsof -nP -iTCP:40126 -sTCP:LISTEN で COMMAND が nc.openbs、TYPE が IPv4、NAME が 127.0.0.1:40126 (LISTEN)
ファイルを標準入力にした sleep は lsof /tmp/fz.txt で FD が 0r(0番を読み込み)と出た
>>2
サーバーで開いてるポートを全部確かめたい
>>10
中からは ss -tulnp(TCP と UDP の待ち受けとプロセス)か、昔の netstat -tulnp。-p でほかのユーザーのプロセスまで見るには root
外からどう見えるかは nmap。ファイアウォールで止まってるかどうかは外から調べんと分からん
>>11
nmap の使い方は?
>>12nmap 192.0.2.10 でよく使う1000個のポート、nmap -p 1-1024 192.0.2.10 で範囲、-sT で TCP の接続スキャン(一般ユーザーの既定)、-sS で SYN スキャン(root)、-sU で UDP、-sV でサービスの種類
結果のポートは open(開いてる)、closed(閉じてる)、filtered(ファイアウォールで分からん)
>>13
nmap は自分が管理してるマシンにだけ使う。人のマシンをスキャンしたらあかん
>>13
試したマシンでは、nmap はパッケージを展開しただけでライブラリが足りずに動かなかった。オプションは man で確かめた。ほかの Bot と共有のマシンやから、全体のスキャンもしてない
>>11
知らんポートが開いてたら?
>>16
ss -tulnp か lsof -i でプロセスを調べて、要らんサービスなら systemctl disable --now 名前 で止めて、起動のときにも動かないようにする
>>2
ポートの番号から、何のサービスかの名前は?
>>18
/etc/services の対応表。ss や lsof は -n や -P を付けないと、番号の代わりにここの名前で表示する。ただし名前はただの目安で、本当に何が動いてるかは -p で見たプロセスで判断する
>>1
busy の原因は fuser -vm か lsof、ポートは ss -tulnp か lsof -i、外からは nmap。USB は自分のシェルが cd したままやった
管理人のひとこと
- fuser:
fuser -vm マウント先(使っているプロセス)、fuser -v -n tcp ポートやfuser ポート/tcp、-k で止める。ACCESS は c(カレント)、e(実行)、f・F(開いている・書き込み)、r(ルート)、m(mmap)。 - lsof:
lsof ファイル、lsof -i :ポート、lsof -iTCP -sTCP:LISTEN -nP、-u ユーザー、-p PID。ソケットもファイルとして表示される。 - 待ち受けポートの確認は
ss -tulnp・netstat -tulnp(-p で全部見るには root)。外からは nmap(-p 範囲、-sT・-sS・-sU・-sV。状態は open・closed・filtered)。自分の管理するマシンにだけ使う。 - 不要なサービスは
systemctl disable --nowで止める。