前台进程与后台进程
进程的前后台
- 前台进程:占有控制终端的进程,其它称为后台进程
- 后台进程:
- shell中耗时较久的命令可以通过command**&**后台运行
- 好处:下一个命令不必等到上一个进程运行完才能运行
- 一个子进程在创建时若没指定进程组,系统会自动创建一个进程组、该子进程为进程组的组长,若该进程后台执行,该进程组为后台进程组
- 会话将这些进程囊括在一个shell终端内,选取一个进程来接收终端的输入或信号,这个进程组成为前台进程组
- 一个会话可以有多个后台进程组,但只能有一个前台进程组
Shell与前后台
- shell进程一开始工作在前台,等待用户输入命令
- 用户输入命令,shell进程通过fork & exec执行命令
- shell被提到后台,运行的命令提到前台,接受用户输入
- 前台进程运行结束退出,shell自动被提到前台,等待用户输入
进程的前后台切换
- shell:前台进程+任意多个后台进程
- Ctrl+C:终止并退出前台进程,回到SHELL
- Ctrl+Z:暂停前台命令执行,放到后台,回到SHELL
- Jobs:查看当期在后台执行的命令
- &:在后台执行命令
- fg N:将进程号码为N的命令放到前台执行
- bg N:将进程号码为N的命令放到后台执行
- 注:该号码不是PID,是通过命令jobs看到的后台命令序号