带有WebUI的cron替代品Dagu

2024-09-01 05:12
文章标签 cron webui 带有 替代品 dagu

本文主要是介绍带有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:latestcontainer_name: dagurestart: unless-stoppedports:- "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: step1executor:type: mailconfig:to: wbsu2003@hotmail.comfrom: wbsu2003@88.comsubject: "Dagu 测试邮件"message: |Hello world,send by Dagu~- name: step2command: echo done!depends:- step1

SAVE 保存

上拉,找到 START 执行

执行完成

查看日志

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

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

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

steps:- name: send_GET_requestcommand: /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"
elseecho "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/

这篇关于带有WebUI的cron替代品Dagu的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126034

相关文章

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

145-Linux权限维持Rootkit后门Strace监控Alias别名Cron定时任务

参考 【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务_alias ls='alerts(){ ls $* --color=auto;python -c "-CSDN博客 参考 FlowUs 息流 - 新一代生产力工具 权限维持-Linux-定时任务-Cron后门 利用系统的定时任务功能进行反弹Shell 1、编辑后门反弹shell脚本

url参数中带有号,需要用先把url做个解析,使其方便在网络上传递

需求:提交异步通知地址给宝付的投标接口,发现投标成功后,异步通知地址没有被调用 排查:通过和宝付技术对接,发现是203,地址重定向错误。深入排查,发现异步通知返回的地址中&号之后的参数宝付没有收到 结论:表单提交的参数中的异步通知地址中的&号没有做urlencode()处理导致传递丢失参数。 地址参数中带有&号,java在做提交的时候,不能正确传递&,导致地址中&之后的内容丢失。故此需要ur

【MobaXterm 远程连接工具】Windows下有没有xshell的更好的替代品?

每次间隔一段时间,xshell 总是提醒需要更新,很烦,点更新又没有用。 xshell 官方下载地址: https://xshell.en.softonic.com/ 本文要隆重推出一款集万千于一身的全能型终端神器——MobaXterm!这款神器是我师傅介绍给我的,在我第一次使用它的时候,就深深爱上它了,真的是相见恨晚,从此一发不不可收拾,自己电脑,公司电脑全部都安上了这款神器。 先说说这款

Dkron 的 cron

Dkron https://dkron.io/intro/ CRON SPEC       时间间隔: 还可以安排一个作业以固定的时间间隔执行。这是通过格式化cron规范来支持的,如下所示:   @every <duration> 例如,“@every 1h30m10s” 表示每1小时30分钟10秒激活一次计划。   定时执行:

什么是机器学习中的 Bagging?带有示例的指南

文章目录 一、说明二、理解集成学习2.1 什么是 Bagging?2.2 Bagging 与 Boosting2.3 套袋的优点 三、Python 中的 Bagging:简短教程3.1 数据集3.2 训练机器学习模型3.3 模型评估 四、装袋分类器4.1 评估集成模型4.2 最佳实践和技巧 五、结论 ​ 一、说明    集成方法是机器学习中强大的技术,它可以结合多种模型来提高

Selenium 调用 JavaScript 操作带有 readonly 属性 的日期控件

'''<input class="index_start" readonly="" placeholder="开始日期" size="12" autocomplete="off" type="text" value=""><input class="index_end" readonly="" placeholder="结束日期" size="12" autocomplete="off" ty

安卓13带有系统签名的应用不能正常使用webview 调用webview失败 系统应用app apk

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋 1.前言   android版本高一些的平台,经常会遇到一些权限安全问题,像客户的应用如果带有系统签名,会导致不能正常使用webview问题。 2.问题分析 我们log信息,可以发现下面的提示: For security reasons, WebView i

img标签的src地址带有中文导致图片解析失败,图片展示不出来

使用srcset属性 在这个例子中,我们包含了一个 srcset 属性,它引用了 MDN 标志高清版本;在高分辨率设备上,它将被优先加载,取代 src 属性中的图像。在支持 srcset 的用户代理中中,src 属性中的图片被作为 1x 候选项。 <img src="xxxx/Picture/1605236485077微信图片_20201113104456.jpg" alt="MDN log

如何在算家云搭建模型Stable-diffusion-webUI(AI绘画)

一、Stable Diffusion WebUI简介 Stable Diffusion WebUI 是一个网页版的 AI 绘画工具,基于强大的绘画模型Stable Diffusion ,可以实现文生图、图生图等。 二、模型搭建流程 1.选择主机和镜像 (1)进入算家云的“应用社区”,点击搜索或者找到"stable-diffusion-webui,进入详情页后,点击“创建应用”