linux 测试进程指令 fg bg kill ps jobs ctrl+z ctrl+c

时间:2021-06-20 21:53:32
(1) CTRL+Z挂起进程并放入后台
(2) jobs 显示当前控制台中的后台进程的状态

(3) bg %N,这里的N是jobs指令查询到的任务号N:将后台运行暂停的任务号为N的任务,唤醒然后还在后台运行。

(4) fg %N ,将后台运行暂停的任务号为N的任务,唤醒后,切换到前台运行。

(5)kill 进程号  :杀死这个进程,如果他正在运行,会立即被杀死,如果他挂起了,等他被唤醒的时候就杀死他

(6)ps :查看所有运行的进程,ps -u 用户 :查看该用户运行的进程


这里有一段测试代码:

//test.c
#include<stdio.h>
#include<unistd.h>//sleep()头文件


int main()
{
	while(1)
	{
		printf("       -----死循环.ing-----\n");
		sleep(2);
	}
}
编译:

lan@lan:~/桌面/测试$ gcc -o test test.c
运行:

lan@lan:~/桌面/测试$ ./test

按下ctrl+c:终止程序

linux 测试进程指令 fg bg kill ps jobs ctrl+z ctrl+c

再次运行:./test

lan@lan:~/桌面/测试$ ./test

然后按下ctrl+z :把./test换到后台并暂停


linux 测试进程指令 fg bg kill ps jobs ctrl+z ctrl+c

输入jobs查看后台运行的进程

linux 测试进程指令 fg bg kill ps jobs ctrl+z ctrl+c

输入jobs -l:同时查看进程号:

linux 测试进程指令 fg bg kill ps jobs ctrl+z ctrl+c

这里的 28371就是./test进程的进程号,可以输入kill 28371杀死这个后台进程,当前现在进程还处于暂停状态还不会被杀死。再次输入jobs -l还是可以显示这个进程的。

等到这个进程28371被唤醒再次运行时,它就会被杀死。继续输入bg %1 唤醒这个进程使得它运行在后台。因为之前已经发送信号(kill 28371)说要杀死这个进程了,现在他一运行就会被杀死,再次输入bg %1 将会无效。

linux 测试进程指令 fg bg kill ps jobs ctrl+z ctrl+c

下面测试fg命令:

再次运行./test,将会产生一个新的进程,分配新的进程号。运行之后按下Ctrl+z;同样挂起进程到后台。再次输入jobs -l查看进程号:

linux 测试进程指令 fg bg kill ps jobs ctrl+z ctrl+c

可以看到这次已经分配了另一个进程号28447

然后输入fg %1 把后台挂起的进程28447切换到前台并且运行,这是因为又在前台了可以再次按下ctrl+z把这个进程挂起到后台。

linux 测试进程指令 fg bg kill ps jobs ctrl+z ctrl+c

输入kill 28447在这个进程被唤醒的时候杀死它

然后输入fg %1 把这个后台挂起的进程切换到前台运行。当然了它一运行就会被杀死!这次就再也无法被唤醒了。

linux 测试进程指令 fg bg kill ps jobs ctrl+z ctrl+c

当然kill也能杀死正在运行的进程,而且不用等待进程被唤醒,立马就杀死这个进程

打开个新的终端

旧的终端输入./test再次运行。新的终端输入 ps -u 用户名 | tail    查看该用户运行的进程,并且只显示最后面的10行。

linux 测试进程指令 fg bg kill ps jobs ctrl+z ctrl+c

可以看到这个正在运行的新的./test进程,新进程号为28496。

然后再新窗口下输入kill 28496 杀死这正在运行的进程

linux 测试进程指令 fg bg kill ps jobs ctrl+z ctrl+c