Linux jobs
约 617 字大约 2 分钟
2025-01-11
介绍
jobs
主要用于显示系统中的任务列表及其运行状态。
该命令可以显示任务号及其对应的进程号,其中任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的。一个任务可以对应一个或多个进程号。
jobs
是 Shell
内建命令
语法
$ jobs [-lnprs] [ <jobspec> ... ]
$ jobs -x <command> [ <args> ... ]
参数
-l
除正常信息外,还列出进程ID
。-n
仅显示上次通知用户后状态发生改变的作业信息。-p
仅显示任务对应的进程号。-r
仅显示运行状态(running
)的任务。-s
仅显示停止状态(stoped
)的任务。-x
jobs
将在command
或args
中找到的任何作业替换为相应的进程组ID
,并执行command
。
使用
jobs -l
jobs
的-l
选项可显示所有任务的PID
,jobs
的状态可以是running
, stopped
, Terminated
。但是如果任务被终止了(kill
),shell
从当前的shell
环境已知的列表中删除任务的进程标识。
$ jobs -l
[1] + 24440 running nohup python3 ./wl_apscheduler.py
前后台切换
Ctrl + c
会终止前台命令,也是我们经常用来关闭任务的。Ctrl + z
可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
^Z
[1] + 1588 suspended pnpm run docs:dev
这个时候任务是被暂停的状的,需要使用bg %jobnumber
继续执行才能正常访问。
jobs -l
查看当前有在后台运行的任务。
$ jobs -l
[1] + 1588 suspended pnpm run docs:dev
bg
将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber
将选中的命令调出。
$ bg %1
[1] + 1588 continued pnpm run docs:dev
fg
将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber
(是命令编号,不是进程号)将选中的命令调出。
将后台的所有任务调至前台运行。
$ fg
[1] + 1588 running pnpm run docs:dev
将指定的任务调至前台运行。
$ fg %1
[1] + 1588 continued pnpm run docs:dev
注意 不管在后台任务是运行还是未运行,执行fg
或fg %jobnumber
之后,都会切换到前台运行。