J'ai un script qui fonctionne parfaitement lorsque je le lance manuellement, mais ne semble pas fonctionner correctement depuis crontab.Le script Cronjob ne fonctionne pas comme prévu
L'erreur principale est que les variables d'environnement (externes) ne sont pas définies.
J'ai ajouté SHELL=/bin/bash
au-dessus de la définition de cronjob mais j'ai quand même obtenu les mêmes erreurs.
Le script que j'ai copié et collé ci-dessous. Vive l'aide
#!/bin/bash
# export MYSQL_PORT_3306_TCP_ADDR=`awk 'NR==1 {print $1}' /etc/hosts`
set -e
MOUNT=/mnt/s3b/
BACKUP=/root/backups
mkdir -p $BACKUP
NOW=$(date +"%Y-%m-%d-%H%M")
DB_FILE="$MYSQL_ENV_MYSQL_DATABASE.$NOW.sql"
/usr/bin/s3fs <bucket_name> $MOUNT -ouse_cache=/tmp -odefault_acl=public-read -ononempty
mysqldump -h$MYSQL_PORT_3306_TCP_ADDR -uroot -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD $MYSQL_ENV_MYSQL_DATABASE > /tmp/$DB_FILE
tar -czvf $BACKUP/"$DB_FILE.tar.gz" -P /tmp/$DB_FILE
cp $BACKUP/"$DB_FILE.tar.gz" $MOUNT/data/
L'erreur que vous pouvez voir ci-dessous toutes les variables d'environnement retour:
May 11 00:17:59 fcf074b9e5ee kernel: [293368.874868] SELinux: mount invalid. Same superblock, different security settings for (dev mqueue, type mqueue)
May 11 00:18:14 fcf074b9e5ee kernel: [293383.903080] docker0: port 6(veth2f6467f) entered forwarding state
May 11 01:29:26 fcf074b9e5ee s3fs[78]: s3fs.cpp:s3fs_init(3334): init v1.79(commit:unknown) with OpenSSL
May 11 01:29:26 fcf074b9e5ee s3fs[78]: s3fs.cpp:s3fs_check_service(3729): Could not connect wrong region us-east-1, so retry to connect region eu-west-1.
May 11 01:31:10 fcf074b9e5ee s3fs[93]: s3fs.cpp:s3fs_init(3334): init v1.79(commit:unknown) with OpenSSL
May 11 01:31:10 fcf074b9e5ee s3fs[93]: s3fs.cpp:s3fs_check_service(3729): Could not connect wrong region us-east-1, so retry to connect region eu-west-1.
May 11 10:25:02 fcf074b9e5ee kernel: [329791.913331] hrtimer: interrupt took 2331455 ns
mysqldump -h -uroot -p > /tmp/.2016-05-11-0015.sql
Où sont toutes les variables comme 'MYSQL_ENV_MYSQL_ROOT_PASSWORD' de $ définie? –
Qu'avez-vous défini comme votre crontab? Une chose que vous pouvez essayer est de définir votre '.profile' avant votre crontab comme ceci:' 0 0 * * *. ~/.profile; votre script crontab' –
Vous avez posé la même question hier, puis vous l'avez supprimée. Encore une fois: comment avez-vous mis en place votre cronjob? – fedorqui