【问题标题】:Cron doesn't run sh script in ubuntu 20 [closed]Cron 不在 ubuntu 20 中运行 sh 脚本 [关闭]
【发布时间】: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(还没有!),所以它不应该导致问题。

标签: linux docker ubuntu cron


【解决方案1】:

尝试删除* * * * *之后的sh,只保留脚本的路径。

【讨论】:

  • 如 cmets 中所述,在这种特殊情况下不会有什么不同,因为该脚本实际上不需要任何 Bash-only 功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 2011-06-17
  • 2013-03-31
相关资源
最近更新 更多