Skip to content

ZH CN Getting Started

RetiredGuitar64 edited this page Apr 21, 2026 · 6 revisions

安装 Procodile

开始使用 Procodile 的最简单方式,是直接从 GitHub Releases 页面下载预先静态编译好的 procodile 二进制文件。当前提供 AMD64、ARM64 和 Apple Darwin 平台的安装包。

下载完成后,请将 procodile 可执行文件所在目录加入系统的 PATH 环境变量。

需要注意的是,procodile 运行时要求当前工作目录中存在 Procfile 文件,否则无法正常启动。

创建 Procfile

Procodile 会从应用根目录中的 Procfile 读取进程定义。

例如,创建一个 Procfile

web: bundle exec puma -C config/puma.rb
worker: bundle exec rake app:worker

其中,每一项都定义了一个进程名和要执行的命令。

你也可以在 Procfile 所在目录下创建 Procfile.optionsProcfile.local 文件,用于定义额外配置。其中,Procfile.local 的配置会覆盖 Procfile.options

更多内容见 配置

启动应用

procodile start 会立即启动普通的长期运行进程。

定时进程在执行 start 后会被启用,但不会立刻运行。它们会在下次匹配到调度时间时运行。

如果这是你第一次运行 Procodile,通常建议先用开发模式启动。这样 Procodile 会在前台运行,你可以直接看到日志里发生了什么。

procodile start --dev

如果要像 Foreman 那样在后台启动,可以这样执行:

procodile start

这种情况下,你刚才在终端里看到的日志输出,就会被保存到应用根目录下的 procodile.log 文件中。

命令细节见 start command

加载 Env 文件

启动 supervisor 时,可以通过 env 文件加载环境变量:

procodile start --env-file
procodile start --env-file .env.production

如果没有指定文件名,就默认使用 .env。关于优先级和文件加载行为,见 环境文件

停止进程

停止所有正在运行的进程:

procodile stop

停止指定的进程或实例:

procodile stop -p web
procodile stop -p web.2

对于定时进程,stop -p job 会关闭后续调度。如果你还想立即停止当前正在运行的定时实例,可以显式停止那个实例,例如 procodile stop -p job.3

命令细节见 stop command

重启进程

重启配置中的长期运行进程:

procodile restart

只重启部分进程类型:

procodile restart -p web,worker

定时进程的行为不同:restart 会重新加载并重新启用它们的调度,但不会立即执行。

如果你显式指定一个正在运行的定时实例,例如 procodile restart -p job.3,Procodile 会重启这个实例,同时也会重新开启这个 job 后续的调度。

命令细节见 restart command

查看状态

查看当前状态:

procodile status

查看更简洁、适合机器处理的摘要:

procodile status --simple

命令细节见 status command

重新加载配置

修改 Procfile 或 options files 之后,可以使用 procodile reload 更新正在运行中的 supervisor 配置。

procodile reload

定时进程相关的改动会立即生效。长期运行进程则会在下次重启时读取新的配置。

命令细节见 reload command

定时进程

除了普通的长期运行进程,Procodile 也支持定时任务。

例如:

"cleanup__AT__*/10 * * * * *": bundle exec rake cleanup

定时进程不会因为 startrestart 而立刻执行。它们会先被启用,然后在下次匹配到调度时间时运行。

在真正依赖某个定时任务之前,通常最好先用 procodile run 手动执行一次对应命令,确认它能正常运行、不会报错。

详情见 定时进程

运行时问题

Procodile 会跟踪一些重要的运行时问题,例如:

  • 进程反复失败
  • 定时任务的 cron 表达式无效
  • 因为前一次运行还没结束,定时任务连续多次被跳过

这些问题会显示在 status 输出中,也会在 CLI 命令执行结束后显示出来。

详情见 运行时问题与错误

下一步

Clone this wiki locally