20 points par xguru 2025-11-11 | 2 commentaires | Partager sur WhatsApp
  • Utilitaire permettant de mettre en place un système léger de file d’attente de tâches fonctionnant sans configuration ni démon
  • Compatible Linux/macOS — exécutable sur les systèmes POSIX prenant en charge flock(2)
  • Prend en charge la mise en file ad hoc de tâches en ligne de commande
    • Adapté aux tâches séquentielles comme les builds Makefile, les téléchargements de fichiers ou l’exécution de benchmarks
    • Peut aussi servir d’alternative à nohup
  • L’ordre des tâches est strictement garanti grâce à une synchronisation basée sur des horodatages à la milliseconde
    • Crée un TIMESTAMP.PID pour chaque processus et utilise flock (verrou de fichier)
    • Lorsque les flock précédents sont déverrouillés, la tâche suivante démarre
    • La synchronisation étant effectuée au niveau du système de fichiers, aucun polling n’est nécessaire
  • En ajoutant une tâche sous la forme nq CMDLINE..., l’outil affiche un ID de tâche puis l’exécute en arrière-plan
    • STDOUT/STDERR sont redirigés vers un fichier journal
    • Le bit d’exécution (+x) du fichier journal permet de distinguer visuellement l’état de la tâche
  • L’extension du nom de fichier journal est constituée du PID, ce qui facilite la gestion des tâches
    • Avant l’exécution, il s’agit du PID de nq ; après le lancement, il est remplacé par le PID réel de la tâche
    • Il est possible de relancer une tâche en exécutant le fichier journal comme un script shell

Différences avec at, batch et task-spooler

  • at
    Outil permettant d’exécuter une tâche à une heure donnée
    Il lance la commande à l’instant prévu selon l’horloge système, et s’utilise surtout pour des tâches planifiées ponctuelles
  • batch
    Exécute une tâche lorsque la charge système (load average) est faible
    Son objectif n’est pas la planification mais le contrôle d’exécution basé sur la charge, avec une gestion par démon
  • task-spooler
    Lance automatiquement un démon de gestion de file pour prendre en charge le traitement séquentiel ou parallèle des tâches
    Il permet de définir le nombre maximal de tâches exécutées simultanément
    Il est possible de configurer des files différentes selon le terminal, et de consulter l’état de chaque file via des commandes
  • nq
    Fonctionne sans démon et gère la file simplement via des verrous flock sur le système de fichiers au niveau du répertoire
    Sans tenir compte de la charge système ni d’une heure planifiée, il se contente de garantir l’ordre des tâches
    Les journaux de la file peuvent être suivis en temps réel avec nqtail
    Chaque répertoire faisant office de file indépendante, il est possible d’exploiter plusieurs files séparées via la variable d’environnement $NQDIR

2 commentaires

 
rtyu1120 2025-11-11

Le style du code fait tellement vieille école, façon Sourceforge, que je me suis demandé si j'étais retourné dans le passé, haha.

 
euphcat 2025-11-11

Comparé à l’époque de Sourceforge, c’est encore un tout jeune développeur, mais je me suis d’abord demandé ce que ça voulait dire, puis en voyant le retour à la ligne entre le type de retour d’une fonction et son nom, j’ai fini par comprendre o.o

Est-ce qu’il y a, par hasard, d’autres vieux styles de code qui ressortent aussi dans ce code ?