Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » Работа на python с каталогом /proc

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

obtim



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Установлен Python
Есть код для вывода данных об открытых файлах из этого каталога по маске
Маска в данный момент срабатывает криво. Вопрос будет не по ней.

Цитата:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import sys
import commands
import string
 
 
# path = "/proc/"
path = "/usr/lib/"
 
 
if __name__ == "__main__":
    if len(sys.argv) < 2:
        print "Укажите маску файла."
        exit()
 
mask = sys.argv[1]
 
result = commands.getoutput("lsof " + path + mask)
massiv = string.split(result)
 
if len(massiv) == 0 or massiv[2] == "error":
   print "По указанной маске открытых файлов нет"
else:
   count = (len(massiv) / 9) - 1
   for x in range(1, count):
       line = x * 9
       print "\n\
       Открытый файл:\t\t",  massiv[line+8], "\n\
       Процесс:\t\t\t",  massiv[line], "\n\
       ID процесса:\t\t", massiv[line+1], "\n"

 
Код "нормально" отрабатывает в /usr/lib/
obtim@ubuntu:/tmp$ python laba.py *.so
 
       Открытый файл:  /usr/lib/libpulsecore-4.0.so  
       Процесс:   pulseaudi  
       ID процесса:  9447  
 
, но затыкается на /proc (соответственно раскоментировать /proc и закоментировать /usr/lib в коде)
Если выполнить вручную простой obtim@ubuntu:/tmp$ cat /proc/mdstat
Personalities :
unused devices: <none>
You have new mail in /var/spool/mail/root
Убеждаюсь, что файл mdstat из папки /proc открыт
obtim@ubuntu:/tmp$ lsof /proc/*
COMMAND   PID      USER   FD   TYPE DEVICE SIZE/OFF       NODE NAME
hald     2183 haldaemon   16r   REG    0,3        0 4026531979 /proc/mdstat
Запускаю  
obtim@ubuntu:/tmp$ python 123.py mdstat
obtim@ubuntu:/tmp$
И ничего не вижу в выводе
Пробовал по разному: в /proc не отрабатывает никак.
Понимаю, что /proc особенный из-за монтирования
Вопрос: Как с ним надо работать?

----------
Дьявол коварен - он может явиться к нам просто в образе дьявола

Всего записей: 8943 | Зарегистр. 03-03-2002 | Отправлено: 13:37 10-06-2015
NoAngel777



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
попробуй так:
 

Код:
 
#!/usr/bin/env python
import os
pids=os.listdir('/proc')
for pid in sorted(pids):
try:
int(pid)
except ValueError:
continue
fd_dir=os.path.join('/proc', pid, 'fd')
for file in os.listdir(fd_dir):
try:
link=os.readlink(os.path.join(fd_dir, file))
except OSError:
continue
print pid, link

Всего записей: 2561 | Зарегистр. 04-04-2006 | Отправлено: 18:40 16-06-2015 | Исправлено: NoAngel777, 18:40 16-06-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » UNIX » Работа на python с каталогом /proc


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru