Introduction

Il existe principalement deux standards d’impression sous Unix, l’un sous System V et l’autre sous BSD. Un troisième tend à s’installer depuis quelques temps, CUPS, qui tente de fédérer les divers systèmes d’impression sous Unix.

Quelque soit le standard, le principe est le même. A chaque imprimante déclarée (généralement dans /etc/printcap) correspond une file d’attente (queue). L’ensemble de ces files d’attente est géré par un service indépendant (daemon). Ces deux principes permettent une impression multi-utilisateur (les jobs d’impression sont en file d’attente, job queues), et en réseau (le service peut être accedé depuis une autre machine distante).

En règle générale toutes les imprimantes savent directement imprimer du texte brut ASCII en 80 colonnes. Pour imprimer des documents formatés, des images, on peut utiliser un pilote. On parle en fait de filtre d’impression. Le filtre peut être un script ou un binaire qui récupère le flux entrant (texte, image, document, postscript, …), l’identifie et à l’aide de traitements associés le transforme en langage compréhensible par l’imprimante (Postscript, PCL, Canon, Epson, WPS, …).

System V

  • lp [-dImprimante] [-nChiffre] fic1 : imprime le contenu du fichier fic1. L’option -d permet de choisir l’imprimante, -n le nombre d’exemplaires.
  • lpstat [-d] [-s] [-t] [-p] : informations sur l’impression. L’option -d affiche le nom de l’imprimante par défaut, -s un état résumé des imprimantes, -t la totalité des informations (statut, jobs, …), -p [liste] uniquement les informations sur les imprimantes incluses dans la liste.
  • cancel [ids] [printers] [-a] [-e] : supprime les tâches d’impression ids des imprimantes printers. L’option -a supprime tous les jobs de l’utilisateur, -e tous les jobs (seulement l’administrateur).
  • Sur certains systèmes comme SCO, on peut trouver les commandes enable et disable qui prennent comme paramêtre le nom de l’imprimante, permettant d’en autoriser ou interdire l’accès.
  • Le service (ou daemon) s’appelle généralement lpd (line printer daemon) ou lpsched (line printer scheduler).

BSD

  • lpr [-Pimprimante] [-#copies] fic1 : imprime le contenu du fichier fic1. L’option -P permet de spécifier l’imprimante, -# le nombre de copies.
  • lpq [-Pimprimante] : indique l’état et la liste des jobs pour l’imprimante éventuellement spécifiée par l’option -P.
  • lprm [-Pimprimante] [-] [ids] : permet de supprimer un job de l’imprimante spécifiée par l’option -P, l’option – supprime tous les jobs de l’utilisateur, ids représente une liste de jobs à supprimer.
  • Sur certains Unix on peut trouver la commande lpc , qui est une sorte de petit shell permettant de contrôler les imprimantes et les jobs.
  • Le service s’appelle généralement lpd.

CUPS

CUPS est un système d’impression Unix, orienté réseau, tendant à fédérer les systèmes d’impression System V et BSD, et basé sur le protocole IPP. Basé sur une architecture plus complexe, il est pourtant bien plus structuré et simple d’utilisation, notamment une configuration et administration centralisée depuis une interface HTTP, des règles de conversion basées sur les types MIME et des fichiers de description d’imprimante standards (PPD).

CUPS reprend les commandes System V et BSD déjà abordées pour plus de simplicité. Enfin CUPS dispose de sa propre API permettant de créer des interfaces utilisateur pouvant s’intégrer dans des environnement graphiques ou des interfaces d’administration.

Exemples

$ lpq
Warning: no daemon present
Rank Pri Owner        Job   Files                                  Total Size
1st  0   root         0     pirge_325.log                          0 bytes
2nd  0   root         1     test                                   0 bytes
3rd  0   root         2     test                                   0 bytes
4th  0   root         3     (standard input)                       896 bytes
$ lpstat
qms2060:
Warning: no daemon present
Rank Pri Owner        Job   Files                                  Total Size
1st  0   root         0     pirge_325.log                          0 bytes
2nd  0   root         1     test                                   0 bytes
3rd  0   root         2     test                                   0 bytes
4th  0   root         3     (standard input)                       896 bytes

Lexmark113:
unable to get hostname for remote machine
Warning: no daemon present

Rank Pri Owner        Job     Files                                Total Size
1st  0   root         0       load_logi15034.log                   0 bytes
2nd  0   root         1       toutou                               0 bytes
3rd  0   root         2       toutou                               0 bytes

Photo de Bank Phrom sur Unsplash