提交 73a324c6 编写于 作者: N Nicolas Hennion

version 1.4

*~
*.py[co]
# Packages
*.egg
*.egg-info
dist
build
Nicolas Hennion (aka) Nicolargo
http://www.nicolargo.com
\ No newline at end of file
http://www.nicolargo.com
Alessio Sergi (aka) Al3hex
https://twitter.com/al3hex
GNU LESSER GENERAL PUBLIC LICENSE
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
......@@ -10,7 +10,7 @@
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
......@@ -111,7 +111,7 @@ the following:
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
......
include README
include README-fr
include COPYING
include AUTHORS
include ChangeLog
include NEWS
include screenshot.png
recursive-include doc *.png
recursive-include man *.1
recursive-include i18n *.mo
recursive-include src *.html *.css *.png
## Process this file with automake to produce Makefile.in
## Created by Anjuta
SUBDIRS = src man
glancesdocdir = ${datadir}/doc/glances
glancesdoc_DATA = \
README\
COPYING\
AUTHORS\
ChangeLog\
INSTALL\
NEWS
EXTRA_DIST = $(glancesdoc_DATA)
# Remove doc directory on uninstall
uninstall-local:
-rm -r $(glancesdocdir)
此差异已折叠。
Version 1.4
===========
* Goodby StatGrab... Welcome to the PsUtil library !
* No more autotools, use setup.py to install (or package)
* Only major stats (CPU, Load and memory) use background colors
* Improve operating system name detection
* New system info: one-line layout and add Arch Linux support
* No decimal places for values < GB
* New memory and swap layout
* Add percentage of usage for both memory and swap
* Add MEM% usage, NICE, STATUS, UID, PID and running TIME per process
* Add sort by MEM% ('m' key)
* Add sort by Process name ('p' key)
* Multiple minor fixes, changes and improvements
* Disable Disk IO module from the command line (-d)
* Disable Mount module from the command line (-m)
* Disable Net rate module from the command line (-n)
* Improved FreeBSD support
* Cleaning code and style
* Code is now checked with pep8
* CSV and HTML output (experimental functions, no yet documentation)
Version 1.3.7
=============
......@@ -12,7 +35,7 @@ Version 1.3.6
* Change static Python path (issue #20)
* Correct a bug with a network interface disaippear (issue #27)
* Add French and Spanish translation (thx to Jean Bob)
Version 1.3.5
=============
......@@ -23,8 +46,8 @@ Version 1.3.4
=============
* New key: 'n' to enable/disable network stats
* New key: 'd' to enable/disable disk IO stats
* New key: 'f' to enable/disable FS stats
* New key: 'd' to enable/disable disk IO stats
* New key: 'f' to enable/disable FS stats
* Reorganised the screen when stat are not available|disable
* Force Glances to use the enmbeded fs stats (issue #16)
......
......@@ -6,18 +6,44 @@ Glances -- Eye on your system
## Description
Glances is a CLI curses based monitoring tool for GNU/Linux or BSD OS.
Glances is a CLI curses based monitoring tool for GNU/Linux and BSD OS.
Glances uses the libstatgrab library to get information from your system.
It is developed in Python and uses the python-statgrab lib.
Glances uses the PsUtil library to get information from your system.
It is developed in Python.
![screenshot](https://github.com/nicolargo/glances/raw/master/screenshot.png)
## Installation
### From package manager
### From package manager (very easy way)
Packages exist for Arch, Fedora, Redhat, FreeBSD...
### From PPA (easy way for Ubuntu/Mint...)
Arnaud Hartmann (thanks to him !) maintains a PPA with the latest Glances version:
To install the PPA just enter:
$ sudo add-apt-repository ppa:arnaud-hartmann/glances-dev
$ sudo apt-get update
Then install Glances:
$ sudo apt-get install glances
### From PyPi (easy way)
PyPi is an official Python package manager.
Packages exist for Arch, Fedora, Redhat ...
You first need to install pypi on your system. For exemple on Debian/Ubuntu:
$ sudo apt-get install python-pip
Then install the latest Glances version:
$ sudo pip install glances
### From PPA (Ubuntu/Mint)
......@@ -35,39 +61,21 @@ The PPA is available for Ubuntu version 9.10 to 12.04.
Get the latest version:
$ wget https://github.com/downloads/nicolargo/glances/glances-1.3.7.tar.gz
$ wget https://github.com/downloads/nicolargo/glances/glances-1.4.tar.gz
Glances use a standard GNU style installer:
$ tar zxvf glances-1.3.7.tar.gz
$ cd glances-1.3.7
$ ./configure
$ make
$ sudo make install
$ tar zxvf glances-1.4.tar.gz
$ cd glances-1.4
$ sudo python setup.py install
Pre-requisites:
* Python 2.6+ (not tested with Python 3+)
* python-statgrab 0.5+ (did NOT work with python-statgrab 0.4)
Notes: For Debian.
The Debian Squeeze repos only include the python-statgrab 0.4.
You had to install the version 0.5 using the following commands:
$ sudo apt-get install libstatgrab-dev pkg-config python-dev make
$ wget http://ftp.uk.i-scream.org/sites/ftp.i-scream.org/pub/i-scream/pystatgrab/pystatgrab-0.5.tar.gz
$ tar zxvf pystatgrab-0.5.tar.gz
$ cd pystatgrab-0.5/
$ ./setup.py build
$ sudo ./setup.py install
Notes: For Ubuntu 10.04 and 10.10.
The instruction to install the version 0.5 are here:
https://github.com/nicolargo/glances/issues/5#issuecomment-3033194
## Running
Easy:
Easy way (that's all folks !):
$ glances.py
......@@ -98,23 +106,23 @@ When Glances is running, you can press:
* 'd' Disable or enable the disk IO stats
* 'f' Disable or enable the file system stats
* 'l' Disable or enable the logs
* 'm' to sort the processes list by process size
* 'm' to sort the processes list by process MEM
* 'n' Disable or enable the network interfaces stats
* 'p' to sort by process name
* 'q' Exit
### Header
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/header.png)
The header shows the Glances version, the host name and the operating
system name, version and architecture.
The header shows the host name and the operating system name, version and architecture.
### CPU
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/cpu.png)
The CPU states are shown as a percentage and for the configured refresh
time.
The CPU states are shown as a percentage and for the configured refresh
time. The total CPU usage is displayed on the first line.
If user|kernel|nice CPU is < 50%, then status is set to "OK".
......@@ -128,12 +136,13 @@ If user|kernel|nice CPU is > 90%, then status is set to "CRITICAL".
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/load.png)
On the Nosheep blog, Zach defines the average load: "In short it is the
average sum of the number of processes waiting in the run-queue plus the
On the Nosheep blog, Zach defines the average load: "In short it is the
average sum of the number of processes waiting in the run-queue plus the
number currently executing over 1, 5, and 15 minute time periods."
Glances gets the number of CPU cores to adapt the alerts. With Glances,
alerts on average load are only set on 5 and 15 mins.
Glances gets the number of CPU cores to adapt the alerts. With Glances,
alerts on average load are only set on 5 and 15 mins. The first line
also display the number of CPU core.
If average load is < O.7*Core, then status is set to "OK".
......@@ -147,7 +156,7 @@ If average load is > 5*Core, then status is set to "CRITICAL".
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/mem.png)
Glances uses tree columns: memory (RAM), swap and "real".
Glances uses tree columns: memory (RAM), "real" and swap.
Real used memory is: used - cache.
......@@ -167,7 +176,7 @@ If memory is > 90%, then status is set to "CRITICAL".
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/network.png)
Glances display the network interface bit rate. The unit is adapted
Glances display the network interface bit rate. The unit is adapted
dynamicaly (bits per second, Kbits per second, Mbits per second...).
Alerts are set only if the network interface maximum speed is available.
......@@ -180,14 +189,14 @@ If bitrate is > 70%, then status is set to "WARNING".
If bitrate is > 90%, then status is set to "CRITICAL".
For exemple, on a 100 Mbps Ethernet interface, the warning status is set
For exemple, on a 100 Mbps Ethernet interface, the warning status is set
if the bit rate is higher than 70 Mbps.
### Disk I/O
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/diskio.png)
Glances display the disk I/O throughput. The unit is adapted dynamicaly
Glances display the disk I/O throughput. The unit is adapted dynamicaly
(bytes per second, Kbytes per second, Mbytes per second...).
There is no alert on this information.
......@@ -196,8 +205,8 @@ There is no alert on this information.
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/fs.png)
Glances display the total and used filesytem disk space. The unit is
adapted dynamicaly (bytes per second, Kbytes per second, Mbytes per
Glances display the total and used filesytem disk space. The unit is
adapted dynamicaly (bytes per second, Kbytes per second, Mbytes per
second...).
Alerts are set for used disk space:
......@@ -216,11 +225,30 @@ If disk used is > 90%, then status is set to "CRITICAL".
Glances displays a summary and a list of processes.
By default (or if you hit the 'a' key) the process list is automaticaly
By default (or if you hit the 'a' key) the process list is automaticaly
sorted by CPU of memory consumption.
The number of processes in the list is adapted to the screen size.
* VIRT: Virtual memory size (in byte)
* REST: Amount of resident memory (in byte)
* CPU%: % of CPU used by the process
* MEM%: % of MEM used by the process
* PID: Process ID
* USER: Process user ID
* NI: Nice level of the process
* S: Process status
R - Running
D - Sleeping (may not be interrupted)
S - Sleeping (may be interrupted)
T - Traced or stopped
Z - Zombie or "hung" process
* TIME+: Cumulative CPU time used
* NAME: Process name or command line
### Logs
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/logs.png)
......@@ -235,13 +263,13 @@ There is one line per alert with the following information:
* start date
* end date
* alert name
* (min/avg/max) values
* (min/avg/max) values
### Footer
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/footer.png)
Glances displays a caption and the current time/date.
Glances displays the current time/date and access to the embeded help screen.
## Localisation
......@@ -255,6 +283,6 @@ i18n_espanol_generate.sh
You are welcome to contribute to this software.
* Packaging for Debian, Ubuntu, BSD...
* Check the needed Python library in the configure.ac
* Add file system stats when the python-statgrab is corrected
* Code optimization
* Port to FreeBSD and Mac OS X
* Documentation for HTML and CVS export option
......@@ -3,10 +3,10 @@ Glances -- Votre système en un coups d'oeil
## Description
Glances est un logiciel libre (licence LGPL) permettant de surveiller votre
Glances est un logiciel libre (licence LGPL) permettant de surveiller votre
système d'exploitation GNU/Linux ou BSD à partir d'une interface texte.
Glances utilise la librairie libstatgrab pour récupérer les informations de
Glances utilise la librairie PsUtil pour récupérer les informations de
votre système. Il est développé en Python.
![screenshot](https://github.com/nicolargo/glances/raw/master/screenshot.png)
......@@ -17,7 +17,7 @@ votre système. Il est développé en Python.
Des paquets existent pour plusieurs distributions: Arch, Fedora/Redhat...
Le processus de packaging est actuellement en cours sur d'autres distribs, je
vous conseille donc de rechercher Glances sur votre gestionnaire de package
vous conseille donc de rechercher Glances sur votre gestionnaire de package
avant de faire une installation depuis les sources.
### Depuis le PPA (Ubuntu/Mint)
......@@ -32,54 +32,40 @@ Pour installer Glances à partir de ce PPA, il suffit de saisir:
Le PPA propose les paquets pour les versions Ubuntu 9.10 jusqu'à 12.04.
### Depuis PyPi
PyPi est un gestionnaire officiel des paquets Python.
Il est disponible sous la plupart des distibutions GNU/Linux.
On commence par installer PyPi sur son système (par exemple Debian/Ubuntu):
$ sudo apt-get install python-pip
Puis on installe la dernière version de Glances:
$ sudo pip install glances
### Depuis les sources
Le projet Glances est hébergé sur GitHUB: https://github.com/nicolargo/glances
Pour l'installer, il suffit de suivre les instructions suivantes depuis un
Pour l'installer, il suffit de suivre les instructions suivantes depuis un
terminal.
Récupération de la dernière version (1.3.7):
Récupération de la dernière version (1.4):
$ wget https://github.com/downloads/nicolargo/glances/glances-1.3.7.tar.gz
$ wget https://github.com/downloads/nicolargo/glances/glances-1.4.tar.gz
Procédez ensuite à l'installation:
$ tar zxvf glances-1.3.7.tar.gz
$ cd glances-1.3.7
$ ./configure
$ make
$ sudo make install
$ tar zxvf glances-1.4.tar.gz
$ cd glances-1.4
$ sudo python setup.py install
Glances a besoin des dépendances suivantes:
* Python 2.6+ (non testé avec Python 3+)
* libstatgrab 0.16+
* python-statgrab 0.5+ (ne marchera PAS avec python-statgrab 0.4)
Notes specifiques pour une installation sous Debian 6.
Debian Squeeze met à disposition la version 0.4 de python-statgrab.
Il faut donc installer la version 0.5 à la main:
$ sudo apt-get install libstatgrab-dev pkg-config python-dev make
$ wget http://ftp.uk.i-scream.org/sites/ftp.i-scream.org/pub/i-scream/pystatgrab/pystatgrab-0.5.tar.gz
$ tar zxvf pystatgrab-0.5.tar.gz
$ cd pystatgrab-0.5/
$ ./setup.py build
$ sudo ./setup.py install
Notes specifiques pour une installation sous Ubuntu 10.04 et 10.10.
Ces versions d'Ubuntu mettent à disposition la version 0.4 de python-statgrab.
Il faut donc installer la version 0.5 à la main:
$ sudo apt-get update
$ sudo apt-get install pkg-config build-essential autoconf automake python libstatgrab-dev python-all-dev
$ sudo apt-get remove python-statgrab
$ wget http://ftp.uk.i-scream.org/sites/ftp.i-scream.org/pub/i-scream/pystatgrab/pystatgrab-0.5.tar.gz
$ tar zxvf pystatgrab-0.5.tar.gz
$ cd pystatgrab-0.5/
$ ./setup.py build
$ sudo ./setup.py install
## Lancement de Glances
......@@ -87,7 +73,7 @@ Il suffit de saisir la commande suivante dans une console ou un terminal:
$ glances.py
Note: sur certaines distributions, il faut saisir glances en lieu et place
Note: sur certaines distributions, il faut saisir glances en lieu et place
de glances.py.
## Guide d'utilisation
......@@ -127,7 +113,7 @@ Passons ensuite à la description de la fenêtre de Glances:
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/header.png)
L'en-tête montre la version de Glances, le nom de la machine (FQND) ainsi
L'en-tête montre la version de Glances, le nom de la machine (FQND) ainsi
qu'une information sur le système d'exploitation (nom, version).
### CPU
......@@ -148,14 +134,14 @@ Si user|kernel|nice CPU est > 90%, alors le status est "CRITICAL".
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/load.png)
Il est assez difficile de donner une définition claire de la charge d'une
Il est assez difficile de donner une définition claire de la charge d'une
machine (load average). Sur le blog Nosheep, Zach en donne la définition
suivante: " C'est la somme moyenne du nombre de processus en attente dans
la queue d'execution plus le nombre de processus actuellement en train
d'être executés sur une période de temps de 1, 5 et 15 minutes."
Glances permet d'afficher les alertes en tenant compte du nombre de coeurs de
votre processeur. Par exemple, le seuil WARNING sera de 2 pour un processeur
votre processeur. Par exemple, le seuil WARNING sera de 2 pour un processeur
Bi-Core alors qu'il sera de 4 sur un Quad-Core.
Si la charge moyenne est < O.7*Core, alors le status est "OK".
......@@ -190,10 +176,10 @@ Si la mémoire est > 90%, alors le status "CRITICAL".
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/network.png)
Glances affiche les débits des interfaces réseau en adaptant dynamiquement
Glances affiche les débits des interfaces réseau en adaptant dynamiquement
l'unité à utiliser (bits par seconde).
Les alertes ne sont affichées que pour les interfaces dont les informations
Les alertes ne sont affichées que pour les interfaces dont les informations
sur la vitesse maximale sont disponibles (cela dépend des distributions):
Si le débit < 50%, alors le status est "OK".
......@@ -204,14 +190,14 @@ Si le débit > 70%, alors le status est "WARNING".
Si le débit > 90%, alors le status est "CRITICAL".
Par exemple, sur une interface Ethernet Fast Ethernet (100 Mbps), le status
Par exemple, sur une interface Ethernet Fast Ethernet (100 Mbps), le status
passera à WARNING si le débit dépasse les 70 Mbps.
### Entrées/Sorties disque
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/diskio.png)
Glances permet d'afficher les débits en lecture et écriture sur les disques
Glances permet d'afficher les débits en lecture et écriture sur les disques
en adaptant dynamiquement l'unité à utiliser (octets par seconde).
Il n'y a pas d'alerte remontée pour ce type d'information.
......@@ -237,7 +223,7 @@ Si l'espace disque utilisé est > 90%, alors le status est "CRITICAL".
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/processlist.png)
Glances affiche un résumé sur l'état des processus ainsi qu'une liste
Glances affiche un résumé sur l'état des processus ainsi qu'une liste
détaillée.
Le nombre des processus affichés est adapté à la taille de la fenêtre.
......@@ -274,13 +260,3 @@ i18n_francais_generate.sh
Pour générer et installer la traduction espagnol executer le script suivant
sous l'utilisateur root ou sudo
i18n_espanol_generate.sh
## A faire...
J'ai besoin de contributeurs pour faire évoluer Glances.
Notamment:
* Packaging pour Debian, Ubuntu, BSD et toutes autres distributions
* Controle de la présence des librairie dans le fichier configure.ac
* Optimisation du code
README
\ No newline at end of file
[![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=nicolargo&url=https://github.com/nicolargo/glances&title=Glances&language=&tags=github&category=software)
=============================
Glances -- Eye on your system
=============================
## Description
Glances is a CLI curses based monitoring tool for GNU/Linux and BSD OS.
Glances uses the PsUtil library to get information from your system.
It is developed in Python.
![screenshot](https://github.com/nicolargo/glances/raw/master/screenshot.png)
## Installation
### From package manager (very easy way)
Packages exist for Arch, Fedora, Redhat, FreeBSD...
### From PPA (easy way for Ubuntu/Mint...)
Arnaud Hartmann (thanks to him !) maintains a PPA with the latest Glances version:
To install the PPA just enter:
$ sudo add-apt-repository ppa:arnaud-hartmann/glances-dev
$ sudo apt-get update
Then install Glances:
$ sudo apt-get install glances
### From PyPi (easy way)
PyPi is an official Python package manager.
You first need to install pypi on your system. For exemple on Debian/Ubuntu:
$ sudo apt-get install python-pip
Then install the latest Glances version:
$ sudo pip install glances
### From PPA (Ubuntu/Mint)
Thanks to Arnaud Hartmann, a PPA is available for the stable branch.
To install it on your Ubuntu system:
$ sudo add-apt-repository ppa:arnaud-hartmann/glances-stable
$ sudo apt-get update
$ sudo apt-get install glances
The PPA is available for Ubuntu version 9.10 to 12.04.
### From source
Get the latest version:
$ wget https://github.com/downloads/nicolargo/glances/glances-1.4.tar.gz
Glances use a standard GNU style installer:
$ tar zxvf glances-1.4.tar.gz
$ cd glances-1.4
$ sudo python setup.py install
Pre-requisites:
* Python 2.6+ (not tested with Python 3+)
## Running
Easy way (that's all folks !):
$ glances.py
## User guide
By default, stats are refreshed every second, to change this setting, you can
use the -t option. For exemple to set the refrech rate to 5 seconds:
$ glances.py -t 5
Importants stats are colored:
* GREEN: stat counter is "OK"
* BLUE: stat counter is "CAREFUL"
* MAGENTA: stat counter is "WARNING"
* RED: stat counter is "CRITICAL"
When Glances is running, you can press:
* 'h' to display an help message whith the keys you can press
* 'a' to set the automatic mode. The processes are sorted automatically
If CPU > 70%, sort by process "CPU consumption"
If MEM > 70%, sort by process "memory size"
* 'c' to sort the processes list by CPU consumption
* 'd' Disable or enable the disk IO stats
* 'f' Disable or enable the file system stats
* 'l' Disable or enable the logs
* 'm' to sort the processes list by process MEM
* 'n' Disable or enable the network interfaces stats
* 'p' to sort by process name
* 'q' Exit
### Header
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/header.png)
The header shows the host name and the operating system name, version and architecture.
### CPU
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/cpu.png)
The CPU states are shown as a percentage and for the configured refresh
time. The total CPU usage is displayed on the first line.
If user|kernel|nice CPU is < 50%, then status is set to "OK".
If user|kernel|nice CPU is > 50%, then status is set to "CAREFUL".
If user|kernel|nice CPU is > 70%, then status is set to "WARNING".
If user|kernel|nice CPU is > 90%, then status is set to "CRITICAL".
### Load
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/load.png)
On the Nosheep blog, Zach defines the average load: "In short it is the
average sum of the number of processes waiting in the run-queue plus the
number currently executing over 1, 5, and 15 minute time periods."
Glances gets the number of CPU cores to adapt the alerts. With Glances,
alerts on average load are only set on 5 and 15 mins. The first line
also display the number of CPU core.
If average load is < O.7*Core, then status is set to "OK".
If average load is > O.7*Core, then status is set to "CAREFUL".
If average load is > 1*Core, then status is set to "WARNING".
If average load is > 5*Core, then status is set to "CRITICAL".
### Memory
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/mem.png)
Glances uses tree columns: memory (RAM), "real" and swap.
Real used memory is: used - cache.
Real free memory is: free + cache.
With Glances, alerts are only set for on used swap and real memory.
If memory is < 50%, then status is set to "OK".
If memory is > 50%, then status is set to "CAREFUL".
If memory is > 70%, then status is set to "WARNING".
If memory is > 90%, then status is set to "CRITICAL".
### Network bit rate
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/network.png)
Glances display the network interface bit rate. The unit is adapted
dynamicaly (bits per second, Kbits per second, Mbits per second...).
Alerts are set only if the network interface maximum speed is available.
If bitrate is < 50%, then status is set to "OK".
If bitrate is > 50%, then status is set to "CAREFUL".
If bitrate is > 70%, then status is set to "WARNING".
If bitrate is > 90%, then status is set to "CRITICAL".
For exemple, on a 100 Mbps Ethernet interface, the warning status is set
if the bit rate is higher than 70 Mbps.
### Disk I/O
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/diskio.png)
Glances display the disk I/O throughput. The unit is adapted dynamicaly
(bytes per second, Kbytes per second, Mbytes per second...).
There is no alert on this information.
### Filesystem
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/fs.png)
Glances display the total and used filesytem disk space. The unit is
adapted dynamicaly (bytes per second, Kbytes per second, Mbytes per
second...).
Alerts are set for used disk space:
If disk used is < 50%, then status is set to "OK".
If disk used is > 50%, then status is set to "CAREFUL".
If disk used is > 70%, then status is set to "WARNING".
If disk used is > 90%, then status is set to "CRITICAL".
### Processes
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/processlist.png)
Glances displays a summary and a list of processes.
By default (or if you hit the 'a' key) the process list is automaticaly
sorted by CPU of memory consumption.
The number of processes in the list is adapted to the screen size.
* VIRT: Virtual memory size (in byte)
* REST: Amount of resident memory (in byte)
* CPU%: % of CPU used by the process
* MEM%: % of MEM used by the process
* PID: Process ID
* USER: Process user ID
* NI: Nice level of the process
* S: Process status
R - Running
D - Sleeping (may not be interrupted)
S - Sleeping (may be interrupted)
T - Traced or stopped
Z - Zombie or "hung" process
* TIME+: Cumulative CPU time used
* NAME: Process name or command line
### Logs
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/logs.png)
A logs list is displayed in the bottom of the screen if (an only if):
* at least one WARNING or CRITICAL alert was occured.
* space is available in the bottom of the console/terminal
There is one line per alert with the following information:
* start date
* end date
* alert name
* (min/avg/max) values
### Footer
![screenshot](https://github.com/nicolargo/glances/raw/master/doc/footer.png)
Glances displays the current time/date and access to the embeded help screen.
## Localisation
To generate french locale execute as root or sudo :
i18n_francais_generate.sh
To generate spanish locale execute as root or sudo :
i18n_espanol_generate.sh
## Todo
You are welcome to contribute to this software.
* Code optimization
* Port to FreeBSD and Mac OS X
* Documentation for HTML and CVS export option
- Packaging for .deb (Debian|Ubuntu|Mint) Linux distributions (contributors needed)
- Test/coding for xBSD
- Add control to check the libstatgrab version in the script
- Add a limit class to manage the OK ,CAREFUL,WARNING,CRITICAL limits
- Include in the Debian repos (contributors needed)
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
DIE=0
if [ -n "$GNOME2_DIR" ]; then
ACLOCAL_FLAGS="-I $GNOME2_DIR/share/aclocal $ACLOCAL_FLAGS"
LD_LIBRARY_PATH="$GNOME2_DIR/lib:$LD_LIBRARY_PATH"
PATH="$GNOME2_DIR/bin:$PATH"
export PATH
export LD_LIBRARY_PATH
fi
(test -f $srcdir/configure.ac) || {
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
echo " top-level package directory"
exit 1
}
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`autoconf' installed."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
(grep "^IT_PROG_INTLTOOL" $srcdir/configure.ac >/dev/null) && {
(intltoolize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`intltool' installed."
echo "You can get it from:"
echo " ftp://ftp.gnome.org/pub/GNOME/"
DIE=1
}
}
(grep "^AM_PROG_XML_I18N_TOOLS" $srcdir/configure.ac >/dev/null) && {
(xml-i18n-toolize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`xml-i18n-toolize' installed."
echo "You can get it from:"
echo " ftp://ftp.gnome.org/pub/GNOME/"
DIE=1
}
}
(grep "^LT_INIT" $srcdir/configure.ac >/dev/null) && {
(libtool --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`libtool' installed."
echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
}
(grep "^AM_GLIB_GNU_GETTEXT" $srcdir/configure.ac >/dev/null) && {
(grep "sed.*POTFILES" $srcdir/configure.ac) > /dev/null || \
(glib-gettextize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`glib' installed."
echo "You can get it from: ftp://ftp.gtk.org/pub/gtk"
DIE=1
}
}
(automake --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`automake' installed."
echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
DIE=1
NO_AUTOMAKE=yes
}
# if no automake, don't bother testing for aclocal
test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: Missing \`aclocal'. The version of \`automake'"
echo "installed doesn't appear recent enough."
echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
if test "$DIE" -eq 1; then
exit 1
fi
if test -z "$*"; then
echo "**Warning**: I am going to run \`configure' with no arguments."
echo "If you wish to pass any to it, please specify them on the"
echo \`$0\'" command line."
echo
fi
case $CC in
xlc )
am_opt=--include-deps;;
esac
for coin in `find $srcdir -path $srcdir/CVS -prune -o -name configure.ac -print`
do
dr=`dirname $coin`
if test -f $dr/NO-AUTO-GEN; then
echo skipping $dr -- flagged as no auto-gen
else
echo processing $dr
( cd $dr
aclocalinclude="$ACLOCAL_FLAGS"
if grep "^AM_GLIB_GNU_GETTEXT" configure.ac >/dev/null; then
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running glib-gettextize... Ignore non-fatal messages."
echo "no" | glib-gettextize --force --copy
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
if grep "^IT_PROG_INTLTOOL" configure.ac >/dev/null; then
echo "Running intltoolize..."
intltoolize --copy --force --automake
fi
if grep "^AM_PROG_XML_I18N_TOOLS" configure.ac >/dev/null; then
echo "Running xml-i18n-toolize..."
xml-i18n-toolize --copy --force --automake
fi
if grep "^LT_INIT" configure.ac >/dev/null; then
if test -z "$NO_LIBTOOLIZE" ; then
echo "Running libtoolize..."
libtoolize --force --copy
fi
fi
echo "Running aclocal $aclocalinclude ..."
aclocal $aclocalinclude
if grep "^A[CM]_CONFIG_HEADER" configure.ac >/dev/null; then
echo "Running autoheader..."
autoheader
fi
echo "Running automake --gnu $am_opt ..."
automake --add-missing --gnu $am_opt
echo "Running autoconf ..."
autoconf
)
fi
done
if test x$NOCONFIGURE = x; then
echo Running $srcdir/configure "$@" ...
$srcdir/configure "$@" \
&& echo Now type \`make\' to compile. || exit 1
else
echo Skipping configure process.
fi
# Using buildout to install glances (thx to Benoit !)
#
# Install system dependancies (debian example with python2.7 pinned from wheezy)
# $ sudo apt-get install build-essential libstatgrab-dev python2.7-dev
#
# Bootstrap buildout
# $ mkdir glances
# $ cd glances
# $ wget http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py
# $ python2.7 bootstrap.py -d
# $ bin/buildout
#
# Run glances !
# $ bin/glances
#
# Note: Having a console script entry point in setup.py will be cleanner that
# defining it in buildout and avoid the dirty extra-path (anyone know a
# cleanner solution ?)
# See http://guide.python-distribute.org/creation.html#entry-points
[buildout]
parts =
pystatgrab-src
pystatgrab-install
glances
include-site-packages = false
allowed-eggs-from-site-packages = false
[config]
glances_version = 1.3.7
pystatgrab_version = 0.5
pystatgrab_download_url = http://ftp.uk.i-scream.org/sites/ftp.i-scream.org/pub/i-scream/pystatgrab
[pystatgrab-src]
recipe = hexagonit.recipe.download
url = ${config:pystatgrab_download_url}/pystatgrab-${config:pystatgrab_version}.tar.gz
[pystatgrab-install]
recipe= iw.recipe.cmd
on_install = true
cmds =
cd ${buildout:directory}/parts/pystatgrab-src/pystatgrab-${config:pystatgrab_version}
${buildout:executable} setup.py install
[glances]
recipe=zc.recipe.egg
extra-paths =
${buildout:eggs-directory}/Glances-${config:glances_version}-py2.7.egg/src/
entry-points = glances=glances:main
eggs =
glances == ${config:glances_version}
pystatgrab == ${config:pystatgrab_version}
/* config.h.in. Generated from configure.ac by autoheader. */
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Version number of package */
#undef VERSION
dnl Process this file with autoconf to produce a configure script.
dnl Created by Anjuta application wizard.
AC_INIT(Glances, 1.3.3, , glances)
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([1.11])
AM_SILENT_RULES([yes])
AM_PATH_PYTHON([2.6])
dnl AX_PYTHON_MODULE([statgrab],[needed])
AC_OUTPUT([
Makefile
src/Makefile
man/Makefile
])
doc/cpu.png

4.6 KB | W: | H:

doc/cpu.png

4.1 KB | W: | H:

doc/cpu.png
doc/cpu.png
doc/cpu.png
doc/cpu.png
  • 2-up
  • Swipe
  • Onion skin
doc/footer.png

5.9 KB | W: | H:

doc/footer.png

2.9 KB | W: | H:

doc/footer.png
doc/footer.png
doc/footer.png
doc/footer.png
  • 2-up
  • Swipe
  • Onion skin
doc/header.png

7.4 KB | W: | H:

doc/header.png

4.1 KB | W: | H:

doc/header.png
doc/header.png
doc/header.png
doc/header.png
  • 2-up
  • Swipe
  • Onion skin
doc/mem.png

8.3 KB | W: | H:

doc/mem.png

7.6 KB | W: | H:

doc/mem.png
doc/mem.png
doc/mem.png
doc/mem.png
  • 2-up
  • Swipe
  • Onion skin
doc/processlist.png

19.5 KB | W: | H:

doc/processlist.png

46.4 KB | W: | H:

doc/processlist.png
doc/processlist.png
doc/processlist.png
doc/processlist.png
  • 2-up
  • Swipe
  • Onion skin
# Spanish translations for GLANCES package.
# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the GLANCES package.
# Peter Fontaine <jeanbob@jeanbob.eu>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: GLANCES 1.3.5\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-01-06 15:20+0100\n"
"PO-Revision-Date: 2012-01-12 19:07+0100\n"
"Last-Translator: Peter Fontaine <jeanbob@jeanbob.eu>\n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/glances.py:42
msgid "Textmode GUI initialization failed, Glances cannot start."
msgstr "Inicialización de la interfaz gráfica de usuario en modo texto imposible. Glances no se puede iniciar."
#: src/glances.py:138
msgid "Error: Can not init the libstatgrab library.\n"
msgstr "Error: No se puede inicio la biblioteca libstatgrab.\n"
#: src/glances.py:316
msgid "Error: Can not init the curses library.\n"
msgstr "Error: No se puede inicio la biblioteca curses.\n"
#: src/glances.py:556
msgid "Glances help (press 'h' to hide)"
msgstr "Ayuda de Glances (prensa 'h' para ocultar)"
#: src/glances.py:557
msgid "'h'\tto display|hide this help message"
msgstr "'h'\tpara mostrar/ocultar la ayuda"
#: src/glances.py:558
msgid "'a'\tto sort processes automatically"
msgstr "'a'\tpara ordonar el proceses automáticamente"
#: src/glances.py:559
msgid "'c'\tto sort processes by CPU consumption"
msgstr "'c'\tpara ordonar el proceses para consumo del CPU"
#: src/glances.py:560
msgid "'d'\tto disable|enable the disk IO stats"
msgstr "'d'\tpara (des)activar estad del ES disco."
#: src/glances.py:561
msgid "'f'\tto disable|enable the file system stats"
msgstr "'f'\tpara (des)activar estad del sis de archivos"
#: src/glances.py:562
msgid "'m'\tto sort processes by process size"
msgstr "'m'\tpara ordonar el procesos para tamaña de proceso "
#: src/glances.py:563
msgid "'n'\tto disable|enable the network interfaces stats"
msgstr "'n'\tpara (des)activar estad del interfaces de red."
#: src/glances.py:564
msgid "'q'\tto exit Glances"
msgstr "'q'\tpara salir Glances"
#: src/glances.py:590
msgid "Glances v"
msgstr "Glances v"
#: src/glances.py:590
msgid " running on "
msgstr " que se ejecutan en "
#: src/glances.py:614
msgid "Cpu"
msgstr ""
#: src/glances.py:616
msgid "User:"
msgstr "Usuario:"
#: src/glances.py:617
msgid "Kernel:"
msgstr "Núcleo"
#: src/glances.py:618
msgid "Nice:"
msgstr ""
#: src/glances.py:619
msgid "Idle:"
msgstr "Ocioso:"
#: src/glances.py:634
msgid "Load"
msgstr "Carga"
#: src/glances.py:635
msgid "-Core"
msgstr "-Núcleo"
#: src/glances.py:636
msgid "1 min:"
msgstr ""
#: src/glances.py:637
msgid "5 mins:"
msgstr ""
#: src/glances.py:638
msgid "15 mins:"
msgstr ""
#: src/glances.py:652
msgid "Mem MB"
msgstr "Mem Mb"
#: src/glances.py:653
msgid "Mem"
msgstr ""
#: src/glances.py:654
msgid "Swap"
msgstr ""
#: src/glances.py:655
msgid "Real"
msgstr ""
#: src/glances.py:656
msgid "Total:"
msgstr ""
#: src/glances.py:657
msgid "Used:"
msgstr "Usado:"
#: src/glances.py:658
msgid "Free:"
msgstr "Libre:"
#: src/glances.py:692
msgid "Net rate"
msgstr "Red ratio"
#: src/glances.py:693
msgid "Rx/ps"
msgstr ""
#: src/glances.py:694
msgid "Tx/ps"
msgstr ""
#: src/glances.py:714
msgid "Disk I/O"
msgstr "ES disco"
#: src/glances.py:715
msgid "In/ps"
msgstr ""
#: src/glances.py:716
msgid "Out/ps"
msgstr ""
#: src/glances.py:737
msgid "Mount"
msgstr "Montaje"
#: src/glances.py:738 src/glances.py:767
msgid "Total"
msgstr ""
#: src/glances.py:739
msgid "Used"
msgstr "Usado"
#: src/glances.py:766
msgid "Process"
msgstr "Proceso"
#: src/glances.py:768
msgid "Running"
msgstr "Funcionar"
#: src/glances.py:769
msgid "Sleeping"
msgstr "Sueño"
#: src/glances.py:770
msgid "Other"
msgstr "Otro"
#: src/glances.py:771
msgid "Number:"
msgstr "Número:"
#: src/glances.py:789
msgid "Size MB"
msgstr "Tamaño Mb"
#: src/glances.py:790
msgid "Res MB"
msgstr "Res Mb"
#: src/glances.py:791
msgid "Name"
msgstr "Designación"
#: src/glances.py:812
msgid " OK "
msgstr " BUENO "
#: src/glances.py:813
msgid "CAREFUL "
msgstr " ATENTO "
#: src/glances.py:814
msgid "WARNING "
msgstr " ALARMA "
#: src/glances.py:815
msgid "CRITICAL"
msgstr "CRÍTICA "
#: src/glances.py:826
msgid "%Y-%m-%d %H:%M:%S"
msgstr "%d.%m.%Y %H:%M:%S"
#: src/glances.py:834
msgid "Glances version "
msgstr ""
#: src/glances.py:839
msgid "Usage: glances.py [-t|--time sec] [-h|--help] [-v|--version]"
msgstr "Utilisation: glances.py [-t|--time sec] [-h|--help] [-v|--version]"
#: src/glances.py:841
msgid "\t-h:\tDisplay the syntax and exit"
msgstr "\t-h:\tMuestra la sintaxis y salir"
#: src/glances.py:842
msgid "\t-t sec:\tSet the refresh time in second default is 1"
msgstr "\t-t sec:\tEstablecer el tiempo de actualización en segundos"
#: src/glances.py:843
msgid "\t-v:\tDisplay the version and exit"
msgstr "\t-v:\tMuestra la versión y salir"
#: src/glances.py:845
msgid "When Glances is running, you can press:"
msgstr "Cuando Glances es ejecutando, puede pulsar:"
#: src/glances.py:846
msgid "'a' to set the automatic mode. The processes are sorted automatically"
msgstr "'a' para establecer el modo automático. Los procesos se ordenan automáticamente"
#: src/glances.py:847
msgid "'c' to sort the processes list by CPU consumption"
msgstr "'c' para ordenar la lista de procesos por el consumo de CPU"
#: src/glances.py:848
msgid "'d' to disable or enable the disk IO stats"
msgstr "'d' para (des)activar las estadísticas del ES disco"
#: src/glances.py:849
msgid "'f' to disable or enable the file system stats"
msgstr "'f' para (des)activar las estadísticas del sistemas de archivos"
#: src/glances.py:850
msgid "'h' to hide or show the help message"
msgstr "'h' para ocultar o mostrar el mensaje de ayuda"
#: src/glances.py:851
msgid "'m' to sort the processes list by process size"
msgstr "'m' para ordenar la lista de procesos por tamaño de proceso"
#: src/glances.py:852
msgid "'n' to disable or enable the network interfaces stats"
msgstr "'n' para (des)activar las estadísticas del interfaces de red"
#: src/glances.py:853
msgid "'q' to exit"
msgstr "'q' para salir"
#: src/glances.py:879
msgid "Error: Refresh time should be a positive non-null integer"
msgstr "Error: tiempo de actualización debe ser un entero positivo no nulo"
# French translations for PACKAGE package
# Traductions françaises du paquet PACKAGE.
# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Peter Fontaine <jeanbob@jeanbob.eu>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-01-06 15:20+0100\n"
"PO-Revision-Date: 2012-01-06 15:23+0100\n"
"Last-Translator: Peter Fontaine <jeanbob@jeanbob.eu>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: src/glances.py:42
msgid "Textmode GUI initialization failed, Glances cannot start."
msgstr "Initialisation de l'interface utilisateur textuel impossible, Glances ne peut être démaré"
#: src/glances.py:138
msgid "Error: Can not init the libstatgrab library.\n"
msgstr "Erreur: Impossible d'initialiser la bibliothèques libstatgrab.\n"
#: src/glances.py:316
msgid "Error: Can not init the curses library.\n"
msgstr "Erreur: Impossible d'initialiser la bibliothèques curses"
#: src/glances.py:556
msgid "Glances help (press 'h' to hide)"
msgstr "Aide Glances (appuyer sur 'h' pour cacher)"
#: src/glances.py:557
msgid "'h'\tto display|hide this help message"
msgstr "'h'\tpour afficher|cacher ce message d'aide"
#: src/glances.py:558
msgid "'a'\tto sort processes automatically"
msgstr "'a'\tpour trier les processus automatiquement"
#: src/glances.py:559
msgid "'c'\tto sort processes by CPU consumption"
msgstr "'c'\tpour trier les processus par consomation du CPU"
#: src/glances.py:560
msgid "'d'\tto disable|enable the disk IO stats"
msgstr "'d'\tpour désactiver|activer les statistiques E/S disque"
#: src/glances.py:561
msgid "'f'\tto disable|enable the file system stats"
msgstr "'f'\tpour désactiver|activer les statistiques du système de fichiers"
#: src/glances.py:562
msgid "'m'\tto sort processes by process size"
msgstr "'m'\tpour trier les processus pas taille"
#: src/glances.py:563
msgid "'n'\tto disable|enable the network interfaces stats"
msgstr "'n'\tpour désactiver|activer les statistiques des interfaces réseaux"
#: src/glances.py:564
msgid "'q'\tto exit Glances"
msgstr "'q'\tpour quitter Glances"
#: src/glances.py:590
msgid "Glances v"
msgstr "Glances v"
#: src/glances.py:590
msgid " running on "
msgstr " en fonction sur "
#: src/glances.py:614
msgid "Cpu"
msgstr "Cpu"
#: src/glances.py:616
msgid "User:"
msgstr "Utilisateur:"
#: src/glances.py:617
msgid "Kernel:"
msgstr "Noyau:"
#: src/glances.py:618
msgid "Nice:"
msgstr ""
#: src/glances.py:619
msgid "Idle:"
msgstr "Repos:"
#: src/glances.py:634
msgid "Load"
msgstr "Charge"
#: src/glances.py:635
msgid "-Core"
msgstr "-Coeurs"
#: src/glances.py:636
msgid "1 min:"
msgstr "1 min:"
#: src/glances.py:637
msgid "5 mins:"
msgstr "5 mins:"
#: src/glances.py:638
msgid "15 mins:"
msgstr "15 mins"
#: src/glances.py:652
msgid "Mem MB"
msgstr "Mem MB"
#: src/glances.py:653
msgid "Mem"
msgstr "Mem"
#: src/glances.py:654
msgid "Swap"
msgstr "Swap"
#: src/glances.py:655
msgid "Real"
msgstr "Réel"
#: src/glances.py:656
msgid "Total:"
msgstr "Total:"
#: src/glances.py:657
msgid "Used:"
msgstr "Utilisé:"
#: src/glances.py:658
msgid "Free:"
msgstr "Libre:"
#: src/glances.py:692
msgid "Net rate"
msgstr "Ratio net"
#: src/glances.py:693
msgid "Rx/ps"
msgstr "Px/ps"
#: src/glances.py:694
msgid "Tx/ps"
msgstr "Tx/ps"
#: src/glances.py:714
msgid "Disk I/O"
msgstr "E/S Disque"
#: src/glances.py:715
msgid "In/ps"
msgstr "In/ps"
#: src/glances.py:716
msgid "Out/ps"
msgstr "Out/ps"
#: src/glances.py:737
msgid "Mount"
msgstr "Montage"
#: src/glances.py:738 src/glances.py:767
msgid "Total"
msgstr "Total"
#: src/glances.py:739
msgid "Used"
msgstr "Utilisé"
#: src/glances.py:766
msgid "Process"
msgstr "Processus"
#: src/glances.py:768
msgid "Running"
msgstr "En marche"
#: src/glances.py:769
msgid "Sleeping"
msgstr "En sommeil"
#: src/glances.py:770
msgid "Other"
msgstr "Autre"
#: src/glances.py:771
msgid "Number:"
msgstr "Nombre:"
#: src/glances.py:789
msgid "Size MB"
msgstr "Taille MB"
#: src/glances.py:790
msgid "Res MB"
msgstr "Res MB"
#: src/glances.py:791
msgid "Name"
msgstr "Nom"
#: src/glances.py:812
msgid " OK "
msgstr " OK "
#: src/glances.py:813
msgid "CAREFUL "
msgstr "CALME "
#: src/glances.py:814
msgid "WARNING "
msgstr "DANGER "
#: src/glances.py:815
msgid "CRITICAL"
msgstr "CRITIQUE"
#: src/glances.py:826
msgid "%Y-%m-%d %H:%M:%S"
msgstr "%d/%m/%Y %H:%M:%S"
#: src/glances.py:834
msgid "Glances version "
msgstr "Version Glances"
#: src/glances.py:839
msgid "Usage: glances.py [-t|--time sec] [-h|--help] [-v|--version]"
msgstr "Utilisation : glances.py [-t|--time sec] [-h|--help] [-v|--version]"
#: src/glances.py:841
msgid "\t-h:\tDisplay the syntax and exit"
msgstr "\t-h:\tAffiche la syntaxe et quitte"
#: src/glances.py:842
msgid "\t-t sec:\tSet the refresh time in second default is 1"
msgstr "\t-t sec:\tFixe le temps de raffraichissement en seconde, 1s par défaut"
#: src/glances.py:843
msgid "\t-v:\tDisplay the version and exit"
msgstr "\t-v:\tAffiche la version et quitte"
#: src/glances.py:845
msgid "When Glances is running, you can press:"
msgstr "Quand Glances fonctionne, vous pouvez appuyer:"
#: src/glances.py:846
msgid "'a' to set the automatic mode. The processes are sorted automatically"
msgstr "'a' pour activer le mode auto. Les processus sont trié automatiquement"
#: src/glances.py:847
msgid "'c' to sort the processes list by CPU consumption"
msgstr "'c' pour trier les processus par consomation CPU"
#: src/glances.py:848
msgid "'d' to disable or enable the disk IO stats"
msgstr "'d' pour désactiver ou activer les statistiques E/S disque"
#: src/glances.py:849
msgid "'f' to disable or enable the file system stats"
msgstr "'f' pour désactiver ou activer les statistiques du système de fichier"
#: src/glances.py:850
msgid "'h' to hide or show the help message"
msgstr "'h' pour cacher ou afficher le message d'aide"
#: src/glances.py:851
msgid "'m' to sort the processes list by process size"
msgstr "'m' pour trier les processus par taille"
#: src/glances.py:852
msgid "'n' to disable or enable the network interfaces stats"
msgstr "'n' pour désactiver ou activer les statistiques réseaux"
#: src/glances.py:853
msgid "'q' to exit"
msgstr "'q' pour quitter"
#: src/glances.py:879
msgid "Error: Refresh time should be a positive non-null integer"
msgstr "Erreur: Le temps de raffraichissement doit être un entier positif non nul"
#!/bin/bash
### Generating Spanish Locale
echo "Para instalar correctamente la traducción española,\n"
echo "debe ejecutar este script como root o con sudo.\n"
echo "\n\n"
echo "Traducción de JeanBoB <jeanbob@jeanbob.eu>\n\n"
echo "Generación del idioma española...\n"
msgfmt i18n/es/LC_MESSAGES/glances.po -o i18n/es/LC_MESSAGES/glances.mo
echo "Instalación en el siguiente directorio: /usr/share/locale/es/LC_MESSAGES/\n"
cp i18n/es/LC_MESSAGES/glances.mo /usr/share/locale/es/LC_MESSAGES/glances.mo
echo "¡Instalación terminado!\n\n"
\ No newline at end of file
#!/bin/bash
### Generating French Locale
echo "Pour réussir l'installation de la localisation française,\n"
echo "vous devez executer ce script sous l'utilisateur root ou avec sudo.\n"
echo "\n\n"
echo "Traduction par JeanBoB <jeanbob@jeanbob.eu>\n\n"
echo "Genération de la langue française...\n"
msgfmt i18n/fr/LC_MESSAGES/glances.po -o i18n/fr/LC_MESSAGES/glances.mo
echo "Installation dans le répertoire /usr/share/locale/fr/LC_MESSAGES/\n"
cp i18n/fr/LC_MESSAGES/glances.mo /usr/share/locale/fr/LC_MESSAGES/glances.mo
echo "Installation terminée\n\n"
\ No newline at end of file
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_python_module.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_PYTHON_MODULE(modname[, fatal])
#
# DESCRIPTION
#
# Checks for Python module.
#
# If fatal is non-empty then absence of a module will trigger an error.
#
# LICENSE
#
# Copyright (c) 2008 Andrew Collier <colliera@ukzn.ac.za>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 5
AU_ALIAS([AC_PYTHON_MODULE], [AX_PYTHON_MODULE])
AC_DEFUN([AX_PYTHON_MODULE],[
if test -z $PYTHON;
then
PYTHON="python"
fi
PYTHON_NAME=`basename $PYTHON`
AC_MSG_CHECKING($PYTHON_NAME module: $1)
$PYTHON -c "import $1" 2>/dev/null
if test $? -eq 0;
then
AC_MSG_RESULT(yes)
eval AS_TR_CPP(HAVE_PYMOD_$1)=yes
else
AC_MSG_RESULT(no)
eval AS_TR_CPP(HAVE_PYMOD_$1)=no
#
if test -n "$2"
then
AC_MSG_ERROR(failed to find required module $1)
exit 1
fi
fi
])
man_MANS = glances.1
......@@ -2,14 +2,14 @@
.SH NAME
glances \- CLI curses based monitoring tool
.SH SYNOPSIS
.B glances
.B glances
[\-h] [\-t refresh] [\-v]
.SH DESCRIPTION
Glances is a free (LGPL) curses-based monitoring tool which aims to present a maximum of information
in a minimum of space, ideally to fit in a classical 80x24 terminal. Glances can adapt dynamicaly the
displayed informations depending on the terminal size.
.PP
This tool is written in Python and uses pystatgrab to fetch the statistical values from key elements.
This tool is written in Python and uses PsUtil to fetch the statistical values from key elements.
.PP
You can use the following keys to sort the processesi list:
.PP
......@@ -31,7 +31,7 @@ You can use the following keys to sort the processesi list:
.PP
'q' Exit
.PP
The current version grab the following stats: CPU, Load, Memory, Network rate, Disk IO, file system,
The current version grab the following stats: CPU, Load, Memory, Network rate, Disk IO, file system,
process number and details.
.SH OPTIONS
.TP
......@@ -53,6 +53,6 @@ Refresh information every 5 seconds:
.SH EXIT STATUS
glances returns a zero exit status if it succeeds to print/grab information.
.PP
It returns 2 if it fails to parse its options (missing arguments, invalid value, etc).
It returns 2 if it fails to parse its options (missing arguments, invalid value, etc).
.SH AUTHOR
Glances is written by Nicolargo (contact@nicolargo.com).
screenshot.png

100.2 KB | W: | H:

screenshot.png

139.7 KB | W: | H:

screenshot.png
screenshot.png
screenshot.png
screenshot.png
  • 2-up
  • Swipe
  • Onion skin
#!/usr/bin/env python
import os
from distutils.core import setup
from glob import glob
from os.path import dirname
# Utility function to read the README file.
# Used for the long_description. It's nice, because now 1) we have a top level
# README file and 2) it's easier to type in the README file than to put a raw
# string in below ...
def read(fname):
return open(os.path.join(os.path.dirname(__file__), fname)).read()
from setuptools import setup
setup( name='Glances',
version='1.3.7',
download_url='https://github.com/downloads/nicolargo/glances/glances-1.3.7.tar.gz',
url='https://github.com/nicolargo/glances',
description='CLI curses-based monitoring tool',
author='Nicolas Hennion',
author_email='nicolas@nicolargo.com',
license = "LGPL",
keywords = "cli curse monitoring system",
long_description=read('README'),
packages=['src'],
install_requires=['pystatgrab>=0.5']
data_files = [
('share/man/man1', ['man/glances.1']),
('share/doc/glances', ['README',
'README-fr',
'COPYING',
'AUTHORS',
'ChangeLog',
'NEWS',
'screenshot.png']),
('share/doc/glances/doc', glob('doc/*.png')),
('share/glances/html', glob('src/html/*.html')),
('share/glances/html/css', glob('src/css/*.css')),
('share/glances/html/img', glob('src/img/*.png')),
]
for mo in glob('i18n/*/LC_MESSAGES/*.mo'):
data_files.append((dirname(mo).replace('i18n/', 'share/locale/'), [mo]))
setup(name='Glances',
version='1.4',
download_url='https://github.com/downloads/nicolargo/glances/glances-1.4.tar.gz',
url='https://github.com/nicolargo/glances',
description='CLI curses-based monitoring tool',
author='Nicolas Hennion',
author_email='nicolas@nicolargo.com',
license="LGPL",
keywords="cli curses monitoring system",
long_description=open('README').read(),
install_requires=['psutil>=0.4.1'],
packages=['glances'],
extras_require = {
'HTML': ['jinja2>=2.0'],
},
include_package_data=True,
data_files=data_files,
entry_points={"console_scripts": ["glances = glances.glances:main"]},
)
## Process this file with automake to produce Makefile.in
## Created by Anjuta
## The main script
bin_SCRIPTS = glances.py
## Directory where .class files will be installed
glancesdir = $(pythondir)/glances
glances_PYTHON = \
glances.py
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = src
DIST_COMMON = $(glances_PYTHON) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(glancesdir)"
SCRIPTS = $(bin_SCRIPTS)
AM_V_GEN = $(am__v_GEN_$(V))
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
am__v_GEN_0 = @echo " GEN " $@;
AM_V_at = $(am__v_at_$(V))
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
am__v_at_0 = @
SOURCES =
DIST_SOURCES =
py_compile = $(top_srcdir)/py-compile
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PYTHON = @PYTHON@
PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
am__leading_dot = @am__leading_dot@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
pkgpyexecdir = @pkgpyexecdir@
pkgpythondir = @pkgpythondir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
pyexecdir = @pyexecdir@
pythondir = @pythondir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
bin_SCRIPTS = glances.py
glancesdir = $(pythondir)/glances
glances_PYTHON = \
glances.py
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n' \
-e 'h;s|.*|.|' \
-e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) { files[d] = files[d] " " $$1; \
if (++n[d] == $(am__install_max)) { \
print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
else { print "f", d "/" $$4, $$1 } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binSCRIPTS:
@$(NORMAL_UNINSTALL)
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 's,.*/,,;$(transform)'`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
install-glancesPYTHON: $(glances_PYTHON)
@$(NORMAL_INSTALL)
test -z "$(glancesdir)" || $(MKDIR_P) "$(DESTDIR)$(glancesdir)"
@list='$(glances_PYTHON)'; dlist=; list2=; test -n "$(glancesdir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
if test -f $$b$$p; then \
$(am__strip_dir) \
dlist="$$dlist $$f"; \
list2="$$list2 $$b$$p"; \
else :; fi; \
done; \
for file in $$list2; do echo $$file; done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(glancesdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(glancesdir)" || exit $$?; \
done || exit $$?; \
if test -n "$$dlist"; then \
if test -z "$(DESTDIR)"; then \
PYTHON=$(PYTHON) $(py_compile) --basedir "$(glancesdir)" $$dlist; \
else \
PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(glancesdir)" $$dlist; \
fi; \
else :; fi
uninstall-glancesPYTHON:
@$(NORMAL_UNINSTALL)
@list='$(glances_PYTHON)'; test -n "$(glancesdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
filesc=`echo "$$files" | sed 's|$$|c|'`; \
fileso=`echo "$$files" | sed 's|$$|o|'`; \
echo " ( cd '$(DESTDIR)$(glancesdir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(glancesdir)" && rm -f $$files || exit $$?; \
echo " ( cd '$(DESTDIR)$(glancesdir)' && rm -f" $$filesc ")"; \
cd "$(DESTDIR)$(glancesdir)" && rm -f $$filesc || exit $$?; \
echo " ( cd '$(DESTDIR)$(glancesdir)' && rm -f" $$fileso ")"; \
cd "$(DESTDIR)$(glancesdir)" && rm -f $$fileso
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(SCRIPTS)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(glancesdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-glancesPYTHON
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binSCRIPTS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binSCRIPTS uninstall-glancesPYTHON
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic distclean \
distclean-generic distdir dvi dvi-am html html-am info info-am \
install install-am install-binSCRIPTS install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-glancesPYTHON install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
uninstall-binSCRIPTS uninstall-glancesPYTHON
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
/*
Reset the sheet
*/
* { margin: 0; padding: 0; }
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; }
[hidden] { display: none; }
/*
Colors table
* bg: background color
* fg: foreground color
*/
.bgmain { background: transparent; }
.fgmain { color: #FFFFFF; }
.bghost { background: transparent; }
.fghost { color: #E3D7BF; font-size: 50px; text-shadow: 1px 1px 1px #e88860, 2px 2px 1px #e88860, 3px 3px 1px #e88860, 3px 3px 1px #0c0d0d, 4px 4px 3px #0c0d0d;}
.bgsystem { background: transparent; }
.fgsystem { color: #E88860; text-shadow: 1px 1px 1px #000; }
.bgcpu { background: transparent; }
.fgcpu { color: #3C8AAD; }
.bgload { background: transparent; }
.fgload { color: #3C8AAD; }
.bgmem { background: transparent; }
.fgmem { color: #3C8AAD; }
.bgnet { background: transparent; }
.fgnet { color: #3C8AAD; }
.bgdiskio { background: transparent; }
.fgdiskio { color: #3C8AAD; }
.bgfs { background: transparent; }
.fgfs { color: #3C8AAD; }
.bgproc { background: transparent; }
.fgproc { color: #3C8AAD; }
.bgcdefault { background: transparent; }
.fgcdefault { color: #FFFFFF; }
.bgcok { background: #60AC39; }
.fgcok { color: #FFFFFF; }
.bgccareful { background: #6039AC; }
.fgccareful { color: #FFFFFF; }
.bgcwarning { background: #FFAA00; }
.fgcwarning { color: #FFFFFF; }
.bgcritical { background: #D92626; }
.fgcritical { color: #FFFFFF; }
/*
Main
*/
html {
background-image: url('../img/bg.png');
font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;
}
html, button, input, select, textarea { font-family: sans-serif; }
body { margin: 0; font-size: 1em; line-height: 1.4; }
::-moz-selection { background: #fe57a1; color: #fff; text-shadow: none; }
::selection { background: #fe57a1; color: #fff; text-shadow: none; }
/* Tables */
table{
font-family: 'Trebuchet MS', sans-serif;
font-size: 14px;
font-weight: bold;
font-style: normal;
border-collapse: separate;
}
thead th{
padding:5px;
border:1px solid #3C8AAD;
-webkit-border-top-left-radius:5px;
-webkit-border-top-right-radius:5px;
-moz-border-radius:5px 5px 0px 0px;
border-top-left-radius:5px;
border-top-right-radius:5px;
}
thead th:empty{
background:transparent;
border:none;
}
tfoot td{
font-size:16px;
text-align:center;
padding:10px 0px;
}
tfoot th{
}
tbody td{
width:80px;
padding:5px;
text-align:center;
border:1px solid #3C8AAD;
-moz-border-radius:2px;
-webkit-border-radius:2px;
border-radius:2px;
}
#item{
width:60px;
border:none;
text-align:right;
color: #8cf;
}
#command{
width:240px;
font-size:11px;
text-align:left;
color: #8cf;
}
/* Header */
header {
text-align: center;
margin-bottom: 25px;
}
/* Main */
#main {
text-align: center;
}
#firstline, #secondline {
margin: 0 auto;
}
#secondline {
display: inline-block;
vertical-align: top;
margin-top: 20px;
}
#sideleft {
width: 310px;
float: left;
margin-right: 25px;
}
#sideright {
width: 550px;
float: left;
}
#cpu, #load, #mem, #net, #diskio, #fs {
display: inline-block;
vertical-align: middle;
}
#cpu, #load {
margin-right: 50px;
}
#diskio, #fs {
margin-top: 25px;
}
#proclist {
margin-top: 50px;
}
/* Footer */
footer {
clear: both;
margin: 20px 0px 10px 0px;
text-align: center;
}
footer a {
color: white;
}
此差异已折叠。
<!doctype html>
<html>
<head>
{% block head %}
<meta charset="utf-8">
<title>{% block title %}Glances{% endblock %}</title>
<link rel="stylesheet" href="{% block css %}css/base.css{% endblock %}">
{% endblock %}
<meta http-equiv="refresh" content="{{ refresh }}" />
</head>
<body class="bgmain fgmain">
<header>
{% block header %}{% endblock %}
</header>
<section id="main">
<section id="firstline">
<article id="cpu">
{% block cpu %}{% endblock %}
</article>
<article id="load">
{% block load %}{% endblock %}
</article>
<article id="mem">
{% block mem %}{% endblock %}
</article>
</section>
<section id="secondline">
<section id="sideleft">
<article id="net">
{% block net %}{% endblock %}
</article>
<article id="diskio">
{% block diskio %}{% endblock %}
</article>
<article id="fs">
{% block fs %}{% endblock %}
</article>
</section>
<section id="sideright">
<article id="proccount">
{% block proccount %}{% endblock %}
</article>
<article id="proclist">
{% block proclist %}{% endblock %}
</article>
</section>
</section>
</section>
<footer>
{% block footer %}{% endblock %}
</footer>
</body>
</html>
{% extends "base.html" %}
{% block css %}css/default.css{% endblock %}
{% block header %}
<h1 class="bghost fghost">Glances running on {{ host.hostname }}</h1>
<h2 class="bgsystem fgsystem">{{ system.os_name }} {{ system.platform }} {{ system.os_version }}</h2>
{% endblock %}
{% block cpu %}
{% if cpu is defined %}
<table>
<thead>
<tr>
<th scope="col" class="bgcpu fgcpu"></th>
<th scope="col" class="bgcpu fgcpu">Cpu <small>{{ (cpu.user + cpu.kernel + cpu.nice)|round(1) }}%</small></th>
</tr>
</thead>
<tbody>
<tr>
<td class="bgcpu fgcpu">User</td>
<td class="{{ cpu.user_color }}">{{ cpu.user|round(1) }}</td>
</tr>
<tr>
<td class="bgcpu fgcpu">Kernel</td>
<td class="{{ cpu.kernel_color }}">{{ cpu.kernel|round(1) }}</td>
</tr>
<tr>
<td class="bgcpu fgcpu">Nice</td>
<td class="{{ cpu.nice_color }}">{{ cpu.nice|round(1) }}</td>
</tr>
</tbody>
</table>
{% endif %}
{% endblock %}
{% block load %}
{% if (load is defined) and (core is defined) %}
<table>
<thead>
<tr>
<th scope="col" class="bgload fgload"></th>
<th scope="col" class="bgload fgload">Load <small>{{ core }}-Core</small></th>
</tr>
</thead>
<tbody>
<tr>
<td class="bgload fgload">1 min</td>
<td class="{{ load.min1_color }}">{{ load.min1|round(2) }}</td>
</tr>
<tr>
<td class="bgload fgload">5 mins</td>
<td class="{{ load.min5_color }}">{{ load.min5|round(2) }}</td>
</tr>
<tr>
<td class="bgload fgload">15 mins</td>
<td class="{{ load.min15_color }}">{{ load.min15|round(2) }}</td>
</tr>
</tbody>
</table>
{% endif %}
{% endblock %}
{% block mem %}
{% if (mem is defined) and (memswap is defined) %}
<table>
<thead>
<tr>
<th scope="col" class="bgmem fgmem"></th>
<th scope="col" class="bgmem fgmem">Mem</th>
<th scope="col" class="bgmem fgmem">Swap</th>
<th scope="col" class="bgmem fgmem">Real</th>
</tr>
</thead>
<tbody>
<tr>
<td class="bgmem fgmem">Total</td>
<td>{{ mem.total|filesizeformat(binary = true) }}</td>
<td>{{ memswap.total|filesizeformat(binary = true) }}</td>
<td></td>
</tr>
<tr>
<td class="bgmem fgmem">Used</td>
<td>{{ mem.used|filesizeformat(binary = true) }}</td>
<td class="{{ memswap.used_color }}">{{ memswap.used|filesizeformat(binary = true) }}</td>
<td class="{{ mem.used_color }}">{{ (mem.used-mem.cache)|filesizeformat(binary = true) }}</td>
</tr>
<tr>
<td class="bgmem fgmem">Free</td>
<td>{{ mem.free|filesizeformat(binary = true) }}</td>
<td>{{ memswap.free|filesizeformat(binary = true) }}</td>
<td>{{ (mem.free+mem.cache)|filesizeformat(binary = true) }}</td>
</tr>
</tbody>
</table>
{% endif %}
{% endblock %}
{% block net %}
{% if net is defined %}
<table >
<thead>
<tr>
<th scope="col" class="bgnet fgnet"></th>
<th scope="col" class="bgnet fgnet">Net Rx &darr;</th>
<th scope="col" class="bgnet fgnet">Net TX &uarr;</th>
</tr>
</thead>
<tbody>
{% for interface in net %}
<tr>
<td id="item">{{ interface.interface_name }}</td>
{% if interface.rx == 0 %}
<td>0</td>
{% else %}
<td>{{ (interface.rx*8)|filesizeformat(binary = true)|replace("Bytes", "bps")|replace("Byte", "bps")|replace("iB", "bps") }}</td>
{% endif %}
{% if interface.tx == 0 %}
<td>0</td>
{% else %}
<td>{{ (interface.tx*8)|filesizeformat(binary = true)|replace("Bytes", "bps")|replace("Byte", "bps")|replace("iB", "bps") }}</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% endblock %}
{% block diskio %}
{% if diskio is defined %}
<table >
<thead>
<tr>
<th scope="col" class="bgdiskio fgdiskio"></th>
<th scope="col" class="bgdiskio fgdiskio">Disk Write &darr;</th>
<th scope="col" class="bgdiskio fgdiskio">Disk Read &uarr;</th>
</tr>
</thead>
<tbody>
{% for disk in diskio %}
<tr>
<td id="item">{{ disk.disk_name }}</td>
<td>{{ disk.write_bytes|filesizeformat(binary = true) }}</td>
<td>{{ disk.read_bytes|filesizeformat(binary = true) }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% endblock %}
{% block fs %}
{% if fs is defined %}
<table >
<thead>
<tr>
<th scope="col" class="bgdiskio fgdiskio"></th>
<th scope="col" class="bgdiskio fgdiskio">FS Size</th>
<th scope="col" class="bgdiskio fgdiskio">FS Used</th>
</tr>
</thead>
<tbody>
{% for mount in fs %}
<tr>
<td id="item">{{ mount.mnt_point }}</td>
<td>{{ mount.size|filesizeformat(binary = true) }}</td>
<td class="{{ mount.used_color }}">{{ mount.used|filesizeformat(binary = true) }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% endblock %}
{% block proccount %}
{% if (proccount is defined) %}
<table>
<thead>
<tr>
<th scope="col" class="bgproc fgproc"></th>
<th scope="col" class="bgproc fgproc">Total</th>
<th scope="col" class="bgproc fgproc">Running</th>
<th scope="col" class="bgproc fgproc">Sleep</th>
<th scope="col" class="bgproc fgproc">Other</th>
</tr>
</thead>
<tbody>
<tr>
<td id="item">Process</td>
<td>{{ proccount.total }}</td>
<td>{{ proccount.running }}</td>
<td>{{ proccount.sleeping }}</td>
<td>{{ proccount.total-proccount.running-proccount.sleeping }}</td>
</tr>
</tbody>
</table>
{% endif %}
{% endblock %}
{% block proclist %}
{% if proclist is defined %}
<table >
<thead>
<tr>
<th scope="col" class="bgproc fgproc">CPU %</th>
<th scope="col" class="bgproc fgproc">Mem virt.</th>
<th scope="col" class="bgproc fgproc">Mem resi.</th>
<th scope="col" class="bgproc fgproc">Command</th>
</tr>
</thead>
<tbody>
{% for proc in proclist %}
{% if loop.index > 10 %}
{% break %}
{% endif %}
<tr>
<td>{{ proc.cpu_percent }}</td>
<td>{{ proc.proc_size|filesizeformat(binary = true) }}</td>
<td>{{ proc.proc_resident|filesizeformat(binary = true) }}</td>
<td id="command">{{ proc.proc_name|truncate(40, killwords=True) }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% endblock %}
{% block footer %}
<p>Powered by <a href="https://github.com/nicolargo/glances">Glances</a></p>
{% endblock %}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册