【发布时间】:2021-02-10 15:02:07
【问题描述】:
我尝试了不同的选项来自动运行备份脚本,但它不起作用。日志中的一切都很好,一切都表明启动正在进行中。可能是什么问题呢?该脚本在手动启动时有效。脚本:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/nino_new/nino
now=$(date +"%d-%m-%y_%H:%M:%S")
filename=backups/nino_$now.json
docker exec -ti skill01 python manage.py dumpdata -o $filename -a
crontab:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/nino_new/nino
* * * * * sh /root/nino_new/nino/backup.sh
【问题讨论】:
-
可能不是问题,但 shebang 说 Bash 但 crontab 明确使用
sh。 -
可能是问题:
-t和-i在 cron 下可能有问题,无论如何都不需要。 -
#!/bin/sh 和 SHELL=/bin/sh?
-
我必须使用-ti,没办法。手动运行脚本和通过 cron 运行脚本有什么区别吗?就,是不是脚本手动运行良好,但由于脚本本身的原因,它不能通过cron运行?
-
不匹配不是问题。显式
sh带有一个文件,其 shebang 说 Bash 通常是一个坏主意。在这种情况下,脚本没有任何 Bashisms(还没有!),所以它不应该导致问题。