簡體   English   中英

運行 docker-compose 的 Linux At 命令

[英]Linux At Command running docker-compose

目標:我正在嘗試在預定時間安排“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”命令更好的方法,我也願意接受。

先感謝您

在您的示例中(兩次嘗試都相同)只有echosudo執行, at以您的用戶身份執行。

選項:

在根的at隊列上運行腳本:

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

make at run sudo - 僅當您設置了sudo不詢問密碼時才有效:

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

配置 docker,這樣你就不需要sudo

有兩種可能的方法 -

單個文件-

創建文件/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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM