异步任务
Arthas中的后台异步任务,使用了仿linux系统任务相关的命令。
命令 | 描述 |
---|---|
jobs | 查看后台任务列表,正在运行或暂停的任务 |
fg <job-id> | 将后台任务拉到前台执行 |
bg <job-id> | 将前台任务放到后台执行 |
kill <job-id> | 终止任务 |
前台任务
前台任务特点一直占有终端,不终止命令任务不会结束。
前台任务可以通过Ctrl + C
终止任务,可以通过Ctrl + Z
暂停任务放在后台列表
示例
bash
# 跟踪方法执行时长
trace demo.MathGame primeFactors
# Ctrl + C 后任务结束
# 跟踪方法调用栈
stack demo.MathGame primeFactors
# Ctrl + Z后任务暂停放在后台列表
# 查看当前任务
[arthas@4852]$ jobs
[7]*
Stopped stack demo.MathGame primeFactors
execution count : 3
start time : Fri Apr 07 11:01:41 CST 2023
timeout date : Sat Apr 08 11:01:41 CST 2023
session : fad72f91-52a9-459a-806f-f2880d5eca45 (current)
# 继续将暂停任务放到前台执行
[arthas@4852]$ fg 7
# Ctrl + Z任务暂停放在后台列表
# 终止后台任务
[arthas@4852]$ kill 7
# 也可以转为后台任务继续执行
[arthas@4852]$ bg 7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
后台任务
有的时候执行一条命令可能需要等一定周期才会监控到结果,这时候我们只需要后台任务输出即可。
示例
bash
# 使用&使任务在后台执行
# 这个时候会一直输出Console 因为primeFactors方法一直在执行 我们可以继续在终端输入命令
trace demo.MathGame primeFactors &
# jobs可以看到后台任务正在执行
[arthas@4852]$ jobs
[10]*
Running stack demo.MathGame primeFactors &
execution count : 3
start time : Fri Apr 07 11:07:13 CST 2023
timeout date : Sat Apr 08 11:07:13 CST 2023
session : 97cf2ec3-03a1-4b44-8bba-11763c0925b0 (current)
# 将任务拉到前台
[arthas@4852]$ fg 10
# 后台任务输出重定向
# 后台记录到文件输出
trace demo.MathGame primeFactors > /tmp/trace.txt &
# 后台记录追加到文件输出
trace demo.MathGame primeFactors >> /tmp/trace.txt &
# 不指定文件 默认保存在日志目录
trace demo.MathGame primeFactors > &
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
问题
有的时候在使用kill
和bg
命令时,Arthas会直接停止,不知道什么原因。
注意
- 最多同时支持
8
个命令使用重定向将结果写日志 - 请勿同时开启过多的后台异步命令,以免对目标 JVM 性能造成影响
- 如果不想停止Arthas,继续执行后台任务,可以执行
quit
退出控制台(stop
会停止Arthas服务)