Apache
Ligne 493 : | Ligne 493 : | ||
Relancer Apache pour prise en compte des modifications : | Relancer Apache pour prise en compte des modifications : | ||
httpd -k graceful | httpd -k graceful | ||
+ | |||
+ | ==Analyse== | ||
+ | Pour afficher la consommation de mémoire des différents processus Apache, lancer la commande : | ||
+ | ps -ylC httpd --sort:rss | ||
+ | |||
+ | Dans la colonne ''RSS'' (Resident Set Size) s'affiche la mémoire vive (RAM) consommée en kilo-octets. | ||
+ | |||
+ | <u>Exemple :</u> | ||
+ | <pre> | ||
+ | [root@myserver:/root] > ps -ylC httpd --sort:rss | ||
+ | S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD | ||
+ | S 0 24504 1 0 80 0 22200 64042 - ? 00:00:01 httpd | ||
+ | S 1001 15029 24504 17 80 0 619944 566892 pipe_w ? 00:00:20 httpd | ||
+ | S 1001 15062 24504 31 80 0 707636 583390 pipe_w ? 00:00:37 httpd | ||
+ | S 1001 15034 24504 25 80 0 713068 583304 pipe_w ? 00:00:30 httpd | ||
+ | S 1001 15113 24504 34 80 0 719964 583380 pipe_w ? 00:00:39 httpd | ||
+ | </pre> |
Version du 10 janvier 2020 à 16:35
Sommaire
Présentation
Cette page a pour objet de lister les gestes techniques liées au serveur web Apache.
Plus d'informations sur le site de l'éditeur :
- Apache 2.2 : http://httpd.apache.org/docs/2.2/fr/
- Apache 2.4 : http://httpd.apache.org/docs/2.4/fr/
Administration simple
Localisation de la commande Apache
Pour identifier où est localisée la commande httpd
, lancer la commande suivante :
find /local/www -name httpd
Exemple de retour :
/local/www/2.4.12/bin/httpd
Pour ajouter la commande dans le PATH afin de ne pas à avoir la chercher à chaque fois, créer un fichier /etc/profile/httpd.sh
et y ajouter le contenu suivant :
PATH=$PATH:/local/www/2.4.12/bin
Enregistrer le fichier. Le sourcer pour une prise en compte immédiate avec la commande :
. /etc/profile/httpd.sh
Le binaire httpd
est désormais dans le PATH. Pour le vérifier, taper :
which httpd
Exemple de retour :
/local/www/2.4.12/bin/httpd
Gestion du processus Apache
Démarrer Apache :
httpd -k start
Arrêter Apache subitement :
httpd -k stop
Arrêter Apache proprement :
httpd -k graceful-stop
Redémarrer Apache subitment :
httpd -k restart
Redémarrer Apache proprement :
httpd -k graceful
Afficher les vhosts configurés et la configuration en cours :
httpd -S
Afficher les modules chargés :
httpd -M
Vérifier la syntax du/des fichier(s) de configuration :
httpd -t
Gestion des logs
Log par proxy
Pour logger les adresses IP distantes, qui passent par un proxy donc, il faut ajouter la directive suivante dans le fichier /local/www/current/conf/httpd.conf
dans la section log_config_module
:
<IfModule log_config_module>
...
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule proxy_module>
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
</IfModule>
<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
...
</IfModule>
Cette ligne permet de déclarer un format de log spécifique, nommé proxy
. La variable %{X-Forwarded-For}i
représente l'adresse IP distante qui a envoyé la requête au proxy.
Une fois ce format déclaré, il faut l'appliquer aux requêtes "proxyfiées". Pour ce faire, dans la section VirtualHost
correspond à l'application à logger, il faut ajouter/modifier les lignes suivantes :
<VirtualHost *:80>
...
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
CustomLog "|/usr/sbin/rotatelogs -n 5 /data/logs/${url_app}/${url_app}_http_access.log 10M" proxy env=forwarded
CustomLog "|/usr/sbin/rotatelogs -n 5 /data/logs/${url_app}/${url_app}_http_access.log 10M" combined env=!forwarded
ErrorLog "|/usr/sbin/rotatelogs -n 5 /data/logs/${url_app}/${url_app}_http_error.log 10M"
...
</VirtualHost>
La directive SetEnvIf
permet de définir une variable forwarded
uniquement si un en-tête X-Forwarded-For
est déclaré dans la requête et qu'il respecte l'expression régulière ^.*\..*\..*\..*
. Plus d'informations sur la documentation officielle d'Apache sur la directive SetEnvIf.
La partie proxy env=forwarded
indique d'utiliser le format de log proxy
dans le cas ou la variable forwarded
existe.
La partie combined env=!forwarded
indique d'utiliser le format de log combined
dans le cas ou la variable forwarded
n'existe pas.
Rotation des logs
Il est possible d'intégrer une rotation des logs directement dans la configuration Apache.
Pour ce faire, il faut avant tout localiser la commande rotatelogs sur le serveur dans le dossier des binaires d'Apache avec la commande suivante :
find /local/www/current -name rotatelogs
Exemple de retour :
/local/www/current/bin/rotatelogs
Une fois la commande localisée, adapter la déclaration des fichiers de logs dans la configuration Apache.
Exemple de configuration de rotation de logs :
<VirtualHost *:80>
ServerName pprd-appli.mydomain.com
DocumentRoot "/data/www/PREPROD/appli/"
ErrorLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
CustomLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
LogLevel debug
<Directory "/data/www/PREPROD/appli/">
DirectoryIndex index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Les logs sont paramétrés pour ne tourner que sur 15 fichiers d'une taille maximale de 10M.
Plus d'informations sur la documentation officielle d'Apache : https://httpd.apache.org/docs/2.4/fr/programs/rotatelogs.html.
Configuration modèle
Voici un modèle de configuration Apache s'appuyant sur des variables de configuration (grâce à Define et UnDefine) dont il est possible de s'inspirer pour chaque nouveau vhost :
Exemple Hors Prod
Define app_name appli.mydomain.com
# Appli de développement
<VirtualHost *:80>
Define url_app dev-${app_name}
ServerName ${url_app}
DocumentRoot "/data/www/DEV/appli/public"
ErrorLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
CustomLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
LogLevel debug
php_flag log_errors on
php_flag display_errors off
# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
# More information on https://www.php.net/manual/fr/errorfunc.constants.php
php_value error_reporting "8"
php_value error_log /data/logs/${app_name}/${url_app}_php_error.log
<Directory "/data/www/DEV/appli/public">
DirectoryIndex index.html index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
UnDefine url_app
</VirtualHost>
# Appli d'intégration
<VirtualHost *:80>
Define url_app int-${app_name}
ServerName ${url_app}
DocumentRoot "/data/www/INT/appli/public"
ErrorLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
CustomLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
LogLevel debug
php_flag log_errors on
php_flag display_errors off
# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
# More information on https://www.php.net/manual/fr/errorfunc.constants.php
php_value error_reporting "8"
php_value error_log /data/logs/${app_name}/${url_app}_php_error.log
<Directory "/data/www/INT/appli/public">
DirectoryIndex index.html index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
UnDefine url_app
</VirtualHost>
# Appli de recette
<VirtualHost *:80>
Define url_app rec-${app_name}
ServerName ${url_app}
DocumentRoot "/data/www/REC/appli/public"
ErrorLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
CustomLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
LogLevel debug
php_flag log_errors on
php_flag display_errors off
# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
# More information on https://www.php.net/manual/fr/errorfunc.constants.php
php_value error_reporting "8"
php_value error_log /data/logs/${app_name}/${url_app}_php_error.log
<Directory "/data/www/REC/appli/public">
DirectoryIndex index.html index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
UnDefine url_app
</VirtualHost>
# Appli de préproduction
<VirtualHost *:80>
Define url_app pprd-${app_name}
ServerName ${url_app}
DocumentRoot "/data/www/PREPROD/appli/public"
ErrorLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
CustomLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
LogLevel debug
php_flag log_errors on
php_flag display_errors off
# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
# More information on https://www.php.net/manual/fr/errorfunc.constants.php
php_value error_reporting "8"
php_value error_log /data/logs/${app_name}/${url_app}_php_error.log
<Directory "/data/www/PREPROD/current/public">
DirectoryIndex index.html index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
UnDefine url_app
</VirtualHost>
UnDefine app_name
Penser à créer les dossiers /data/logs/${app_name}
et fichiers de logs associés /data/logs/${app_name}/${url_app}_*
:
Exemple pour l'application myapp.jordan-lenuff.com sur le serveur hors production :
mkdir -p /data/logs/myapp.jordan-lenuff.com touch /data/logs/myapp.jordan-lenuff.com/{dev,rec,int,pprd}-myapp.jordan-lenuff.com_{http_{error,access},php_error}.log chown -R www:www /data/logs/myapp.jordan-lenuff.com
Exemple Production
Define app_name myapp.jordan-lenuff.com
# Instance de production
<VirtualHost *:80>
Define url_app ${app_name}
ServerName ${url_app}
DocumentRoot "/data/www/appli/public"
ErrorLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
CustomLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
LogLevel debug
php_flag log_errors on
php_flag display_errors off
# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
# More information on https://www.php.net/manual/fr/errorfunc.constants.php
php_value error_reporting "8"
php_value error_log /data/logs/${app_name}/${url_app}_php_error.log
<Directory "/data/www/appli/public">
DirectoryIndex index.html index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
UnDefine url_app
</VirtualHost>
UnDefine app_name
Penser à créer les dossier /data/logs/${app_name}
et fichiers de logs associés /data/logs/${app_name}/${url_app}_*
:
Exemple pour l'application myapp.jordan-lenuff.com sur le serveur de production :
mkdir -p /data/logs/myapp.jordan-lenuff.com touch /data/logs/myapp.jordan-lenuff.com/myapp.jordan-lenuff.com_{http_error.log,http_access.log,php_error.log} chown -R www:www /data/logs/myapp.jordan-lenuff.com
Mise en oeuvre
Par exemple, pour le site de développement de myapp.jordan-lenuff.com, il va falloir :
- créer le dossier
/data/www/DEV/myapp.jordan-lenuff.com
- créer le dossier de log
/data/logs/myapp.jordan-lenuff.com
- créer les fichiers de logs http_access.log, http_error.log et php_error.log
- créer le fichier de configuration
/local/www/current/conf/vhosts/myapp.jordan-lenuff.com.conf
Dans la pratique, cela donnera les commandes suivantes :
mkdir -p /data/www/DEV/myapp.jordan-lenuff.com chown www:www /data/www/DEV/myapp.jordan-lenuff.com mkdir -p /data/logs/myapp.jordan-lenuff.com touch /data/logs/myapp.jordan-lenuff.com/myapp.jordan-lenuff.com_{http_{access,error},php_error}.log chown -R www:www /data/logs/myapp.jordan-lenuff.com vi /local/www/current/conf/vhosts/myapp.jordan-lenuff.com
dont le contenu du fichier /local/www/current/conf/vhosts/myapp.jordan-lenuff.com.conf
sera le suivant :
Define app_name myapp.jordan-lenuff.com
# Instance de développement
<VirtualHost *:80>
Define url_app dev-${app_name}
ServerName ${url_app}
DocumentRoot "/data/www/DEV/myapp.jordan-lenuff.com"
ErrorLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
CustomLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
LogLevel debug
php_flag log_errors on
php_flag display_errors off
# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
# More information on https://www.php.net/manual/fr/errorfunc.constants.php
php_value error_reporting "8"
php_value error_log /data/logs/${app_name}/${url_app}_php_error.log
<Directory "/data/www/DEV/myapp.jordan-lenuff.com">
DirectoryIndex index.html index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
UnDefine url_app
</VirtualHost>
UnDefine app_name
Configuration exemple SSL
Define app_name myapp.jordan-lenuff.com
# Instance de développement
<VirtualHost *:443>
Define url_app dev-${app_name}
ServerName ${url_app}
DocumentRoot "/data/www/DEV/myapp.jordan-lenuff.com"
ErrorLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
CustomLog "|/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/${app_name}/${url_app}_http_ssl.log 10M" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
LogLevel warn
php_flag log_errors on
php_flag display_errors off
# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
# More information on https://www.php.net/manual/fr/errorfunc.constants.php
php_value error_reporting "8"
php_value error_log /data/logs/${app_name}/${url_app}_php_error.log
SSLEngine on
SSLCertificateFile /etc/ssl/private/dev/${app_name}.crt
SSLCertificateKeyFile /etc/ssl/private/dev/${app_name}.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/local/www/v2.4.34/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
<Directory "/data/www/DEV/myapp.jordan-lenuff.com">
DirectoryIndex index.php
Options FollowSymLinks Indexes MultiViews
AllowOverride All
Require all granted
</Directory>
UnDefine url_app
</VirtualHost>
UnDefine app_name
Autoriser plusieurs dossiers
Dans le cas où il n'est pas envisageable de modifier la configuration Apache à chaque création d'un nouveau dossier, il est possible de donner accès à des dossiers correspondant à une expression régulière (voir la documentation à propos de la directive Directory). Voici un exemple :
# Appli de recette
<VirtualHost *:80>
ServerAdmin mymail@mydomain.com
DocumentRoot "/data/www/REC"
ServerName rec-appli.mydomain.com
RewriteEngine On
ErrorLog "|/usr/sbin/rotatelogs -n 5 /data/logs/rec-appli.mydomain.com_http_error.log 10M"
CustomLog "|/usr/sbin/rotatelogs -n 5 /data/logs/rec-appli.mydomain.com_http_access.log 10M" combined
php_flag log_errors on
php_flag display_errors off
# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
# More information on https://www.php.net/manual/fr/errorfunc.constants.php
php_value error_reporting "8"
php_value error_log /data/logs/rec-appli.mydomain.com_php_error.log
LogLevel debug
<Directory ~ "/data/www/REC/appli.*">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from All
</Directory>
</VirtualHost>
Dans cet exemple, seuls les dossiers commençant par /data/www/REC/appli
seront publiés.
Activer une page de maintenance
Dans le DOCUMENT_ROOT
du site publié par Apache, ajouter dans un fichier .htaccess
les lignes suivantes :
RewriteEngine On
# The following lines enables maintenance mode if
# a maintenance.enable file is found
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f
RewriteCond %{DOCUMENT_ROOT}/maintenance.enable -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.php
RewriteRule ^.*$ /maintenance.php [R=503,L]
ErrorDocument 503 /maintenance.php
Header Set Cache-Control "max-age=0, no-store"
Il faudra adapter (ou supprimer) la condition %{REMOTE_ADDR}
selon l'adresse IP du poste qui devra continuer à accéder au site pour tester.
Pour activer le mode maintenance, il faudra qu'il existe au préalable une page maintenance.php
, à laquelle viendra se joindre un fichier maintenance.enable
.
Pour désactiver le mode maintenance, il suffira de supprimer le fichier maintenance.enable
, ou de le renommer en maintenance.disable
.
Erreurs connues
AH00106: piped log program 'xxxxxxx' failed unexpectedly
Cette erreur est souvent accompagnée de ce genre d'erreur également : error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory
.
On retrouve ces erreurs au (re)démarrage d'Apache dans le fichier de logs principal d'erreur :
[root@myserver:/root] > tail /data/logs/http_default_error.log AH00106: piped log program '/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/pcb.gazdebordeaux.fr/pcb.gazdebordeaux.fr_http_access.log 10M' failed unexpectedly /local/www/current/bin/rotatelogs: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory AH00106: piped log program '/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/pcb.gazdebordeaux.fr/pcb.gazdebordeaux.fr_http_access.log 10M' failed unexpectedly /local/www/current/bin/rotatelogs: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory AH00106: piped log program '/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/pcb.gazdebordeaux.fr/pcb.gazdebordeaux.fr_http_access.log 10M' failed unexpectedly /local/www/current/bin/rotatelogs: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory AH00106: piped log program '/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/pcb.gazdebordeaux.fr/pcb.gazdebordeaux.fr_http_access.log 10M' failed unexpectedly /local/www/current/bin/rotatelogs: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory AH00106: piped log program '/local/www/current/bin/rotatelogs -l -f -n 15 /data/logs/pcb.gazdebordeaux.fr/pcb.gazdebordeaux.fr_http_access.log 10M' failed unexpectedly /local/www/current/bin/rotatelogs: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory
La résolution est simple. Il manque une librairie qu'il faut simplement installer : libdb-5.3.so
.
Récupérer le paquet Libdb-5_3-5.3.28-2.1.x86_64.rpm et l'installer avec la commande :
rpm -ivh libdb-5_3-5.3.28-2.1.x86_64.rpm
Le résultat de la commande est le suivant :
[root@myserver:/root] > rpm -ivh libdb-5_3-5.3.28-2.1.x86_64.rpm attention : libdb-5_3-5.3.28-2.1.x86_64.rpm: Entête V3 DSA/SHA1 Signature, clé ID 3916c061: NOKEY Préparation... ################################# [100%] Mise à jour / installation... 1:libdb-5_3-5.3.28-2.1 ################################# [100%]
Forbidden You don't have permission to access
Derrière l'erreur "Forbidden You don't have permission to access [...]" peuvent se cacher de nombreuses causes.
Vérifier les droits
Il faut vérifier que l'utilisateur du processus Apache possède bien les droits d'accès au dossier/fichier concerné par l'erreur. Il faut également vérifier que l'existence dudit fichier/dossier.
Cohérence du contrôle d'accès
Avec Apache 2.2, la gestion du contrôle d'accès se faisait avec les directives Order Allow, Deny
.
Avec Apache 2.4, bien que les directives Order Allow, Deny
soient encore supportées, la gestion du contrôle d'accès se fait désormais avec la directive Require
.
En 2.4, si, dans la configuration d'un vhost, il est utilisé une gestion d'accès différente de celle utilisé dans la configuration principale d'Apache, l'erreur Forbidden You don't have permission to access apparaîtra.
Il faut donc vérifier que la gestion d'accès utilisée est la même pour la configuration principale d'Apache et de ses vhosts.
AH00037: Symbolic link not allowed or link target not accessible
Vérifier les droits
Il faut vérifier que l'utilisateur du processus Apache possède bien les droits d'accès au lien concerné par l'erreur. Il faut également vérifier que l'existence dudit lien.
Combinaison de sections
Sur Apache 2.4, les sections sont combinées selon un ordre bien défini.
Plus particulièrement, "Les sections situées à l'intérieur de sections <VirtualHost>
sont appliquées après les sections correspondantes situées en dehors de la définition de l'hôte virtuel, ce qui permet à l'hôte virtuel de prévaloir sur la configuration du serveur principal."
De ce fait, l'erreur "AH00037: Symbolic link not allowed or link target not accessible" peut être due à directive Options None
définie dans la configuration principale d'Apache. Pour corriger cette situation, aller dans le fichier /local/www/<version>/conf/httpd.conf
et remplacer la section :
<Directory />
AllowOverride None
Require all denied
Options None
</Directory>
par :
<Directory />
AllowOverride None
Require all denied
</Directory>
Relancer Apache pour prise en compte des modifications :
httpd -k graceful
Analyse
Pour afficher la consommation de mémoire des différents processus Apache, lancer la commande :
ps -ylC httpd --sort:rss
Dans la colonne RSS (Resident Set Size) s'affiche la mémoire vive (RAM) consommée en kilo-octets.
Exemple :
[root@myserver:/root] > ps -ylC httpd --sort:rss S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD S 0 24504 1 0 80 0 22200 64042 - ? 00:00:01 httpd S 1001 15029 24504 17 80 0 619944 566892 pipe_w ? 00:00:20 httpd S 1001 15062 24504 31 80 0 707636 583390 pipe_w ? 00:00:37 httpd S 1001 15034 24504 25 80 0 713068 583304 pipe_w ? 00:00:30 httpd S 1001 15113 24504 34 80 0 719964 583380 pipe_w ? 00:00:39 httpd