PHPackages                             pantheon-systems/terminus-scheduled-jobs-plugin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. pantheon-systems/terminus-scheduled-jobs-plugin

ActiveTerminus-plugin[Utility &amp; Helpers](/categories/utility)

pantheon-systems/terminus-scheduled-jobs-plugin
===============================================

Configure and manage scheduled jobs via Terminus commands.

3765↑10.7%[3 PRs](https://github.com/pantheon-systems/terminus-scheduled-jobs-plugin/pulls)PHPCI passing

Since Feb 12Pushed 1w ago21 watchersCompare

[ Source](https://github.com/pantheon-systems/terminus-scheduled-jobs-plugin)[ Packagist](https://packagist.org/packages/pantheon-systems/terminus-scheduled-jobs-plugin)[ RSS](/packages/pantheon-systems-terminus-scheduled-jobs-plugin/feed)WikiDiscussions main Synced 2d ago

READMEChangelogDependenciesVersions (19)Used By (0)

Terminus Scheduled Jobs Plugin
==============================

[](#terminus-scheduled-jobs-plugin)

Scheduled Jobs
--------------

[](#scheduled-jobs)

This plugin allows scheduling jobs on the Pantheon platform. Each job runs in its own container with access to both the database and distributed file system. For now, other features such as access to the New Relic agent or secure integration are not available.

### Installation

[](#installation)

The only requirement is terminus 4.x. To install the plugin, the current repository needs to be cloned locally, followed by the execution of the following command:

```
terminus self:plugin:install $PATH_TO_LOCAL_CLONE
```

### Job Schedules

[](#job-schedules)

Job schedules are characterized as job definitions which allow setting a name for each job, a command and schedule in the UNIX cron format ().

```
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │                                   7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * *
```

Commands
--------

[](#commands)

### `schedule:create`

[](#schedulecreate)

Creating a new schedule can be performed running the command below. The given example runs an hourly job executing Drupal cron:

```
terminus scheduledjobs:schedule:create . "test-scheduled-job-hourly" "drush -vvv cron" "0 * * * *"
```

### `schedule:delete`

[](#scheduledelete)

Delete an existing schedule.

```
terminus scheduledjobs:schedule:delete .
```

### `schedule:list`

[](#schedulelist)

List all schedules for the specified site environment.

```
terminus scheduledjobs:schedule:list .

-------------------------------------- --------------------------- ------------- ---------------------------------- --------- ----------------------
 ID                                     Name                        Schedule      Command                            Status    Created At (UTC)
-------------------------------------- --------------------------- ------------- ---------------------------------- --------- ----------------------
 d178dd16-b0e3-47dc-a446-1bf4343f7fff   test-scheduled-job-hourly   0 * * * *     ls -la /files && drush -vvv cron   ENABLED   2023-05-19T07:34:26Z
-------------------------------------- --------------------------- ------------- ---------------------------------- --------- ----------------------
```

### `schedule:pause`

[](#schedulepause)

Pause a schedule.

```
terminus scheduledjobs:schedule:pause .
```

### `schedule:resume`

[](#scheduleresume)

Resume a paused schedule

```
terminus scheduledjobs:schedule:resume .
```

### `job:list`

[](#joblist)

Return a list of all active jobs. Requires the schedule ID.

```
terminus scheduledjobs:job:list .

-------------------------------------- ------------------------------- ------------------------------- ---------
 ID                                     Start Time                      End Time                        Status
-------------------------------------- ------------------------------- ------------------------------- ---------
 ca93e729-58e8-489f-805b-f73d4102c5c0   2023-05-26 07:00:03 +0000 UTC   2023-05-26 07:01:57 +0000 UTC   SUCCESS
 808a3a84-b1c6-42cf-92c8-f0b6afe959c8   2023-05-26 06:00:03 +0000 UTC   2023-05-26 06:01:51 +0000 UTC   SUCCESS
 e0a74a62-6705-4f0c-830c-0190f57dc1c0   2023-05-26 05:00:00 +0000 UTC   2023-05-26 05:01:34 +0000 UTC   SUCCESS
 7effda3b-be2e-42b9-9093-cd373b7b3079   2023-05-26 04:00:00 +0000 UTC   2023-05-26 04:01:33 +0000 UTC   SUCCESS
 54c39e63-fcf5-41f0-81ec-4163fc1f498b   2023-05-26 03:00:00 +0000 UTC   2023-05-26 03:01:54 +0000 UTC   SUCCESS
 fdf2cf55-88f5-44a1-8a7e-d422291f625a   2023-05-26 02:00:02 +0000 UTC   2023-05-26 02:01:51 +0000 UTC   SUCCESS
-------------------------------------- ------------------------------- ------------------------------- ---------
```

### `job:logs`

[](#joblogs)

View logs associated with a given job. Requires the job ID from `job:list`.

```
terminus scheduledjobs:job:logs .
```

### `budget:info`

[](#budgetinfo)

The Pantheon Scheduled Cron Jobs feature comes with a quota defined at the site level as a daily runtime budget.

Each site has a fixed allocated budget of 18000 seconds (300 minutes) per day measured by the second. This is calculated as the sum of all job durations, from the moment the job has started until it finished. There are currently no restrictions around the number of schedules that can be created for any given site. If the daily budget is exhausted, running jobs are given a 15 minute grace period after which a timeout signal will be issued. No other jobs will be created that day until midnight UTC when all budgets are reset.

```
terminus scheduledjobs:budget:info .

---------------------- ------------------------ -----------
 Daily Budget Elapsed   Daily Budget Remaining   Resets In
---------------------- ------------------------ -----------
 0s                     18000s                   6h31m3s
---------------------- ------------------------ -----------
```

\##s Job Timeouts

Timeouts are dynamic and dependent on the remaining budget plus a grace period. For instance, the daily available budget at the start of the day is 300 minutes, which means the first job's timeout is 315 minutes. When a job is launched throughout the day and the remaining budget is 60 minutes, the timeout will be calculated to 75 minutes.

Email
-----

[](#email)

Sending email via `sendmail` or `localhost` SMTP is not permitted. Email can still be sent via integrations with third party email providers either via their SMTP servers or API integrations.

###  Health Score

33

—

LowBetter than 72% of packages

Maintenance64

Regular maintenance activity

Popularity22

Limited adoption so far

Community21

Small or concentrated contributor base

Maturity23

Early-stage or recently created project

 Bus Factor4

4 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/5a89f5f15357797cbd6ec7833a28626478ae3c0ceb5fa1faa8a26d0960584c65?d=identicon)[pantheon-systems](/maintainers/pantheon-systems)

![](https://avatars.githubusercontent.com/u/2217820?v=4)[Kevin Porras](/maintainers/kporras07)[@kporras07](https://github.com/kporras07)

---

Top Contributors

[![lloydjm77](https://avatars.githubusercontent.com/u/3450455?v=4)](https://github.com/lloydjm77 "lloydjm77 (5 commits)")[![alexdicianu](https://avatars.githubusercontent.com/u/2629630?v=4)](https://github.com/alexdicianu "alexdicianu (4 commits)")[![TohaUA](https://avatars.githubusercontent.com/u/4780023?v=4)](https://github.com/TohaUA "TohaUA (3 commits)")[![bhavanvir](https://avatars.githubusercontent.com/u/20825496?v=4)](https://github.com/bhavanvir "bhavanvir (3 commits)")[![threeiem](https://avatars.githubusercontent.com/u/409803?v=4)](https://github.com/threeiem "threeiem (3 commits)")[![dtnp](https://avatars.githubusercontent.com/u/93545328?v=4)](https://github.com/dtnp "dtnp (2 commits)")[![tinasajfar](https://avatars.githubusercontent.com/u/263470199?v=4)](https://github.com/tinasajfar "tinasajfar (2 commits)")[![lowlostrong](https://avatars.githubusercontent.com/u/239265111?v=4)](https://github.com/lowlostrong "lowlostrong (1 commits)")[![namespacebrian](https://avatars.githubusercontent.com/u/87093053?v=4)](https://github.com/namespacebrian "namespacebrian (1 commits)")[![aleszoulek](https://avatars.githubusercontent.com/u/270768?v=4)](https://github.com/aleszoulek "aleszoulek (1 commits)")[![KostenetskyiAndrii](https://avatars.githubusercontent.com/u/99037292?v=4)](https://github.com/KostenetskyiAndrii "KostenetskyiAndrii (1 commits)")

### Embed Badge

![Health badge](/badges/pantheon-systems-terminus-scheduled-jobs-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/pantheon-systems-terminus-scheduled-jobs-plugin/health.svg)](https://phpackages.com/packages/pantheon-systems-terminus-scheduled-jobs-plugin)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
