Home

mount那些事

我现在使用的本子是公司发的T430,拿到手之后就把光驱卸了,插了块500G的硬盘。在windows下挂载对用户是透明的,在磁盘管理器里分配一下盘符就可以。而在linux下,做法有许多种,这篇文章就来聊聊linux下mount的那件事儿。

Click to read more ...

Screen初探

基本命令

  • 起一个带名字的screen session: screen -S sessionname。或者在当前打开的session, ctrl+a :sessionname <sessionname>
  • session中的操作
    • ctrl+a c: 创建一个新窗口,并切换到这个窗口
    • ctrl+a A: 重命名当前窗口
    • ctrl+a n: 切到下一个窗口
    • ctrl+a p: 切到上一个窗口
    • ctrl+a ctrl+a: 在最近打开的两个窗口之间切换
    • 杀掉当前窗口: ctrl+a k
  • ctrl+a d: detach(退出)当前session
  • 恢复(回到)某个session:
    • screen -r sessionname
    • screen -x
  • 完全杀掉某个session: screen -X -S [session # or sessionname] quit

Click to read more ...

在ubuntu 1204上快速部署openstack

最近刚刚接触openstack,就琢磨着部署个环境试试。官方文档中推荐的DevStack安装方式很对我胃口,所有的安装配置都是用shell完成的,然后如其所说: 在运行stack.sh的时候,可以读一读这个脚本都做了些什么。

在安装成功后,不妨读一读这篇文章做一个小demo,其中有几个tips:

  1. 如果你用的是32位机器,那么devstack默认上传的cirros 64位image是不能正确使用的(可能跟我的硬件虚拟化支持有关)。那就上传一个32位的image吧。(PS:我在一台很老的机器上配置就遇到了这个问题)
    devstack中有个tools目录,里面有个upload_image.sh可以用来方便创建image。(具体的glance image-create方式详见functions源码
    tools/upload_image.sh http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-i386-uec.tar.gz
    

Click to read more ...

在本地kvm运行CloudInit

CloudInit是最先由Amazon贡献,用于EC2的instance初始化,继而被各linux厂商(ubunturedhat)所采纳,用在各种linux的cloud image上。这篇文章基于Ubuntu 12.04,谈谈如何使用CloudInit以NoCould的方式初始化linux image,以及这种方式对我们可能有的启发。

Click to read more ...

Tips for shell newbie (2)

Tip 11. 函数的返回值

  • 和大多数语言一样,返回值用return(如果不指定则返回最后一条语句的返回值)。但和大多数语言不一样,shell中返回值只能为整数

    fun1() {
      return 100 # 正确
    }
    
    fun2() {
      return "fun2" # 错误
    }
    
  • 调用时接收不能用foo=fun1(实际上这不是调用函数fun1,而是将字符串fun1赋给foo)。得先调用fun1,再用$?得到返回值。

    foo=fun1 # 错误
    echo $foo # 输出fun1
      
    fun1
    echo $? # 输出100
    

Click to read more ...

Tips for shell newbie (1)

Tip 1. 注意shell执行的具体类型

Shell脚本的第一行(Shebang line, e.g. #!/bin/bash)指定了其执行的具体类型,dash/bash/ksh/…等等,之间会有些细微的区别。如果你的脚本没有Shebang line,那么由系统变量$SHELL来决定其执行类型。

PS1:/etc/shells中记录着系统可用的shell类型。所以当你发现同样的脚本在不同系统表现不同的时候,有可能是dash和bash(或是其他shell)之间的区别。

PS2:sh是一种POSIX规范,而众多的shell类型是它的实现。linux系统中的sh一般是个symlink,例如ubnutu中默认的sh就会指向/bin/dash。

Click to read more ...