Flux de données Spooler (commande enq)
Les commandes lp, lpr, qprtet enq peuvent être utilisées pour soumettre un travail au spouleur pour traitement.
La commande enq est le point d'entrée vrai du spouleur ; lp, lpret qprt analysent tous leurs propres arguments et composent un appel à enq. Pour ce faire, exécutez les étapes suivantes en tant qu'utilisateur root à l'invite shell:
- Entrez
mount /bin/echo /bin/enq. - Entrez
qprt -Pasc -fp -z1 -p12 -s courier -C -N 3 /etc/motd. - Entrez
umount /bin/enq.
La commande qprt de l'étape 2 tente de soumettre un travail d'impression au spouleur et de le placer dans la file d'attente nommée asc, en demandant trois copies du message du jour dans une police Courier à 12 points ayant fait l'objet d'une rotation de 90 degrés. qprt analyse ses arguments de ligne de commande et génère un vecteur d'argument à transmettre à enq. Lorsque la commande qprt tente d'appeler enq avec le vecteur d'argument, elle appelle à la place la commande echo , qui est montée sur la commande enq . Ainsi, le vecteur d'argument généré par la commande qprt est transmis à la commande echo , qui à son tour fait simplement écho au vecteur d'argument sur votre écran. Cette procédure fonctionne également avec lp et lpr . En plus de démontrer que qprt est vraiment un système frontal de enq, cette technique est également utile lorsque vous essayez de comprendre comment obtenir des indicateurs non pris en charge dans le spouleur. Pour plus d'informations, voir Filtres .
L'exécution de la commande qprt à l'étape 2 doit entraîner l'écriture de la sortie suivante dans l'élément d'affichage spécifié par votre variable d'environnement TERM :
-P asc -o -o -f -o p -z -o 1 -o -p -o 12 -o -s courier -C -N 3 /etc/motdIl s'agit du vecteur d'argument généré par cette instance spécifique de la commande qprt . Si echo n'avait pas été monté sur enq, la commande de soumission de travail suivante aurait été exécutée:
enq -P asc -o -f -o p -o -z -o 1 -o -p -o 12 -o -s courier -C -N 3 /etc/motdUne commande de soumission de travail doit se terminer par le nom d'un ou de plusieurs fichiers réels qui existent dans un système de fichiers accessible par le système d'exploitation de base. Cela est vrai même lorsque la file d'attente est définie pour gérer des travaux autres que des travaux d'impression.
Lorsque la commande enq est exécutée, directement ou par lp, lprou qprt, elle affecte un numéro de travail au travail. Par défaut, lp renvoie le numéro de travail. lpr et qprt ne renverront pas le numéro de travail à moins que vous ne le demandiez spécifiquement avec un indicateur.
enq crée un fichier JDF et le place dans /var/spool/lpd/qdir, puis écrit le nom du fichier JDF dans une file d'attente de messages et signale à qdaemon (en lui envoyant un message SIGUSR2) qu'un nouveau fichier JDF existe. Le qdaemon lit ensuite le nom du fichier JDF à partir de la file d'attente de messages, accède directement au fichier JDF et lit les données qu'il contient dans une structure de données interne qu'il gère pour suivre tous les travaux actuellement dans le spouleur. A ce stade, le travail a été accepté par le spooler.
Un fichier JDF est créé pour toutes les opérations du système de spoule autres qu'une requête de statut de file d'attente ; la structure d'un fichier JDF diffère entre les demandes d'impression par rapport aux demandes d'annulation de travaux par rapport aux demandes de contrôle de file d'attente, etc., mais un fichier JDF est néanmoins créé. Les commandes ayant la même fonction que lpstat continuent d'appeler enq pour effectuer leur travail, mais aucun fichier JDF n'est créé et aucun fichier qdaemon n'est impliqué.
Lorsque le qdaemon détermine que l'unité sur laquelle le travail est mis en file d'attente est disponible, qdaemon appelle le système dorsal pour la file d'attente, en lui transmettant les arguments spécifiés par le JDF. Le système dorsal traite le travail.