一、jobs
jobs
命令主要用于显示系统中的任务列表及其运行状态。
命令参数如下:
我们写一个死循环,依次执行三次并通过Ctrl+Z
挂起,此时执行jobs
命令,显示结果如下:
atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ cat infinite_loop.c#include <unistd.h>int main() {while(1) {sleep(1);}}atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ gcc infinite_loop.c -o job1atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ gcc infinite_loop.c -o job2atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ gcc infinite_loop.c -o job3atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ ./job1^Z[1]+ Stopped ./job1atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ ./job2^Z[2]+ Stopped ./job2atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ ./job3 &[3] 344854atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ jobs[1]- Stopped ./job1[2]+ Stopped ./job2[3] Running ./job3 &atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ jobs -p344771344822344854atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ jobs -l[1]- 344771 Stopped ./job1[2]+ 344822 Stopped ./job2[3] 344854 Running ./job3 &atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$
对于jobs -l
命令,输出共五列:
作业号:可以通过在fg
和bg
命令后面附加作业号操纵相应作业。缺省标识符:+
表示当前作业会被fg
和bg
命令当作缺省作业(即在不执行作业号的情况下fg
与bg
会缺省操作当前作业),-
表示当前作业将要成为缺省作业,一般情况下最后一个加入作业队列中的作业会被默认标记为缺省作业。进程号:当前作业对应的进程号。状态值:当前作业的运行状态。作业名:当前作业对应的可执行文件名称。
二、fg 和 bg
fg
命令用于将作业(被挂起或者在后台运行的作业)放到前台运行。
bg
命令用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在运行命令后面添加符号&
的效果是相同的,都是将其放到系统后台执行。
atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ jobs -l[1]- 344771 Stopped ./job1[2]+ 344822 Stopped ./job2[3] 344854 Running ./job3 &atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ fg # 将缺省作业放到前台执行./job2^Catreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ jobs -l[1]+ 344771 Stopped ./job1[3]- 344854 Running ./job3 &atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ bg 1 # 将作业号为1的作业放到后台执行[1]+ ./job1 &atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ jobs -l[1]- 344771 Running ./job1 &[3]+ 344854 Running ./job3 &atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ fg./job3^Catreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ jobs -l[1]+ 344771 Running ./job1 &atreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ fg 1 # 将作业号为1的作业放到前台执行./job1^Catreus@iZwz9fsfltolu74amg1v0rZ:~/Code$ jobs -latreus@iZwz9fsfltolu74amg1v0rZ:~/Code$
如果觉得《Linux 中的 jobs fg 与 bg 命令》对你有帮助,请点赞、收藏,并留下你的观点哦!