Bash工作管理
Bash的工作是对具体任务的一个抽象表述,更确切的说是对管道的应用上的表述。Bash中的工作在形式上表现为一组相关进程或单个进程。工作进程组分为前台和后台,前台进程会对键盘等输入进行响应,而后台进程组则不会。通俗的说,Bash中的工作是对进程组或进程的抽象表述,而工作管理就是对进程的一系列管理方式的统一接口,方便在不同的操作系统中的统一使用。
工作管理的操作
Bash中的工作有两种标记方式,分别是数字标记和指令标记。数字标记即为每一个后台工作都设置一个数字id,如1、 2、 3等;指令标记指的是后台工作所执行的具体指令内容。当对后台工作引用时,需要在工作标记前添加百分号(%),如 %1 和 %ce。需要注意的是,(%%、%+) => 指代当前工作,即最后一个前台停止的或后台开始的工作, (%-) => 指代当前工作的上一个工作。
Bash的工作管理提供了相关内置指令,分别为bg、fg、jobs、kill、wait、disown、suspend。各指令的格式很含义如下表:
指令名 | 格式 | 含义 |
---|---|---|
bg | bg [jobspec] | 恢复jobspec指定的工作并在后台执行,若jobspce为空,则操作对象为当前工作 |
fg | fg [jobspec] | 恢复jobspec制定的工作并在前台执行,且为当前工作。若未设置jobspec,则操作目标为当前工作 |
jobs | jobs [-lnprs] [jobspec] | 查看Bash中jobspce指定的工作的属性,若jobspce未设置,则默认为所有工作 |
jobs | jobs -x command [args] | 运行命令及其参数,并用新的命令的进程ID替代所匹配的原有作业的进程组ID(这一功能有待考证) |
kill | kill [-s sigspec] [-n signum] [-sigspec] jobspec or pid | 向jobspec或pid指定的进程或工作发送执行信号,默认为SIGTERM |
wait | wait [-n] [jobspec or pid] | 等待jobspec或pid指定工作或进程的结果 |
disown | disown [-ar] [-h] [jobspec ... or pid ...] | 从bash工作记录表中移除相关工作 |
suspend | suspend [-f] | 挂起shell |
如何创建后台工作
Bash中创建后台工作很简单,在命令的后面添加**连接符(&)**即可。例如:
ps -aux &
总结
Bash中的工作管理,在个人pc中可能使用不多,后台工作可以通过开启多个终端去解决。不过,在服务器操作系统中,Bash的工作管理对运维的日常工作是大有裨益,运维人员需要能够熟练使用。