0
我有一個腳本,當我手動運行它自己,但似乎無法從crontab正確運行時,它工作得非常好。Cronjob腳本沒有按預期工作
主要錯誤是(外部)環境變量沒有被設置。
我在cronjob定義之上添加了SHELL=/bin/bash
,但仍然得到相同的錯誤。
我在下面複製並粘貼的腳本。乾杯的幫助
#!/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/
,你可以看到下面的所有環境變量返回的錯誤:
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
在哪裏都一樣'$ MYSQL_ENV_MYSQL_ROOT_PASSWORD'變量定義的? –
你有什麼設置爲你的crontab?你可以嘗試的一件事是在你的crontab之前設置你的'.profile',像這樣:'0 0 * * *。 〜/ .profile中;你的crontab腳本' –
昨天你問了同樣的問題,然後你刪除了它。再說一遍:你是如何設置你的cronjob的? – fedorqui