Forum Linux.débutant commande at ne fonctionne pas

Posté par . Licence CC by-sa
Tags : aucun
1
13
juin
2014

bonjour,

Je me tourne vers vous parce que je ne trouve pas de solution a mon problème. J'ai pas mal cherché sur internet et sur les forums sans avoir de solution.

Je souhaite exécuter un programme (qui fonctionne en ligne de commande et sans interface graphique) avec la commande at.
La distribution que j'utilise est CentOs (il me semble qu'elle est construite a partir de Red Hat).
Lorsque j'exécute les commandes suivantes:

$ at now + 1 minute
at> mon programme
at> CTRL + D

Je vois ma tache apparaitre après avoir entré $ atq

Quand la tache est finie je n'ai aucun résultat et si je regarde les processus au moment de l'exécution mon programme n'apparait pas .

J'ai vérifié le fichier at.deny et il n'y a aucun utilisateur de défini dans ce fichier. Je n'ai pas de fichier at.allow donc normalement pas de problème.

J'ai aussi essayé d'exécuter mon programme en changeant de shell (initialement bash). Je suis passé en sh mais le résultat est le même.

Est-ce quelqu'un aurai une idée.

D'avance merci

Arnaud

  • # $PATH

    Posté par . Évalué à 2. Dernière modification le 13/06/14 à 18:58.

    En général, les variables d'environnement habituelles ne sont pas initialisée lors de l'exécution de la commande par "at", notamment les chemins par défaut d'exécution ($PATH).

    Il est donc conseillé de saisir la commande avec son chemin complet :

    at> /usr/bin/monprogramme

    Vérifier aussi que le "cron" fonctionne bien ("at" en dépend généralement).

    • [^] # Re: $PATH

      Posté par . Évalué à 3.

      Un truc tout con aussi, vérifie que le démon atd est bien lancé (des fois, faut pas aller chercher très loin…).

  • # Fichier de log

    Posté par (page perso) . Évalué à 2.

    Ton programme peut écrire dans un fichier de log, avec un
    echo "toto" >> fichier.log
    ainsi tu sauras qu'il s'est bien lancé.

    Comme dit avant, le chemin complet est recommandé pour la lancement par at.
    at /home/machin/script.sh now
    C'est exécuté dans la minute suivante. (si ton script à les droits d'exécutions)

    Je te recommande d'utiliser autre chose que at, parce qu'à un moment tu ne sauras plus ce qui sera lancé, surtout si ton programme est lancé avec des arguments. Avec at, tu vois rien, seulement quand il y aura quelque chose, sans détail.

    Bonne journée
    G

  • # après vérification

    Posté par . Évalué à 1.

    Merci pour votre aide!

    J'ai vérifié atd et crond, ils sont actifs mais sous TTy il y a un "?" (parce qu'il ne sont pas utilisés au moment ou je lance la commande ps peut être).
    En ce qui concerne le $PATH je ne l'avait pas dis dans mon message initial mais il est bien indiqué.
    D'autre part j'ai effectivement besoin d'utiliser des arguments pour mon logiciel notamment un -b, est-ce qu'il peut induire une erreur par rapport a at?

    Concernant la cohérence d'utiliser at pour ce que je veux faire je suis d'accord ce n'est peut être pas le plus adapté mais je n'ai rien trouvé d'autre (qui semble aussi simple de mise en oeuvre). Est-ce que vous auriez d'autre solution a me proposer?

    Encore merci pour votre aide.

    Arnaud

    • [^] # Re: après vérification

      Posté par (page perso) . Évalué à 4.

      Déjà, commencer par remplacer la commande que tu veux lancer par echo "plop" > /tmp/atlog et vérifier que le fichier est bien écrit quand la commande est exécutée. Ça permettra de vérifier que at fonctionne correctement.

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.