diff --git a/pmem.py b/pmem.py new file mode 100755 index 0000000..b88a535 --- /dev/null +++ b/pmem.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 + +# ----------------------------------------------------------- +# pmem - Show system memory | +# Created by q3aql (q3aql@duck.com) | +# Licensed by GPL v2.0 | +# Last update: 29-10-2022 | +# Compatible with Python 3.x | +# ----------------------------------------------------------- +version="0.1" + +# Import python-modules +import psutil +import os +import sys + +# Check if your system use Python 3.x +if sys.version_info<(3,0): + print ("") + print (" You need python 3.x to run this program.") + print ("") + exit() + +# Check system +if os.name == "posix": + os.chdir(os.environ["HOME"]) +elif os.name == "nt": + print("") + print(" Error: Only Linux and *BSD systems are supported") + print("") + exit() + +print('') +print(' List of processes (Mem + Name)') +print(' ==============================') +print('') + +numprocess=0 +for process in psutil.process_iter(): + numprocess = numprocess + 1 + Name = process.name() # Name of the process + ID = process.pid # ID of the process + readmemprocess = psutil.Process(ID) + sysmemprocess = readmemprocess.memory_info()[0] + ID = str(ID) + if sysmemprocess > 1024: + sysmemprocess = sysmemprocess / 1024 + sysmemprocess = round(sysmemprocess, 2) + showmemprocess = str(sysmemprocess) + showmemprocess = showmemprocess + ' KiB' + if sysmemprocess > 1024: + sysmemprocess = sysmemprocess / 1024 + sysmemprocess = round(sysmemprocess, 2) + showmemprocess = str(sysmemprocess) + showmemprocess = showmemprocess + ' MiB' + if sysmemprocess > 1024: + sysmemprocess = sysmemprocess / 1024 + sysmemprocess = round(sysmemprocess, 2) + showmemprocess = str(sysmemprocess) + showmemprocess = showmemprocess + ' GiB' + print (' ' + showmemprocess + ' ' + Name + ' (PID: ' + ID + ')') + +# Read file /proc/meminfo and create variables +memfile = open('/proc/meminfo', 'r') +memread = memfile.read() +memsplit = memread.split() + +# Memory variables +memtotal = memsplit[1] +memavailable = memsplit[7] + +# Convert and calcule memory +memtotal = int(memtotal) +memavailable = int(memavailable) +memactive = memtotal - memavailable +if memsplit[2] == "kB": + memtotal = memtotal / 1024 / 1024 + memavailable = memavailable / 1024 / 1024 + memactive = memactive / 1024 / 1024 +elif memsplit[2] == "B": + memtotal = memtotal / 1024 / 1024 / 1024 + memavailable = memavailable / 1024 / 1024 / 1024 + memactive = memactive / 1024 / 1024 / 1024 + +# Show memory output +memactive = round(memactive, 2) +memactive = str(memactive) +memavailable = round(memavailable, 2) +memavailable = str(memavailable) +memtotal = round(memtotal, 2) +memtotal = str(memtotal) +print('') +print(' ============================================') +print(' ' + memactive + ' GiB / ' + memtotal + ' GiB = ' + memavailable + " GiB Available") +print('') +print(' ==========================') +print(" Total running process", numprocess) +print('')