Total Pageviews

Friday, 3 March 2017

使用linux的作业管理来提高工作效率

在日常工作中,经常会遇到需要打开多个工程并且在多个工程中切换的问题,以前比较麻烦,现在想到一招可以提高工作效率。
我平时的主要工作环境为guake+vim,VIM的主要用途是打开工程代码,编辑和阅读。当然也会多出一些终端窗口去处理一些其它的事务,比如其它路径下的文件查找或调试之类。
原来都是一个终端打开一个VIM的,这样做的后果就是终端窗口太的太多,切换比较麻烦,比较容易混。
现在可以使用Linux/Unix的作业管理来加快工作效率。想起作业,是不是觉得很讨厌,不过还好啦,你要扮演的是老师,不是学生(松口气~~)。

作业管理

先看一下Linux/Unix的作业管理吧。
所谓作业管理就是指一个终端可以分时或同时运行多个任务(这个叫终端的学生真够倒霉的,偷笑中~~),当然同时也是并发的,任务也是一个个的命令了,这先不表。

任务

Linux有个叫 jobs的命令。它可以显示出当前执行此命令的终端需要执行的任务(减负等于加正,笑抽了~~)。
打开一个终端,直接运行jobs命令,会发现没有任何输出,这是因为当前终端没有可以运行的任务,如果你输入一个命令,比如一个简单的cat去输出某个文件,可能马上就执行完了,也不用云生成任务,但是如果是一个耗时的操作呢,比如编译一个东西呢,总不希望它占着终端吧。那么怎么来生成任务呢。
有两个方法:
1)  cmd &
2)  cmd 运行起来后使用ctrl+z来暂停。
这两种方法都可以生成任务,但是有区别的,方法1)导致的结果就是任务在后台继续运行,你可以使用终端做其它事,而方法2)导致的后果就是任务被暂停停止,你可以先做其它事,完事后再继续让终端做这个中断的事情,现场为你保留着呢。
所以对于想要使用后台编译或查找文件之类的应该使用1),而开启多个阅读之类的应该使用2)
形象点说,方法1)就好比几个小朋友商量,你做数学,我做语文,然后大家互抄一下。方法2)就好比一个小朋友(在MM的监视下)做了数学,做不下去了,换语文做,做完后再换数学做。

前后台

再说前后台。
对于任务,每个终端可以拥有多个,但同时只能有一个处于活跃状态。处理活跃状态的称为在前台,否则称为在后台。使用fg/bg命令来切换。
有了任务之后,你可以使用jobs来列出当前的所有任务。
然后根据编号来将某个任务换到前台。
使用如下命令:fg %n
根据编号将某个任务在后台运行
使用如下命令:bg %n

任务结束

如果想要结束一个任务呢,可以使用kill命令。
kill -2  %n     //重新加载配置。
kill -9  %n    //强行关闭任务,会有所丢失东西。
kill -15  %n    //正常关闭任务,会有所提示。
那-2 表示老师看了作业,一把撕了,要求重写(哭晕在厕所啊~~)。-9表示心一横,我不干了,明天最多就是被老师揍一顿啦。-15表示我是没做完,但是明天请病假啦,不用再做了。

应用案例

现在,我可以在同一个终端下将我常用的工程事先用vim打开了,或者可以直接写一个脚本,将这些步骤打包执行。这样我就可以根据终端的用途来分类了,这样就可以只开有限的几个终端,将操作分类,指定类型的操作就在对应的终端上做。终端使用不用太乱了,也不用再想使用tmux这种高级的有点难受的工具了.

No comments:

Post a Comment