执行bash命令有效,但不能在crontab上运行

时间:2018-06-23 18:38:13

标签: bash cron amazon-lightsail

我正在使用aws lightail产品。

当我执行bash的命令时,

* * * * * docker exec -it my_container_name Rscript /home/path/to/file.R

我还使用

检查了cron日志
grep CRON /var/log/syslog

它说工作正常。 但是结果没有给出。

2 个答案:

答案 0 :(得分:1)

为什么运行 -it

将脚本放在容器中并运行 -d 吗?

此外,如果您使用cron而不是交互式登录,则您的bash-env设置可能会有所不同。路径,LC设置是导致我遇到最多问题的原因。

答案 1 :(得分:0)

您的dockerimage文件是否具有 ENTRYPOINT

copy run2.sh /usr/local/bin/run2.sh
run chmod +x /usr/local/bin/run2.sh
ENTRYPOINT ["/usr/local/bin/run2.sh"]

您的run2.sh文件应如下所示(以便它可以响应来自操作系统的信号,即关机)

#!/bin/bash
#This is a run file - which should be used to add things you want your
#container to do when you start it up
#
#If you do not have this then ...
#  docker-compose up ---- simply exists as there is nothing for the container to do.

trap cleanup 1 2 3 6 9 15

cleanup()
{
  echo "Caught Signal ... cleaning up."
  service postgresql stop
  sleep 1s
  echo "Done  ... quitting."
  exit 1
}

service postgresql start
# wait forever
echo "Starting up"
while true
do
  tail -f /dev/null
done

注意: 这样就无需启动服务,而且您还可以指定所需的关闭步骤。

如果您希望可以有多个规则,我只是懒惰,一起把它们凑在一起。

希望这会有所帮助。...