首页 >> 学习 >> Shell脚本编程基础 >> 进程与作业控制
进程与作业控制

本节重要性:★★★★★    本节难度:★★★★★

进程,就是程序的一次执行过程。

由一个进程创建的另一个进程,前者叫父进程,后者是前者的子进程

会产生子进程的几种情况:

我们先通过一个例子来说明进程和子进程:

[peter@ibi98 process]$ cat subshell.sh
#!/bin/bash
echo $$				#当前进程的进程号,也就是该脚本执行时的进程号
echo $PPID			#当前进程的父进程的进程号,也就是执行该脚本的shell的进程号
[peter@ibi98 process]$ echo $$	#显示当前shell的进程号
19828
[peter@ibi98 process]$ sh subshell.sh	#程序中的PPID就是当前shell的进程号
22194
19828

上面的例子中,程序subshell.sh输出执行时自身的进程号和其父进程号,从结果可以看出,其父进程就是在其中执行该程序的shell。

父进程创建子进程时,子进程会继承父进程的环境变量。但父进程新定义的变量,子进程无法使用,只有当父进程将该变量导出(export)成环境变量时,子进程才可以使用。如:

[peter@ibi98 process]$ echo $color	#当前shell中变量color还没赋值

[peter@ibi98 process]$ cat subshell.sh
#!/bin/bash
echo $color
[peter@ibi98 process]$ sh subshell.sh	#子进程中的color也没有值

[peter@ibi98 process]$ color=red	#当前shell中给变量color赋值
[peter@ibi98 process]$ echo $color	#当前shell中color有值了
red
[peter@ibi98 process]$ sh subshell.sh	#子程序中的color仍然是空的

[peter@ibi98 process]$ export color	#导出变量color成环境变量
[peter@ibi98 process]$ sh subshell.sh	#子程序中的color也有值了
red

如下图所示,父进程新定义的变量是私有变量,用export导出成环境变量后,子进程才可以使用。

与作业控制相关的命令有:

Ctrl + z	暂停正在运行的命令
fg		将后台程序放到前台
bg		将暂停的程序放到后台继续执行
&		放在命令尾部,后台执行
jobs		查看当前在后台运行的命令
kill		终止进程

这些命令在前面的Linux常用命令一章相关小节中已经学过,可以到相应的小节中查询。

<<上一节  下一节>>