Servers
Adding & Managing Server Jobs
Overview
Server Jobs allow you to define and schedule regular server tasks (shell commands). Under the hood, these are run as cronjobs.
Adding a new server job
To add a new server job:
- Click the Jobs in the left-hand nav
- Click on the button for the type of job you wish to add
- Give give your new job a name
- Specify the command(s) you want to run and the user
- Set a schedule for the job - you can use cron syntax for more control over your scheduling
- Click Save
You will now see your new job listed on the Jobs page. You can edit it, or run it on demand by clicking on the small downward arrow. Your run results (success, failure and any output) can be seen in real-time on the job detail page.
Pausing jobs
You can pause jobs in a number of ways:
- Via the Jobs page in your Dashboard (see next section)
- Whenever you Deploy with Options (see below)
- Via our API
Pausing a server or Rake job removes it from the cron for as long as it remains paused.
Pausing via the dashboard
To pause Jobs via the Dashboard:
- Log into your Dashboard and open your app
- Click on Jobs in the left-hand nav
- Click the small down arrow next to the job you wish to pause
- Choose Pause this job
The job will remain paused until you unpause it (using the same sequence above).
You can also pause all jobs by clicking the Pause All button at the top of the panel (or Unpause All as needed).
Pausing while deploying
When you deploy, you can choose Deploy with Options and check the Pause Jobs option to temporarily pause jobs during the deployment process. We will pause any currently unpaused jobs and then unpause (only) those jobs after deployment. You can also set this option as part of any deployment profile.
Using parameters
When you are running a job on demand via dashboard or toolbelt, you can pass it parameters (if it is written to accept them).
Notation
Jobs use a facility in the shell called positional parameters. Positional parameters are a series of special variables ($1, $2 ... $n) that contain the contents of the command line. Where n is greater than 9 using braces. For example, to refer to the 15th positional parameter, use the notation ${15}
.
cp $1 $2
ls $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11}
Default values
You can handle default value for the parameter with following notation: ${n:-YOUR_DEFAULT_VALUE}
. This is useful when you have ha job that scheduled and also you need to run it on demand sometimes.
Example below cp file $1
to tmp
directory by default
cp $1 ${2:-/tmp}
Passing parameters to job
Since job is using positional parameters pass you arguments in order, eg: if you pass arg1
arg2
, $1
would contain arg1
and $2
would contain arg2
You can also quote your argument if there is a space in the value.
Example
Job command | cp $1 ${2:-/tmp} |
Passing arguments via dashboard | "log*.txt" tmp/logs |
Passing arguments via Toolbelt | --arg "log*.txt" -- arg tmp/logs |