Tâches planifiées sur votre NAS : cron avec journal et notifications en cas d’échec
La page Jobs de Bucket & Code Server IDE exécute vos commandes selon un calendrier cron et conserve le journal de chaque exécution. Une tâche peut signaler un échec dans les journaux système QTS et sur Telegram, Discord, Slack ou par e-mail une fois leurs adresses ajoutées.
- Calendrierchamps cron et prochaines exécutions
- Commandebash, exécuté en root
- Exécuter maintenantune exécution et son journal
- Intégréesles tâches du paquet
- Notificationsjournaux système et messagerie
Les images proviennent d’un NAS de test et montrent les libellés de la version 1.0.0-49. L’adresse de l’image Notifications est un exemple.
01La page Jobs
La page possède deux onglets. Scheduled liste les tâches cron : celles intégrées au paquet et celles créées par les comptes. Operations liste les 50 dernières opérations longues exécutées par bvsd, telles que les installations et déplacements de données, de la plus récente à la plus ancienne.
Une ligne de Scheduled indique la tâche et son propriétaire, le calendrier en mots et sous forme d’expression, la prochaine exécution et un interrupteur d’activation. Ouvrez une ligne pour voir la commande, les exécutions et leurs journaux. Le badge en haut indique le fuseau horaire du NAS ; toutes les heures de la page l’utilisent.
- Un développeur crée des tâches et modifie ou supprime les siennes. Un admin modifie toutes les tâches.
- Tout compte connecté peut lire la liste, les commandes et les journaux, y compris un observateur.
02Créer une tâche
- Appuyez sur New job et renseignez Name.
- Saisissez Schedule : cinq champs (minute heure jour mois jour de semaine), six avec les secondes en premier, ou
@daily,@hourly,@every 90m. Les exemples sous le champ le remplissent. Le cadre inférieur décrit le calendrier et liste les cinq prochaines exécutions dans le fuseau du NAS. Un préfixe tel queCRON_TZ=Europe/London 0 3 * * *utilise un autre fuseau horaire. - Écrivez Command (bash) comme dans un terminal. Plusieurs lignes forment un seul script, dont la sortie devient le journal de l’exécution.
- Runs : On the NAS, ou dans un de vos environnements, où la commande voit les outils et bibliothèques de ce système. Working folder est relatif à
projects/dans le dossier de données ou est un chemin absolu ; vide signifieprojects/. Dans un environnement, seulprojects/est visible, sous/projects. - Timeout in seconds : une exécution encore active après ce délai est arrêtée et signalée comme ayant dépassé le délai. Une nouvelle tâche utilise 3600 ; 0 signifie illimité. When the previous run is still going : Skip this run ou Run it after the previous one, avec au plus une exécution en attente.
- Notify on failure et On sont cochés pour une nouvelle tâche. Une tâche désactivée conserve ses paramètres et s’exécute uniquement à la demande. Appuyez sur Create the job.
Les nuits de changement d’heure, les tâches suivent la règle de Debian cron. Une tâche dont le champ minute ou heure commence par * ou */N, ou qui utilise @hourly ou @every, suit le temps écoulé : en automne, elle s’exécute lors des deux passages de l’heure répétée ; au printemps, l’heure sautée n’a pas lieu. Toute autre tâche exécute chaque horaire une fois. Un horaire dans l’heure répétée s’exécute une fois ; un horaire dans l’heure sautée s’exécute juste après le changement.
03Exécuter maintenant, exécutions et journaux
Run now dans la boîte de dialogue lance immédiatement une exécution en plus du calendrier, sauf si cette tâche est déjà en cours. La boîte liste les exécutions avec leur début, durée, résultat et code de sortie. Sélectionnez une exécution pour lire son journal sous la liste.
- Les première et dernière lignes du journal sont écrites par bvsd. La première identifie l’exécution et la tâche, l’heure et le déclencheur : un compte ou le calendrier. Elle utilise UTC, tandis que la liste utilise l’heure du NAS. La dernière indique le résultat et la durée.
- Une tâche conserve ses 100 dernières exécutions avec les 4 derniers KB de leur sortie. Le journal complet d’une exécution est conservé 30 jours.
- Un échec ou dépassement de délai ajoute un last run failed rouge à côté de la tâche dans la liste ; la tuile Jobs de Overview la compte sous failing.
- Quand la commande se termine, ses processus lancés en arrière-plan continuent. Un dépassement de délai, la suppression de la tâche ou l’arrêt du paquet envoie SIGTERM à tout le groupe de processus, puis SIGKILL 5 secondes plus tard.
- Edit modifie la tâche. Delete arrête une exécution en cours et supprime la tâche, ses exécutions et ses journaux. Seuls son propriétaire et un admin voient ces boutons ; les autres voient Close.
04Tâches intégrées
Les tâches marquées built in sont celles de bvsd et appartiennent à system.
| Tâche, horaire | Action |
|---|---|
Sauvegarde@daily par défaut | la sauvegarde configurée sur la page Sauvegardes, une fois Scheduled backups activé ; cette page gère son calendrier et son interrupteur |
| Maintenance chaque jour à 03:30 | supprime de tmp/ dans le dossier de données les éléments inchangés depuis 10 jours et effectue la rotation de log/audit.log au-delà de 10 MB |
| Vider la corbeille chaque jour à 03:45 | supprime les éléments déplacés dans trash/ du dossier de données depuis plus de 7 jours : dépôts, buckets et dossiers personnels de comptes supprimés |
| Actualisation du catalogue des toolchains chaque jour à 04:15 | récupère le catalogue signé des chaînes d’outils et l’utilise si sa signature est valide et s’il est plus récent |
| Rotation des journaux de nginx chaque heure, à la minute 7 | renomme nginx-access.log ou nginx-error.log en .1 au-delà de 20 MB, conserve cinq anciens fichiers et demande à nginx de rouvrir ses journaux |
Un admin peut modifier le calendrier, le délai, le comportement en cas d’exécution en cours et la notification d’échec d’une tâche intégrée, et la désactiver. Son nom, sa commande, son environnement et son dossier de travail restent fixes ; elle n’a pas de bouton Delete.
05Notifications
bvsd écrit chaque notification dans les journaux système QTS. Notifications sur la page System les envoie aussi aux services de messagerie et de courrier par des URL shoutrrr : Telegram, Discord, Slack, e-mail, webhook et autres.
- Sous Addresses (shoutrrr URLs), appuyez sur Add an address et collez une URL par service, par exemple
telegram://<token>@telegram?chats=<chat id>ougeneric+https://example.com/hook. - Sous Also sent to the addresses, décochez les notifications qui doivent rester uniquement dans les journaux système. Les quatre sont cochées sur une nouvelle installation.
- Appuyez sur Save.
| Interrupteur | La notification arrive quand |
|---|---|
| Une tâche échoue | une exécution cron avec notification d’échec échoue ou dépasse son délai, ou une opération échoue : compilation, déplacement de données ou installation |
| Une sauvegarde se termine | une sauvegarde, vérification ou restauration se termine, même avec succès, ou une sauvegarde planifiée n’a pas pu démarrer |
| Un module redémarre en boucle | un processus se termine et redémarre sans cesse |
| Le certificat | un certificat importé expire dans 30 jours ou moins, nginx utilise le certificat autosigné de secours ou bvsd crée un nouveau certificat autosigné |
| aucun, toujours envoyée | les paramètres ont été refusés au démarrage, un déplacement de données inachevé a été trouvé, des processus restants ont été arrêtés ou la configuration n’a pas pu être écrite |
- Une notification sur le même sujet est envoyée au plus une fois toutes les 10 minutes, y compris aux journaux système. La suivante indique combien ont été retenues.
- Chaque adresse reçoit un envoi distinct avec un délai de 10 secondes. Un échec est journalisé uniquement avec le schéma de l’URL, car le reste contient son jeton.
- Seul un admin modifie les adresses et les interrupteurs. Les autres comptes voient les interrupteurs et le schéma de chaque URL.
L’admin du NAS peut aussi définir les adresses via le socket CLI du paquet. La liste envoyée remplace les adresses précédentes ; les interrupteurs conservent leurs valeurs :
/usr/bin/bucketvs/bin/curl --unix-socket /usr/bin/bucketvs/var/run/bvsd-cli.sock \
-X PUT -H 'Content-Type: application/json' \
-d '{"notify":{"shoutrrr_urls":["telegram://<token>@telegram?chats=<chat id>"]}}' \
http://bvsd/api/v1/settings
06Root et ce que lisent les autres comptes
- La commande d’une tâche s’exécute en root, sur le NAS ou dans l’environnement, quel que soit son auteur. Un développeur peut créer des tâches et donc exécuter toute commande sur le NAS en root. Réservez ce rôle aux personnes auxquelles vous donneriez root sur le NAS.
- Une tâche s’exécute uniquement si son propriétaire est un développeur ou admin activé (à partir de la version 1.0.0-52). Si le propriétaire est désactivé ou possède le rôle membre ou observateur, chaque horaire est enregistré comme une exécution ignorée avec sa raison, par exemple its owner ola is disabled, et Run now répond avec la même raison ; une exécution en cours est arrêtée. La tâche reprend lorsque le compte est activé ou redevient développeur. Supprimer un compte supprime ses tâches, leurs exécutions et leurs journaux. Les tâches intégrées s’exécutent quel que soit l’état d’un compte.
- Tout compte connecté, même observateur, lit les commandes et sorties de toutes les tâches. Gardez les mots de passe et jetons hors de la commande : placez-les dans un fichier sous
etc/du dossier de données lisible uniquement par root (chmod 600) et faites lire ce fichier par la commande.