1panel 中文文档 下载 App

定时跑脚本与脚本库的用法

最通用的任务类型

Shell 脚本类型是计划任务里的万能件:清日志、跑迁移、调接口、备份数据库之外的任何自动化需求,都能落到一段定时执行的脚本上。

创建一个脚本任务

创建计划任务时选 Shell 脚本类型,主要字段:

Shell 脚本计划任务的创建表单
Shell 脚本任务

在容器里执行

这个开关是 1Panel 的特色。脚本默认跑在宿主机 shell 里,但很多目标在容器内——PHP 应用要执行 artisan 命令、容器里的工具要调用,直接在宿主机上跑会碰「命令不存在」的问题。

勾选「在容器中执行」后,选目标容器、执行用户和命令执行器,脚本就在该容器内运行。PHP 项目的定时任务几乎都走这条路,背景见PHP 环境里关于命令行归属的说明。

任务库:脚本资产化

任务库存可复用的脚本模板:常用脚本维护进去,创建任务时直接选,换机器导入任务库跟着走。官方文档给的安全提醒值得照抄:导入外部脚本前,先审查命令和变量——网上抄来的脚本在任务里定时跑,等于给陌生代码一个定时执行权。

写脚本的三个纪律

  1. 幂等优先:任务可能重试,脚本重复执行不应造成二次伤害(比如先判断再删);
  2. 输出有信息量:执行报告里看到的 stdout 就是排障依据,关键步骤 echo 一下;
  3. 长任务设超时:卡死的脚本会占着执行资源,用通用参数里的超时时间兜底。

延伸阅读