# FAQ

### How to Upload and Download Data

You can upload your datasets to the Platform using Apolo CLI. The CLI supports basic file system operations for copying and moving files to and from the platform storage.

From your terminal or command prompt, change to the directory containing your dataset, and run:

```
apolo cp -r data/ storage:data/
```

The URI `storage:data/` indicates that the destination is the platform. In a similar fashion,

```
apolo cp -r storage:data/ data/
```

downloads dataset to your current directory locally.

You can access your dataset from within a container by giving `--volume storage:data/:/var/storage/data/:rw` to `apolo run` as a parameter when starting a new job.

If your aim is to download or upload data from external system, be it AWS S3 bucket, or Azure Blob Storage, checkout our [extras](#data-operations) package usage.

### How to Connect to a Running Job

To work with your dataset from within a container, to troubleshoot a model, or to get shell access to a GPU instance, you can execute a command shell within a running job in interactive mode.

To do so, copy the job id of a running job (you can run `apolo ps` to see the list), and run:

```
apolo exec <job-id or job-name> bash
```

For example,

```
apolo exec training bash
```

This command starts bash within the running job and connects your terminal to it.

### How to Run a Job in a Custom Environment

Assuming you have a local Docker image named `helloworld` built on your local machine, you can push it to the Apolo Platform by running:

```
apolo push helloworld
```

After that, you can start the job by running:

```
apolo run image:helloworld
```

### How to Kill All Running Jobs

To kill all jobs that are currently running on your behalf, run the following command:

```
 apolo kill `apolo -q ps -o <user>`
```

For example,

```
 apolo kill `apolo -q ps -o john`
```

### How to Run Two or More Commands In a Job

Sometimes you want to execute two or three commands in a job without having to connect to it. For example, you may want to change the working directory and to run training. To achieve this, you need to wrap your commands in `”bash -c ‘<commands>’”` call, like this:

```
"bash -c 'cd /project && python mnist/train.py'"
```

### How to Get Output from a Running Job

There are two ways to get the output of your running job:

* Run it without the `--detach` option.
* Connect to a running job output with `apolo log <JOB>`, where JOB is either the id or the name of your job.

In some cases, Python caches the output of the scripts, so that you won’t get any output until the job finishes. To overcome this problem, provide `-u` option to `python`, like this:

```
"bash -c 'cd /project && python -u mnist/train.py'"
```


---

# 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/getting-started/faq.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.
