作业,其实就是一次任务,若干个进程的组合以完成某个功能。shell提供了比较完善的对作业的控制。本文介绍shell对作业的一些命令。
1:jobs:列出作业
这个命令能够列出所有的后台命令。
2:fg:把作业移到前台
用法
$ fg 2
就是把作业2放到前台。关于作业的编号和PID(进程ID)并不是一样的。作业的编号是根据系统中有多少在后台运行的作业来确定的。从1开始。当有一个作业放入后台运行,这个作业的作业号比当前正在使用的作业的最大作业编号大1。作业销毁后编号就可以重新使用了。当然了,还可以通过百分号和字符串来引用作业,比如 %2 就可以的。fg %mem?
可以对作业进行匹配找到名为mem?的作业。
3:挂起作业
所谓挂起,就是临时停止。在操作系统中是置换出内存,就是不能运行了。CONTROL+Z就可以实现了。
4:bg:将作业移到后台
在使用bg之前,要先挂起作业,然后使用bg使作业在后台运行。当然,这里就要提一提另外一个符号:&。在命令后面使用 & 就可以把作业直接放在后台运行。
对于操作目录栈,在很多情况下需要切换多个目录时使用操作目录栈是一个不错的选择。
1:dirs:显示栈
这个命令是把当前工作目录的名称显示出来。
2:pushd:将目录压入栈中
比如在当前在tree文件夹下的tree1文件目录下,在tree目录下还有tree2,tree3两个文件夹,那么
$ pushd ../tree2
就把tree2压入操作目录栈中了。
同时你可以看到打印了两个目录,类似于
~/tree ~/tree2
此时栈顶是 tree2的
如果使用不带参数的pushd,那么实际效果就是交换最上面两个目录。此时工作目录是原来的次栈顶目录。
3:popd:将目录从栈中移除
$ popd +n
是把第n+1个目录从栈中移除,如果pushd之后打印出
~/tree ~/tree2
这个,那个 popd +1就是把tree2从目录从移除
同样的,不带参数的popd命令是把栈顶的目录移除,当前目录自动变成之前的次栈顶目录。
操作目录栈对于在多个目录中进行切换的操作可以省很多麻烦。