带有WebUI的cron替代品Dagu

在这里插入图片描述

什么是 Dagu ?

Dagu 是一个强大的 Cron 替代品,它带有一个 Web UI。它允许你将命令之间的依赖关系定义为有向无环图(DAG),使用声明式的 YAML 格式。Dagu 的设计易于使用、自包含且无需编码,非常适合小型项目。

安装

在群晖上以 Docker 方式安装。因为镜像发布在 ghcr.io ,所以采用命令行方式安装

需要用 SSH 客户端登录到群晖后再执行

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 dagu 和 子目录
mkdir -p /volume1/docker/dagu/{dags,data,logs}

# 进入 dagu 目录
cd /volume1/docker/dagu

# 修改目录权限
chmod a+rw {dags,data,logs}

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name dagu \
   -p 8210:8080 \
   -v $(pwd)/dags:/home/dagu/.dagu/dags \
   -v $(pwd)/data:/home/dagu/.dagu/data \
   -v $(pwd)/logs:/home/dagu/.dagu/logs \
   ghcr.io/dagu-dev/dagu:latest \
   dagu start-all

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
  dagu:
    image: ghcr.io/dagu-dev/dagu:latest
    container_name: dagu
    restart: unless-stopped
    ports:
      - "8210:8080"
    volumes:
      - "./dags:/home/dagu/.dagu/dags"
      - "./data:/home/dagu/.dagu/data"
      - "./logs:/home/dagu/.dagu/logs"
    command: ["dagu", "start-all"]

然后执行下面的命令

# 新建文件夹 dagu 和 子目录
mkdir -p /volume1/docker/dagu/{dags,data,logs}

# 进入 dagu 目录
cd /volume1/docker/dagu

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8210 就能看到主界面

NEW 新建 DAG

输入名称

自动跳转到 SPEC 界面

下拉会看到编辑界面

EDIT 进入编辑模式

粘贴下面的内容

mail 执行器可用于发送电子邮件。这对于发送通知或警报很有用

smtp:
  host: "smtp.88.com"
  port: "25"
  username: "wbsu2003@88.com"
  password: "<第三方邮件客户端密码>"

steps:
  - name: step1
    executor:
      type: mail
      config:
        to: wbsu2003@hotmail.com
        from: wbsu2003@88.com
        subject: "Dagu 测试邮件"
        message: |
          Hello world,send by Dagu~
  - name: step2
    command: echo done!
    depends:
      - step1

SAVE 保存

上拉,找到 START 执行

执行完成

查看日志

如果设置没问题,很快就会收到邮件

进入 FileStation 中,可以看到对应的 yaml 文件

另一种情况是调用脚本文件,举个简单的例子,通过脚本来获取 pm2.5 的值

steps:
  - name: send_GET_request
    command: /home/dagu/.dagu/dags/weather.sh

这里比较大的坑是要用容器内的路径,默认 WORKDIR/home/dagu/,所以要用完整的路径

weather.sh 的内容

#!/bin/sh

# 设置环境变量
export CITY_ID=101020100

# 发送 GET 请求并获取响应体
response=$(curl -s -X GET "http://t.weather.itboy.net/api/weather/city/${CITY_ID}" -H "Authorization: ")

# 检查 curl 命令是否成功执行
if [ $? -eq 0 ]; then
  # 使用 jq 打印 JSON 数据
  # echo $response | jq .
  pm25=$(echo $response | jq -r '.data.pm25')  
  echo "pm25: $pm25"
else
  echo "Failed to fetch data"
fi

关于天气的接口,老苏在之前的文章中提过,你只要将 CITY_ID 替换成你所在的城市即可

文章传送门:用Changedetection监控网页的变化

因为是 Dagu 是通过容器安装的,所以需要让 Dagu 支持我们在
脚本中用到的 curljq

首先要用 root 身份进入容器

# 进入容器
docker exec -it -u root dagu /bin/sh

然后在容器中继续执行下面的命令

# 更新包索引
apk update

# 安装 curl
apk add curl

# 安装 jq
apk add jq

然后回到 DaguStart

Log 查看

没问题的话,会看到当前的 pm2.5

参考文档

GitHub - dagu-dev/dagu: Yet another cron alternative with a Web UI, but with much more capabilities. It aims to solve greater problems.
地址:https://github.com/dagu-dev/dagu

Dagu — Dagu 文档
地址:https://dagu.readthedocs.io/zh/latest/

Dagu-一个带有Web UI的cron替代品 | Noise&Blog
地址:https://www.noiseblogs.top/posts/a86216b9/

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Web页面设计中的cron定时器页面是指一个用来设置和管理cron定时任务的页面。cron定时器是一种在特定时间或者固定间隔执行任务的工具,常用于后台任务和自动化操作。 这个页面通常包含以下几个主要功能: 1. 设置定时任务:用户可以在页面上设置任务的执行时间和间隔。通常,这些设置包括分钟、小时、日期、月份等。用户可以根据实际需求选择适当的时间和间隔来执行任务。 2. 管理定时任务:页面还提供了对已经设置的定时任务的管理功能。用户可以查看已经设置的任务列表,包括任务的执行时间、间隔和状态等信息。用户可以对这些任务进行编辑、删除或者暂停。 3. 日志记录:为了方便用户查看定时任务的执行情况,页面会记录每个任务的执行日志。用户可以通过页面查看任务的执行日志,包括执行时间、执行结果等信息。 4. 通知和提醒:为了确保任务的准时执行,页面还会提供通知和提醒功能。用户可以选择以邮件、短信或者推送的形式接收任务执行结果的通知。这样,用户就可以随时随地了解任务的执行情况。 总之,cron定时器页面是一个用于设置和管理定时任务的工具,它可以帮助用户在Web环境下方便地管理后台任务和自动化操作。用户可以通过这个页面灵活地设置任务的执行时间和间隔,并且可以随时查看任务的执行情况和结果。通过这个页面,用户可以更好地掌握各种任务的执行进度,从而提高工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值