Guide d'exploitation M-PS sur Linux
Sommaire
- 1 Introduction
- 2 Généralités
- 3 Les fichiers log
- 4 Les processus
- 5 Opérations de maintenance
Introduction
Cet article est un exemple type de dossier d’exploitation Mapping sur Linux. Il est à adapter en fonction de votre fonctionnement interne.
Il concerne exclusivement Mapping. L’administration d’Apache web server (arrêt / redémarrage) n’est pas décrite dans cet article.
Généralités
Sélection de l’instance Mapping
Il est possible d’installer plusieurs instances différentes de Mapping sur le même serveur Unix/Linux. De ce fait, avant toute action en ligne de commande, il est impératif de spécifier l’environnement Mapping désiré. Cela se fait en modifiant la variable d’environnement MAPPING_PATH.
En interactif : avec la commande "mappingenv"
-bash-4.2$ mappingenv Quel environnement voulez-vous charger : 1 : Mapping_V7.2_PROD /apps/mapping/conf/mapping.conf 8002 Entrez le nom ou le numéro de l'environnement :1 bash-4.2$
La liste des environnements proposés est basée sur le fichier /etc/mappingtab
Par défaut, la commande mappingenv se trouve dans « /bin »
Dans un script : Il faut exporter la variable d’environnement MAPPING_PATH avec le chemin complet du fichier mapping.conf correspondant à l’environnement Mapping désiré.
export MAPPING_PATH=/apps/mapping/conf/mapping.conf
Les fichiers log
Généralités sur les fichiers log
La plupart des fichiers log Mapping ne sont pas au format texte, et donc non éditables en l’état. Pour les visualiser, il existe 2 méthodes :
- Via l’interface web de Mapping
- En utilisant la commande /apps/mapping/bin/map_log_txt
Pour plus d’information sur cette commande :
/apps/mapping/bin/map_log_txt --help
Exemple d’affichage du contenu du fichier log du map_lpd :
/apps/mapping/bin/map_log_txt -log_file:/apps/mapping/spool/logs/map_lpd.log
Fichiers log courants
La plupart des fichiers log se trouvent dans le répertoire /apps/mapping/spool/logs.
Exemples de fichiers log :
<nom queue>.log | Logs liées aux files d’attente (imprimantes ou points d’entrée) |
map_daemon.log | Log générale du spooler |
map_lpd.log | Log du serveur LPD |
map_lpr.log | Log du client LPR de Mapping s’il est invoqué en ligne de commande |
Pour y accéder via l’interface : « Menu principal » / « Consulter la log »
Fichiers log liés aux sorties standards et erreur
/apps/mapping/temp/stdout.txt /apps/mapping/temp/stderr.txt
Ce sont des fichiers textes éditables tels quels sans conversion.
Fichiers log des travaux présents dans le spooler
Chaque travail possède son propre fichier log. Ces fichiers se trouvent dans le répertoire /apps/mapping/spool/global. Ce sont les fichiers commençant par la lettre L suivie du numéro de travail (MAP_JOBNUM).
Les processus
Description des principaux processus Mapping
Les processus suivants sont fréquemment rencontrés lors de l’affichage de la liste des processus en cours d’exécution. Notamment avec la commande suivante :
ps -eaf | grep map
map_daemon | Processus du spooler, permettant l’orchestration des travaux dans les files d’attente. |
map_lpd | Processus de réception des travaux envoyés en LPR. C’est un enfant du processus map_daemon. |
map_splf | Processus permettant notamment d’ajouter un travail dans une file d’attente. C’est un enfant du processus map_lpd, et communique avec le processus map_daemon via le port défini par le paramètre PORT_SOCKET_DAEMON du fichier mapping.conf. Il peut également être déclenché directement en ligne de commande pour agir sur les files d’attentes ou sur les travaux. |
map_exec | Processus prenant en charge un travail présent dans une file d’attente afin de lui appliquer un traitement (workflow, exécution d’un script, envoi vers une imprimante…). C’est un enfant du processus map_daemon. Il y en a un par file d’attente en cours de traitement. |
map_lpr | Processus permettant d’envoyer un flux d’impression vers une imprimante avec le protocole LPR. C’est un enfant du processus map_exec. Mais il peut également être invoqué directement dans une commande. |
map_809 | Processus d’exécution d’un Workflow. C’est un enfant du processus map_exec. |
mapcpysplf | Processus permettant d’invoquer la composition d’un document. Il peut être déclenché en ligne de commande, dans un script, dans le workflow (map_809)… |
map_815UCS | Processus de composition d’un document (invoqué par le mapcpysplf). |
map_mail | Processus permettant d’envoyer un email avec une pièce jointe. |
map_scanfolder | Processus lié à un robot, permettant de scruter les fichiers dans un dossier afin de lancer un traitement de workflow sur chacun d’entre eux. |
D’autres processus préfixés par « map_ » peuvent également apparaitre s’ils sont invoqués notamment via des scripts ou dans le workflow.
Démarrage et arrêt des processus Mapping
Démarrage du spooler
La commande suivante lance le processus map_daemon ainsi que son fils map_lpd
export MAPPING_PATH=/apps/mapping/conf/mapping.conf /apps/mapping/bin/map_daemon start
Lors du démarrage du processus map_daemon, un fichier flag contenant le pid du processus map_daemon est créé dans le répertoire spool. Sa présence bloque le démarrage du processus.
/apps/mapping/spool/map_daemon.ID
Arrêt du spooler
La commande suivante arrête proprement le processus map_daemon ainsi que son fils map_lpd
export MAPPING_PATH=/apps/mapping/conf/mapping.conf /apps/mapping/bin/map_daemon stop
Attention : si le traitement des robots « scanfolder » consiste à envoyer un fichier dans une file d’attente du spooler, l’arrêt du map_daemon provoquera une erreur à chaque traitement de fichier. Il est donc impératif d’arrêter les robots « scanfolder » avant d’arrêter le map_daemon.
Démarrage des robots « scanfolder »
La commande suivante permet de démarrer un robot « scanfolder »
export MAPPING_PATH=/apps/mapping/conf/mapping.conf /apps/mapping/bin/map_scanfolder -name:nom_du_robot
Exemple de script pour démarrer tous les robots :
export MAPPING_PATH=/apps/mapping/conf/mapping.conf LISTROBOT=`/apps/mapping/bin/map_scanfolder -listRobot | awk ' { print $2 } '` for ROBOT in $LISTROBOT do /apps/mapping/bin/map_scanfolder -name:${ROBOT} done
Lors du démarrage du processus map_scanfolder, un fichier flag contenant le pid du processus map_scanfolder est créé dans le répertoire temp. Sa présence bloque le démarrage du processus. Il faut donc le supprimer.
/apps/mapping/temp/_apps_mapping_temp_nom_du_robot_map_scanfolder.ID
Attention : la suppression de ce fichier .ID doit être effectuée en connaissance de cause, c’est à dire uniquement si le robot n’est pas en cours d’exécution. En effet, en cas de suppression de ce fichier, il est alors possible de lancer une autre instance du même robot, ce qui provoque des conflits d’accès simultanés aux mêmes fichiers.
Arrêt des robots « scanfolder »
La commande suivante arrête un robot « scanfolder »
export MAPPING_PATH=/apps/mapping/conf/mapping.conf /apps/mapping/bin/map_scanfolder -stop -name:nom_du_robot
Exemple de script pour arrêter tous les robots :
export MAPPING_PATH=/apps/mapping/conf/mapping.conf LISTROBOT=`/apps/mapping/bin/map_scanfolder -listRobot | awk ' { print $2 } '` for ROBOT in $LISTROBOT do /apps/mapping/bin/map_scanfolder -stop -name:${ROBOT} done
Les processus à monitorer
map_daemon et map_lpd
Ces 2 processus sont des services et doivent être constamment en cours d’exécution. Comme ils sont forkés régulièrement, il peut éventuellement y en avoir plusieurs à instant donné.
-bash-4.1$ ps -eaf | grep map_ mapadmin 29551 1 1 Oct25 ? 04:00:29 /apps/mapping/bin/map_daemon start mapadmin 27424 29551 0 Oct30 ? 00:00:00 /apps/mapping/bin/map_lpd -port:515 -nbfork:100
map_scanfolder
Il y a autant de processus map_scanfolder que de robot en cours d’exécution. Ils sont identifiés grâce à leur option « -name ». Ils sont indépendants les uns des autres, mais également indépendants du map_daemon.
mapadmin 8271 1 0 17:02 ? 00:00:00 /apps/mapping/bin/map_scanfolder -name:test
httpd
Le bon fonctionnement d’Apache peut être contrôlé par la présence du processus httpd. Ce processus est souvent forké, d’où la présence de plusieurs lignes dans la liste des processus.
-bash-4.2$ ps -eaf | grep httpd apache 4590 11849 0 10:56 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4874 11849 0 08:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4876 11849 0 08:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 4890 11849 0 08:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND root 11849 1 0 oct.15 ? 00:01:42 /usr/sbin/httpd -DFOREGROUND apache 15641 11849 0 08:54 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 16301 11849 0 08:56 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
Actions en cas de crash d’un processus Mapping
Crash du map_daemon
1- Tenter un arrêt propre du spooler Mapping :
export MAPPING_PATH=/apps/mapping/conf/mapping.conf /apps/mapping/bin/map_daemon stop
2- Arrêter proprement les processus scanfolder actifs (cf. démarrage et arrêt des processus Mapping)
3- Killer (kill -9) les autres processus mapping encore actifs :
- map_daemon
- map_lpd
- map_exec
- map_lpr
- map_809
A noter que tous ces processus peuvent devenir fils du processus système (PID=1) en cas de crash de leur processus « père », point commun : leur propriétaire est "mapadmin".
Exemple (à adapter selon le système et la configuration) :
ps -f -U mapadmin | grep -v bash | grep -v "ps \-f" | grep -v "UID" | while read LINE do PID=`echo $LINE | awk ' { print $2 } '` kill -9 $PID done
4- Supprimer le fichier flag /apps/mapping/spool/map_daemon.ID
5- Démarrer le spooler Mapping
/apps/mapping/bin/map_daemon start
Crash du map_lpd
Si le processus map_daemon est toujours actif, il est possible de redémarrer le map_lpd à l’aide de la commande suivante :
export MAPPING_PATH=/apps/mapping/conf/mapping.conf /apps/mapping/bin/map_control -start_lpd
Crash d’un robot « scanfolder »
Lors du démarrage d'un robot, un fichier avec le nom du robot et l'extension ".ID" est créé, ainsi qu'un fichier avec le numéro de process et l'extension .pid Exemple :
_apps_mapping_temp_nom_du_robot_map_scanfolder.ID 4656.pid
En cas de crash du robot, ces fichiers ne sont pas supprimés et empêche le redémarrage du robot. Par conséquent, pour permettre le redémarrage du robot, le fichier « .ID » correspondant au robot arrêté doit être supprimé du répertoire « /apps/mapping/temp »
Opérations de maintenance
Nettoyage courant
Les commandes suivantes peuvent être planifiées très régulièrement. Dans l’idéal, au moins une fois par jour.
Suppression des travaux terminés et arrivé à échéance
export MAPPING_PATH=/apps/mapping/conf/mapping.conf /apps/mapping/bin/map_cron -date
Suppression des travaux non effectués (quel que soit leur statut), après 30 jours
export MAPPING_PATH=/apps/mapping/conf/mapping.conf /apps/mapping/bin/map_cron -cleanspool -relative_date:30/0/0. # jour/mois/années
Suppression des fichiers de session web obsolètes
Fichiers context_menu.*, historique.*, et *.id du dossier /apps/mapping/temp
export MAPPING_PATH=/apps/mapping/conf/mapping.conf /apps/mapping/bin/map_cron -cleanid
Suppression des fichiers temporaires de conversion XPS et de Workflow
Ces fichiers se trouvent dans le dossier temporaire /apps/mapping/temp. Normalement, ils sont supprimés automatiquement. Mais en cas de problème (crash, interruption forcée…), ils peuvent subsister dans le dossier temp. Ce n’est donc pas une situation normale.
find /apps/mapping/temp -name "*cri.tmp" -mtime +2 -exec rm -f {} \; find /apps/mapping/temp -name "*ttf.tmp" -mtime +2 -exec rm -f {} \; find /apps/mapping/temp -name "compress_*" -mtime +2 -exec rm -f {} \; find /apps/mapping/temp -name "*.[0-9]" -mtime +2 -exec rm -f {} \; find /apps/mapping/temp -name "*.[0-9][0-9]" -mtime +2 -exec rm -f {} \;
Opérations de nettoyage et de rotations des logs
Pour des raisons pratiques, les commandes suivantes ne doivent pas être planifiées plus d’une fois par jour. Cela afin de ne pas multiplier les archives créées, et éviter de perdre des derniers jours de logs. La fréquence idéale est de 2 fois par semaine, par exemple le lundi soir et le jeudi soir, avant le déclenchement des batchs de nuit.
Archivage des logs
Cette commande permet de faire une conversion texte de tous les fichiers de logs, puis de les archiver dans un fichier zip horodaté.
export MAPPING_PATH=/apps/mapping/conf/mapping.conf /apps/mapping/bin/map_cron -cleanlog -folder:/apps/mapping/spool/logs -format:TXT
Résultat :
bash-4.2$ ls -lrt /apps/mapping/spool/logs/*.zip -rw-r--r-- 1 mapadmin staff 254186924 30 oct. /apps/mapping/spool/logs/2018_10_30_19_51.zip -rw-r--r-- 1 mapadmin staff 58479965 7 nov. /apps/mapping/spool/logs/2018_11_07_12_32.zip
Rotation des logs des sorties standard et erreur
mv /apps/mapping/temp/stderr.txt /apps/mapping/temp/stderr.txt.bak mv /apps/mapping/temp/stdout.txt /apps/mapping/temp/stdout.txt.bak
Suppression des archives de logs de plus de 30 jours
find /apps/mapping/spool/logs -name "*.zip" -mtime +30 -exec rm -f {} \;
Archivage des logs
Cette commande permet de faire une conversion texte de tous les fichiers de logs, puis de les archiver dans un fichier zip horodaté. export MAPPING_PATH=/apps/mapping/conf/mapping.conf
/apps/mapping/bin/map_cron -cleanlog -folder:/apps/mapping/spool/logs -format:TXT
Résultat :
bash-4.2$ ls -lrt /apps/mapping/spool/logs/*.zip -rw-r--r-- 1 mapadmin staff 254186924 30 oct. /apps/mapping/spool/logs/2018_10_30_19_51.zip -rw-r--r-- 1 mapadmin staff 58479965 7 nov. /apps/mapping/spool/logs/2018_11_07_12_32.zip
Rotation des logs des sorties standard et erreur
mv /apps/mapping/temp/stderr.txt /apps/mapping/temp/stderr.txt.bak mv /apps/mapping/temp/stdout.txt /apps/mapping/temp/stdout.txt.bak
Suppression des archives de logs de plus de 30 jours
find /apps/mapping/spool/logs -name "*.zip" -mtime +30 -exec rm -f {} \;