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

    例如:

    #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
",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来终止进程
 
 
原文地址:https://www.cnblogs.com/wuqianling/p/5370442.html