2011年11月5日土曜日

linuxで他のユーザのカレントディレクトリを表示する

linuxでnfs mountを使っていると、そいつをumountしたいとき、
ディレクトリの上に誰かがいるとbusyといわれて、umountできない。

そんな時、どのプロセスがターゲットのディレクトリにいるのかを調べるスクリプト。
使用時はroot userで使う事が条件になる。

#! /usr/bin/env python
#-*- coding: utf-8 -*-
import os
import re

def search_cwdall():
    dirs = os.listdir('/proc')
    proc_dir = re.compile('^\d*$')
    dirs = filter(proc_dir.match, dirs)
    
    for pid in dirs:
        path_cwd = os.path.join('/proc', 'pid', 'cwd')
        try:
            path = os.path.realpath(path_cwd)
        except OSError, err:
            print str(err)
            continue
        yield pid, path

if __name__ == '__main__':
    for pid, path in search_cwdall():
        print pid, path

もしかしたらもっとスマートな方法があるかもしれない。

0 件のコメント:

コメントを投稿