Ru-Board.club
← Вернуться в раздел «UNIX»

» Работа на python с каталогом /proc

Автор: obtim
Дата сообщения: 10.06.2015 13:37
Установлен 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 особенный из-за монтирования
Вопрос: Как с ним надо работать?
Автор: NoAngel777
Дата сообщения: 16.06.2015 18:40
попробуй так:


Код:
#!/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

Страницы: 1

Предыдущая тема: CentOS 7 x86-64 не читает сетевые настройки


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.