【问题标题】:Linux At Command running docker-composeLinux At Command 运行 docker-compose
【发布时间】:2020-02-18 05:26:21
【问题描述】:

目标:我正在尝试在预定时间安排“docker-compose up”

操作系统:Linux Ubuntu 18.04

我曾尝试在 linux 中使用 'at' 命令,但我试图设置变量,但无法使其正常工作。

以下尝试:

sudo echo "KEY='VALUE' DIRECTION='D' sh run.sh" | at now + 2 minute
# Above does not run the docker-compose

sudo echo "KEY='VALUE' DIRECTION='D' sh run.sh" | at now + 2 minute
# Above runs docker-compose command immediately but not in 2 minutes
# run.sh

# SET LOGFILE LOCATION
LOG_FILE="/var/log/at/test.log"

FLIGHT_FILE="flight.yaml" docker-compose up --abort-on-container-exit >> "${LOG_FILE}"

如果有比使用“at”命令更好的方法,我也愿意接受。

提前谢谢你

【问题讨论】:

  • 为什么不是 cron? github.com/systemd-cron/systemd-cron
  • 我真的不明白它为什么重要的区别。你是说如果我切换到 cron 它会起作用吗?此外,对我来说,只是更具可读性而已。
  • 我没有机会使用at 命令。一个 systemd 服务肯定会完成这项工作。

标签: linux bash docker-compose ubuntu-18.04 schedule


【解决方案1】:

在您的示例中(两次尝试都相同)只有echosudo 执行,at 以您的用户身份执行。

选项:

在根的at 队列上运行脚本:

sudo sh -c "echo \"KEY='VALUE' DIRECTION='D' sh /home/user/run.sh \" | at now + 1 min"

使at 运行sudo - 仅当您有sudo 设置不询问密码时才有效:

echo "sudo sh -c \"KEY='VALUE' DIRECTION='D' /home/user/run.sh\"" | at now + 2 min

配置 docker,这样你就不需要 sudo

【讨论】:

  • 谢谢!这就是我需要的,我将 sudo 切换为在 at 运行,并且做到了。好电话
【解决方案2】:

有两种可能的方法 -

单个文件-

创建一个文件/etc/systemd/system/dc-test.service

[Unit]
Description=My Docker Compose runner

[Service]
User=%I
Restart=always
RestartSec=600s
ExecStart=/bin/bash /home/user/run.sh

以上将每 600 秒运行一次脚本。

多文件(带有服务计时器)

您需要创建两个文件,一个用于服务,另一个用于同名的计时器。

示例:

/etc/systemd/system/dc-test.service

[Unit]
Description=My Docker Compose runner

[Service]
Type=oneshot
ExecStart=/bin/bash /home/user/run.sh

/etc/systemd/system/dc-test.timer

[Unit]
Description=Docker Compose Timer

[Timer]
OnUnitActiveSec=600s
OnBootSec=600s

[Install]
WantedBy=timers.target

在这两种方法中,您都需要在创建文件后运行systemctl daemon-reload

【讨论】:

  • 这个解决方案并不能很好地处理动态变量。 Systemd 不支持服务启动时的动态环境变量。正如我正在尝试使用 FLIGHT_FILE。我想制作其中的多个并将其传递给 AT / CRON 解决方案bash FLIGHT_FILE="flight.yaml" docker-compose up --abort-on-container-exit >> "${LOG_FILE}"
猜你喜欢
  • 1970-01-01
  • 2021-07-15
  • 2021-12-01
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
相关资源
最近更新 更多