gpt4 book ai didi

cron - 在Docker中处理Cron作业?

转载 作者:行者123 更新时间:2023-12-02 20:26:20 25 4
gpt4 key购买 nike

人们通常如何使用Docker处理Cron工作?我见过的最常见的情况是会有一个只运行crond和代码库的sidekick图像,但是使用cronie时,我无法读取在docker命令行中传递的任何环境变量。

具体来说,我将这样做:

docker run -d --name cron -e VAR1=val1 -e VAR2=val2 cron_image start

在图像内部,我们将有以下内容:
[root@dae7207bf10e /]# yum info cronie
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.ash.fastserv.com
* epel: mirror.cs.pitt.edu
* extras: mirror.vcu.edu
* updates: mirror.us.leaseweb.net
Installed Packages
Name : cronie
Arch : x86_64
Version : 1.4.11
Release : 13.el7
Size : 211 k
Repo : installed
Summary : Cron daemon for executing programs at set times
URL : https://fedorahosted.org/cronie
License : MIT and BSD and ISC and GPLv2+
Description : Cronie contains the standard UNIX daemon crond that runs specified programs at
: scheduled times and related tools. It is a fork of the original vixie-cron and
: has security and configuration enhancements like the ability to use pam and
: SELinux.

[root@dae7207bf10e /]# cat /usr/local/bin/start
#!/bin/bash
/usr/bin/env > /var/tmp/docker_env
/usr/sbin/crond -n

我的crontabs将如下所示:
SHELL=/bin/bash
5 16 * * * source /var/tmp/docker_env; /usr/local/bin/randomchallenge &> /var/log/randomchallenge.log

最初,我根本没有源位,而是尝试直接使用变量,但是cronie似乎并没有将它们提供给被调用的作业(这在绝大多数用例中都有意义)。我尝试过各种方法来拉入这个env文件,但是运气不好,我的程序永远无法读取变量。即使将整个内容包装在拉入env的shell脚本中也无法完成任务。

人们如何处理这种事情?硬编码值不是一种选择。我想我可以使启动脚本即时生成crontab,但这看起来确实很丑。

最佳答案

搜索env文件不起作用,我不确定为什么(最初我是chmod + xing env文件,我为这个答案删除了它,所以不是那样)。我最终找到了这个古怪的环境狂想者。 env可以从stdin设置变量,因此我们只需要收集我们的env文件,将其发送到env,然后将该环境用于我们的实际工作即可。

[root@b7886c463928 /]# cat /usr/local/bin/start
#!/bin/bash
env > /var/tmp/docker_env
/usr/sbin/crond -n
[root@b7886c463928 /]# crontab -l
*/1 * * * * env - `cat /var/tmp/docker_env` env > /tmp/cron.check

您需要在每项工作之前添加此位
env - `cat /var/tmp/docker_env`

我将编写一个轻量级的crond克隆,该克隆可以处理标准作业格式,但可以将环境传递给标准输出。

关于cron - 在Docker中处理Cron作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32613930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com