# job

Job operations

## Usage

```bash
apolo job [OPTIONS] COMMAND [ARGS]...
```

Job operations.

**Commands:**

| Usage                                           | Description                                |
| ----------------------------------------------- | ------------------------------------------ |
| [*attach*](#attach)                             | Attach terminal to a job                   |
| [*browse*](#browse)                             | Opens a job's URL in a web browser         |
| [*bump-life-span*](#bump-life-span)             | Increase job life span                     |
| [*exec*](#exec)                                 | Execute command in a running job           |
| [*generate-run-command*](#generate-run-command) | Generate command that will rerun given job |
| [*kill*](#kill)                                 | Kill job(s)                                |
| [*logs*](#logs)                                 | Print the logs for a job                   |
| [*ls*](#ls)                                     | List all jobs                              |
| [*port-forward*](#port-forward)                 | Forward port(s) of a job                   |
| [*run*](#run)                                   | Run a job                                  |
| [*save*](#save)                                 | Save job's state to an image               |
| [*status*](#status)                             | Display status of a job                    |
| [*top*](#top)                                   | Display GPU/CPU/Memory usage               |

### attach

Attach terminal to a job

#### Usage

```bash
apolo job attach [OPTIONS] JOB
```

Attach terminal to a job

Attach local standard input, output, and error streams to a running job.

#### Options

| Name                                      | Description                                                                                         |
| ----------------------------------------- | --------------------------------------------------------------------------------------------------- |
| *--help*                                  | Show this message and exit.                                                                         |
| *--port-forward LOCAL\_PORT:REMOTE\_RORT* | Forward port(s) of a running job to local port(s) (use multiple times for forwarding several ports) |

### browse

Opens a job's URL in a web browser

#### Usage

```bash
apolo job browse [OPTIONS] JOB
```

Opens a job's `URL` in a web browser.

#### Options

| Name     | Description                 |
| -------- | --------------------------- |
| *--help* | Show this message and exit. |

### bump-life-span

Increase job life span

#### Usage

```bash
apolo job bump-life-span [OPTIONS] JOB TIMEDELTA
```

Increase job life span

#### Options

| Name     | Description                 |
| -------- | --------------------------- |
| *--help* | Show this message and exit. |

### exec

Execute command in a running job

#### Usage

```bash
apolo job exec [OPTIONS] JOB -- CMD...
```

Execute command in a running job.

#### Examples

```bash

# Provides a shell to the container:
$ apolo exec my-job -- /bin/bash

# Executes a single command in the container and returns the control:
$ apolo exec --no-tty my-job -- ls -l
```

#### Options

| Name                       | Description                                                                                                                                                      |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *--help*                   | Show this message and exit.                                                                                                                                      |
| *-t, --tty / -T, --no-tty* | Allocate a TTY, can be useful for interactive jobs. By default is on if the command is executed from a terminal, non-tty mode is used if executed from a script. |

### generate-run-command

Generate command that will rerun given job

#### Usage

```bash
apolo job generate-run-command [OPTIONS] JOB
```

Generate command that will rerun given job.

#### Examples

```bash

# You can use the following to directly re-execute it:
$ eval $(apolo job generate-run-command <job-id>)
```

#### Options

| Name     | Description                 |
| -------- | --------------------------- |
| *--help* | Show this message and exit. |

### kill

Kill job(s)

#### Usage

```bash
apolo job kill [OPTIONS] JOBS...
```

Kill job(s).

#### Options

| Name     | Description                 |
| -------- | --------------------------- |
| *--help* | Show this message and exit. |

### logs

Print the logs for a job

#### Usage

```bash
apolo job logs [OPTIONS] JOB
```

Print the logs for a job.

#### Options

| Name                          | Description                                                                                                                              |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| *--help*                      | Show this message and exit.                                                                                                              |
| *--since DATE\_OR\_TIMEDELTA* | Only return logs after a specific date (including). Use value of format '1d2h3m4s' to specify moment in past relatively to current time. |
| *--timestamps*                | Include timestamps on each line in the log output.                                                                                       |

### ls

List all jobs

#### Usage

```bash
apolo job ls [OPTIONS]
```

List all jobs.

#### Examples

```bash

$ apolo ps -a
$ apolo ps -a --owner=user-1 --owner=user-2
$ apolo ps --name my-experiments-v1 -s failed -s succeeded
$ apolo ps --description=my favourite job
$ apolo ps -s failed -s succeeded -q
$ apolo ps -t tag1 -t tag2
```

#### Options

| Name                                                                                  | Description                                                                                                                                                                                                    |
| ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *--help*                                                                              | Show this message and exit.                                                                                                                                                                                    |
| *-a, --all*                                                                           | Show all jobs regardless the status.                                                                                                                                                                           |
| *--all-orgs*                                                                          | Show jobs in all orgs.                                                                                                                                                                                         |
| *--all-projects*                                                                      | Show jobs in all projects.                                                                                                                                                                                     |
| *--cluster CLUSTER*                                                                   | Show jobs on a specified cluster (the current cluster by default).                                                                                                                                             |
| *-d, --description DESCRIPTION*                                                       | Filter out jobs by description (exact match).                                                                                                                                                                  |
| *--distinct*                                                                          | Show only first job if names are same.                                                                                                                                                                         |
| *--format COLUMNS*                                                                    | Output table format, see "apolo help ps-format" for more info about the format specification. The default can be changed using the job.ps-format configuration variable documented in "apolo help user-config" |
| *--full-uri*                                                                          | Output full image URI.                                                                                                                                                                                         |
| *-n, --name NAME*                                                                     | Filter out jobs by name.                                                                                                                                                                                       |
| *--org ORG*                                                                           | Filter out jobs by org name (multiple option, the current org by default).                                                                                                                                     |
| *-o, --owner TEXT*                                                                    | Filter out jobs by owner (multiple option). Supports `ME` option to filter by the current user.                                                                                                                |
| *-p, --project PROJECT*                                                               | Filter out jobs by project name (multiple option, the current project by default).                                                                                                                             |
| *--recent-first / --recent-last*                                                      | Show newer jobs first or last                                                                                                                                                                                  |
| *--since DATE\_OR\_TIMEDELTA*                                                         | Show jobs created after a specific date (including). Use value of format '1d2h3m4s' to specify moment in past relatively to current time.                                                                      |
| *-s, --status \[pending \| suspended \| running \| succeeded \| failed \| cancelled]* | Filter out jobs by status (multiple option).                                                                                                                                                                   |
| *-t, --tag TAG*                                                                       | Filter out jobs by tag (multiple option)                                                                                                                                                                       |
| *--until DATE\_OR\_TIMEDELTA*                                                         | Show jobs created before a specific date (including). Use value of format '1d2h3m4s' to specify moment in past relatively to current time.                                                                     |
| *-w, --wide*                                                                          | Do not cut long lines for terminal width.                                                                                                                                                                      |

### port-forward

Forward port(s) of a job

#### Usage

```bash
apolo job port-forward [OPTIONS] JOB LOCAL_PORT:REMOTE_RORT...
```

Forward port(s) of a job.

Forwards port(s) of a running job to local port(s).

#### Examples

```bash

# Forward local port 2080 to port 80 of job's container.
# You can use http://localhost:2080 in browser to access job's served http
$ apolo job port-forward my-fastai-job 2080:80

# Forward local port 2222 to job's port 22
# Then copy all data from container's folder '/data' to current folder
# (please run second command in other terminal)
$ apolo job port-forward my-job-with-ssh-server 2222:22
$ rsync -avxzhe ssh -p 2222 root@localhost:/data .

# Forward few ports at once
$ apolo job port-forward my-job 2080:80 2222:22 2000:100
```

#### Options

| Name     | Description                 |
| -------- | --------------------------- |
| *--help* | Show this message and exit. |

### run

Run a job

#### Usage

```bash
apolo job run [OPTIONS] IMAGE [-- CMD...]
```

Run a job

`IMAGE` docker image name to run in a job.

`CMD` list will be passed as arguments to the executed job's image.

#### Examples

```bash

# Starts a container pytorch/pytorch:latest on a machine with smaller GPU resources
# (see exact values in `apolo config show`) and with two volumes mounted:
#   storage:/<home-directory>   --> /var/storage/home (in read-write mode),
#   storage:/neuromation/public --> /var/storage/neuromation (in read-only mode).
$ apolo run --preset=gpu-small --volume=storage::/var/storage/home:rw \
$ --volume=storage:/neuromation/public:/var/storage/home:ro pytorch/pytorch:latest

# Starts a container using the custom image my-ubuntu:latest stored in apolo
# registry, run /script.sh and pass arg1 and arg2 as its arguments:
$ apolo run -s cpu-small --entrypoint=/script.sh image:my-ubuntu:latest -- arg1 arg2
```

#### Options

| Name                                         | Description                                                                                                                                                                            |
| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *--help*                                     | Show this message and exit.                                                                                                                                                            |
| *--browse*                                   | Open a job's URL in a web browser                                                                                                                                                      |
| *--cluster CLUSTER*                          | Run job in a specified cluster                                                                                                                                                         |
| *-d, --description DESC*                     | Optional job description in free format                                                                                                                                                |
| *--detach*                                   | Don't attach to job logs and don't wait for exit code                                                                                                                                  |
| *--energy-schedule NAME*                     | Run job only within a selected energy schedule. Selected preset should have scheduler enabled.                                                                                         |
| *--entrypoint TEXT*                          | Executable entrypoint in the container (note that it overwrites `ENTRYPOINT` and `CMD` instructions of the docker image)                                                               |
| *-e, --env VAR=VAL*                          | Set environment variable in container. Use multiple options to define more than one variable. See `apolo help secrets` for information about passing secrets as environment variables. |
| *--env-file PATH*                            | File with environment variables to pass                                                                                                                                                |
| *-x, --extshm / -X, --no-extshm*             | Request extended '/dev/shm' space *\[default: x]*                                                                                                                                      |
| *--http-auth / --no-http-auth*               | Enable HTTP authentication for forwarded HTTP port *\[default: True]*                                                                                                                  |
| *--http-port PORT*                           | Enable HTTP port forwarding to container *\[default: 80]*                                                                                                                              |
| *--life-span TIMEDELTA*                      | Optional job run-time limit in the format '1d2h3m4s' (some parts may be missing). Set '0' to disable. Default value '1d' can be changed in the user config.                            |
| *-n, --name NAME*                            | Optional job name                                                                                                                                                                      |
| *--org ORG*                                  | Run job in a specified org                                                                                                                                                             |
| *--pass-config / --no-pass-config*           | Upload apolo config to the job *\[default: no-pass-config]*                                                                                                                            |
| *--port-forward LOCAL\_PORT:REMOTE\_RORT*    | Forward port(s) of a running job to local port(s) (use multiple times for forwarding several ports)                                                                                    |
| *-s, --preset PRESET*                        | Predefined resource configuration (to see available values, run `apolo config show`)                                                                                                   |
| *--priority \[low \| normal \| high]*        | Priority used to specify job's start order. Jobs with higher priority will start before ones with lower priority. Priority should be supported by cluster.                             |
| *--privileged*                               | Run job in privileged mode, if it is supported by cluster.                                                                                                                             |
| *-p, --project PROJECT*                      | Run job in a specified project.                                                                                                                                                        |
| *--restart \[never \| on-failure \| always]* | Restart policy to apply when a job exits *\[default: never]*                                                                                                                           |
| *--schedule-timeout TIMEDELTA*               | Optional job schedule timeout in the format '3m4s' (some parts may be missing).                                                                                                        |
| *--share USER*                               | Share job write permissions to user or role.                                                                                                                                           |
| *--tag TAG*                                  | Optional job tag, multiple values allowed                                                                                                                                              |
| *-t, --tty / -T, --no-tty*                   | Allocate a TTY, can be useful for interactive jobs. By default is on if the command is executed from a terminal, non-tty mode is used if executed from a script.                       |
| *-v, --volume MOUNT*                         | Mounts directory from vault into container. Use multiple options to mount more than one volume. See `apolo help secrets` for information about passing secrets as mounted files.       |
| *--wait-for-seat / --no-wait-for-seat*       | Wait for total running jobs quota *\[default: no-wait-for-seat]*                                                                                                                       |
| *--wait-start / --no-wait-start*             | Wait for a job start or failure *\[default: wait-start]*                                                                                                                               |
| *-w, --workdir TEXT*                         | Working directory inside the container                                                                                                                                                 |

### save

Save job's state to an image

#### Usage

```bash
apolo job save [OPTIONS] JOB IMAGE
```

Save job's state to an image.

#### Examples

```bash
$ apolo job save job-id image:ubuntu-patched
$ apolo job save my-favourite-job image:ubuntu-patched:v1
$ apolo job save my-favourite-job image://bob/ubuntu-patched
```

#### Options

| Name     | Description                 |
| -------- | --------------------------- |
| *--help* | Show this message and exit. |

### status

Display status of a job

#### Usage

```bash
apolo job status [OPTIONS] JOB
```

Display status of a job.

#### Options

| Name         | Description                 |
| ------------ | --------------------------- |
| *--help*     | Show this message and exit. |
| *--full-uri* | Output full URI.            |

### top

Display GPU/CPU/Memory usage

#### Usage

```bash
apolo job top [OPTIONS] [JOBS]...
```

Display `GPU`/`CPU`/Memory usage.

#### Examples

```bash

$ apolo top
$ apolo top job-1 job-2
$ apolo top --owner=user-1 --owner=user-2
$ apolo top --name my-experiments-v1
$ apolo top -t tag1 -t tag2
```

#### Options

| Name                            | Description                                                                                                                                                                                                      |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *--help*                        | Show this message and exit.                                                                                                                                                                                      |
| *--cluster CLUSTER*             | Show jobs on a specified cluster (the current cluster by default).                                                                                                                                               |
| *-d, --description DESCRIPTION* | Filter out jobs by description (exact match).                                                                                                                                                                    |
| *--format COLUMNS*              | Output table format, see "apolo help top-format" for more info about the format specification. The default can be changed using the job.top-format configuration variable documented in "apolo help user-config" |
| *--full-uri*                    | Output full image URI.                                                                                                                                                                                           |
| *-n, --name NAME*               | Filter out jobs by name.                                                                                                                                                                                         |
| *-o, --owner TEXT*              | Filter out jobs by owner (multiple option). Supports `ME` option to filter by the current user. Specify `ALL` to show jobs of all users.                                                                         |
| *-p, --project PROJECT*         | Filter out jobs by project name (multiple option).                                                                                                                                                               |
| *--since DATE\_OR\_TIMEDELTA*   | Show jobs created after a specific date (including). Use value of format '1d2h3m4s' to specify moment in past relatively to current time.                                                                        |
| *--sort COLUMNS*                | Sort rows by specified column. Add "-" prefix to revert the sorting order. Multiple columns can be specified (comma separated). *\[default: cpu]*                                                                |
| *-t, --tag TAG*                 | Filter out jobs by tag (multiple option)                                                                                                                                                                         |
| *--timeout FLOAT*               | Maximum allowed time for executing the command, 0 for no timeout *\[default: 0]*                                                                                                                                 |
| *--until DATE\_OR\_TIMEDELTA*   | Show jobs created before a specific date (including). Use value of format '1d2h3m4s' to specify moment in past relatively to current time.                                                                       |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.apolo.us/index/apolo-cli/commands/job.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
