279 votes

Comment simuler l’environnement cron exécute un script avec ?

Normalement, j’ai plusieurs problèmes avec comment cron exécute des scripts qu’ils n’ont normalement pas ma configuration de l’environnement. Y a-t-il une façon d’appeler bash(?) dans le cron de manière même ne fait donc j’ai pu tester les scripts avant de les installer ?

431voto

mmccoo Points 2667

Ajouter ceci à votre cron :

Une fois exécuté, procédez comme suit :

Cela suppose que votre cron fonctionne sh. Selon moi, qu'il s’agit de la valeur par défaut.

63voto

gregseth Points 3733

Cron fournit seulement cet environnement par défaut :

  • ``Répertoire de l’utilisateur
  • ``connexion de l’utilisateur
  • ``
  • ``

Si vous avez besoin de plus que vous pouvez source un script où vous définissez votre environnement avant le tableau de planification dans la crontab.

59voto

Cookie Points 2599

Deux approches:

  1. L'exportation cron env et source:

    Ajouter

    * * * * * env > ~/cronenv
    

    à votre crontab, le laisser tourner une fois, le désactiver, puis sur exécuter

    env - `cat ~/cronenv` /bin/sh
    

    Et vous êtes maintenant à l'intérieur d'un sh session qui a cron de l'environnement

  2. Apportez votre environnement de cron

    Vous pouvez passer directement au-dessus de l'exercice et il suffit de faire une . ~/.profile devant votre tâche cron, par exemple

    * * * * * . ~/.profile; your_command
    
  3. Utilisation de l'écran

    Ci-dessus deux solutions ne permettent pas encore de fournir un environnement connecté à une session X, avec accès à dbus etc. Par exemple, sur Ubuntu, nmcli (Gestionnaire de Réseau) pourront travailler dans les deux approches ci-dessus, mais ne permettent pas encore de cron.

    * * * * * /usr/bin/screen -dm
    

    Ajouter la ligne ci-dessus pour cron, le laisser fonctionner une fois, le désactiver. Se connecter à votre session écran (screen-r). Si vous êtes à la vérification de l'écran session a été créée (en ps) sachent qu'ils sont parfois dans les capitales (par exemple, ps | grep SCREEN)

    Maintenant, même nmcli et similaire sera un échec.

22voto

dimba Points 5389

Vous pouvez exécuter :

Cela fonctionnera your_command avec l’environnement vide.

10voto

Jens Carlberg Points 101

Créer une tâche cron qui court env et redirige stdout vers un fichier. Le fichier aux côtés de « env » - permet de créer le même environnement qu’un cron job.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X