У меня уже есть сценарий оболочки, который может определить, какой процесс использует swap и сколько, но я предпочел бы сделать это в python.Что использует swap. Python version
Shell один вкладыш (я нашел этот сценарий в Интернете, но не могу вспомнить его происхождение):
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done| sort -k 2 -n
Сценарий выше в основном смотрит через/Proc и получает имя процесса, PID и сколько подкачки пространство, которое он использует.
Что касается python, то memory_maps() от psutil выглядит многообещающим, но я не могу найти, где выходные данные указывают имя процесса или PID.
Что я пытаюсь сделать? Я пытаюсь переписать кучу старых сценариев оболочки, которые собирают такие вещи, как процессор, память, своп, использование и т. Д. В одну большую программу на питоне. Я знаю, что я могу вызывать эти скрипты с помощью подпроцесса или shellexec, но я хочу избежать этого как можно больше.
Что я спрашиваю? Есть лучший способ сделать это? Не подходит ли мой подход?
Edit:
Я сделал некоторый прогресс с Python3. Вот мой код.
#!/usr/bin/python3
import re
import glob
class searchfile:
def __init__(self, file, searchstring1, searchstring2, searchstring3, searchstring4):
self.file = file
self.searchstring1 = searchstring1
self.searchstring2 = searchstring2
self.searchstring3 = searchstring3
self.searchstring4 = searchstring4
class searchparm(searchfile):
def printsearch(self):
hand = open(self.file)
for line in hand:
line = line.rstrip()
if re.search(self.searchstring1, line):
print (line)
if re.search(self.searchstring2, line):
print (line)
if re.search(self.searchstring3, line):
print (line)
if re.search(self.searchstring4, line):
print (line)
for file in glob.glob('/proc/*/status'):
search_proc = searchparm(file, 'Name', 'VmSwap', 'Pid:', 'VmSize:')
print("#########################################")
print("#########################################")
print(search_proc.printsearch())
Вы можете прочитать '/ proc//status' из Python. –
Barmar