ロックされて編集できないときにそのファイルをオープンしているプロセスを探したい
MacやLinuxで、ファイルを編集しようとしたり削除しようとしたときにロックされていて処理できないとき、 そのファイルをオープンしているプロセスを特定する方法。
ファイルをオープンしているプロセスを探す:lsof
lsof
コマンドを使う。
$ lsof <ファイル名>
例えば、/var/log/nginx/access.log
をオープンしているプロセスを探すには以下のようにする。
$ lsof content/linux/find-processes/index.md
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
hugo 29154 xxx 929r REG 1,14 750 49183329 content/linux/find-processes/index.md
PID列にプロセスIDが表示されるのでps
コマンドで確認したり、kill
コマンドでストップしたりできる。
$ ps auxww | grep 29154
xxx 29154 0.0 0.3 409607120 116240 s002 S+ 3:49PM 2:26.05 hugo server
プロセスがオープンしているファイルを探す:lsof -p
逆に、プロセスがオープンしているファイルを探すには-p
オプションを使う。
$ lsof -p 29154
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
hugo 29154 xxx cwd DIR 1,14 704 12745271 /content/linux/find-processes/index.md
...
\第一線のプログラマーの行動原理を学べる!/