Understand “screen”

如果需要经常使用ssh连接远端服务器进行工作,那么screen应该是你必备的工具之一.

其实,screen很简单,只需要记住以下一些命令就好了:

Ctrl-a c 新建 bash screen 终端
Ctrl-a " 列出
Ctrl-a A 重命名
Ctrl-a n 在当前窗口中切换到下一个 screen 终端
Ctrl-a p 在当前窗口中切换到上一个 screen 终端
Ctrl-a d 断开所有 screen 终端,返回 screen 执行前状态,但 screen 内所有终端的任务都在执行
screen -ls 列出当前用户的所有 screen 实例,包括联接和断开的
screen -R 重新联接到已断开的 screen 实例,如果有多个已断开的 screen 实例,则用
区分
Ctrl-a S 新建水平分割窗口
Ctrl-a Tab 切换窗口
Ctrl-a X 关闭当前窗口
Ctrl-a + 扩大当前窗口,默认增加3行
Ctrl-a - 缩小当前窗口,默认减小3行

Ctrl-a :screen 新建 screen 终端,并运行命令
Ctrl-a :resize 改变当前窗口高度为
Ctrl-a :quit 退出 screen,将关闭所有 screen 终端,结束其中所有任务
Ctrl-a 进入选择模式
或 Ctrl-u 光标上移一页
或 Ctrl-d 光标下移一页
或 h 光标左移一格
或 j 光标下移一行
或 k 光标上移一行
或 l 光标右移一格
选择开始,选择结束
退出选择模式
Ctrl-a ] 粘贴选择的内容

参考资料:

1. screen user’s manual http://www.gnu.org/software/screen/manual/screen.html;

2. http://www.ibm.com/developerworks/cn/linux/l-cn-screen/;

3. http://blog.chinaunix.net/u1/37553/showart_341863.html;

Advertisements
Posted in Uncategorized | Leave a comment

Understand “upstart”

Upstart是一个基于事件、替换传统的/sbin/init 守护进程的工具。可以用来启动或者停止任务和服务。 通过下面的例子来更好理解upstart。

首先,在/etc/init下新建一个任务文件:

sudo vi /etc/init/helloworld.conf

输入以下内容:
#!upstart
description "hello world to understand upstart"
author "build"

start on bounce

script
export HELLOWORLD="Hello World!"
echo $HELLOWORLD 2>&1 >> /var/log/helloworld.log
end script

运行如下命令:

sudo initctl emit bounce

察看log文件,确认”Hello World!”已经被打印在该文件中:

vi /var/log/helloworld.log

下面对以上过程做一些解释。首先,我们创建了一个upstart的配置文件: helloworld.conf。其中我们加上辅助的描述信息,作者信息。我们还定义这个任务在收到事件”bounce”时启动。这个任务的主要动作被定义在”script .. end script”之间,这里我们只是打印一个字符串到日志文件里面去。

注意: 安装upstart,在Ubuntu上可以:

sudo apt-get install upstart

另外,在我的vmware,Ubuntu 10.04上,console output 功能不能正常工作。环境信息如下:

build@buildvm:/etc/init$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION=”Ubuntu 10.04.1 LTS”
build@buildvm:/etc/init$ uname -a
Linux buildvm 2.6.32-24-generic #41-Ubuntu SMP Thu Aug 19 01:38:40 UTC 2010 x86_64 GNU/Linux

References:

  1. http://upstart.ubuntu.com/getting-started.html – upstart 主页;
  2. http://howtonode.org/deploying-node-upstart-monit – 使用upstart在Node.js项目中;
  3. http://geeknme.wordpress.com/2009/10/15/getting-started-with-upstart-in-ubuntu/ – 另外一篇介绍upstart的文章;
  4. http://www.netsplit.com/2006/08/26/upstart-in-universe/ – 这篇文章对upstart做了一个深入的分析和横向的比较。
Posted in Linux | Leave a comment

How to get system information on Windows

怎么才能通过命令行方式,看到Windows系统信息呢?答案是:

C:\Users\username>systeminfo

Simple, right? You can try it right now.

Posted in Uncategorized | Leave a comment

Deploy redmine on heroku computing cloud

今天,把redmine部署到heroku上(http://redmine4us.heroku.com)了,主要参考了一篇文章,期间没有任何问题,除了一点。在安装taps的gem时:

sudo gem install taps

出错:

build@buildvm:~/workspace/rails/redmine$ sudo gem install taps
[sudo] password for build:
Building native extensions.  This could take a while…
ERROR:  Error installing taps:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb
checking for fdatasync() in -lrt… yes
checking for sqlite3.h… no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.
Provided configuration options:
–with-opt-dir
–without-opt-dir
–with-opt-include
–without-opt-include=${opt-dir}/include
–with-opt-lib
–without-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=/usr/bin/ruby1.9.1
–with-sqlite3-dir
–without-sqlite3-dir
–with-sqlite3-include
–without-sqlite3-include=${sqlite3-dir}/include
–with-sqlite3-lib
–without-sqlite3-lib=${sqlite3-dir}/lib
–with-rtlib
–without-rtlib
Gem files will remain installed in /var/lib/gems/1.9.1/gems/sqlite3-ruby-1.2.5 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/sqlite3-ruby-1.2.5/ext/sqlite3_api/gem_make.out

这个问题的解决方法是在Ubuntu上安装sqlite3的开发包:

sudo apt-get install libsqlite3-dev

之后没有任何问题。

另外注意一点,修改config/environment.rb文件,确保其中

RAILS_GEM_VERSION = ‘2.3.8’ unless defined? RAILS_GEM_VERSION

RAILS_GEM_VERSION的值和自己安装的rails版本一致。如何检查呢?

build@buildvm:~/workspace/rails/redmine$ script/about

About your application’s environment

Ruby version              1.9.1 (x86_64-linux)

RubyGems version          1.3.5

Rack version              1.1

Rails version             2.3.8

Active Record version     2.3.8

Active Resource version   2.3.8

Action Mailer version     2.3.8

Active Support version    2.3.8

Application root          /home/build/workspace/rails/redmine

Environment               development

Database adapter          mysql

Database schema version   20100819172912

注意上面的黑体一行。

最后有一点遗憾,就是部署在heroku上面的应用不能产生新文件,这是heroku的局限性,需要考虑其它解决方案。例如部署产生的文件在Amazon的S3上,等等。这个问题需要进一步考虑。

Posted in heroku, redmine | Leave a comment

这是一个最好的时代

这是最好的时代,这是最坏的时代;这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们正在直登天堂,人们正在直下地狱.

狄更斯—《双城记》

It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way–in short, the period was so. far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.

Posted in thought | Leave a comment

设置SSH密码和自动登录

这里有一篇文章详细讲述了,如何在Linux上产生SSH key,以及设置passphrase。

为什么要设置一个安全的密码?如何做到自动登录?可以参考这里

Posted in Uncategorized | Leave a comment

我的第一个博客网站

这里是我的第一个WordPress博客网站,我计划用这个网站来记录一些定制edit4us的信息。很幸运,居然就在WordPress提供的免费空间上,所以应该珍惜这个机会。

关于源代码,我计划使用github的服务。基本确定使用Ruby on Rails来实现Web UI部分的功能,所以如果没有文件存储的部分,我计划部署在heroku.com上。生成的文件如果可以的话,可以放在code.google.com上。关于编译,是不是可以利用Amanzon 的EC2,这些需要进一步确定。

Posted in editor | Leave a comment