Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1981049
  • 博文数量: 593
  • 博客积分: 20034
  • 博客等级: 上将
  • 技术积分: 6779
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-06 14:07
文章分类

全部博文(593)

文章存档

2016年(1)

2011年(101)

2010年(80)

2009年(10)

2008年(102)

2007年(16)

2006年(283)

我的朋友

分类: LINUX

2011-03-27 13:49:25

在ubuntu中安装了vmware用来运行几个虚拟机。但是每次重新启动ubuntu都要手动启动vmware和虚拟机,很不方便。两种方法,一种是直接把命令写到/etc/rc.local中;另外一种是添加一个系统服务。下面记录添加服务的过程。

1. 编写服务用的脚本。放到/etc/init.d/下,chomd为755.脚本内容如下:
 #!/bin/bash
prog="vmxxxxxxxx"
progname="vmxxxxxxxx"
RETVAL=0
# Edit the following to indicate the 'bin' directory for your installation
MDIR=/usr/bin

if [ ! -d "$MDIR" ]
then
 echo "Invalid directory $MDIR"
    exit 1
fi

start()
{
        #mv -f /var/log/vm.log /var/log/vm1.log
    echo "Starting $progname"
        cd $MDIR
    #su -l ac -c "vmrun -T ws start xxx.vmx nogui >>/var/log/vm.log 2>&1"
    su -l ac -c "vmrun -T ws start yyy.vmx nogui"    
    #echo $? >>/var/log/vm.log    
    su -l ac -c "vmrun -T ws yyy.vmx nogui"
    #echo $? >>/var/log/vm.log
}

stop()
{
    #mv -f /var/log/vm_stop.log /var/log/vm_stop1.log    
    #echo "Stopping $progname"
        cd $MDIR
    vmrun suspend "xxx.vmx" #nogui >/var/log/vm_stop.log
    vmrun suspend "yyy.vmx" #nogui >>/var/log/vm_stop.log
}
status()
{
    cd $MDIR
    vmrun list
}
case "$1" in
 start)
       start
         ;;
 stop)
      stop
        ;;
 status)
      status
        ;;
    *)
     echo "Usage: $prog {start|stop|status}"
     exit 1
     ;;
esac

exit $RETVAL

2. 运行sudo update-rc.d scriptname defualts,来添加为服务。这样当启动服务器到时候自动启动两个虚拟机。当服务器关闭到时候,暂停这两个虚拟机。

3. 说明
    1)vmrun是vmware到命令行工具。常用到到的参数有:
            vmrun start xxx.vmx    启动一个虚拟机
            vmrun suspend xxxvmx    暂停一个虚拟机
            vmrun list    显示正在运行到虚拟机
           直接运行vmrun就可以显示详细帮助。
   2) nogui参数表示不显示图像界面
   3) vmrun运行必须指定用户,原因是要读取license信息。例如我使用到ac用户安装到vmware,licnese信息保存在ac的环境变量中,所以在我脚本中使用ac运行启动命令。不然启动命令不能执行,提示信息“Error: The operation was canceled”
   4)su -/-l/-login [user],是切换到其他用户。和su不同到是:切换用户后使用新用户到环境变量,而su使用原来用户到环境变量。
   5)-c参数是用来执行后面的命令(双引号之间)后切换回原用户继续工作。
   6)ubuntu中可以时候用sysv-rc-conf来查看,管理服务。
   7)echo $?可以显示上面命令执行返回的代码。
   8)如果不使用服务,直接添加启动虚拟机命令到/etc/rc.local的话,要在/etc/init.d/rc.local中添加do_stop部分,来实现系统关闭到时候暂停虚拟机。
阅读(1564) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~