Shell的jobs功能

大部分的Shell都会提供jobs的功能,之前略懂一二,但是有些地方不是很清楚,今天比较明白地搞清楚了,知道原来前台运行和后台运行的概念实际上是Shell提供的。因为我自己用的是bash,所以这里提供的命令都能在bash里用,估计其他的shell也类似。

Shell一开始时给出提示符,我们可以输入命令,程序就开始运行。程序运行完之后,我们又可以输入新的命令。但是程序运行的时候,对于同一个Shell,是没有办法输入命令的,这时就叫做在前台运行。可是有时候,有些命令的运行时间可能很长,比如find命令,这时我们就可以把程序放在后台运行,前台得到提示符,可以输入新的命令。把程序放在后台运行的方法是命令的最后加上&,比如“find . -name “foo*” -print >result &”。下图中我在后台运行Firefox。

Jobs Figure 1
Jobs Figure 1

Shell里运行后台程序后,出现两个数字。第一个中括号的数字是jobs ID,可以在相关的命令里用%号引用。第二个数字是进程号,是系统唯一的,可以用ps等命令去看。

有时候运行了程序之后才发现希望放在后台运行,这时可以按Ctrl+Z,把当前前台程序暂停,并且放在后台。在Shell的jobs功能里,第一个要介绍的命令是jobs,可以看到现在后台有多少个程序,它们的状态是怎样的。在下图中可以看到,第一列是jobs ID,第二列有些有加号,有些有减号,加号表示是最新的任务,减号是第二新的任务,其余没有符号。最后一列还有状态,一般可以看到三种,Running表示正在运行,Stopped表示暂停,Done或者Terminated表示已经做完了,通常再打一次jobs就会不再见到那个任务了。

Jobs Figure 2
Jobs Figure 2

想在暂停状态和运行状态之间切换可以用下面的命令。首先,想把前台程序暂停,就是用刚才说的Ctrl+Z,而想把后台程序暂停,可以使用stop命令加jobs ID,如“stop %1”。把程序从暂停状态切换到运行状态有两种选择,第一种是放在后台运行,用bg命令,如“bg %1”,放在前台也类似,用fg命令。

还有一条命令就是kill命令,可以把工作终止掉,关闭进程。使用的方法也是kill加上jobs ID,比如“kill %1”,上图最后也有kill命令。kill命令后面还可以直接跟程序名,比如“kill %find”,这样甚至不用先看jobs ID,如果同时有多个实例在运行的话,会关闭最新的一个。

Advertisements

重新用回Twitter

首先热烈庆祝wordpress.com终于解禁了,这也意味着我的博客可以直接从国内访问。

最近更新了Pidgin,然后很有冲动想用回MSN和Google Talk等,就顺便把头像也更新了。然后还很想念Twitter,因为看了一篇报道说,Twitter具有实时信息的能力,但是Google在这方面只有Youtube,所以Google可能会收购。还有一条报道说,Google也在Twitter上发Tweets。当然,收购或合作其实我不是很关心,我只是忽然想起好久没有上Twitter,甚至在北京的时候都没有上过Twitter。登录Twitter之后,发现和以前一样的简洁,清新的Web2.0界面,我马上就忍不住要玩一下的念头了。首先follow了Google的Twitter,然后在Pidgin主页上搜索Twitter的插件,找到一款叫Microblog-purple的软件,源代码是放在Google Code上面的,http://code.google.com/p/microblog-purple/

Twitter-plugin
Twitter-plugin

在Ubuntu上安装这款Pidgin插件是很简单的,因为它有PPA源。第一步,是在源列表中加入源(我自己用的是intrepid)

deb http://ppa.launchpad.net/sugree/ppa/ubuntu intrepid main #Pidgin-Microblog

然后导入该源的key

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0CF459B8DF37ED8B

更新之后就可以安装了

sudo apt-get install pidgin-microblog

使用起来界面就如上图,然后直接在框里发Tweets就可以了,别人发的时候也能收到。下图就是今天收到的一条Google的Tweet,打开之后的图片。

Doodle
Doodle