【问题标题】:Custom shell script in crontabcrontab 中的自定义 shell 脚本
【发布时间】:2019-12-01 05:27:11
【问题描述】:

我有一个简单的 shell 脚本,它在容器内执行 docker-exec 命令。 该脚本位于/var/www/mysite-nginx/nginx-reload.sh,该文件的权限为-rwxrwxr-x

#!/bin/sh
docker exec -it mysite_nginx  nginx -s reload

如果我直接从 shell 执行这个脚本,它就可以工作。但是,如果我使用以下行将脚本添加到我的 crontab 中,它就不起作用。

15 4 * * * /var/www/mysite-nginx/nginx-reload.sh

我猜想cron没有执行命令,或者出了什么问题?

/var/log/syslog 我有:

Jul 23 15:30:01 arrubiu CRON[29511]: (sergej) CMD (/var/www/mysite-nginx/nginx-reload.sh)

[编辑] 这样解决:docker exec is not working in cron

【问题讨论】:

    标签: docker cron sh


    【解决方案1】:

    问题似乎是找不到docker。有两种方法:

    1. 您在 crontab 脚本中输入所有应用程序的完整路径,您可以使用例如locate docker,所以它看起来像
    #!/bin/sh
    /usr/bin/docker exec -it mysite_nginx  
    /usr/bin/nginx -s reload
    
    1. 或者,您可以设置$PATH 和其他环境变量,方法与为通常的sh 脚本设置的方式相同。为此,首先备份保存在/etc/environment 中的内容,然后通过执行以下命令将其刷新为当前可用的变量:
    cp /etc/environment > ~/my_etc_environment_backup
    env >> /etc/environment
    

    关于 SO 的相关问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      相关资源
      最近更新 更多