# Crontab script erreur bizarre

**URL:** <https://www.debian-fr.org/t/crontab-script-erreur-bizarre/85481>\
**Category:** Support Debian\
**Created:** [Octobre 8, 2021, 10:12 UTC](https://www.debian-fr.org/t/crontab-script-erreur-bizarre/85481 "2021-10-08T10:12:38Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Obi-wan](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/o/f4b2a3/32.png) [@Obi-wan](https://www.debian-fr.org/u/Obi-wan)\
**Post date:** [Octobre 8, 2021, 10:12 UTC](https://www.debian-fr.org/t/crontab-script-erreur-bizarre/85481/1 "2021-10-08T10:12:38Z")

</div>

Bonjour, je rencontre un problème avec **cron**.

**Voila j’utilise la messagerie zimbra et pour «&nbsp;backup&nbsp;» les comptes j’utilise la commande :**

```
zmmailbox -z -m adresse@mail.fr getRestUrl -u https://liendemonserveur "//?fmt=zip" > /lieu/de/sauvegarde/compte.zip

```

ceci a pour but de créer un zip avec toutes les infos du compte.

**Alors j’ai créer un script mail.sh comme suivant:**

* * *

```
#!/bin/bash

TODAY=$(date +%F)

zmmailbox -z -m $1 getRestUrl -u https://liendemonserveur "//?fmt=zip" > /opt/zimbra/backupMails/$1/compte$TODAY.zip

```

* * *

**Du coup, je me log avec le compte zimbra, et execute "crontab -e"**  
` 10 1 * * * /opt/zimbra/backupMails/script/mail.sh adresse@mail.fr`

**En exécutant le script a la main :** `./mail.sh adresse@mail.fr`  
le fichier existe et fait une 100mo

MAIS en l’exécutant avec cron, le fichier pèse 0 octets.

Pouvez vous m’aider car je ne trouve pas le problème.

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Octobre 8, 2021, 11:39 UTC](https://www.debian-fr.org/t/crontab-script-erreur-bizarre/85481/2 "2021-10-08T11:39:08Z")

</div>

Bonjour et bienvenue dans la communauté,

Le problème que tu décris ressemble à un souci avec l’environnement d’exécution de la tâche.  
Essaie de rajouter la ligne suivante dans ton script :

```bash
env > /opt/zimbra/backupMails/$1/env_$(date +%s)

```

puis tu réessaies de le lancer dans les deux situations (à la main et par la tâche cron) et tu compares les deux environnements pour voir ce qu’il manque entre l’un et l’autre.

Que la Force soit avec toi !

---

<div class="post-metadata">

**Author:** ![Obi-wan](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/o/f4b2a3/32.png) [@Obi-wan](https://www.debian-fr.org/u/Obi-wan)\
**Post date:** [Octobre 8, 2021, 12:16 UTC](https://www.debian-fr.org/t/crontab-script-erreur-bizarre/85481/3 "2021-10-08T12:16:44Z")

</div>

Merci de ta réponse rapide ça fait plaisir 🙂

Je vais essayer ceci et je vous tien au courant!

Mais ce qui est étrange c’est que a la mano ça fonctionne en étant log sur zimbra, car root ne reconnais pas la commande zmmailbox …

J’ajoute que le cron est logiquement lancé a partir de l’utilisateur zimbra.

---

<div class="post-metadata">

**Author:** ![Obi-wan](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/o/f4b2a3/32.png) [@Obi-wan](https://www.debian-fr.org/u/Obi-wan)\
**Post date:** [Octobre 8, 2021, 12:53 UTC](https://www.debian-fr.org/t/crontab-script-erreur-bizarre/85481/4 "2021-10-08T12:53:13Z")

</div>

> [@Almtesh](#):
>
> `env > /opt/zimbra/backupMails/$1/env_$(date +%s)`

- **EXECUTION AVEC L’UTILISATEUR ZIMBRA:**  
_A la main cela fonctionne et env\_date me donne ceci :_

```plaintext
LC_ALL=C
LANG=C
TZ=Europe/Paris
HISTTIMEFORMAT=%y%m%d %T
OLDPWD=/opt/zimbra/backupMails/jf@mail[.]fr
USERNAME=zimbra
JAVA_HOME=/opt/zimbra/common/lib/jvm/java
S_COLORS=auto
USER=zimbra
PWD=/opt/zimbra/backupMails/script
HOME=/opt/zimbra
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
MAIL=/var/mail/zimbra
TERM=xterm
SHELL=/bin/bash
PERL5LIB=/opt/zimbra/common/lib/perl5/x86_64-linux-gnu-thread-multi:/opt/zimbra/common/lib/perl5
SNMPCONFPATH=/opt/zimbra/conf
SHLVL=2
MANPATH=/opt/zimbra/common/share/man:
JYTHONPATH=/opt/zimbra/common/lib/jylibs
LOGNAME=zimbra
PATH=/opt/zimbra/bin:/opt/zimbra/common/lib/jvm/java/bin:/opt/zimbra/common/bin:/opt/zimbra/common/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
PERLLIB=/opt/zimbra/common/lib/perl5/x86_64-linux-gnu-thread-multi:/opt/zimbra/common/lib/perl5
_=/usr/bin/env

```

_Et le fichier zip n’est pas VIDE ^^ :_

```plaintext
zimbra@mail:~/backupMails/jf@mail[.]fr$ ls -all
total 8128
drwxrwxrwx 1 zimbra zimbra 68 Oct 8 14:23 .
drwxrwxrwx 1 zimbra zimbra 104 Oct 8 14:23 ..
-rwxrwxrwx 1 zimbra zimbra **8317264** Oct 8 14:23 compte2021-10-08.zip
-rwxrwxrwx 1 zimbra zimbra 907 Oct 8 14:23 env_1633695824

```

- **EXECUTION AVEC CRON:**

_Avec zimbra je lance un crontab -e, et j’appuis sur 2 fois entrée_

```plaintext
zimbra@mail:~$ crontab -e
touch: cannot touch '/opt/zimbra/.selected_editor': Permission denied
Unable to create directory /opt/zimbra/.local/share/nano/: No such file or directory
It is required for saving/loading search history or cursor positions.

Press Enter to continue

```

_Voici la commande cron que j’exécute sous zimbra_

```plaintext
45 14 * * * /opt/zimbra/backupMails/script/mail.sh jf@mail[.]fr

```

_Avec cron env\_date me donne ceci :_

```plaintext
LANG=fr_FR.utf8,LC_ALL=fr_FR.utf8
TZ=Europe/Paris
PWD=/opt/zimbra
HOME=/opt/zimbra
SHELL=/bin/bash
SHLVL=2
LOGNAME=zimbra
PATH=/usr/bin:/bin
_=/usr/bin/env

```

_Et le fichier zip est VIDE … :_

```plaintext
zimbra@mail:~/backupMails/jf@mail[.]fr$ ls -all
total 4
drwxrwxrwx 1 zimbra zimbra 68 Oct 8 14:45 .
drwxrwxrwx 1 zimbra zimbra 104 Oct 8 14:23 ..
-rwxrwxrwx 1 zimbra zimbra **0** Oct 8 14:45 compte2021-10-08.zip
-rwxrwxrwx 1 zimbra zimbra 156 Oct 8 14:45 env_1633697281

```

J’avoue être perdu je ne comprend pas cette force **obscure** aha. 😅

PS: j’ai déjà essayé aussi avec le crontab de root et cela reviens au meme…

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Octobre 8, 2021, 1:09 UTC](https://www.debian-fr.org/t/crontab-script-erreur-bizarre/85481/5 "2021-10-08T13:09:09Z")

</div>

Bonjour,

Dans ton script indique l’emplacement complet du(es) exécutable(s), ou précise la variable d’environnement PATH dans ton crontab, sinon la commande _zmailbox_ ne sera pas trouvée.

---

<div class="post-metadata">

**Author:** ![Obi-wan](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/o/f4b2a3/32.png) [@Obi-wan](https://www.debian-fr.org/u/Obi-wan)\
**Post date:** [Octobre 8, 2021, 1:18 UTC](https://www.debian-fr.org/t/crontab-script-erreur-bizarre/85481/6 "2021-10-08T13:18:25Z")

</div>

Donc j’ai fais ceci pour voir le path de zimbra:

> zimbra@mail:~/backupMails/script$ cat test.sh  
> export PATH=$PATH:$HOME/bin  
> echo $PATH

./test.sh, retourne :

> zimbra@mail:~/backupMails/script$ ./test.sh  
> /opt/zimbra/bin:/opt/zimbra/common/lib/jvm/java/bin:/opt/zimbra/common/bin:/opt/zimbra/common/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/zimbra/bin

Vous voulais que je l’ajoute a mon script d’origine ?

---

<div class="post-metadata">

**Author:** ![Obi-wan](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/o/f4b2a3/32.png) [@Obi-wan](https://www.debian-fr.org/u/Obi-wan)\
**Post date:** [Octobre 8, 2021, 1:21 UTC](https://www.debian-fr.org/t/crontab-script-erreur-bizarre/85481/7 "2021-10-08T13:21:46Z")

</div>

> [@Obi-wan](#):
>
> export PATH=$PATH:$HOME/bin

MERCIIII, ereka, cela fonctionne ^^

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Octobre 10, 2021, 7:08 UTC](https://www.debian-fr.org/t/crontab-script-erreur-bizarre/85481/8 "2021-10-10T07:08:00Z")

</div>

Euh oui cela doit fonctionner comme cela aussi…  
Mais ce que je disais c’était de mettre :

```auto
PATH= ******

```

dans le fichier crontab. (lire man 5 crontab)

C’est un problème classique. La tâche cron est lancée par un utilisateur qui n’est pas connecté (non-login, non-interactive shell). Les fichiers qui définissent certaines variables d’environnement comme PATH ne sont donc pas sourcés. C’est poourquoi les commandes échouent lorsque elles ne sont pâs utilisées avec leur emplacement complet ou que PATH n’est pas définie dans le crontab.
