이미 스왑을 사용하는 프로세스와 얼마만큼의 프로세스를 결정할 수있는 쉘 스크립트가 있지만 파이썬에서이 작업을 수행합니다. 스왑 사용. Python 버전
쉘 한 줄
(I 웹에서이 스크립트를 찾았지만 그것을 기억할 수는 원점) : 이for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done| sort -k 2 -n
기본적으로 위의 스크립트는/proc 디렉토리를 통해보고 얼마나 많은 스왑 프로세스 이름, PID 및 도착 사용하는 공간.
파이썬에 관한 한 psutil의 memory_maps()는 유망 해 보이지만 출력에서 프로세스 이름이나 PID를 지정하는 곳을 찾을 수 없습니다.
나는 무엇을하려고합니까? CPU, 메모리, 스왑, 사용법 등을 하나의 큰 파이썬 프로그램으로 모으는 오래된 쉘 스크립트를 다시 작성하려고합니다. 나는이 스크립트를 하위 프로세스 또는 shellexec을 사용하여 호출 할 수 있음을 알고 있지만 최대한 많이 피하고 싶습니다.
내가 뭘 물어 보는거야? 이 작업을 수행하는 더 좋은 방법이 있습니까? 내 접근 방식이 틀렸어?
편집 :
나는 python3을 통해 약간의 진전을 이루었습니다. 여기 내 코드가있다. psutil에
#!/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'를 읽을 수 있습니다. –
Barmar