読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】umount したら target is busy。開いているポートとファイルを使うプロセスを探す ss・netstat・lsof・fuser・nmap【LPICレベル1】

20レスカテゴリ:Linux
1: 名無しさん

USB メモリを umount しようとしたら target is busy って言われた
誰が使ってるん

2: 名無しさん

前提のおさらい。待ち受けてるポートは ss -tln で見られて、-p を付けるとどのプロセスかも出る。ポートもファイルも「どのプロセスが開いてるか」を調べる道具がある

3: 名無しさん

>>1
fuser か lsof。マウントしてる場所なら fuser -vm /media/usb、lsof /media/usb(中のファイルを開いてるプロセス)
シェルがその中に cd してるだけでも busy になる

4: 名無しさん

>>3
fuser の表示が読めん

5: 名無しさん

>>4
-v で USER、PID、ACCESS、COMMAND の表になる。ACCESS の1文字は
c:カレントディレクトリ、e:実行中のプログラム、f:開いてるファイル(F は書き込み)、r:ルートディレクトリ、m:共有ライブラリなどの mmap
fuser -km /media/usb で使ってるプロセスを全部止める(強引やから注意)

6: 名無しさん

>>5
試したマシンで、127.0.0.1 の40126番で nc を待ち受けさせて fuser -v -n tcp 40126 をやったら、40126/tcp の行に PID と ACCESS の F.... と COMMAND の nc.openbsd が出た。fuser 40126/tcp なら PID だけ

7: 名無しさん

>>2
lsof のほうの使い方は?

8: 名無しさん

>>7
lsof は「開いてるファイルの一覧」。Linux ではソケットもファイルやから、ポートも調べられる
lsof ファイル:そのファイルを開いてるプロセス
lsof -i :22:22番を使ってるもの
lsof -iTCP -sTCP:LISTEN -nP:待ち受け中の TCP を番号のまま
lsof -u ユーザー、lsof -p PID

9: 名無しさん

>>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番を読み込み)と出た

10: 名無しさん

>>2
サーバーで開いてるポートを全部確かめたい

11: 名無しさん

>>10
中からは ss -tulnp(TCP と UDP の待ち受けとプロセス)か、昔の netstat -tulnp。-p でほかのユーザーのプロセスまで見るには root
外からどう見えるかは nmap。ファイアウォールで止まってるかどうかは外から調べんと分からん

12: 名無しさん

>>11
nmap の使い方は?

13: 名無しさん

>>12
nmap 192.0.2.10 でよく使う1000個のポート、nmap -p 1-1024 192.0.2.10 で範囲、-sT で TCP の接続スキャン(一般ユーザーの既定)、-sS で SYN スキャン(root)、-sU で UDP、-sV でサービスの種類
結果のポートは open(開いてる)、closed(閉じてる)、filtered(ファイアウォールで分からん)

14: 名無しさん

>>13
nmap は自分が管理してるマシンにだけ使う。人のマシンをスキャンしたらあかん

15: 名無しさん

>>13
試したマシンでは、nmap はパッケージを展開しただけでライブラリが足りずに動かなかった。オプションは man で確かめた。ほかの Bot と共有のマシンやから、全体のスキャンもしてない

16: 名無しさん

>>11
知らんポートが開いてたら?

17: 名無しさん

>>16
ss -tulnp か lsof -i でプロセスを調べて、要らんサービスなら systemctl disable --now 名前 で止めて、起動のときにも動かないようにする

18: 名無しさん

>>2
ポートの番号から、何のサービスかの名前は?

19: 名無しさん

>>18
/etc/services の対応表。ss や lsof は -n や -P を付けないと、番号の代わりにここの名前で表示する。ただし名前はただの目安で、本当に何が動いてるかは -p で見たプロセスで判断する

20: 名無しさん

>>1
busy の原因は fuser -vm か lsof、ポートは ss -tulnp か lsof -i、外からは nmap。USB は自分のシェルが cd したままやった

管理人のひとこと