我制作了一个执行docker命令以转储MySQL数据库的bash脚本:
dump_db.sh
#!/bin/bash
time=$( date +%Y%m%d%H%M )
currdir=$( pwd )
cat $currdir/container_list | while read container; do
echo "" | docker exec -i $container mysqldump -u <user> -p<password> <dbname> > $currdir/$container-$time.sql
done
如果我尝试手动运行脚本,则一切正常,但是如果我使用cron
,则脚本不会执行。
我的crontab是:
PATH=<same environment>
26 17 * * * /bin/sh /path/to/script/dump_db.sh
如您所见,我也尝试导出PATH(并通过crontab中的env
命令对其进行了检查),但是什么也没有。
我也尝试过这些线
26 17 * * * /bin/bash /path/to/script/dump_db.sh
26 17 * * * /path/to/script/dump_db.sh
此外,也是一个简单的bash脚本,如下所示:
#!/bin/bash
touch test_touch.txt
不起作用,而通过touch
的简单cron
命令是可以的。
我在哪里错了?
答案 0 :(得分:0)
请检查脚本是否具有其他用户的执行权限。 手动运行时,将与您登录的用户一起运行。 但是,当它从Cron运行时,它是另一个用户。该用户必须具有执行该脚本的权限。