Note
  • Introduction
  • JS
    • JS / JQuery 代码、框架收藏
    • 用Mock.js + AngularJS来提高开发效率
    • 在JavaScript中监听 IME 键盘输入事件
    • 如何组织大型JavaScript应用中的代码?
    • 深入理解javascript原型和闭包
      • 1. 一切都是对象
      • 2. 函数和对象的关系
      • 3. prototype原型
      • 4. 隐式原型
      • 5. instanceof
      • 6. 继承
      • 7. 原型的灵活性
      • 8. 简述【执行上下文】上
      • 9. 简述【执行上下文】下
      • 10. this
      • 11. 执行上下文栈
      • 12. 简介【作用域】
      • 13. 【作用域】和【上下文环境】
      • 14. 从【自由变量】到【作用域链】
      • 15. 闭包
      • 16. 补充:上下文环境和作用域的关系
    • AngularJS
      • AngularJS开发一些经验总结
      • AngularJS Controller 间通信机制
      • AngularJS 中的一些坑
      • 如何解决AngularJs在IE下取数据总是缓存的问题
      • AngularJS之$timeout指令
      • angular 代码日记
      • AngularJS Directive 隔离 Scope 数据交互
      • 在Angular指令中使用NgModelController做数据绑定
      • AngularJS的ngTransclude
      • 使用Angularjs的ng-cloak指令避免页面乱码
      • Directive - Compile vs. Link
    • NodeJS
      • npm的配置管理及设置代理
    • Angular
      • Angular2 - Control Validation on blur
      • Angular2 - how to call component function from outside the app
  • Go
    • How to Test Local Changes with Go Mod
  • Java
    • Java中根据字体得到字符串高度和长度
    • JAVA 判断一个字符串是不是一个合法的日期格式
    • JVM上的随机数与熵池策略
    • tomcat7+jdk的keytool生成证书 配置https
    • Spring
      • SpringMVC中用@ParamVariable传递的参数包含斜杠(/)时,匹配不了报404错误的解决方案
      • SpringMVC 中HttpMessageConverter简介和Http请求415 Unsupported Media Type的问题
      • Spring Boot 打包,分离依赖jar,配置文件
      • SpringBoot启动后 Stopping service [Tomcat]
      • spring-boot打包时排除第三方依赖
    • 第一个Eclipse插件
    • Eclipse 使用技巧
    • HighChart利用servlet导出中文PNG图片乱码问题解决
    • JDK中文字体在Linux操作系统的设置方案
    • Shiro
      • Shiro-Authentication(身份验证)
      • Shiro-Authorization(授权)
    • 详谈再论JAVA获取本机IP地址
  • Python
    • pip国内镜像源的配置
  • Linux
    • Shell脚本 bad interpreter:No such file or directory & /bin/bash^M: bad interpreter错误解决方法
    • 10个重要的Linux ps命令实战
    • Linux 下执行定时任务 crontab 命令详解
    • CentOS 7.x设置自定义开机启动,添加自定义系统服务
    • CentOS 7 下使用 Firewall
    • 在Ubuntu 12.04安装和设置SSH服务
    • 配置CENTOS YUM更新源
    • Linux下终端利器tmux
    • scp命令
    • Linux系统管理常用命令
    • 让你提升命令行效率的 Bash 快捷键 [完整版]
    • SELinux
    • Linux下 RabbitMQ的安装与配置
    • SELinux下更改mysql端口
    • centos 7 升级后yum install出现Exiting on user cancel
    • Linux Shell 通配符、元字符、转义符使用实例介绍
  • Other
    • Docker
      • Docker Proxy
    • Swagger
      • Spring MVC 集成 Swagger
    • Maven
      • maven plugin的execution出错
      • nexus repair或update index 没反应 速度慢 手动配置nexus index
      • nexus 搭建 maven 私服
      • Maven类包冲突终极解决小技若干
      • org.codehaus.plexus.archiver.jar.Manifest.merge(org.codehaus.plexus.archiver.jar.Manifest)
      • Maven 生命周期
      • wagon-maven-plugin
      • Maven中-DskipTests和-Dmaven.test.skip=true的区别
    • MySQL
      • is not allowed to connect to this MySQL server 解决办法
      • MySQL备份--mysql dump
      • MySQL启动中 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 的问题
      • MySQL修改root密码的多种方法
      • MySQL长事务导致的Table Metadata Lock
      • com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
      • 解决mysql插入数据时出现Incorrect string value: '\xF0\x9F...' for column 'name' at row 1的异常
    • HTTP
      • HTTP 协议中的 Transfer-Encoding
      • 四种常见的 POST 提交数据方式
      • HTTP 请求头中的 X-Forwarded-For
      • 传统轮询、长轮询、服务器发送事件与WebSocket
    • Raspberry
      • 系统安装配置
    • VIM
      • vim常用配置
      • 在vim中使用查找命令查找指定字符串
      • Vim缩进有关的设置总结
    • Git
      • github 同步一个 fork
      • Git 如何 clone 非 master 分支的代码
      • git提示error setting certificate verify locations解决办法
      • git设置和取消代理
      • How to Delete Commit History in Github
      • Windows下使用Beyond Compare作为git的比对与合并工具
    • 解决 Virtualbox 共享文件夹 cannot create symlink error 问题
    • nginx 403 forbidden 二种原因
    • VirtualBox的四种网络连接方式
    • 在Windows的CMD中如何设置支持UTF8编码?
    • nginx使用ssl模块配置HTTPS支持
    • 怎么查看WINDOWS端口被哪个程序占用
    • VMWare 随系统启动指定虚拟机
    • 使用命令行启动VirtualBox虚拟机
    • 该死的^M
    • install home-assistant mosquitto-broker and node-red on android
    • SSH原理与运用:远程登录、远程操作与端口转发
    • SVN mime-type 笔记
    • VirtualBox虚拟机网络配置(NAT + Host-only - Bridged)
    • VirtualBox绿色版的桥接网卡驱动安装
    • OAuth的改变
    • MavenActionUtil.getMavenProject(e.getDataContext()) is Null when developing a intellij plugin
    • Cygwin的安装和配置apt-cyg源
    • Zookeeper运维常用四字命令
    • svn sqlite[S11]: database disk image is malformed
Powered by GitBook
On this page
  • 一条批处理命令启动VMware虚拟机
  • 还有一个超级简单的方法,利用策略来做
  • VMware Workstation提供的可编程接口
  • 1、POWER COMMANDS
  • 2、SNAPSHOT COMMANDS
  • 3、GUEST OS COMMAND

Was this helpful?

  1. Other

VMWare 随系统启动指定虚拟机

做一名网络管理人员, VMware 大家是必须要会用的,但在实际工作中,我们可能会在服务器是安装 VMware ,启用多个系统,但当服务器重启或其它非人为的,当网络管理员不在的情况下, VMware 是不随系统而启动的,这样是非常麻烦的,如何让 VMware 随系统而启动并引导虚拟机操作系统呢!不可避免,企业的服务器不会象我们预想的那样一年365天不间断的运行。可能公司突然停电,或者服务器突然无故重启,这些情况都会造成电脑内的虚拟机开机不再运行。而如果此时系统管理员正好离开,那这个后果也就不言而喻了。所以,实现虚拟机开机自动启动,可以说是实现公司服务器正常运行的一个不可或缺的环节。实现其开机自动启动步骤其实很简单。这里用到的是微软的两个小工具。 instsrv.exe 和 srvany.exe 微软对 instsrv.exe 的官方说明如下:

Installsand uninstalls executable services and assigns names to them. 也就是个加载services的小东东。 其用法如下: instsrv <service name> <srvany path>(这里的 srvany path 也就是工具 srvany.exe 的路径了)

解释下, srvany.exe 是微软出的用于将一个程序注册为一个服务的小程序。它可以实现讲任何程序设置成服务启动。

  1. 值得注意的是,将这两个文件下载下来后,将这两个文件放到D盘或其它地方如 D:\tools 2. 了解 vmware.exe 的安装路径,以本机为例:E:\VMwareWorkstation\vmware.exe 。要启动的虚拟机配置文件路径,我的2003虚拟机的配置文件 windows2003.vmx 的路径是 D:\vmare\windows2003\windows server 2003.vmx 3. 新建服务,假设服务名为 vmautostart ,打开运行,进入cmd字符,cd进入我们刚才放那两个文件夹 D:\tools ,键入命令行是:instsrv VM_AutoStart D:\tools\srvany.exe 4. 注册服务,运行 regedit 在注册表中,定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VM_AutoStart 新建项: Parameters 在 Parameters 项里面,新建字符串 Application ,字符串的值: "E:\VMwareWorkstation\vmware.exe" -x "D:\vmare\windows2003\windows server2003.vmx" (如果你想要开机加载两个虚拟机系统,只需要在其后再添加一个虚拟机配置文件路径即可) 5. 设置虚拟机启动状态,管理工具-服务,选择 VM_AutoStart 的属性-登录,选中“本地系统帐户”,并勾选“允许服务与桌面交互”,这样,你的电脑开机后就会出现 vmware 的启动界面了。 6. 重启电脑试试!(注意:重启电脑时vmware会自动运行,但第一次运行你要把每次都弹出“提示”等前面的的选框钩去掉,去掉之后按下power off按扭,重新启动电脑,vmware就会保存你的设置,这样免得vmware每次都弹出这些对话框而卡在哪里。没有按poweroff按扭重启电脑vmware是不会保存你的设置的!)

  2. 删除服务,停止 vmware 的服务:net stop vmwareautorun,删除服务:D:\tools\instsrv.exe VM_AutoStart remove

一条批处理命令启动VMware虚拟机

我的工作机是 Window7 系统,每天都要跟服务器版的 Ubuntu 系统打交道,于是用 VMware 搭建了 Ubuntu 的环境,上班第一件事是双击桌面上的 VMware 图标,然后选择 Ubuntu 虚拟机,点击启动按钮,由于我在 Ubuntu 系统上都是用 shell 命令操作,所以根本用不到图形界面,虚拟机开机后我要切换为后台模式运行 (Run in Background) 。 上述操作费时费力,根据机器延时还有不同程度的等待,体验欠佳,于是我上网找到了一种一键可以开启 VMware 下某个虚拟机的方法,分享给大家。 首先说一下我的 VMware 是7.1.4版本(64位),无论32位还是64位的 VMware 都自带一个命令行的工具: VMRun ,可以通过给它一定的参数实现指定虚拟系统的启动。 我的 VMware 软件安装路径是:C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe, Ubuntu 虚拟机的存放路径是: D:\Ubuntu\Ubuntu.vmx 很简单,只需要下面一行命令就可以启动 Ubuntu 虚拟机 "C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" start "D:\Ubuntu\Ubuntu.vmx" 新建个文本文件,复制上面这行命令保存为 start.bat (批处理文件类型),然后双击这个文件就能启动 Ubuntu 虚拟机。 上面这行命令的格式是: vmrun的路径 start 虚拟机存放路径 如果仅仅这样做,虚拟机启动时还是会显示界面,如何让虚拟机在后台运行呢?只需在上述命令后添加一个参数 nogui 例如: "C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" start "D:\Ubuntu\Ubuntu.vmx" nogui 这样虚拟机就会默默在后台启动,使用时直接用终端工具 putty 登陆 Ubuntu 系统即可。 如果希望让虚拟机在 windows 启动后自动开启,可以将上述批处理文件加入 windows 的启动项中,或是计划任务里。 此外,通过为 vmrun.exe 传递不同的参数可以实现不同的功能,如关闭虚拟机系统、运行程序等。 直接运行 vmrun 程序,不带参数,即可查看其帮助文档。

还有一个超级简单的方法,利用策略来做

先准备好两个批处理文件,用文本编辑器写就行。

开机脚本starvm.bat,内容就一行: "C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" -T ws <span style="color: #ed1c24;">start</span> "D:\VM\myvm.vmx"

关机脚本stopvm.bat,内容也是一行: "C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" -T ws <span style="color: #ed1c24;">suspend</span> "D:\VM\myvm.vmx"

在主机上执行 gpedit.msc 命令,打开“本地组策略编辑器”,展开“本地计算机 策略”——“计算机配置”——“Windows 设置”——“脚本(启动/关机)”。 在右侧窗口中,分别双击“启动”和“关机”,在弹出的属性窗口的“脚本”标签下,选择“添加”,找到之前准备好的开关机脚本,确定就行了。 另外,由于 vmrun 命令依赖 VMware Workstation Server 服务,而这个缺省是不会自动启动的,所以需要在“服务”里面把它的启动类型改为“自动”。 这样,可以使得你指定的虚机 “D:\VM\myvm.vmx” 可以在主机系统开机后,自动启动起来;在主机关机后,则会自动进入虚机的挂起状态(不使用强制关机就是防止虚机非正常关机,可能需要人工干预启动)。 另外,如果你需要同时启动关闭多台虚机,就参考着命令多写几行就行。

VMware Workstation提供的可编程接口

何谓 Vmrun 命令?其实这并不是什么神秘的东西,相信部分朋友使用过 Vmware workstation 来安装过一些虚拟机吧。如果你足够细心的话,你会发现在这个软件的安装目录下能找到一个 Vmrun.exe 可执行文件。如果你从命令行敲入 vmrun.exe (当然你得切换到 workstation 的根目录下),你会惊奇的发现很多该命令提供了很多的参数,这些参数的功能成为了 Host 机器与 Guest 机器之间的功能强大的连接桥梁。那么,先一睹下到底有哪些命令可供我们玩转。

1、POWER COMMANDS

如下图: 从上可以看出,这些命令参数可以完成开启或者关闭虚拟机等操作~

比如关机命令可以使用: vmrun start "D:\\Windows7\\Win7.vmx" 来启动虚拟机,其中 start 后面的是要启动的虚拟机系统的配置文件的位置

其他的几个类似,故不再赘述

2、SNAPSHOT COMMANDS

如下图: 顾名思义,这组命令参数主要是用于操作虚拟机系统的快照的。何谓快照,简单的说就是当前系统整个的状态信息。而创建快照(snapshot)的目的,则是在于保存当前系统的状态, 而还原快照(revertToSnapshot)则可以从当前的系统状态还原到指定快照时候的系统状态。这样做对于测试人员来说不难理解,因为测试必须保证处于干净的系统环境,所谓干净的测试环境则是指一个操作系统从被创建开始,只在上面安装过与测试相关的软件与配置,且只能做一次性的测试。而想要达到多次测试的目的,只能通过不断的revert到干净的测试环境那个快照点。 从上图中可以看出,我们可以通过命令来查看系统所有的快照(listSnapshots)、为系统创建快照(snapshot)、删除系统中指定快照(deleteSnapshot)、恢复到某个快照(revertToSnapshot)这几个命令,如下所示:

创建快照: vmrun snapshot "D:\\Windows7\\Win7.vmx" "snapshot1" 但是,一般情况下光是上面还是不行的,尤其是当你想从代码级调用该命令创建虚拟机快照的时候,往往需要用户名与密码来验证。那么该怎么写呢?正确的命令如下: vmrun -gu 你虚拟机系统的用户名 -gp 你虚拟机系统的密码 snapshot "D:\\Windows7\\Win7.vmx" "snapshot1" (<=快照名称) 上面的这个命令是不是一定会成功?也不一定,如果还是失败的话,那么请尝试下面三个操作,如果还是解决不了你的问题的话,那么笔者保持沉默~

1)先检测是否支持虚拟机快照的创建 检测方法很简单, 查看工作站的菜单项的 Vm 选项下的 Snapshot 子选项,如下图: 如果 Snapshot 右弹出菜单所有选项都灰掉的话,那么你得考虑先解决掉这个问题了

2)检测是不是 Vmtools 在捣鬼 确定你的虚拟机系统中有没安装 Vmtools 或者是不是可以进行更新,如果没装请装之,装了的话最好 update 下,关于怎么安装或更新另请查询。

3)加上本地系统用户名与密码验证 vmrun -u Host机器的用户名 -p Host机器的密码 -gu 虚拟机系统的用户名 -gp 虚拟机系统的密码 snapshot "vmx path" "snapshot1"

3、GUEST OS COMMAND

如下图: 这组命令很有实用性,主要是可以在 Host 机器的下,对 Guest 机器(也就是虚拟机系统)进行一列的操作,如文件操作、进程操作、运行指定程序和运行脚本等,这些命令都是需要用户名与密码的验证,也就是在命令行中加上 -gu 与 -gp 参数,参见上面。 这组命令中可能需要注意的是, runProgramInGuest 命令可以执行虚拟机系统中的一些命令,如打开一个 notepad ,直接敲入如下命令: vmrun -gu Guest系统用户名 -gp Guest系统密码 runProgramInGuest "D:\\Windows7\\Win7.vmx" notepad 如果想要打开虚拟机C盘根目录下的 1.txt 文件,可以在运行的程序后面加上参数,如下: vmrun -gu Guest系统用户名 -gp Guest系统密码 runProgramInGuest "D:\\Windows7\\Win7.vmx" notepad C:\\1.txt 如果你在代码级别调用这个命令,希望你能够始终意识到一个事实,那就是上述命令默认是等到在 Guest 机器运行的程序结束后才返回。如果,亲爱的你,串行的执行一系列的命令,而前一个命令恰恰是个 Long wait 的程序,那么这之后的程序往往会挂住,无法执行。如你使用上述命令打开一个文本后,那么主程序就会等到你将 Guest 系统中的 notepad 关闭才会返回。 那么,这个时候,你可以选择 -nowait 开关命令来选择无等待的执行,即每个命令一执行后就返回,不会产生阻塞,命令如下: vmrun -gu Guest系统用户名 -gp Guest系统密码 runProgramInGuest "D:\\Windows7\\Win7.vmx" -nowait notepad C:\\1.txt

其他的命令,大家可以自己尝试下,在此不再赘述。

Previous怎么查看WINDOWS端口被哪个程序占用Next使用命令行启动VirtualBox虚拟机

Last updated 5 years ago

Was this helpful?