# Utilisation de crontab

**URL:** <https://www.debian-fr.org/t/utilisation-de-crontab/79372>\
**Category:** Support Debian\
**Created:** [Juin 1, 2019, 9:28 UTC](https://www.debian-fr.org/t/utilisation-de-crontab/79372 "2019-06-01T09:28:50Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tulum](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tulum/32/3929_2.png) [@Tulum](https://www.debian-fr.org/u/Tulum)\
**Post date:** [Juin 1, 2019, 9:28 UTC](https://www.debian-fr.org/t/utilisation-de-crontab/79372/1 "2019-06-01T09:28:51Z")

</div>

Bonjour,

J’essaie de programmer un registrement de l’entrée ligne de ma carte son.  
Pour l’enregistrement j’utilise `arecord`. La commande fonctionne bien en direct :

```nohighlight
arecord -f cd -d 10 /mnt/dd1/Musique/test.wav

```

Par contre je voudrais pouvoir la programmer via `crontab` et là ça coince. J’ai essayer plusieurs configuration mais rien :

```nohighlight
14 11 * * * /usr/bin/arecord -f cd -d 10 /mnt/dd1/Musique/test.wav

```

ne se passe. Idem si je met un user (moi ou root)

J’ai essayer en créant un script \*.sh avec la commande et de lancer le script via `crontab`, rien non plus. Même en copiant le script dans `/usr/local/bin`  
Le script fonctionne en direct.

Ci-dessous le fichier `crontab` :

```nohighlight
#edit this file to introduce tasks to be run by cron.
#
#Each task to run has to be defined through a single line
#indicating with different fields when the task will be run
#and what command to run for the task
#
#To define the time you can provide concrete values for
#minute (m), hour (h), day of month (dom), month (mon),
#and day of week (dow) or use '*' in these fields (for 'any').
#
#Notice that tasks will be started based on the cron's system
#daemon's notion of time and timezones.
#
#Output of the crontab jobs (including errors) is sent through
#email to the user the crontab file belongs to (unless redirected).
#
#For example, you can run a backup of all your user accounts
#at 5 a.m every week with:
#0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
#For more information see the manual pages of crontab(5) and cron(8)
# 
#m h dom mon dow command
14 11 * * * /usr/bin/arecord -f cd -d 10 /mnt/dd1/Musique/test.wav

```

Merci

---

<div class="post-metadata">

**Author:** ![anon44391915](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/958977/32.png) [@anon44391915](https://www.debian-fr.org/u/anon44391915)\
**Post date:** [Juin 2, 2019, 3:23 UTC](https://www.debian-fr.org/t/utilisation-de-crontab/79372/2 "2019-06-02T03:23:24Z")

</div>

Salut **[Tulum](https://www.debian-fr.org/u/Tulum)**

> [@Tulum](#):
>
> J’ai essayer en créant un script  
> en copiant le script dans `/usr/local/bin`  
> Le script fonctionne en direct.

Pour une commande avec de multiples arguments, appeler un script est plutôt une bonne idée.  
Appeler le script avec son chemin absolu est préférable voire requis.

> [@Tulum](#):
>
> Idem si je met un user (moi ou root)

Comment ça ? Je ne comprends pas.  
Il n’y a pas besoin de privilège root pour faire ce que tu veux.

> [@Tulum](#):
>
> je voudrais pouvoir la programmer via `crontab` et là ça coince.

Tu utilises bien

```plaintext
crontab -e

```

pour établir ta planification ?

> [@Tulum](#):
>
> 14 11 \* \* \*

11 h 14 mn, c’est une fois par jour.

> **[Crontab.guru - The cron schedule expression generator](https://crontab.guru/)**
>
> An easy to use editor for crontab schedules.

Pour éviter le risque d’une sortie standard dangereuse lors d’une commande planifiée `cron`  
J’utilise `&> /dev/null` à la fin de mes commandes planifiées.

```plaintext
14 11 * * * /usr/bin/arecord -f cd -d 10 /mnt/dd1/Musique/test.wav &> /dev/null

```

---

<div class="post-metadata">

**Author:** ![Tulum](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tulum/32/3929_2.png) [@Tulum](https://www.debian-fr.org/u/Tulum)\
**Post date:** [Juin 2, 2019, 10:16 UTC](https://www.debian-fr.org/t/utilisation-de-crontab/79372/3 "2019-06-02T10:16:23Z")

</div>

> [@anon44391915](#):
>
> > Idem si je met un user (moi ou root)
> 
> Comment ça ? Je ne comprends pas.

En fait j’avais trouver sur G\*\*gle que l’on pouvait ajouter le user après les variables de temps. Mais là ça ne marchait pas. J’aurai pensé qu’en mettant le user, cron aurait chargé l’ensemble des  
variables d’environnement de l’user mentionné.

> [@anon44391915](#):
>
> Tu utilises bien
> 
> ```auto
> crontab -e
> 
> ```

oui

J’ai trouver la solution il faut rajouter une variable d’environnement dans la table cron :  
Par exemple dans mons cas pour ce soir :  
00 21 2 6 \* XDG\_RUNTIME\_DIR=/run/user/1000 /usr/bin/arecord -f cd -d 11000 /mnt/dd1/Musique/190602\_WeLoveGreen.wav

---

<div class="post-metadata">

**Author:** ![anon44391915](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/958977/32.png) [@anon44391915](https://www.debian-fr.org/u/anon44391915)\
**Post date:** [Juin 2, 2019, 11:16 UTC](https://www.debian-fr.org/t/utilisation-de-crontab/79372/4 "2019-06-02T11:16:16Z")

</div>

Intéressant 😉

XDG\_RUNTIME\_DIR n’est pas défini en amont dans l’environnement de l’utilisateur ?

```plaintext
env

```

> ```plaintext
> rem@n40l:~$ env
> SSH_CONNECTION=192.168.1.3 49130 192.168.1.18 22
> LANG=fr_FR.UTF-8
> XDG_SESSION_ID=222
> USER=rem
> LC_COLLATE=C
> PWD=/home/rem
> HOME=/home/rem
> SSH_CLIENT=192.168.1.3 49130 22
> SSH_TTY=/dev/pts/0
> MAIL=/var/mail/rem
> TERM=xterm-256color
> SHELL=/bin/bash
> SHLVL=1
> LOGNAME=rem
> XDG_RUNTIME_DIR=/run/user/1000
> PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
> _=/usr/bin/env
> rem@n40l:~$
> 
> ```

---

<div class="post-metadata">

**Author:** ![Tulum](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tulum/32/3929_2.png) [@Tulum](https://www.debian-fr.org/u/Tulum)\
**Post date:** [Juin 2, 2019, 11:35 UTC](https://www.debian-fr.org/t/utilisation-de-crontab/79372/5 "2019-06-02T11:35:01Z")

</div>

> [@anon44391915](#):
>
> XDG\_RUNTIME\_DIR n’est pas défini en amont dans l’environnement de l’utilisateur ?

Chez moi aussi XDG\_RUNTIME\_DIR est défini dans l’environnement de mon utilisateur. Mais cron n’en tient pas compte. Ce que je comprends pas ☹

---

<div class="post-metadata">

**Author:** ![anon44391915](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/958977/32.png) [@anon44391915](https://www.debian-fr.org/u/anon44391915)\
**Post date:** [Juin 2, 2019, 12:05 UTC](https://www.debian-fr.org/t/utilisation-de-crontab/79372/6 "2019-06-02T12:05:07Z")

</div>

J’ai essayé une crontab :

```nohighlight
* * * * * /usr/bin/env > /tmp/env.output

```

et Cron transmet un ensemble minimal de variables d’environnement aux travaux :

```nohighlight
rem@n40l:~$ cat /tmp/env.output 
HOME=/home/rem
LOGNAME=rem
PATH=/usr/bin:/bin
LANG=fr_FR.UTF-8
SHELL=/bin/sh
PWD=/home/rem
rem@n40l:~$

```

Je ne sais pas trop comment conclure.  
J’imagine facilement que c’est lié à la sécurité.

* * *

[https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working](https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working)
