Linux常用命令-jobs

命令

jobs

描述

Display status of jobs
显示后台任务

用法

1
jobs [-lnprs] [jobspec ...]

选项

1
2
3
4
5
6
Options:
-l 显示详细信息
-n 显示上次通知以来状态已更改的任务
-p 显示PID
-r 显示正在运行的任务
-s 显示停止的任务

注意

1.如果是通过nohup和&命令在后台运行任务,当退出终端后,该任务将作为独立进程在后台运行,无法再通过jobs命令查看到
2.前台运行的任务可以通过(ctrl+c)结束;后台运行的任务需要通过kill PID命令来结束
3.使用nohup运行的任务会在当前目录下生成nohuo.out的日志文件,注意定期清空

示例

以下示例展示了一个后台运行的任务在前后台转换的过程,以及退出重新登录后如何结束之前的任务

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
27
28
29
30
31
32
33
34
35
36
# 定义一个循环脚本,并通过nohup和&命令在后台运行该脚本,可以通过jobs命令查看任务状态为Running
$ vim a.sh
while true;do
echo aa
sleep 1
done
$ nohup sh a.sh &
$ jobs
[1]+ 19501 Running nohup sh a.sh &
# 通过fg命令将后台任务转到前台运行,当任务在前台运行时,可以使用快捷键(ctrl+c)停止任务,或者使用快捷键(ctrl+z)挂起任务,挂起的任务可以通过jobs命令查看任务状态为Stopped.
$ fg
nohup sh a.sh
^Z
$ jobs
[1]+ Stopped nohup sh a.sh
# 在通过bg命令恢复后台挂起的任务,通过jobs命令查看任务状态为Running
$ bg
[1]+ nohup sh a.sh &
$ jobs
[1]+ Running nohup sh a.sh &
# 退出当前终端,然后重新登录后,无法通过jobs命令查看到之前的任务,只能过滤进程找到对应的进程pid,然后杀掉进程来停止任务
$ exit
logout
$ jobs
$ ps aux | grep a.sh
root 19973 0.0 0.0 113284 1360 ? S 14:51 0:00 sh a.sh
$ kill 19973
$ ls
a.sh nohup.out
$ more nohup.out
aa
aa
aa
aa
...
$ rm nohup.out