Compare commits

...

3 Commits

Author SHA1 Message Date
nicolargo
9b853d857b Merge branch 'develop' of github.com:nicolargo/glances into develop 2024-06-30 10:18:29 +02:00
nicolargo
f4c7ca01fe Correct codespell 2024-06-29 19:19:26 +02:00
nicolargo
60591630df Improve lisibility of OK_LOG 2024-06-29 19:01:25 +02:00
25 changed files with 300 additions and 322 deletions

View File

@ -6,7 +6,7 @@ In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
education, socio-economic status, nationality, personal appearance, race,
education, socioeconomic status, nationality, personal appearance, race,
religion, or sexual identity and orientation.
## Our Standards

View File

@ -93,7 +93,7 @@ lint: ## Lint the code.
./venv-dev/bin/python -m ruff check . --fix
codespell: ## Run codespell to fix common misspellings in text files
./venv-dev/bin/codespell -S .git,./docs/_build,./Glances.egg-info,./venv*,./glances/outputs,*.svg -L hart,bu,te,statics
./venv-dev/bin/codespell -S .git,./docs/_build,./Glances.egg-info,./venv*,./glances/outputs,*.svg -L hart,bu,te,statics -w
semgrep: ## Run semgrep to find bugs and enforce code standards
./venv-dev/bin/semgrep scan --config=auto
@ -185,7 +185,7 @@ flatpak: venv-dev-upgrade ## Generate FlatPack JSON file
rm -rf ./flatpak-builder-tools
@echo "Now follow: https://github.com/flathub/flathub/wiki/App-Submission"
# Snap package is automaticaly build on the Snapcraft.io platform
# Snap package is automatically build on the Snapcraft.io platform
# https://snapcraft.io/glances
# But you can try an offline build with the following command
snapcraft:

View File

@ -31,8 +31,8 @@ Enhancements:
Bug corrected:
* API: Network module is disabled but appears in endpoint "all" #2815
* API is not compatible with requests containing spcial/encoding char #2820
* 'j' hot key crashs Glances #2831
* API is not compatible with requests containing special/encoding char #2820
* 'j' hot key crashes Glances #2831
* Raspberry PI - CPU info is not correct #2616
* Graph export is broken if there is no graph section in Glances configuration file #2839
* Glances API status check returns Error 405 - Method Not Allowed #2841
@ -41,17 +41,17 @@ Bug corrected:
* Exception when Glances is ran with limited plugin list #2822
* Disable separator option do not work #2823
Continious integration and documentation:
Continuous integration and documentation:
* test test_107_fs_plugin_method fails on aarch64-linux #2819
Thanks to all contibutors and bug reporters !
Thanks to all contributors and bug reporters !
Special thanks to:
* Bharath Vignesh J K
* RazCrimson
* Vadim Smal
* Vadim Small
===============
Version 4.0.8
@ -226,7 +226,7 @@ Many thinks to the contributors:
* Christoph Zimmermann
* RazCrimson
* Robin Candau
* Github GPG acces
* Github GPG access
* Continuous Integration
* Georgiy Timchenko
* turbocrime
@ -400,7 +400,7 @@ Documentation and CI:
* Update Makefile with comments
* Update Python minimal requirement for py3nvlm
* Update security policy (user can open private issue directly in Github)
* Add a simple run script. Entry point for IDE debuger
* Add a simple run script. Entry point for IDE debugger
Cyber security update:
@ -429,7 +429,7 @@ And also a big thanks to @RazCrimson (https://github.com/RazCrimson) for the sup
Version 3.3.0.4
===============
Refactor the Docker images factory, from now, only Alpine image wll be provided.
Refactor the Docker images factory, from now, only Alpine image will be provided.
The following Docker images (nicolargo/glances) are availables:
@ -477,9 +477,9 @@ Bug corrected:
* Correct issue with the regexp filter (use fullmatch instead of match)
* Errors when running Glances as web service #1702
* Apply alias to Duplicate sensor name #1686
* Make the hide function in sensors section compliant with lower/upercase #1590
* Make the hide function in sensors section compliant with lower/uppercase #1590
* Web UI truncates the days part of CPU time counter of the process list #2108
* Correct alignement issue with the diskio plugin (Console UI)
* Correct alignment issue with the diskio plugin (Console UI)
Documentation and CI:
@ -746,7 +746,7 @@ Bugs corrected:
* Docker containers information missing with Docker 20.10.x #1878
* Get system sensors temperatures thresholds #1864
Contibutors for this version:
Contributors for this version:
* Nicolargo
* Markus Pöschl
@ -1353,7 +1353,7 @@ Enhancements and new features:
* Add ZeroMQ exporter (issue #939)
* Add CouchDB exporter (issue #928)
* Add hotspot Wifi information (issue #937)
* Add default interface speed and automatic rate thresolds (issue #718)
* Add default interface speed and automatic rate thresholds (issue #718)
* Highlight max stats in the processes list (issue #878)
* Docker alerts and actions (issue #875)
* Glances API returns the processes PPID (issue #926)

View File

@ -2,7 +2,7 @@
Glances - An eye on your system
===============================
| |pypi| |test| |contibutors| |quality|
| |pypi| |test| |contributors| |quality|
| |starts| |docker| |pypistat|
| |sponsors| |twitter|
@ -25,9 +25,9 @@ Glances - An eye on your system
:target: https://github.com/nicolargo/glances/actions
:alt: Linux tests (GitHub Actions)
.. |contibutors| image:: https://img.shields.io/github/contributors/nicolargo/glances
.. |contributors| image:: https://img.shields.io/github/contributors/nicolargo/glances
:target: https://github.com/nicolargo/glances/issues?q=is%3Aissue+is%3Aopen+label%3A%22needs+contributor%22
:alt: Contibutors
:alt: Contributors
.. |quality| image:: https://scrutinizer-ci.com/g/nicolargo/glances/badges/quality-score.png?b=develop
:target: https://scrutinizer-ci.com/g/nicolargo/glances/?branch=develop
@ -141,7 +141,7 @@ stable version.
To install Glances, simply use the ``pip`` command line.
Warning: on modern Linux operating systems, you may have an externally-managed-environment
error message when you try to use ``pip``. In this case, go to the the PipX section bellow.
error message when you try to use ``pip``. In this case, go to the the PipX section below.
.. code-block:: console

View File

@ -375,7 +375,7 @@ temperature_hdd_critical=60
battery_careful=80
battery_warning=90
battery_critical=95
# Fan speed threashold in RPM
# Fan speed threshold in RPM
#fan_speed_careful=100
# Sensors alias
#alias=core 0:CPU Core 0,core 1:CPU Core 1

View File

@ -27,7 +27,7 @@ services:
environment:
- TZ=${TZ}
- "GLANCES_OPT=-C /glances/conf/glances.conf -w"
# Uncomment for GPU compatibilty (Nvidia) inside the container
# Uncomment for GPU compatibility (Nvidia) inside the container
# deploy:
# resources:
# reservations:

View File

@ -15,7 +15,7 @@ services:
environment:
- TZ=${TZ}
- "GLANCES_OPT=-C /glances/conf/glances.conf -w"
# Uncomment for GPU compatibilty (Nvidia) inside the container
# Uncomment for GPU compatibility (Nvidia) inside the container
# deploy:
# resources:
# reservations:

View File

@ -375,7 +375,7 @@ temperature_hdd_critical=60
battery_careful=80
battery_warning=90
battery_critical=95
# Fan speed threashold in RPM
# Fan speed threshold in RPM
#fan_speed_careful=100
# Sensors alias
#alias=core 0:CPU Core 0,core 1:CPU Core 1

View File

@ -3,7 +3,7 @@
CLOUD
=====
This plugin diplays information about the cloud provider if your host is running on OpenStack.
This plugin displays information about the cloud provider if your host is running on OpenStack.
The plugin use the standard OpenStack `metadata`_ service to retrieve the information.

View File

@ -53,7 +53,7 @@ To switch to per-CPU stats, just hit the ``1`` key:
.. image:: ../_static/per-cpu.png
In this case, Glances will show on line per logical CPU on the system.
If you have multiple core, it is possible to define the maximun number
If you have multiple core, it is possible to define the maximum number
of CPU to display. The top 'max_cpu_display' will be display and an
extra line with the mean of all others CPU will be added.

View File

@ -57,7 +57,7 @@ Example:
**NOTE:** Setting low values for `public_refresh_interval` will result in frequent
HTTP requests to the onlive service defined in public_api. Recommended range: 120-600 seconds.
Glances uses online services in order to get the IP addresses and the additional informations.
Glances uses online services in order to get the IP addresses and the additional information.
Your IP address could be blocked if too many requests are done.

View File

@ -39,7 +39,7 @@ Trend Status
======== ==============================================================
``-`` Mean 15 lasts values equal mean 15 previous values
```` Mean 15 lasts values is lower mean 15 previous values
```` Mean 15 lasts values is higher mean 15 previous valuess
```` Mean 15 lasts values is higher mean 15 previous values
======== ==============================================================
Legend:

View File

@ -49,7 +49,7 @@ Trend Status
======== ==============================================================
``-`` Mean 15 lasts values equal mean 15 previous values
```` Mean 15 lasts values is lower mean 15 previous values
```` Mean 15 lasts values is higher mean 15 previous valuess
```` Mean 15 lasts values is higher mean 15 previous values
======== ==============================================================
Alerts are only set for used memory and used swap.

View File

@ -141,7 +141,7 @@ Get plugin stats::
"refresh": 3.0,
"regex": True,
"result": None,
"timer": 0.44504690170288086},
"timer": 0.2482151985168457},
{"count": 0,
"countmax": 20.0,
"countmin": None,
@ -150,7 +150,7 @@ Get plugin stats::
"refresh": 3.0,
"regex": True,
"result": None,
"timer": 0.4449424743652344}]
"timer": 0.24815130233764648}]
Fields descriptions:
@ -178,7 +178,7 @@ Get a specific item when field matches the given value::
"refresh": 3.0,
"regex": True,
"result": None,
"timer": 0.44504690170288086}]}
"timer": 0.2482151985168457}]}
GET cloud
---------
@ -265,19 +265,19 @@ Get plugin stats::
# curl http://localhost:61208/api/4/cpu
{"cpucore": 16,
"ctx_switches": 427467586,
"ctx_switches": 493080568,
"guest": 0.0,
"idle": 93.0,
"interrupts": 359749831,
"iowait": 0.1,
"idle": 86.5,
"interrupts": 420997918,
"iowait": 0.5,
"irq": 0.0,
"nice": 0.0,
"soft_interrupts": 133597275,
"soft_interrupts": 155707720,
"steal": 0.0,
"syscalls": 0,
"system": 2.7,
"total": 6.6,
"user": 4.3}
"system": 3.5,
"total": 12.9,
"user": 9.4}
Fields descriptions:
@ -310,7 +310,7 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/cpu/total
{"total": 6.6}
{"total": 12.9}
GET diskio
----------
@ -320,10 +320,10 @@ Get plugin stats::
# curl http://localhost:61208/api/4/diskio
[{"disk_name": "nvme0n1",
"key": "disk_name",
"read_bytes": 7492967936,
"read_count": 277065,
"write_bytes": 24887440384,
"write_count": 1206489},
"read_bytes": 10167291392,
"read_count": 391026,
"write_bytes": 31230641152,
"write_count": 1527146},
{"disk_name": "nvme0n1p1",
"key": "disk_name",
"read_bytes": 7558144,
@ -363,10 +363,10 @@ Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/diskio/disk_name/nvme0n1
{"nvme0n1": [{"disk_name": "nvme0n1",
"key": "disk_name",
"read_bytes": 7492967936,
"read_count": 277065,
"write_bytes": 24887440384,
"write_count": 1206489}]}
"read_bytes": 10167291392,
"read_count": 391026,
"write_bytes": 31230641152,
"write_count": 1527146}]}
GET folders
-----------
@ -393,13 +393,13 @@ Get plugin stats::
# curl http://localhost:61208/api/4/fs
[{"device_name": "/dev/mapper/ubuntu--vg-ubuntu--lv",
"free": 896615452672,
"free": 897378041856,
"fs_type": "ext4",
"key": "mnt_point",
"mnt_point": "/",
"percent": 5.9,
"percent": 5.8,
"size": 1003736440832,
"used": 56058482688}]
"used": 55295893504}]
Fields descriptions:
@ -420,13 +420,13 @@ Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/fs/mnt_point//
{"/": [{"device_name": "/dev/mapper/ubuntu--vg-ubuntu--lv",
"free": 896615452672,
"free": 897378041856,
"fs_type": "ext4",
"key": "mnt_point",
"mnt_point": "/",
"percent": 5.9,
"percent": 5.8,
"size": 1003736440832,
"used": 56058482688}]}
"used": 55295893504}]}
GET gpu
-------
@ -500,9 +500,9 @@ Get plugin stats::
# curl http://localhost:61208/api/4/load
{"cpucore": 16,
"min1": 0.728515625,
"min15": 0.88916015625,
"min5": 0.81982421875}
"min1": 0.40185546875,
"min15": 0.587890625,
"min5": 0.638671875}
Fields descriptions:
@ -514,7 +514,7 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/load/min1
{"min1": 0.728515625}
{"min1": 0.40185546875}
GET mem
-------
@ -522,16 +522,16 @@ GET mem
Get plugin stats::
# curl http://localhost:61208/api/4/mem
{"active": 8275505152,
"available": 4275773440,
"buffers": 116162560,
"cached": 4656115712,
"free": 4275773440,
"inactive": 5691351040,
"percent": 74.0,
"shared": 789377024,
{"active": 5094199296,
"available": 10908983296,
"buffers": 180162560,
"cached": 5800796160,
"free": 10908983296,
"inactive": 3735175168,
"percent": 33.6,
"shared": 622718976,
"total": 16422486016,
"used": 12146712576}
"used": 5513502720}
Fields descriptions:
@ -558,13 +558,13 @@ GET memswap
Get plugin stats::
# curl http://localhost:61208/api/4/memswap
{"free": 3367235584,
"percent": 21.6,
"sin": 12087296,
"sout": 929779712,
{"free": 3836997632,
"percent": 10.7,
"sin": 186925056,
"sout": 1518604288,
"time_since_update": 1,
"total": 4294963200,
"used": 927727616}
"used": 457965568}
Fields descriptions:
@ -589,15 +589,15 @@ Get plugin stats::
# curl http://localhost:61208/api/4/network
[{"alias": None,
"bytes_all": 0,
"bytes_all_gauge": 5602788085,
"bytes_all_gauge": 6286191015,
"bytes_recv": 0,
"bytes_recv_gauge": 5324413260,
"bytes_recv_gauge": 5977645732,
"bytes_sent": 0,
"bytes_sent_gauge": 278374825,
"bytes_sent_gauge": 308545283,
"interface_name": "wlp0s20f3",
"key": "interface_name",
"speed": 0,
"time_since_update": 0.4488046169281006}]
"time_since_update": 0.2501566410064697}]
Fields descriptions:
@ -626,15 +626,15 @@ Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/network/interface_name/wlp0s20f3
{"wlp0s20f3": [{"alias": None,
"bytes_all": 0,
"bytes_all_gauge": 5602788085,
"bytes_all_gauge": 6286191015,
"bytes_recv": 0,
"bytes_recv_gauge": 5324413260,
"bytes_recv_gauge": 5977645732,
"bytes_sent": 0,
"bytes_sent_gauge": 278374825,
"bytes_sent_gauge": 308545283,
"interface_name": "wlp0s20f3",
"key": "interface_name",
"speed": 0,
"time_since_update": 0.4488046169281006}]}
"time_since_update": 0.2501566410064697}]}
GET now
-------
@ -642,7 +642,7 @@ GET now
Get plugin stats::
# curl http://localhost:61208/api/4/now
{"custom": "2024-06-29 09:55:18 CEST", "iso": "2024-06-29T09:55:18+02:00"}
{"custom": "2024-06-29 19:17:41 CEST", "iso": "2024-06-29T19:17:41+02:00"}
Fields descriptions:
@ -652,7 +652,7 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/now/iso
{"iso": "2024-06-29T09:55:18+02:00"}
{"iso": "2024-06-29T19:17:41+02:00"}
GET percpu
----------
@ -663,7 +663,7 @@ Get plugin stats::
[{"cpu_number": 0,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 36.0,
"idle": 21.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@ -671,12 +671,12 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 64.0,
"total": 79.0,
"user": 1.0},
{"cpu_number": 1,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 37.0,
"idle": 23.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@ -684,7 +684,7 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 63.0,
"total": 77.0,
"user": 0.0}]
Fields descriptions:
@ -719,7 +719,7 @@ Get plugin stats::
"port": 0,
"refresh": 30,
"rtt_warning": None,
"status": 0.005775,
"status": 0.006275,
"timeout": 3}]
Fields descriptions:
@ -747,7 +747,7 @@ Get a specific item when field matches the given value::
"port": 0,
"refresh": 30,
"rtt_warning": None,
"status": 0.005775,
"status": 0.006275,
"timeout": 3}]}
GET processcount
@ -756,7 +756,7 @@ GET processcount
Get plugin stats::
# curl http://localhost:61208/api/4/processcount
{"pid_max": 0, "running": 1, "sleeping": 281, "thread": 1660, "total": 426}
{"pid_max": 0, "running": 2, "sleeping": 277, "thread": 1508, "total": 412}
Fields descriptions:
@ -769,7 +769,7 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/processcount/total
{"total": 426}
{"total": 412}
GET processlist
---------------
@ -777,62 +777,40 @@ GET processlist
Get plugin stats::
# curl http://localhost:61208/api/4/processlist
[{"cmdline": ["/snap/firefox/4336/usr/lib/firefox/firefox",
"-contentproc",
"-childID",
"2",
"-isForBrowser",
"-prefsLen",
"28296",
"-prefMapSize",
"244444",
"-jsInitLen",
"231800",
"-parentBuildID",
"20240527194810",
"-greomni",
"/snap/firefox/4336/usr/lib/firefox/omni.ja",
"-appomni",
"/snap/firefox/4336/usr/lib/firefox/browser/omni.ja",
"-appDir",
"/snap/firefox/4336/usr/lib/firefox/browser",
"{01aadc3d-85fc-4851-9ca1-a43a1e81c3fa}",
"4591",
"true",
"tab"],
[{"cmdline": ["/snap/firefox/4336/usr/lib/firefox/firefox"],
"cpu_percent": 0.0,
"cpu_times": {"children_system": 0.0,
"children_user": 0.0,
"cpu_times": {"children_system": 3.08,
"children_user": 3.33,
"iowait": 0.0,
"system": 123.83,
"user": 2750.68},
"system": 13.75,
"user": 34.7},
"gids": {"effective": 1000, "real": 1000, "saved": 1000},
"io_counters": [8411136, 0, 0, 0, 0],
"io_counters": [393136128, 195969024, 0, 0, 0],
"key": "pid",
"memory_info": {"data": 3653316608,
"memory_info": {"data": 681967616,
"dirty": 0,
"lib": 0,
"rss": 3612418048,
"shared": 128864256,
"rss": 443969536,
"shared": 222199808,
"text": 987136,
"vms": 6200733696},
"memory_percent": 21.996779564802278,
"name": "Isolated Web Co",
"vms": 3721211904},
"memory_percent": 2.7034246554842674,
"name": "firefox",
"nice": 0,
"num_threads": 28,
"pid": 4848,
"num_threads": 120,
"pid": 793506,
"status": "S",
"time_since_update": 1,
"username": "nicolargo"},
{"cmdline": ["/snap/firefox/4336/usr/lib/firefox/firefox",
"-contentproc",
"-childID",
"3",
"2",
"-isForBrowser",
"-prefsLen",
"28296",
"28218",
"-prefMapSize",
"244444",
"244440",
"-jsInitLen",
"231800",
"-parentBuildID",
@ -843,31 +821,31 @@ Get plugin stats::
"/snap/firefox/4336/usr/lib/firefox/browser/omni.ja",
"-appDir",
"/snap/firefox/4336/usr/lib/firefox/browser",
"{0ae685c6-7105-4724-886c-98d4a4a9a4f8}",
"4591",
"{bc853380-6b8f-46ad-afe0-9da5ba832e62}",
"793506",
"true",
"tab"],
"cpu_percent": 0.0,
"cpu_times": {"children_system": 0.0,
"children_user": 0.0,
"iowait": 0.0,
"system": 52.38,
"user": 492.92},
"system": 2.54,
"user": 19.25},
"gids": {"effective": 1000, "real": 1000, "saved": 1000},
"io_counters": [2974720, 0, 0, 0, 0],
"io_counters": [1827840, 0, 0, 0, 0],
"key": "pid",
"memory_info": {"data": 1961992192,
"memory_info": {"data": 412688384,
"dirty": 0,
"lib": 0,
"rss": 1941671936,
"shared": 121491456,
"rss": 440922112,
"shared": 111878144,
"text": 987136,
"vms": 4457148416},
"memory_percent": 11.823252180627705,
"vms": 2946224128},
"memory_percent": 2.684868244493684,
"name": "Isolated Web Co",
"nice": 0,
"num_threads": 28,
"pid": 4852,
"pid": 793778,
"status": "S",
"time_since_update": 1,
"username": "nicolargo"}]
@ -902,18 +880,18 @@ GET quicklook
Get plugin stats::
# curl http://localhost:61208/api/4/quicklook
{"cpu": 6.6,
{"cpu": 12.9,
"cpu_hz": 4475000000.0,
"cpu_hz_current": 570218562.5,
"cpu_hz_current": 1666410624.9999998,
"cpu_log_core": 16,
"cpu_name": "13th Gen Intel(R) Core(TM) i7-13620H",
"cpu_phys_core": 10,
"load": 5.6,
"mem": 74.0,
"load": 3.7,
"mem": 33.6,
"percpu": [{"cpu_number": 0,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 36.0,
"idle": 21.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@ -921,12 +899,12 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 64.0,
"total": 79.0,
"user": 1.0},
{"cpu_number": 1,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 37.0,
"idle": 23.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@ -934,64 +912,12 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 63.0,
"total": 77.0,
"user": 0.0},
{"cpu_number": 2,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 37.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 63.0,
"user": 0.0},
{"cpu_number": 3,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 35.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 65.0,
"user": 2.0},
{"cpu_number": 4,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 21.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 2.0,
"total": 79.0,
"user": 15.0},
{"cpu_number": 5,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 37.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 63.0,
"user": 1.0},
{"cpu_number": 6,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 21.0,
"idle": 18.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@ -999,77 +925,64 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 1.0,
"total": 79.0,
"total": 82.0,
"user": 5.0},
{"cpu_number": 3,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 22.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 78.0,
"user": 0.0},
{"cpu_number": 4,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 8.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 1.0,
"total": 92.0,
"user": 14.0},
{"cpu_number": 5,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 23.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 77.0,
"user": 0.0},
{"cpu_number": 6,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 3.0,
"iowait": 1.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 4.0,
"total": 97.0,
"user": 15.0},
{"cpu_number": 7,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 38.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 62.0,
"user": 0.0},
{"cpu_number": 8,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 37.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 63.0,
"user": 0.0},
{"cpu_number": 9,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 38.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 62.0,
"user": 0.0},
{"cpu_number": 10,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 37.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 63.0,
"user": 0.0},
{"cpu_number": 11,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 37.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 63.0,
"user": 0.0},
{"cpu_number": 12,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 36.0,
"idle": 23.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@ -1077,12 +990,77 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 1.0,
"total": 64.0,
"total": 77.0,
"user": 0.0},
{"cpu_number": 8,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 19.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 1.0,
"total": 81.0,
"user": 3.0},
{"cpu_number": 9,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 22.0,
"iowait": 1.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 78.0,
"user": 0.0},
{"cpu_number": 10,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 22.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 78.0,
"user": 0.0},
{"cpu_number": 11,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 23.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 77.0,
"user": 0.0},
{"cpu_number": 12,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 21.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 1.0,
"total": 79.0,
"user": 1.0},
{"cpu_number": 13,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 37.0,
"idle": 23.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@ -1090,12 +1068,12 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 63.0,
"total": 77.0,
"user": 0.0},
{"cpu_number": 14,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 37.0,
"idle": 22.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@ -1103,12 +1081,12 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 63.0,
"total": 78.0,
"user": 0.0},
{"cpu_number": 15,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 37.0,
"idle": 22.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@ -1116,9 +1094,9 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
"total": 63.0,
"total": 78.0,
"user": 0.0}],
"swap": 21.6}
"swap": 10.7}
Fields descriptions:
@ -1156,14 +1134,14 @@ Get plugin stats::
"label": "Ambient",
"type": "temperature_core",
"unit": "C",
"value": 36,
"value": 39,
"warning": 0},
{"critical": None,
"key": "label",
"label": "Ambient 3",
"type": "temperature_core",
"unit": "C",
"value": 31,
"value": 32,
"warning": 0}]
Fields descriptions:
@ -1224,7 +1202,7 @@ Get a specific item when field matches the given value::
"label": "Ambient",
"type": "temperature_core",
"unit": "C",
"value": 36,
"value": 39,
"warning": 0}]}
GET smart
@ -1255,7 +1233,7 @@ Fields descriptions:
* **platform**: Platform (32 or 64 bits) (unit is *None*)
* **linux_distro**: Linux distribution (unit is *None*)
* **os_version**: Operating system version (unit is *None*)
* **hr_name**: Human readable operating sytem name (unit is *None*)
* **hr_name**: Human readable operating system name (unit is *None*)
Get a specific field::
@ -1268,7 +1246,7 @@ GET uptime
Get plugin stats::
# curl http://localhost:61208/api/4/uptime
"19 days, 16:58:04"
"20 days, 2:20:27"
GET version
-----------
@ -1276,7 +1254,7 @@ GET version
Get plugin stats::
# curl http://localhost:61208/api/4/version
"4.1.0"
"4.2.0_beta01"
GET wifi
--------
@ -1285,8 +1263,8 @@ Get plugin stats::
# curl http://localhost:61208/api/4/wifi
[{"key": "ssid",
"quality_level": -58.0,
"quality_link": 52.0,
"quality_level": -59.0,
"quality_link": 51.0,
"ssid": "wlp0s20f3"}]
Get a specific field::
@ -1298,8 +1276,8 @@ Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/wifi/ssid/wlp0s20f3
{"wlp0s20f3": [{"key": "ssid",
"quality_level": -58.0,
"quality_link": 52.0,
"quality_level": -59.0,
"quality_link": 51.0,
"ssid": "wlp0s20f3"}]}
GET all stats
@ -1344,34 +1322,34 @@ GET stats history
History of a plugin::
# curl http://localhost:61208/api/4/cpu/history
{"system": [["2024-06-29T09:55:19.540650", 2.7],
["2024-06-29T09:55:20.619021", 0.5],
["2024-06-29T09:55:21.631678", 0.5]],
"user": [["2024-06-29T09:55:19.540644", 4.3],
["2024-06-29T09:55:20.619018", 0.4],
["2024-06-29T09:55:21.631673", 0.4]]}
{"system": [["2024-06-29T19:17:42.396270", 3.5],
["2024-06-29T19:17:43.447397", 0.7],
["2024-06-29T19:17:44.455830", 0.7]],
"user": [["2024-06-29T19:17:42.396268", 9.4],
["2024-06-29T19:17:43.447396", 4.0],
["2024-06-29T19:17:44.455825", 4.0]]}
Limit history to last 2 values::
# curl http://localhost:61208/api/4/cpu/history/2
{"system": [["2024-06-29T09:55:20.619021", 0.5],
["2024-06-29T09:55:21.631678", 0.5]],
"user": [["2024-06-29T09:55:20.619018", 0.4],
["2024-06-29T09:55:21.631673", 0.4]]}
{"system": [["2024-06-29T19:17:43.447397", 0.7],
["2024-06-29T19:17:44.455830", 0.7]],
"user": [["2024-06-29T19:17:43.447396", 4.0],
["2024-06-29T19:17:44.455825", 4.0]]}
History for a specific field::
# curl http://localhost:61208/api/4/cpu/system/history
{"system": [["2024-06-29T09:55:18.389360", 2.7],
["2024-06-29T09:55:19.540650", 2.7],
["2024-06-29T09:55:20.619021", 0.5],
["2024-06-29T09:55:21.631678", 0.5]]}
{"system": [["2024-06-29T19:17:41.318736", 3.5],
["2024-06-29T19:17:42.396270", 3.5],
["2024-06-29T19:17:43.447397", 0.7],
["2024-06-29T19:17:44.455830", 0.7]]}
Limit history for a specific field to last 2 values::
# curl http://localhost:61208/api/4/cpu/system/history
{"system": [["2024-06-29T09:55:20.619021", 0.5],
["2024-06-29T09:55:21.631678", 0.5]]}
{"system": [["2024-06-29T19:17:43.447397", 0.7],
["2024-06-29T19:17:44.455830", 0.7]]}
GET limits (used for thresholds)
--------------------------------

View File

@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "GLANCES" "1" "Jun 29, 2024" "4.1.0" "Glances"
.TH "GLANCES" "1" "Jun 29, 2024" "4.2.0_beta01" "Glances"
.SH NAME
glances \- An eye on your system
.SH SYNOPSIS

View File

@ -55,7 +55,7 @@ if psutil_version_info < psutil_min_version:
def __signal_handler(signal, frame):
logger.debug(f"Signal {signal} catched")
logger.debug(f"Signal {signal} caught")
end()

View File

@ -89,7 +89,7 @@ def printandflush(string):
def to_ascii(s):
"""Convert the bytes string to a ASCII string
Usefull to remove accent (diacritics)"""
Useful to remove accent (diacritics)"""
if isinstance(s, binary_type):
return s.decode()
return s.encode('ascii', 'ignore').decode()
@ -153,7 +153,7 @@ def subsample(data, sampling):
Data should be a list of numerical itervalues
Return a subsampled list of sampling lenght
Return a subsampled list of sampling length
"""
if len(data) <= sampling:
return data
@ -216,13 +216,13 @@ def key_exist_value_not_none(k, d):
return k in d and d[k] is not None
def key_exist_value_not_none_not_v(k, d, value='', lengh=None):
def key_exist_value_not_none_not_v(k, d, value='', length=None):
# Return True if:
# - key k exists
# - d[k] is not None
# - d[k] != value
# - if lengh is not None and len(d[k]) >= lengh
return k in d and d[k] is not None and d[k] != value and (lengh is None or len(d[k]) >= lengh)
# - if length is not None and len(d[k]) >= length
return k in d and d[k] is not None and d[k] != value and (length is None or len(d[k]) >= length)
def disable(class_name, var):
@ -425,12 +425,12 @@ def weak_lru_cache(maxsize=128, typed=False):
def namedtuple_to_dict(data):
"""Convert a namedtuple to a dict, using the _asdict() method embeded in PsUtil stats."""
"""Convert a namedtuple to a dict, using the _asdict() method embedded in PsUtil stats."""
return {k: (v._asdict() if hasattr(v, '_asdict') else v) for k, v in data.items()}
def list_of_namedtuple_to_list_of_dict(data):
"""Convert a list of namedtuples to a dict, using the _asdict() method embeded in PsUtil stats."""
"""Convert a list of namedtuples to a dict, using the _asdict() method embedded in PsUtil stats."""
return [namedtuple_to_dict(d) for d in data]

View File

@ -1211,7 +1211,7 @@ def build_colors_list(args):
curses.init_pair(5, curses.COLOR_MAGENTA, -1)
else:
curses.init_pair(2, -1, curses.COLOR_RED)
curses.init_pair(3, -1, curses.COLOR_GREEN)
curses.init_pair(3, 0, curses.COLOR_GREEN)
curses.init_pair(5, -1, curses.COLOR_MAGENTA)
curses.init_pair(4, curses.COLOR_BLUE, -1)
curses.init_pair(6, curses.COLOR_RED, -1)

View File

@ -11,7 +11,7 @@ It should implement a Class named PluginModel (inherited from GlancesPluginModel
This class should be based on the MVC model.
- model: where the stats are updated (update method)
- view: where the stats are prepare to be displayed (update_views)
- controler: where the stats are displayed (msg_curse method)
- controller: where the stats are displayed (msg_curse method)
A plugin should define the following global variables:

View File

@ -98,7 +98,7 @@ class GlancesPluginModel:
logger.debug(f'Load section {self.plugin_name} in Glances configuration file')
self.load_limits(config=config)
# Init the alias (dictionnary)
# Init the alias (dictionary)
self.alias = self.read_alias()
# Init the actions

View File

@ -543,7 +543,7 @@ class PluginModel(GlancesPluginModel):
# Process list
# Loop over processes (sorted by the sort key previously compute)
# This is a Glances bottleneck (see flame graph),
# TODO: get_process_curses_data should be optimzed
# TODO: get_process_curses_data should be optimized
for position, process in enumerate(processes_list_sorted):
ret.extend(self.get_process_curses_data(process, position == args.cursor_position, args))

View File

@ -48,7 +48,7 @@ fields_description = {
'description': 'Operating system version',
},
'hr_name': {
'description': 'Human readable operating sytem name',
'description': 'Human readable operating system name',
},
}

View File

@ -8,7 +8,7 @@
"""Wifi plugin.
Stats are retreived from the /proc/net/wireless file (Linux only):
Stats are retrieved from the /proc/net/wireless file (Linux only):
# cat /proc/net/wireless
Inter-| sta-| Quality | Discarded packets | Missed | WE

View File

@ -293,7 +293,7 @@ class GlancesProcesses:
# - connections (TCP and UDP)
# - CPU min/max/mean
# Set the extended stats list (OS dependant)
# Set the extended stats list (OS dependent)
extended_stats = ['cpu_affinity', 'ionice', 'num_ctx_switches']
if LINUX:
# num_fds only available on Unix system (see issue #1351)
@ -418,7 +418,7 @@ class GlancesProcesses:
#####################
sorted_attrs = ['cpu_percent', 'cpu_times', 'memory_percent', 'name', 'status', 'num_threads']
displayed_attr = ['memory_info', 'nice', 'pid']
# The following attributes are cached and only retreive every self.cache_timeout seconds
# The following attributes are cached and only retrieve every self.cache_timeout seconds
# Warning: 'name' can not be cached because it is used for filtering
cached_attrs = ['cmdline', 'username']
@ -454,7 +454,7 @@ class GlancesProcesses:
)
# Only get the info key
# PsUtil 6+ no longer check PID reused #2755 so use is_running in the loop
# Note: not sure it is realy needed but CPU consumption look teh same with or without it
# Note: not sure it is realy needed but CPU consumption look the same with or without it
processlist = [p.info for p in processlist if p.is_running()]
# Sort the processes list by the current sort_key
processlist = sort_stats(processlist, sorted_by=self.sort_key, reverse=True)

View File

@ -136,7 +136,7 @@ class GlancesStats:
"""Load additional plugins if defined"""
def get_addl_plugins(self, plugin_path):
"""Get list of additonal plugins"""
"""Get list of additional plugins"""
_plugin_list = []
for plugin in os.listdir(plugin_path):
path = os.path.join(plugin_path, plugin)
@ -167,7 +167,7 @@ class GlancesStats:
sys.path.insert(0, path)
for plugin in get_addl_plugins(self, path):
if plugin in sys.modules:
logger.warn(f"Pugin {plugin} already in sys.modules, skipping (workaround: rename plugin)")
logger.warn(f"Plugin {plugin} already in sys.modules, skipping (workaround: rename plugin)")
else:
start_duration.reset()
try: