Linux进程的前后台切换
一、Linux前后台切换的相关命令:
1、& 在命令的后面加上这个符合,让命令进程在后台运行
例如:
#ping 127.0.0.1 & // 此时命令ping 127.0.0.1的进程是在后台运行的
2、Ctrl + Z 使用这个组合键可以将一个正在前台执行的进程放到后台,并且暂停
例如:
#ping 127.0.0.1
按住Ctrl + Z组合键 // 此时ping 127.0.0.1进程被挂起到后台并暂停
3、jobs 查看当前有多少在后台运行的进程
选项:-l 显示工作的PID
选项:-l 显示工作的PID
例如:
#ping 127.0.0.1
按住Ctrl + Z
#jobs -l
[1]+ 4403 停止 ping 127.0.0.1 // 1是工作号,"+"号代表最近一个放入后台的工作,也是工作恢复时默认的工作。
4、fg %n 让后台运行的进程n到前台来运行(n为工作号)
将后台中的命令调至前台继续运行
如果后台中有多个进程,可以用fg %n将指定的进程调到前台,%n是通过jobs命令查到的后台正在执行的命令的工作号。
例如:
例如:
#fg 1 // 将作业号为1的后台进程放到前台运行,"%"可省略
5、bg %n 让进程n到后台去运行
将一个在后台暂停的命令,变成继续执行
如果后台中有多个进程,可以用bg %n将指定的进程调到后台,%n是通过jobs命令查到的后台正在执行的命令的工作号。
例如:
# jobs
[1]+ Stopped ping 127.0.0.1 // 有一个在后台被暂停的进程,其工作号为1
#bg 1 // 将作业号为1的后台暂停进程放到后台运行,"%"可省略
6、Ctrl + C 终止前台运行的进程任务,但是不能终止后台进程
二、实例:
假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,这时就可以将这个程序放到后台去运行:
1、我们用vi来写一个C程序(hello.c),这个程序的功能是每隔3秒输出一个数字:
1 #include<stdio.h> 2 #include<unistd.h> 3 4 int main() 5 { 6 int i=0; 7 while(i<10000) 8 { 9 printf("%d\n",i++); 10 sleep(3); 11 } 12 return 0; 13 }
2、编译:
# gcc -o hello hello.c
3、运行:
#./hello // 运行后每隔3秒向屏幕终端输出一个数字
4、按住Ctrl + Z 把它放到后台并暂停
[1]+ Stopped ./hello // 会出现这个提示
5、查看后台进程
# jobs
[1]+ Stopped ./hello // 1是这个进程的工作号
6、让它在后台继续运行
# bg 1 // 让工作号为1的进程在后台运行
#jobs
[1]+ Running ./hello & // 状态为变为Running,若此时按住Ctrl+C将无法终止该进程
7、把它切换到前台继续运行
#fg 1 // 放到前台后可以按住Ctrl+C来终止进程