(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:终止程序
再次运行:./test
lan@lan:~/桌面/测试$ ./test
然后按下ctrl+z :把./test换到后台并暂停
输入jobs查看后台运行的进程
输入jobs -l:同时查看进程号:
这里的 28371就是./test进程的进程号,可以输入kill 28371杀死这个后台进程,当前现在进程还处于暂停状态还不会被杀死。再次输入jobs -l还是可以显示这个进程的。
等到这个进程28371被唤醒再次运行时,它就会被杀死。继续输入bg %1 唤醒这个进程使得它运行在后台。因为之前已经发送信号(kill 28371)说要杀死这个进程了,现在他一运行就会被杀死,再次输入bg %1 将会无效。
下面测试fg命令:
再次运行./test,将会产生一个新的进程,分配新的进程号。运行之后按下Ctrl+z;同样挂起进程到后台。再次输入jobs -l查看进程号:
可以看到这次已经分配了另一个进程号28447
然后输入fg %1 把后台挂起的进程28447切换到前台并且运行,这是因为又在前台了可以再次按下ctrl+z把这个进程挂起到后台。
输入kill 28447在这个进程被唤醒的时候杀死它
然后输入fg %1 把这个后台挂起的进程切换到前台运行。当然了它一运行就会被杀死!这次就再也无法被唤醒了。
当然kill也能杀死正在运行的进程,而且不用等待进程被唤醒,立马就杀死这个进程
打开个新的终端
旧的终端输入./test再次运行。新的终端输入 ps -u 用户名 | tail 查看该用户运行的进程,并且只显示最后面的10行。
可以看到这个正在运行的新的./test进程,新进程号为28496。
然后再新窗口下输入kill 28496 杀死这正在运行的进程