Parmi les différentes fonctionnalités qu'offre un système informatique et en particulié Unix ou Linux , l’impression est sans doute celle qui nécessite la plus grande attention et la plus grande rigueur. Il ne s'agit pas n’est pas d'une simple application gérant le périphérique d’impression mais plutôt d'une application client/serveur complexe.
Un système d’impression doit gérer les demandes d’impression provenant aussi bien des utilisateurs locaux que des utilisateurs distants. Il existe deux systèmes d’impression généralement utilisés sous Linux :
Ces trois systèmes cohabitent sous AIX. On va donc retrouver 3 lots de commandes qui vont permettre d'imprimer.
Historiquement, les imprimantes UNIX supportaient un langage commun, le PostScript. Mais la prolifération des imprimantes bon marché, à fait abandonner le PostScript au profit de langages d'impression spécifique à chaque constructeur.
Les familles de commandes d'impression peuvent être regroupées ainsi:
System V | Berkeley | Aix | |
Requêtes d’impression | lp | lpr | qprt |
Etat des files d’attente | lpstat | lpq | qchk |
Annulation de requêtes | cancel | lprm | qcan |
/usr/bin/lsallq | donne les noms de toutes les queus |
/usr/bin/lsallq -c | liste toutes les queus |
On obtient l’état des files d’attente en exécutant les commandes lpstat, lpq et qchk.
lpstat | liste des requêtes locales |
lpstat -o | liste de toutes les requêtes |
lpq | liste des requêtes locales |
lpq -l | liste des requêtes au format long |
lpq -W | liste des requêtes au format plus développé |
lpq -W -Pimprimante1 | liste des requêtes au format plus développé pour l'imprimante1 |
qchk | liste des requêtes locales |
qchk -q | affiche la queue par défaut |
qchk -P imprimante1 | affiche la queue pour l'imprimante1 |
qchk -# 10 | affiche l'état du job 10 |
qchk -W -q | liste des requêtes au format plus développé |
Voici les différents états possibles :
Ready | La file d’attente est dans l’état de base, elle attend un ordre. C’est l’état initial lors de la création d’une file d’attente. |
Running | L’imprimante est en train d’imprimer. |
Initing | Le programme de “backend” est en train de se connecter au serveur d’impression. |
Connect | Le programme de “backend” s’est connecté au serveur d’impression. |
Sending | Le serveur est en train d’envoyer le travail au serveur d’impression. |
Hold | Cet état spécifie que le job est retenu et ne pourra pas être mis en file d’attente. |
Dev_Busy | Plusieurs files d’attente sont définies sur la même unité et l’une d’entre-elles est en train de l’utiliser. |
Dev_Wait | La file d’attente attend que l’imprimante soit prête car celle-ci est “en arrêt” (plus de papier, bourrage...). |
Down | Il n’y a plus de communication entre l’imprimante et le serveur après un “time out”. |
Opr_Wait | Le programme de backend attend une action de l’opérateur. |
Unknown | état non reconnu ou fichier de configuration non reconnu |
Les actions possibles en fonction des états sont:
dans le cas de l'état Hold on peut libérer le job, soit en ligne de commande soit en passant par smit spooler.g
dans le cas de Dev_Busy il faut attendre la fin de l’impression ou “tuer” le process qui utilise le port d’impression.
dans le cas de Dev_Wait il faut:
A la fin du “time out”, la file d’attente repasse à l’état Down.
lp .profile | impression sur l'imprimante par défaut |
lp -n2 cv | imprimer en deux exemplaire |
lp -d imprimante1 main.c | impresssion sur l'imprimante1 |
lpr -Pimprimante1 toto | impresssion sur l'imprimante1 |
qptr /etc/hosts | impression sur l'imprimante par défaut |
cancel -u user | Annulation des requêtes d’un utilisateur |
lprm 12 | suppression du job 12 |
qcan -x 12 | suppression du job 12 |
qcan -x 12 -Pimprimante1 | suppression du job 12 de la queue imprimante1 |
qcan -X -Pimprimante1 | suppression de tous les jobs de la queue imprimante1 |
La commande enq permet de gérer les queues et en particulier de suivre l'état de la queue, d'imprimer, de canceler un job d'impression ou de déplacer un job.
enq -A | lister le contenu de toutes queues d'impression |
enq -L | affiche l'état des queues au format long |
enq -W | affiche l'état des queues au format large |
enq -L -Pimprimante3 | affiche l'état des queues au format long pour l'imprimante3 |
enq -q -Pimprimante2 | pour afficher le status de la queue imprimante2 |
enq fichier | impression du fichier sur l'imprimante par défaut |
enq -P printer2 fichier | impression sur l'imprimante printer2 |
enq -x12 -Pimprimante1 | suppression du job 12 de la queue imprimante1 |
enq -X -Pimprimante1 | annule tous les jobs d'impression de l'imprimante1 |
enq -h -#100 | hold le job 100 |
enq -p -#100 | libère le job 100 |
enq -h -u user | hold les jobs de l'utilisateur user |
enq -p -u user | libère es jobs de l'utilisateur user |
enq -a 3 -#102 | change le numéro de priorité du job 102 |
enq -Q -Pimprimante2 -#18 | déplace le job 18 vers l'imprimante -Pimprimante2 |
enq -#12 -Pimprimante1 -Qimprimante2 | déplace le job 12 de l'imprimante1 à l'imprimante2 |
Il est bien sur possible de gérer les imprimantes par smit. C'est aussi très utile pour débuter. Le raccourci à utiliser est smit spooler.
#smitty spooler Move cursor to desired item and press Enter. Start a Print Job Manage Print Jobs List All Print Queues Manage Print Queues Add a Print Queue Add an Additional Printer to an Existing Print Queue Change / Show Print Queue Characteristics Change / Show Printer Connection Characteristics Remove a Print Queue Manage Print Server Programming Tools Change / Show Current Print Subsystem
Les informations associées aux imprimantes se trouvenr dans /etc/qconfig.
Les services liés aux impressions sont au nombre de 3. On peux les lister avec la commande lssrc -g spooler.
#lssrc -g spooler Subsystem Group PID Status qdaemon spooler 3276864 active writesrv spooler 13041752 active lpd spooler 15401162 active
Ils doivent être actif pour que l'impression fonctionne. Il faut donc utiliser startsrc -s et stoptsrc -s suivi du service
pour les activer et les désactiver et @(lssrc -s) pour obtenir leur status.