• Serveurs
  • [Résolu] CRON : limite de tâches atteint

Salut,

Je souhaite surveiller un fichier.log et exécuter une action si keyword. J'ai bafouillé un truc qui marche quand je le lance manuellement en revanche je cherche à l'exécuter non stop et en cron ça ne fonctionne pas...
Des idées ?

Voici le script en question :

#!/bin/bash

rclonelog=$(tail -F /home/aerya/logs/move.log | grep "Copied (new)" | head -1)

./home/aerya/discord/rclonebot/discord.sh \
--webhook-url="https://discordapp.com/api/webhooks/xxx" \
--avatar="https://avatars0.githubusercontent.com/u/24937341?s=400&v=4" \
--text "$rclonelog"
  • qo_op a répondu à ça.
  • Merci à tous. C'était en effet un combo de surcharge CRON et de PATHs.

    Aerya salut, pas d'indice dans le syslog ?

    grep CRON /var/log/syslog

    Peux tu mettre ici comment tu appelles le script dans crontab stp ?

    Une idée comme ça, ajoute les chemins complet pour tail et grep dans le script.
    Ex.

    Il faudrait voir le /home/aerya/discord/rclonebot/discord.sh
    En effet, plein de variables d'environnement ne sont pas chargées dans le cron (notamment une bonne partie du PATH), et c'est peut être dans ce script là qu'il manque des chemins.

    Je plussoie, les variables d'environnement m'ont souvent causées du tord en CRON

    Merci, j'ai testé avec les chemins (que je laisserai, c'est mieux) mais même chose.

    Les logs indiqueraient un manque de ressources cependant le serveur n'utilise que 3.5GB de RAM sur 32 :

    Nov 17 11:56:01 sd-61179 CRON[1038]: (CRON) error (can't fork)
    Nov 17 11:56:01 sd CRON[1034]: (CRON) error (can't fork)
    Nov 17 11:56:01 sd CRON[1065]: (root) CMD (/home/aerya/discord/rclonebot/rclone2discord.sh >/dev/null 2>&1)
    Nov 17 11:57:01 sd cron[668]: (CRON) error (can't fork)
    Nov 17 11:57:01 sd cron[668]: message repeated 4 times: [ (CRON) error (can't fork)]
    Nov 17 11:58:01 sd cron[668]: (CRON) error (can't fork)
    Nov 17 11:58:01 sd cron[668]: message repeated 4 times: [ (CRON) error (can't fork)]

    Voici mon crontab :
    * * * * * /home/aerya/discord/rclonebot/rclone2discord.sh >/dev/null 2>&1
    A bien y regarder je pense que je fais une sottise avec le timer. Je devrais plutôt lui ajouter une boucle, non ?

      Aerya Un can't fork ressemble plus fortement a une saturation du CPU ou ddu nombre de fichier que ton utilisateur peut créer. Sachant qu'un processus est un fichier
      Avec systemD, le rlimit est de 1024. Donc ça peut rapidement coincer car. rien que pour lancer ton script c'est 3 fichiers.

      Je viens de checker s'il y avait une limite côté cron et il y en a bien une.

      systemctl status cron.service

      Retourne

      root@Mul ~ # systemctl status cron.service
       cron.service - Regular background program processing daemon
         Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
         Active: active (running) since Wed 2020-09-30 18:44:29 CEST; 1 months 17 days ago
           Docs: man:cron(8)
       Main PID: 1178 (cron)
          Tasks: 5 (limit: 4915)
         Memory: 1.8G
         CGroup: /system.slice/cron.service
                 ├─ 1178 /usr/sbin/cron -f
                 ├─14204 /usr/sbin/CRON -f
                 ├─14209 /bin/sh -c /opt/rudder/bin/rudder agent check -q >> /var/log/rudder/agent-check/check.log 2>&1
                 ├─14212 /bin/sh /opt/rudder/share/commands/agent-check -q
                 └─14261 sleep 6404

      Et le nombre de tasks est limité. Ici le nombre de tasks est de 5 sur 5000 (ça va, j'suis large), mais en l'occurence tu peux avoir une limite plus faible et un nombre de tache plus important

      Si ton nombre de tache est proche de la limite, un coup de

      systemctl set-property cron.service TasksMax=new_max

      pourra régler ton problème 🙂

      Effectivement...
      Tasks: 4915 (limit: 4915)

      Je tente de pousser au-delà.

      Aerya a renommé le titre en [Résolu] CRON : limite de tâches atteint.
      Répondre…