
青龙面板如何用 Web 面板接管 crontab 定时任务【免费下载链接】qinglong支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台Timed task management platform supporting Python3, JavaScript, Shell, Typescript项目地址: https://gitcode.com/GitHub_Trending/qi/qinglong青龙面板Qinglong是一个开源的定时任务管理平台支持 Python3、JavaScript、Shell、TypeScript 四类脚本的调度与在线管理。它的思路是把分散在系统 crontab 里的任务收拢到一个 Web 后台脚本、调度规则、环境变量、运行日志统一存进一份 SQLite 数据库之后用浏览器就能完成增删改查。如果你正靠在 VPS 上 SSH 敲crontab -e维护着一堆脚本值得花十分钟了解一下。crontab 用到后期会遇到的几类麻烦系统 crontab 是为单机、单用户、少量任务设计的。任务量到十几个之后问题会集中爆发规则和脚本分散在不同位置换台机器要重新配一遍任务输出进系统邮件基本没人看脚本里的 API key 只能明文写在源码或 shell 环境里cron 最小粒度是一分钟秒级轮询做不到。青龙面板的做法是把这些环节都包进后台脚本存在data/scripts/下浏览器里在线编辑带语法高亮cron 表达式写在脚本头部注释里导入任务时可自动识别环境变量存数据库任务运行时按脚本注入key 不进源码每次运行在data/log/生成独立日志文件面板通过 WebSocket 实时推送运行结果可以推送到 Server 酱、钉钉、邮件等通知渠道。它底层怎么跑值得先弄清分钟级任务仍会写入系统 crontab逻辑见 back/services/cron.ts秒级任务则走 Node 侧调度器两条路径由后端按任务形态自动选择。也就是说青龙并不是取代 cron而是加在 cron 之上的管理层。完整机制说明可看官方架构文档 docs/PROJECT_ARCHITECTURE.md。和 crontab 的实际差异能做什么不能做什么维度系统 crontab青龙面板管理方式SSH crontab -e浏览器面板 内置 API调度粒度最小 1 分钟秒级Node 调度脚本语言shell 为主python3 / js / ts / shell日志进系统邮件或手动重定向按任务、按次分文件在线查看敏感配置写进脚本或 shell 环境数据库存储按任务注入数据位置散落各机器集中在一个data/目录边界同样清楚它是单实例系统没有多主、任务分片这类分布式能力也不是进程管理器常驻服务不要塞给它。部署Docker 与 npm 两条路Docker 是默认推荐仓库自带的 docker/docker-compose.yml 已经配好挂载和端口services: web: image: whyour/qinglong:latest volumes: - ./data:/ql/data ports: - 5700:5700 restart: unless-stoppeddocker compose up -d启动后访问http://主机IP:5700首次进入初始化页设置账号密码即可。在宿主机直接装则走 npm 路线需自备 Node.js、npm、python3git clone https://gitcode.com/GitHub_Trending/qi/qinglong cd qinglong npm i -g whyour/qinglong装完得到qinglong、ql、task三个命令启动前需手动设置QL_DIR安装目录和QL_DATA_DIR数据目录须以/data结尾两个环境变量。镜像选择latest基于 alpinedebian标签基于 debian-slim。需要以非 root 用户运行时请用 debian 镜像并加--user qinglong因为 alpine 的 crond 要求 root 权限alpine 装不了的依赖也应切 debian。第一个任务把调度规则写在脚本头注释里青龙的约定是把任务名和 cron 规则写在文件开头的注释块中仓库示例 sample/ql_sample.py 长这样 任务名称 name: script name 定时规则 cron: 1 9 * * * print(test script)把脚本放进data/scripts/在定时任务页登记即可运行。另一条常用路径是订阅填入一个 git 仓库地址面板会周期拉取其中的脚本、按头部注释自动建任务仓库里删除的脚本对应任务也会被清掉。sample/config.sample.sh 里的AutoAddCron、DefaultCronRule、RepoFileExtensions等配置项控制这一行为。几个值得顺手调的配置CommandTimeoutTime给任务设超时默认单位秒RandomDelay让任务在延迟区间内随机启动多个任务挤在同一整点时能摊平峰值。数据都集中在 data/ 目录备份就拷一个目录运行态数据集中在data/容器内为/ql/data结构很直白目录内容data/db/SQLite 库任务、环境变量、订阅、系统设置data/scripts/用户脚本data/log/按任务、按次的运行日志data/config/config.sh、crontab.list 等配置文件data/repo/订阅克隆下来的仓库由此带来的直接好处备份就是拷贝data/目录迁移就是新机器上挂同一个目录。任务量上百时建议定期把它打包到对象存储或配合面板的日志保留策略控制磁盘增长。哪些场景建议别用它常驻守护进程web 服务、消息消费这类不退出、一直跑的程序交给 systemd 或 Docker 管理cron 型任务的设计假设是跑完即退出分布式调度没有多主和高可用需要 HA 得自己在宿主机层做复杂编排没有通用任务依赖图和重试链需要 DAG 的场景去看 Airflow 这类工具重计算负载任务和面板进程共享容器资源计算量大的任务建议拆出去单独部署。两个真实会卡住的问题已有 crontab 怎么迁移没有一键导入。常见做法是把命令包成.sh脚本放进data/scripts/规则填进任务表单或依赖头部注释加订阅机制自动识别纯命令行条目逐个登记即可。alpine 和 debian 镜像怎么选root 运行、在意体积选latestalpine需要非 root 运行、或依赖装不上就换debian标签。下一步挑一个你已经在 cron 里跑的小脚本先部署面板、导入它完整走一遍在线编辑 → 触发 → 看日志 → 收通知的流程确认符合预期后再把其余任务迁过来。【免费下载链接】qinglong支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台Timed task management platform supporting Python3, JavaScript, Shell, Typescript项目地址: https://gitcode.com/GitHub_Trending/qi/qinglong创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考