Finding system information in Ubuntu like Number and type of processors, memory usage, uptime etc are extremely easy.
You can use Linux system commands like free -m , uname -a and uptime to find these details. But there is no fun in doing that.
If you love coding in python, you want to do everything in python. So we will see how to find this information using python program. And in the process will learn something about Linux system in addition to python.
To find few details we will use python module, platform. We will be running this script using python3 interpreter and this script is tested on Ubuntu 16.04.
We will be using some of the method available in this module.
To get Architecture, call architecture method. It return a tuple (bits, linkage).
To get the Linux distribution, call dist()
or linux_distribution()
method. It also returns a tuple.
import platform # Architecture print("Architecture: " + platform.architecture()[0]) # machine print("Machine: " + platform.machine()) # node print("Node: " + platform.node()) # system print("System: " + platform.system()) # distribution dist = platform.dist() dist = " ".join(x for x in dist) print("Distribution: " + dist)
Now to get other information we need to go into /proc/
directory of your system. If you look at files you will get an idea where system stores this type of information.
# processor print("Processors: ") with open("/proc/cpuinfo", "r") as f: info = f.readlines() cpuinfo = [x.strip().split(":")[1] for x in info if "model name" in x] for index, item in enumerate(cpuinfo): print(" " + str(index) + ": " + item)
/proc/meminfo
file. First line is the Total memory in system and second line is the free memory available at the moment.
# Memory print("Memory Info: ") with open("/proc/meminfo", "r") as f: lines = f.readlines() print(" " + lines[0].strip()) print(" " + lines[1].strip())
# uptime uptime = None with open("/proc/uptime", "r") as f: uptime = f.read().split(" ")[0].strip() uptime = int(float(uptime)) uptime_hours = uptime // 3600 uptime_minutes = (uptime % 3600) // 60 print("Uptime: " + str(uptime_hours) + ":" + str(uptime_minutes) + " hours")
# Load with open("/proc/loadavg", "r") as f: print("Average Load: " + f.read().strip())
# # Python script to fetch system information # Author - ThePythonDjango.Com # Tested with Python3 on Ubuntu 16.04 # import platform # Architecture print("Architecture: " + platform.architecture()[0]) # machine print("Machine: " + platform.machine()) # node print("Node: " + platform.node()) # processor print("Processors: ") with open("/proc/cpuinfo", "r") as f: info = f.readlines() cpuinfo = [x.strip().split(":")[1] for x in info if "model name" in x] for index, item in enumerate(cpuinfo): print(" " + str(index) + ": " + item) # system print("System: " + platform.system()) # distribution dist = platform.dist() dist = " ".join(x for x in dist) print("Distribution: " + dist) # Load with open("/proc/loadavg", "r") as f: print("Average Load: " + f.read().strip()) # Memory print("Memory Info: ") with open("/proc/meminfo", "r") as f: lines = f.readlines() print(" " + lines[0].strip()) print(" " + lines[1].strip()) # uptime uptime = None with open("/proc/uptime", "r") as f: uptime = f.read().split(" ")[0].strip() uptime = int(float(uptime)) uptime_hours = uptime // 3600 uptime_minutes = (uptime % 3600) // 60 print("Uptime: " + str(uptime_hours) + ":" + str(uptime_minutes) + " hours")
Run the script: python3 system_information.py