You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
arthas/en/_sources/async.md.txt

81 lines
3.9 KiB
Plaintext

6 years ago
Arthas Async Jobs
===
6 years ago
Asynchronous jobs in arthas. The idea is borrowed from [linux jobs](http://man7.org/linux/man-pages/man1/jobs.1p.html).
6 years ago
## 1. Use & to run the command in the background
For example, execute the trace command in the background:
6 years ago
```bash
6 years ago
trace Test t &
```
6 years ago
By doing this, the current command is put to the background to run, you can continue to execute other commands in the console.
6 years ago
## 2. List background jobs
If you want to list all background jobs, you can execute the `jobs` command and the results are as follows:
6 years ago
```bash
6 years ago
$ jobs
[10]*
Stopped watch com.taobao.container.Test test "params[0].{? #this.name == null }" -x 2
execution count : 19
start time : Fri Sep 22 09:59:55 CST 2017
timeout date : Sat Sep 23 09:59:55 CST 2017
session : 3648e874-5e69-473f-9eed-7f89660b079b (current)
```
6 years ago
You can see that there is currently a background job executing:
6 years ago
* job id is 10, `*` indicates that this job is created by the current session.
* status is `Stopped`
* execution count is the number of executions, which have been executed 19 times since the start.
6 years ago
* timeout date: timeout timestamp, when the time exceeds this timestamp, the job will be automatically timeout and exit.
6 years ago
6 years ago
## 3. Suspend and cancel job
6 years ago
6 years ago
When the job is executing in the foreground, for example, directly executing the command `trace Test t`, or executing the background job command `trace Test t &`, then putting the job back to the forground via `fg` command, the console cannot continue to execute other command, but can receive and process the following keyboard events:
6 years ago
* ctrl + z: Suspend the job, the job status will change to `Stopped`, and the job can be restarted by `bg <job-id>` or `fg <job-id>`
* ctrl + c: Stop the job
6 years ago
* ctrl + d: According to linux semantics this should lead to exit the terminal, right now Arthas has not implemented this yet, therefore simply ignore this keystroke.
6 years ago
6 years ago
## 4. fg/bg, switch the job from the foreground to the background, and vise verse
6 years ago
6 years ago
* When a job is executed in the background or in suspended status (use `ctrl + z` to suspend job), `fg <job-id>` can transfer the job to the foreground to continue to run.
* When a job is in suspended status (use `ctrl + z` to suspend job), `bg <job-id>` can put the job to the background to continue to run.
* A job created by other session can only be put to the foreground to run by using `fg` in the current session.
6 years ago
6 years ago
## 5. Redirect the output
6 years ago
6 years ago
The job output can be redirect to the specified file by `>` or `>>`, and can be used together with `&`. By doing this, you can achieve running commands asynchronously, for example:
6 years ago
6 years ago
```bash
6 years ago
$ trace Test t >> test.out &
```
6 years ago
The trace command will be running in the background and the output will be redirect to `~/logs/arthas-cache/test.out`. You can continue to execute other commands in the console, at the same time, you can also examine the execution result from the output file.
6 years ago
6 years ago
When connect to a remote Arthas server, you may not be able to view the output file on the remote machine. In this case, Arthas also supports automatically redirecting the output to the local cache file. Examples are as follows:
6 years ago
6 years ago
```bash
6 years ago
$ trace Test t >> &
job id : 2
cache location : /Users/gehui/logs/arthas-cache/28198/2
```
6 years ago
If output path is not given, Arthas will automatically redirect the output to the local cache. Job id and cache location will be shown on the console. Cache location is a directory where the output files are put. For one given job, the path of its output file contains PID and job id in order to avoid potential conflict with other jobs. In the above example, pid is `28198` and job id is `2`.
6 years ago
## 6. Stop job
If you want to stop background job, just `kill <job-id>`.
## 7. Others
6 years ago
* Support up to 8 commands at the same time to redirect the output to the log files.
* Do not open too many background jobs at the same time to avoid negative performance effect to the target JVM.