LinuxMonitor 1.3.11__tar.gz → 1.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: LinuxMonitor
3
- Version: 1.3.11
3
+ Version: 1.4.0
4
4
  Summary: Get information and warning status of Linux server like service, port, ping, ssl certificate, disk/folder/cpu/ram/swap usage, ip connection, ... (Python and shell library, Linux ONLY)
5
5
  Home-page: https://github.com/QuentinCG/Linux-Monitor-Python-Library
6
6
  Author: Quentin Comte-Gaz
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: LinuxMonitor
3
- Version: 1.3.11
3
+ Version: 1.4.0
4
4
  Summary: Get information and warning status of Linux server like service, port, ping, ssl certificate, disk/folder/cpu/ram/swap usage, ip connection, ... (Python and shell library, Linux ONLY)
5
5
  Home-page: https://github.com/QuentinCG/Linux-Monitor-Python-Library
6
6
  Author: Quentin Comte-Gaz
@@ -180,7 +180,7 @@ def main() -> None:
180
180
  if args.list_processes:
181
181
  handled = True
182
182
  print("Listing active processes...")
183
- out_msg: str = monitoring.get_ordered_processes(get_non_consuming_processes=False)
183
+ out_msg: str = asyncio.run(monitoring.get_ordered_processes(get_non_consuming_processes=False))
184
184
  print(out_msg)
185
185
 
186
186
  if args.kill_process is not None:
@@ -33,7 +33,7 @@ __email__ = "quentin@comte-gaz.com"
33
33
  __license__ = "MIT License"
34
34
  __copyright__ = "Copyright Quentin Comte-Gaz (2024)"
35
35
  __python_version__ = "3.+"
36
- __version__ = "1.3.11 (2024/09/23)"
36
+ __version__ = "1.4.0 (2024/10/07)"
37
37
  __status__ = "Usable for any Linux project"
38
38
 
39
39
  import json
@@ -1672,7 +1672,7 @@ class LinuxMonitor:
1672
1672
 
1673
1673
  #region Processes
1674
1674
 
1675
- def get_ordered_processes(self, get_non_consuming_processes: bool = False) -> str:
1675
+ async def get_ordered_processes(self, get_non_consuming_processes: bool = False) -> str:
1676
1676
  """
1677
1677
  Get the ordered list of processes by memory and CPU usage.
1678
1678
 
@@ -1681,7 +1681,18 @@ class LinuxMonitor:
1681
1681
  :return: A string containing the result message.
1682
1682
  """
1683
1683
  try:
1684
- processes = []
1684
+ processes = []
1685
+
1686
+ # To get meaningful results, we need to ask cpu percent and wait a bit to get valid cpu_percent values on second iteration
1687
+ for dummy_process in psutil.process_iter(['pid', 'name', 'username', 'cpu_percent', 'memory_info', 'create_time', 'cmdline']):
1688
+ try:
1689
+ # First call to cpu_percent to initialize it
1690
+ dummy_process.cpu_percent(interval=None)
1691
+ except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
1692
+ continue
1693
+ await asyncio.sleep(delay=0.1)
1694
+
1695
+ # Then we can get the processes
1685
1696
  for process in psutil.process_iter(['pid', 'name', 'username', 'cpu_percent', 'memory_info', 'create_time', 'cmdline']):
1686
1697
  try:
1687
1698
  create_time = datetime.fromtimestamp(process.info['create_time']).strftime("%Y-%m-%d %H:%M:%S")
@@ -6,7 +6,7 @@ with io.open(file='README.md', mode='r', encoding='utf-8') as readme_file:
6
6
 
7
7
  setup(
8
8
  name="LinuxMonitor",
9
- version="1.3.11",
9
+ version="1.4.0",
10
10
  description="Get information and warning status of Linux server like service, port, ping, ssl certificate, disk/folder/cpu/ram/swap usage, ip connection, ... (Python and shell library, Linux ONLY)",
11
11
  long_description=readme,
12
12
  long_description_content_type="text/markdown",
File without changes
File without changes
File without changes