巧用CAS解决数据一致性问题

在高并发的巧用分布式环境下,对于数据的解决数据查询与修改容易引发一致性问题,本文将分享一种非常简单但有效的性问优化方法。
一、巧用业务场景
业务场景为,解决数据购买商品的性问过程要对余额进行查询与修改,大致的巧用业务流程如下:
(1)从数据库查询用户现有余额 SELECT money FROM t_yue WHERE uid=$uid,不妨设查询出来的解决数据$old_money=100元

(2)业务层实施业务逻辑,比如购买一个80元的性问商品,并且打九折
if($old_money> 80*0.9) $new_money=$old_money-80*0.9=28

(3)将数据库中的巧用余额进行修改 UPDAtE t_yue SET money=$new_money WHERE uid=$uid

在并发量低的情况下,这个流程没有任何问题,解决数据原有金额100元,性问购买了80元的巧用九折商品(72元),剩余28元。解决数据
二、性问潜在的问题
在分布式环境中,如果并发量很大,这种“查询+修改”的业务很容易出现数据不一***限情况下,可能出现这样的异常流程:
(1)业务1和业务2同时查询余额,是100元

(2)业务1和业务2进行逻辑计算,免费信息发布网算出各自业务的余额,假设业务1算出的余额是28元,业务2算出的余额是38元

(3)业务1对数据库中的余额先进行修改,设置成28元。
业务2对数据库中的余额后进行修改,设置成38元。

此时异常出现了,原有金额100元,业务1扣除了72元,业务2扣除了62元,***剩余38元。
三、问题原因
高并发环境下,对同一个数据的并发读(两边都读出余额是100)与并发写(一个写回28,一个写回38)导致的数据一致性问题。
四、原因分析
业务1的写回:原有金额100,这是一个初始状态,写回金额28,理论上只有在原有金额为100的时候才允许写回成功,高防服务器这一步没问题。
业务2的写回:的原有金额100,这是一个初始状态,写回金额38,理论上只有在原有金额为100的时候才允许写回成功,可实际上,这个时候数据库中的金额已经变为28了,这一步的写操作不应该成功。
五、简易解决方案
在set写回的时候,加上初始状态的条件compare,只有初始状态不变时,才允许set写回成功,这正是大家常说的“Compare And Set”(CAS),是一种常见的降低读写锁冲突,保证数据一致性的方法。
六、业务的升级
业务线使用CAS解决高并发时数据一致性问题,只需要在进行set操作时,免费源码下载compare一下初始值,如果初始值变换,不允许set成功。
对于上文中的业务场景,只需要将“UPDAtEt_yue SET money=$new_money WHERE uid=$uid”升级为
“UPDAtE t_yue SETmoney=$new_money WHERE uid=$uid AND money=$old_money”即可。
并发操作发生时:
业务1执行 => UPDAtE t_yue SET money=28 WHERE uid=$uid AND money=100
业务2执行 => UPDAtE t_yue SET money=38 WHERE uid=$uid AND money=100
【这两个操作同时进行时,只能有一个执行成功】。
七、怎么判断哪个执行成功,哪个执行失败
set操作,其实无所谓成功或者失败,业务能通过affect rows得知哪个修改没有成功:
执行成功的业务,affect rows为1
执行失败的业务,affect rows为0
八、总结
高并发“查询并修改”的场景,可以用CAS(Compare and Set)的方式解决数据一致性问题。对应到业务,即在set的时候,加上初始条件的比对。
【本文为专栏作者“58沈剑”原创稿件,转载请联系原作者】

本文地址:http://www.bzve.cn/html/43d67699280.html
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
相关文章
电脑QQ时钟错误的原因和解决方法(探究电脑QQ时钟错误的根源,以及如何解决这一问题)
Webuzo 是一款单用户控制面板/应用程序管理器,允许用户部署流行的 Web 应用程序,如 WordPress,Zoomla 和 Drupal 等,鼠标单击轻松部署。安装这样的web程序不需要专业的系统管理知识,你的重点是把精力放在使用的应用程序上,而不是维护应用程序,Webuzo 就像 panel 一样控制面板。Webuzo 与 cPanel 一样非常适用于企业,中小型商业环境,支持几乎 240 种 Web 应用程序。也适用于 Web 开发人员作为 Web 应用程序调试,支持的系统应用程序,如MongoDB、Apache、NGINX、Java等,也可以通过 Webuzo 提供的连接安装应用插件。复制代码代码如下:wget http://files.webuzo.com/install.sh 复制代码代码如下:chmod 755 install.sh 复制代码代码如下:./install.sh 好了,脚本执行后,需要运行一段时间了。打开浏览器并输入IP地址。web 登陆为默认用户名(soft)设置密码:使用设置的密码登陆:登陆后点击“end user Panel”链接:一个完整的类似 cPanel 的控制面板会出现在你的面前:现在,可以安装下载的各种脚本。Webuzo 是一款非常棒的控制面板,只需鼠标点击就可以帮助你管理网络和系统应用,不需要专业知识,当然该软件提供的开源版本还有一定的限制,假如需要一些更好的服务,还需要购买许可序列号。
Webalizer是一款免费的应用程序,可用于分析网站服务器日志。这样一来,你就能更清楚地了解你的网站或服务器收到的流量大小。它是一种使用广泛的开源工具,提供了非常详细的报告。这个工具的使用和安装很简单,cPanel之类的许多高级托管控制面板使用该工具,为用户提供流量方面的详细信息。功能特性这款工具的功能很强大,足以解析不同格式的访问日志。它还可以从压缩文件中获取信息,不需要先解压缩文件。你从命令行和图形化用户界面都可以使用该工具,以你觉得方便的方式来查看报告。它支持多种语言,开发团队正在努力添加支持另外许多语言的功能。它能够解析任何大小或复杂程度的日志文件。它同时支持IPV4和IPV6,还有原生的地理位置服务和DNS服务器软件。在Ubuntu上安装和配置WebalizerWebalizer需要Apache网站服务器软件安装在Linux系统上,因为它要读取和解析Apache错误日志,从而分析流量。假如Apache之前没有安装在你的系统上,你试图看一看webalizer是如何工作的,那么启动终端,运行下面这个命令,即可将Apache安装在你的Ubuntu上:复制代码代码如下:sudo /etc/init.d/apache2 start现在启动你的浏览器,装入http://localhost,核实http在正常运行,它应该会显示诸如此类的页面:Apache默认页面注意:默认情况下,Apache的文档根目录是/var/www/html/,所以你需要把脚本放在这个位置,那样Apache网站服务器就能提供这些脚本。由于Apache已安装在我们的Ubuntu系统上并运行起来,现在运行下面这个命令,安装webalizer。恭喜你,webalizer已安装完毕。现在我们需要配置它。配置webalizer你可能也注意到,在安装过程中,webalizer目录已经创建在/var/www/路径上,我们需要把它移到/var/www/html,那样Apache才能顺利该目录。在终端上运行下面这个命令来完成这项任务。复制代码代码如下:sudo gedit /etc/webalizer/webalizer.conf务必要确保Apache访问日志文件路径在该文件中正确无误(下列屏幕截图中高亮显示的部分)。假如路径这一项出错,就纠正路径,并保存文件。好了,我们离成功只有一步之遥了。测试Webalizer配置运行下面这个命令,核实webalizer已成功安装和配置。测试webalizer启动浏览器,装入http://localhost/webalizer/ URL。它应该会装入webalizer页面,并且附有系统当前HTTP活动的报告。可以执行webalizer –h得到所有命令行参数:复制代码代码如下:#!/bin/shrun=/usr/sbin/webalizer$run -F clf -p -n -t www.test.com-o /var/www/html/log /var/log/httpd/access_log说明:-F clf 指明我们的web日志格式为标准的一般日志文件格式(Common Logfile Format)-p 指定使用递增模式,这就是说每作一次分析后,webalizer会生产一个历史文件,这样下一次分析时就可以不分析已经处理过的部分。这样我们就可以在短时间内转换我们的日志文件,而不用担心访问量太大时日志文件无限增大了。-n “ “ 指定服务器主机名为空,这样输出结果会美观一些。-o “www.test.com” 指定输出结果标题./var/log/httpd/access_log:指定日志文件然后在/etc/crontab中加入:01 1 * * * root /etc/rc.d/webalizer即每天凌晨1点执行该脚本。然后运行/etc/rc.d/init.d/crond reload重载入crond服务。结束语Webalizer是在微软Windows、Linux和Mac OS上广泛使用的一种工具,可用于分析系统上的Web活动。它是相当简单的工具,可以解析网站服务器日志,即便它受到数百万次的访问。这个工具的重要性对系统和网站管理员来说毋容置疑。
重装电脑系统(从备份数据到系统安装,轻松搞定电脑重装)
适马30mmf1.4镜头的魅力与表现(探索适马30mmf1.4镜头的优点和应用领域)
假如是在虚拟机中使用Ubuntu,那么设置之前请先参照我的上一遍文章虚拟机Net方式设置连接外网 中的网络设置部分,先设置好主机的网络,然后配置虚拟机Ubuntu的IP和网关 假如主机操作系统就是Ubuntu,请直接参照下文进行设置 内容如下: 1. 检验是否可以连通,就使用ping命令ping 网关 永久修改Ubuntu LINUX IP 一、使用命令设置ubuntu的ip地址 并用下面的行来替换有关eth0的行: # The primary network interface - use DHCP to find our address auto eth0 iface eth0 inet dhcp 用下面的命令使网络设置生效: sudo /etc/init.d/networking restart 也可以在命令行下直接输入下面的命令来获取地址 sudo dhclient eth0 /etc/network/interfaces: sudo vi /etc/network/interfaces 并用下面的行来替换有关eth0的行: # The primary network interface auto eth0 iface eth0 inet static address 203.171.239.155 gateway 203.171.239.129 netmask 255.255.255.224 #network 203.171.239.128 #broadcast 192.168.3.159 将上面的ip地址等信息换成你自己就可以了.用下面的命令使网络设置生效: sudo /etc/init.d/networking restart /etc/network/interfaces: sudo vi /etc/network/interfaces 在该文件中添加如下的行: auto eth0:1 iface eth0:1 inet static address 192.168.1.155 netmask 255.255.255.0 work x.x.x.x broadcast x.x.x.x gateway x.x.x.x 根据你的情况填上所有诸如address,netmask,network,broadcast和gateways等信息. 用下面的命令使网络设置生效: sudo /etc/init.d/networking restart PS:根据上文方式,在虚拟机Vmware中安装Ubuntu,虚拟机网络连接方式为Net,设置静态IP连接网络,我已经测试通过,直接修改resolv.con和interfaces的方式可以保证开机后设置的IP依然存在。 设置后不能连接网络,欢迎留言,共同讨论,呵呵!
需求 首先保证你有一个自有域名,然后登录到CloudFlare,添加你的域名。遵循指令操作,使用它给出的默认值就行了。你将让CloudFlare来托管你的域,所以你需要调整你的注册机构的设置。假如你想要使用子域名,请为它添加一条‘A’记录。目前,任何IP地址都可以。DDclient是一个Perl客户端,用于更新动态DNS网络服务提供商帐号下的动态DNS条目。它最初是由保罗·巴利编写的,现在大多数是由维姆潘科在做。它能做的不仅仅是动态DNS,也可以通过几种不同的方式获取你的WAN口IP地址。CloudFlare 的一个功能是它允许你通过API或叫做ddclient的命令行脚本更新你的DNS记录。不管哪一个,结果都一样,而且它是个免费软件。不幸的是,ddclient并不能在CloudFlare中即开即用。它需要打补丁,这里就是要介绍怎样在Debian或Ubuntu上破解它,它也能在带有Raspberry Pi的Raspbian上工作。在Ubuntu上安装ddclient 打开终端,并运行以下命令sudo apt-get install ddclient现在,你需要使用以下命令来安装补丁sudo apt-get install curl sendmail libjson-any-perl libio-socket-ssl-perlcurl -O http://blog.peter-r.co.uk/uploads/ddclient-3.8.0-cloudflare-22-6-2014.patchsudo patch /usr/sbin/ddclient < ddclient-3.8.0-cloudflare-22-6-2014.patch以上命令用来完成ddclient的安装和打补丁配置ddclient 你需要使用以下命令来编辑ddclient.conf文件sudo vi /etc/ddclient.conf添加以下信息##### CloudFlare (cloudflare.com)###ssl=yesuse=web, web=dyndnsprotocol=cloudflare, server=www.cloudflare.com, zone=domain.com, login=you@email.com, password=api-key host.domain.comComment out:#daemon=300你的 api-key 可以从 CloudFlare帐号页面找到,ssl=yes 可能已经设置,use=web, web=dyndns 表示使用 dyndns 来确定 IP(用于 NAT)。你已经搞定了。登录到 https://www.cloudflare.com 并检查列出的与你域名对应的IP地址是否与 http://checkip.dyndns.com 列出的相匹配。使用以下命令来验证你的设置sudo ddclient -daemon=0 -debug -verbose -noquiet
Nginx (engine-x)是一个开源的高性能 HTTP 服务器、反向代理和 IMAP/POP3 代理服务器。nginx 杰出的功能有:稳定、丰富的功能集、简单的配置和低资源消耗。nginx 被用于一些高性能网站并在站长之间变得越来越流行。本教程会从源码构建一个带有 google paespeed 模块的用于 Ubuntu 15.04 的 nginx .deb 安装包。pagespeed 是一个由 google 开发的 web 服务器模块来加速网站响应时间、优化 html 和减少页面加载时间。ngx_pagespeed 的功能如下: 图像优化:去除元数据、动态缩放、重压缩。 CSS 与 JavaScript 压缩、串联、内联、外联。 小资源内联 图像与 JavaScript 延迟加载 HTML 重写 缓存生命期插件前置要求 Ubuntu Server 15.04 64位 root 权限该文我们将要: 安装必备软件包 安装带 ngx_pagespeed 的 nginx 测试安装必备包复制代码代码如下:sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev安装带 ngx_pagespeed 的 nginx第一步 - 添加nginx仓库复制代码代码如下: vim /etc/apt/sources.list.d/nginx.list加入下面的行:复制代码代码如下:deb http://nginx.org/packages/ubuntu/ trusty nginx deb-src http://nginx.org/packages/ubuntu/ trusty nginx更新仓库:复制代码代码如下:sudo apt-get update注意:假如你看到信息:GPG error [...] NO_PUBKEY [...] 等等请添加key:复制代码代码如下:sudo sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYNUMBER sudo apt-get update第二步 - 从仓库下载 nginx 1.8复制代码代码如下: sudo su cd ~ mkdir -p ~/new/nginx_source/ cd ~/new/nginx_source/ apt-get source nginx apt-get build-dep nginx第三步 - 下载 Pagespeed复制代码代码如下:cd ~ mkdir -p ~/new/ngx_pagespeed/ cd ~/new/ngx_pagespeed/ ngx_version=1.9.32.3 wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${ngx_version}-beta.zip unzip release-${ngx_version}-beta.zip cd ngx_pagespeed-release-1.9.32.3-beta/ wget https://dl.google.com/dl/page-speed/psol/${ngx_version}.tar.gz tar -xzf 1.9.32.3.tar.gz第四步 - 配置 nginx 来编译 Pagespeed复制代码代码如下:cd ~/new/nginx_source/nginx-1.8.0/debin/ vim rules在两处 CFLAGS .configure 下添加模块: --add-module=../../ngx_pagespeed/ngx_pagespeed-release-1.9.32.3-beta adding pagespeed to nginx adding pagespeed to nginx 第五步 - 打包 nginx 软件包并安装复制代码代码如下:cd ~/new/nginx_source/nginx-1.8.0/ dpkg-buildpackage -bdpkg-buildpackage 会编译 ~/new/ngix_source/ 为 nginx.deb。打包完成后,看一下目录:复制代码代码如下:cd ~/new/ngix_source/ ls nginx builded with pagespeed 接着安装 nginx。复制代码代码如下:dpkg -i nginx_1.8.0-1~trusty_amd64.deb 测试运行 nginx -V 测试 nginx 是否已经自带 ngx_pagespeed。复制代码代码如下:nginx -V 总结稳定、快速、开源的 nginx 支持许多不同的优化模块。这其中之一是 google 开发的‘pagespeed’。不像 apache,nginx 模块不是动态加载的,因此你必须在编译之前就选择好需要的模块。
热门文章
- 1电脑经常出现10061错误的原因及解决方法(深入探讨10061错误,帮助您解决电脑连接问题)
- 2这段时间使用公司服务器时候发现Linux上竟然没有中文输入法,经过一番折腾后,终于把这个问题解决,将过程记录如下: 1.首先安装ibus框架,打开终端,输入如下命令 sudo add-apt-repository ppa:shawn-p-huang/ppa sudo apt-get update sudo apt-get install ibus-gtk ibus-qt4 ibus-pinyin ibus-pinyin-db-open-phrase 2.然后进入SystemSettings-->LanguageSupport,假如它提示要自动更新,我们就自动更新,然后在最下面将(keyboard input method system)选为ibus,貌似因为环境下ibus默认是不启动的 3.这个时候我们发现任务栏还是没有输入法,不要紧我们接着进入屏幕左上角的DashHome,在搜索中输入ibus,点击回车,这个时候上方的任务栏已经有小键盘图标了,右键点击它的Preference功能设置,接着点击Input Method ,在下拉框中可以找到你的输入法,这里我使用的是Google 拼音 至此,已解决中文输入法的问题。
- 3在之前的文章中, 我们讨论过如何在Linux服务器安装各种各样的打印机(当然也包括网络扫描仪)。今天我们将来处理另一端:如何通过桌面客户端来访问网络打印机/扫描仪。网络环境 在这个安装教程中,我们的服务器(Debian Wheezy 7.2版本)的IP地址是192.168.0.10,我们的客户端(Ubuntu 12.04版本)的IP地址是192.168.0.105.注意这两台机器是在同一个网段(192.168.0.0/24).假如我们想允许打印机访问其它网段,我们需要在服务器上修改cupsd.conf文件的以下部分: Order allow,deny Allow localhost Allow from XXX.YYY.ZZZ.*(在上述例子中,我们授予打印机从本地或者任何系统能够访问打印机,这些系统的IPv4地址以XXX.YYY.ZZZ开始。为了验证哪些打印机可以在我们的服务器上适用,我们也可以在服务器上使用lpstat命令,或者浏览网页https://192.168.0.10:631/printers page.root@debian:~# lpstat -a EPSON_Stylus_CX3900 accepting requests since Mon 18 Aug 2014 10:49:33 AM WARSTPDF accepting requests since Mon 06 May 2013 04:46:11 PM WARSTSamsungML1640Series accepting requests since Wed 13 Aug 2014 10:13:47 PM WARST在Ubuntu桌面安装网络打印机 在我们的Ubuntu 12.04的客户端,我们将打开Printing菜单(Dash ->Printing).你会注意到在其它发行版中,这个名字也许会有一点差别(例如会叫做Printers 或者 Print & Fax):还没有打印机添加到我们的客户端:下面是在Ubuntu桌面客户端安装一台网络打印机的一些步骤。1) “Add”按钮将弹出 New Printer 菜单。我们将选择Network printer ->Find Network Printer并输入我们服务器的IP地址,接着点击Find:2) 在最下面我们将会看到可使用的打印机的名称。我们来选择这台三星打印机并按Forward:3) 我们将会被要求填写一些关于我们打印机的信息。当我们输入完成时,将点击 Apply按钮。4) 我们接下来将被询问是否打印一张测试页。让我们点击Print test page吧:这个打印任务将被创建为本地id 2:5)适用我们服务器上的CUPS网络借口,我们可以观察到打印任务已经提交成功了(打印机 ->SamsungML1640系列 ->显示完成任务):我们也可以通过在打印机服务器上运行以下命令显示同样信息: root@debian:~# cat /var/log/cups/page_log | grep -i samsung SamsungML1640Series root 27 [13/Aug/2014:22:15:34 -0300] 1 1 - localhost Test Page - -SamsungML1640Series gacanepa 28 [18/Aug/2014:11:28:50 -0300] 1 1 - 192.168.0.105 Test Page - -SamsungML1640Series gacanepa 29 [18/Aug/2014:11:45:57 -0300] 1 1 - 192.168.0.105 Test Page - -这个page_log日志显示每一页被打印过的信息,只包括哪些用户发送这些打印任务,打印日期&时间,以及客户端的IPv4地址。要安装Epson喷墨和PDF打印机,我们只需重复第1-5的步骤即可,并每一次选择左边的打印队列。例如,在下图中选择PDF打印机:然而,请注意到根据CUPS-PDF 文档中,根据默认:PDF文件将会被放置在打印作业的所有者命名的子目录内。在这个案例中,打印作业的所有者不能被识别(i.e.不会存在服务器中)输出的内容被放置在匿名操作的文件中。这些默认的文件夹可以通过改变在/etc/cups/cups-pdf目录中的Out值和AnonDirName变量来修改。这里,${HOME}被扩展到用户的家目录中:Out ${HOME}/PDFAnonDirName /var/spool/cups-pdf/ANONYMOUS网络打印实例 实例 #1 从Ubuntu12.04中打印,通常在本地用gacanepa(具有相同名字存在打印机服务器上)。打印到PDF打印机之后,让我们来检查打印机服务器上的/home/gacanepa/PDF目录下的内容:root@debian:~# ls -l /home/gacanepa/PDF total 368-rw------- 1 gacanepa gacanepa 279176 Aug 18 13:49 Test_Page.pdf-rw------- 1 gacanepa gacanepa 7994 Aug 18 13:50 Untitled1.pdf-rw------- 1 gacanepa gacanepa 74911 Aug 18 14:36 Welcome_to_Conference_-_Thomas_S__Monson.pdf这个PDF文件被创建时的,权限已经设置为600(-rw-------),这意味着只有打印任务的所有者(在这个例子中是gacanepa )可以访问它们。我们可以通过修改the /etc/cups/cups-pdf.conf文件UserUMask变量的值来改变这种行为。例如,0033的umask值将可以使PDF打印者以及其它所有者拥有创建文件的权限,但是只读权限也会赋予给其它所有者。 root@debian:~# grep -i UserUMask /etc/cups/cups-pdf.conf ### Key: UserUMaskUserUMask 0033对于那些不熟悉umask(有名用户文件创建模式掩码),它作为一组可以用于控制那些为新文件创建时修改默认权限。给予特定的umask值,在计算最终文件的许可权限时,在文件基本权限(0666)和umask的单项按位补码之间进行按位布尔 AND 运算。因此,假如设置一个umask值为0033,那么新文件默认的权限将不是(0033)AND 0666 = 644的值(文件拥有者具有读/写/执行的权限,其他人拥有只读权限)。实例 #2 在Ubuntu12.04执行打印,本地登录用户为jdoe(同样的帐号名称但是服务器上是不存在的)。 root@debian:~# ls -l /var/spool/cups-pdf/ANONYMOUS total 5428-rw-rw-rw- 1 nobody nogroup 5543070 Aug 18 15:57 Linux_-_Wikipedia__the_free_encyclopedia.pdf这个PDF被创建时赋予的权限是666(-rw-rw-rw-),这意味着每个人都可以访问它们。我们可以通过编辑在/etc/cups/cups-pdf.conf文件中的AnonUMask值来改变这种行为。在这一点上,你也许会疑惑:为什么同样安装一台网络打印机,大多数(当然不是全部)当前的Linux桌面发行版都会内置一个打印到文件的功能来允许用户动态创建PDF文件?使用一台网络PDF打印机有以下好处:一个网络打印机(任何类型的)允许你直接从命令行直接打印,无需首先打开文件。在其它操作系统上安装一个网络客户端,一个PDF网络打印机备件,于是系统管理员不必再单独需要安装PDF创建者实用程序(也避免了最终用户安装这些工具存在的风险)。网络PDF打印机允许通过配置权限直接打印一个网络共享,如我们所见的例子。在Ubuntu桌面安装一个网络扫描仪 这里是通过Ubuntu桌面客户端安装和访问一台网络扫描仪的一些步骤。假设网络扫描仪服务器已经启动并运行所述here.1)让我们第一步来检查在我们的Ubuntu客户端主机上是否存在一台可用的扫描仪。没有先前的安装,你将会看到信息提示没有识别到扫描仪. $ scanimage -L2) 现在我们需要启用saned进程,用来预装Ubuntu桌面。要启用它,我们需要编辑/etc/default/saned文件,并设置RUN变量为yes:$ sudo vim /etc/default/saned # Set to yes to start sanedRUN=yes3) 让我们编辑/etc/sane.d/net.conf文件,并在扫描仪安装后添加服务器IP地址:4) 重启saned进程:$ sudo service saned restart 5) 现在让我们来看看扫描仪是否可用: 现在我们可以打开Simple Scan(或者其它扫描工具)并开始扫描文件。我们可以旋转,修剪,和保存生成的图片:总结 拥有一或多台网络打印机或扫描仪在任何办公和家庭网络中都是非常方便适用的,并同时提供了许多好处。例举如下:多用户(从不同的平台/地方)都能够向打印机发送打印作业的队列。由于硬件共享达到了节约成本和维护的作用。我希望该文可以帮助你更充分地利用这些有点。
- 4电脑格式错误的原因及解决方法(探究电脑格式错误的来源以及应对之策)
- 5电脑安装打印机驱动程序的操作步骤(详细介绍如何在电脑上安装打印机驱动程序)
- 6ubuntu无法解析亚马逊的DNS解决方法 编辑/etc/resolv.conf文件。 将 nameserver改为 8.8.8.8 或者8.8.4.4 再重启网络就解决问题。 /etc/init.d/networking restart
- 7对于刚刚接触Ubuntu的朋友来说可能对软件的安装及更新方式还不太了解,其实Ubuntu除了通过deb软件包,软件中心外还可以通过添加软件源PPA的方式来进行软件的安装及更新,而后者不用我们自己去检查我们常用的软件是否是最新版本,系统通过PPA软件源就可以自动获取这些信息,在每次平常的系统软件更新的时候就把顺便软件给更新了。刚刚接触linux的朋友对命令行方式还不太适应,这里就分享一下我在图形界面下增加软件源的方法。1、打开带有字母“A”logo的软件更新器,点击“设置”按钮。2、这时会弹出一个“软件和更新”对话框,选择“其他软件”。此时我们会发现这台电脑非官方的所有软件源都在这里。3、点击下方的“添加”按钮,接着就弹出一个添加软件源的对话框。4、这时将软件官网上的软件源代码复制下来粘贴到添加软件源的对话框中,然后点击右下角的“添加源”按钮。5、软件源添加后要检查一下所添加的软件源前面是否打了“√”,假如没打对勾的话是不会启用软件源的。6、确认没问题了就可以直接点击“关闭”按钮,这样系统就会自动更新软件源并检查是否有软件需要更新。假如没有对话框就会自动退出,假如有就可以按正常软件更新的方式点击按钮更新了。注意事项:1、对于用惯Windows的朋友来说可能对软件源的概念不太熟悉,通俗来讲软件源就可以看做一个软件仓库,你可以通过这个软件仓库来在线的查询和更新最新的软件。2、个别情况可能更新软件的时候会遇到软件源不受信任,那么我们就得打开新立得软件包管理器来更新软件。
- 81. 在渗透测试中,要清除当前bash操作,很多人会直接 history -c 清除,但是这样会把所有的 .bash_history 清空,稍微有点常识的管理员立马就能发现出问题了。解决这个很简单:正确的做法是在推出前执行这样就行了。2. 登录系统的时候,直接输入以下命令,登录SSH之后就不记录history了复制代码代码如下: 复制代码代码如下:
- 9探索LGUF6800电视的功能与特点(一款高性能的智能电视体验)
- 10想知道在Linux中你正在使用的网卡是什么吗? 在Linux中很容易就找出网卡的生产商。打开一个终端并输入下面的额命令:复制代码代码如下:sudo lshw -C network假如上面的命令不能在sudo下使用,那就别用 sudo 的特权模式。它的输出看上去有点奇怪但是很有用。复制代码代码如下: *-network description: Wireless interface product: BCM4360 802.11ac Wireless Network Adapter vendor: Broadcom Corporation physical id: 0 bus info: pci@0000:03:00.0 logical name: wlan0 version: 03 serial: 9c:f3:87:c1:5d:6a width: 64 bits clock: 33MHz capabilities: busmaster caplist ethernet physical wireless configuration: broadcast=yes driver=wl0 driverversion=6.30.223.248 (r487574) ip=192.168.1.23 latency=0 multicast=yes wireless=IEEE 802.11abg resources: irq:18 memory:b0600000-b0607fff memory:b0400000-b05fffff如你所见,我Macbook Air上的无线网卡是BCM4360,这是一款在Ubuntu下面很容易出现无法检测无线网络问题的网卡。lshw 命令实际上是用来列出硬件的,因此命令的名字是lshw。带上网络的选项后,就会只过滤出网络硬件了。了解网卡的其他方法另外你还可以使用lspci命令来显示PCI总线上的信息。你应该使用普通用户来运行这个命令。只需要在命令行下输入:复制代码代码如下: lspci命令的输出看上去想这样:复制代码代码如下: 00:00.0 Host bridge: Intel Corporation Haswell-ULT DRAM Controller (rev 09) 00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 09) 00:03.0 Audio device: Intel Corporation Haswell-ULT HD Audio Controller (rev 09) 00:14.0 USB controller: Intel Corporation 8 Series USB xHCI HC (rev 04) 00:16.0 Communication controller: Intel Corporation 8 Series HECI #0 (rev 04) 00:1b.0 Audio device: Intel Corporation 8 Series HD Audio Controller (rev 04) 00:1c.0 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 1 (rev e4) 00:1c.1 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 2 (rev e4) 00:1c.2 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 3 (rev e4) 00:1c.4 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 5 (rev e4) 00:1c.5 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 6 (rev e4) 00:1f.0 ISA bridge: Intel Corporation 8 Series LPC Controller (rev 04) 00:1f.3 SMBus: Intel Corporation 8 Series SMBus Controller (rev 04) 02:00.0 Multimedia controller: Broadcom Corporation Device 1570 03:00.0 Network controller: Broadcom Corporation BCM4360 802.11ac Wireless Network Adapter (rev 03) 04:00.0 SATA controller: Marvell Technology Group Ltd. 88SS9183 PCIe SSD Controller (rev 14)这些命令会同时列出有线和无线的网卡。你应该注意到上面的输出中显示我的系统中没有有线网卡。因为我使用的是Macbook Air,它没有以太网端口
- 11电脑耳机效果调试教程(让你的音乐体验更上一层楼)
- 12电脑显示鼠标驱动安装错误的解决方法(遇到电脑显示鼠标驱动安装错误该如何解决?)
全站热门
apt-get和apt-cache是Ubuntu Linux中的命令行下的包管理工具。 apt-get的GUI版本是Synaptic包管理器。该文中我们会展示apt-get和apt-cache命令的15个不同例子。示例:1 列出所有可用包复制代码代码如下:linuxtechi@localhost:~$ apt-cache pkgnames account-plugin-yahoojp ceph-fuse dvd+rw-tools e3 gnome-commander-data grub-gfxpayload-lists gweled .......................................示例:2 用关键字搜索包这个命令在你不确定包名时很有用,只要在apt-cache(LCTT 译注:这里原文是apt-get,应为笔误)后面输入与包相关的关键字即可。复制代码代码如下:linuxtechi@localhost:~$ apt-cache search web server apache2 - Apache HTTP Server apache2-bin - Apache HTTP Server (binary files and modules) apache2-data - Apache HTTP Server (common files) apache2-dbg - Apache debugging symbols apache2-dev - Apache HTTP Server (development headers) apache2-doc - Apache HTTP Server (on-site documentation) apache2-utils - Apache HTTP Server (utility programs for web servers) ......................................................................注意: 假如你安装了“apt-file”包,我们就可以像下面那样用配置文件搜索包。复制代码代码如下:linuxtechi@localhost:~$ apt-file search nagios.cfg ganglia-nagios-bridge: /usr/share/doc/ganglia-nagios-bridge/nagios.cfg nagios3-common: /etc/nagios3/nagios.cfg nagios3-common: /usr/share/doc/nagios3-common/examples/nagios.cfg.gz pnp4nagios-bin: /etc/pnp4nagios/nagios.cfg pnp4nagios-bin: /usr/share/doc/pnp4nagios/examples/nagios.cfg示例:3 显示特定包的基本信息复制代码代码如下:linuxtechi@localhost:~$ apt-cache show postfix Package: postfix Priority: optional Section: mail Installed-Size: 3524 Maintainer: LaMont Jones Architecture: amd64 Version: 2.11.1-1 Replaces: mail-transport-agent Provides: default-mta, mail-transport-agent .....................................................示例:4 列出包的依赖复制代码代码如下:linuxtechi@localhost:~$ apt-cache depends postfix postfix Depends: libc6 Depends: libdb5.3 Depends: libsasl2-2 Depends: libsqlite3-0 Depends: libssl1.0.0 |Depends: debconf Depends: cdebconf debconf Depends: netbase Depends: adduser Depends: dpkg ............................................示例:5 使用apt-cache显示缓存统计复制代码代码如下:linuxtechi@localhost:~$ apt-cache stats Total package names: 60877 (1,218 k) Total package structures: 102824 (5,758 k) Normal packages: 71285 Pure virtual packages: 1102 Single virtual packages: 9151 Mixed virtual packages: 1827 Missing: 19459 Total distinct versions: 74913 (5,394 k) Total distinct descriptions: 93792 (2,251 k) Total dependencies: 573443 (16.1 M) Total ver/file relations: 78007 (1,872 k) Total Desc/File relations: 93792 (2,251 k) Total Provides mappings: 16583 (332 k) Total globbed strings: 171 (2,263 ) Total dependency version space: 2,665 k Total slack space: 37.3 k Total space accounted for: 29.5 M示例:6 使用 “apt-get update” 更新仓库使用命令“apt-get update”, 我们可以重新从源仓库中同步文件索引。包的索引从“/etc/apt/sources.list”中检索。复制代码代码如下:linuxtechi@localhost:~$ sudo apt-get update Ign http://extras.ubuntu.com utopic InRelease Hit http://extras.ubuntu.com utopic Release.gpg Hit http://extras.ubuntu.com utopic Release Hit http://extras.ubuntu.com utopic/main Sources Hit http://extras.ubuntu.com utopic/main amd64 Packages Hit http://extras.ubuntu.com utopic/main i386 Packages Ign http://in.archive.ubuntu.com utopic InRelease Ign http://in.archive.ubuntu.com utopic-updates InRelease Ign http://in.archive.ubuntu.com utopic-backports InRelease ................................................................示例:7 使用apt-get安装包复制代码代码如下:linuxtechi@localhost:~$ sudo apt-get install icinga上面的命令会安装叫“icinga”的包。示例:8 升级所有已安装的包复制代码代码如下:linuxtechi@localhost:~$ sudo apt-get upgrade示例:9 更新特定的包在apt-get命令中的“install”选项后面接上“-only-upgrade”用来更新一个特定的包,如下所示:复制代码代码如下:linuxtechi@localhost:~$ sudo apt-get install filezilla --only-upgrade示例:10 使用apt-get卸载包复制代码代码如下:linuxtechi@localhost:~$ sudo apt-get remove skype上面的命令只会删除skype包,假如你想要删除它的配置文件,在apt-get命令中使用“purge”选项。如下所示:复制代码代码如下:linuxtechi@localhost:~$ sudo apt-get purge skype我们可以结合使用上面的两个命令:复制代码代码如下:linuxtechi@localhost:~$ sudo apt-get remove --purge skype示例:11 在当前的目录中下载包复制代码代码如下:linuxtechi@localhost:~$ sudo apt-get download icinga Get:1 http://in.archive.ubuntu.com/ubuntu/ utopic/universe icinga amd64 1.11.6-1build1 [1,474 B] Fetched 1,474 B in 1s (1,363 B/s)上面的目录会把icinga包下载到你的当前工作目录。示例:12 清理本地包占用的磁盘空间复制代码代码如下:linuxtechi@localhost:~$ sudo apt-get clean上面的命令会清空apt-get所下载的包占用的磁盘空间。我们也可以使用“autoclean”选项来代替“clean”,两者之间主要的区别是autoclean清理不再使用且没用的下载。复制代码代码如下:linuxtechi@localhost:~$ sudo apt-get autoclean Reading package lists... Done Building dependency tree Reading state information... Done示例:13 使用“autoremove”删除包当在apt-get命令中使用“autoremove”时,它会删除为了满足依赖而安装且现在没用的包。复制代码代码如下: linuxtechi@localhost:~$ sudo apt-get autoremove icinga示例:14 显示包的更新日志复制代码代码如下: linuxtechi@localhost:~$ sudo apt-get changelog apache2 Get:1 Changelog for apache2 (http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.4.10-1ubuntu1/changelog) [195 kB] Fetched 195 kB in 3s (60.9 kB/s)上面的命令会下载apache2的更新日志,并在你屏幕上分页显示。示例:15 使用 “check” 选项显示损坏的依赖关系复制代码代码如下:linuxtechi@localhost:~$ sudo apt-get check Reading package lists... Done Building dependency tree Reading state information... Done
有个领导想在自己安装了ubuntu的系统中装个打印机,我说行啊,我来帮你装,顺便就截了几张图,分享给大家步骤。网络打印机是有一个IP地址的哦!和共享打印机的添加方法不太一样,但是可以借鉴参考。1、打开菜单里面的设置按钮,对!就是桌面靠左,像齿轮的那个。点开它2、在 系统设置窗口中的“硬件”项目下面,找到“打印机”,并使用鼠标左键点开它。3、在打印机对话窗口里面,我们点击两个添加其中的一个。来添加一个打印机4、在选择设备下面,找到“网络打印机”一项,我并使用鼠标左键点击它5、被点开的“网络打印机”下面,一般情况会自动搜索到网络打印机,并且给你展示出来,如下图,Generic 21c-1(192.168.x.1) ,我们点中它,然后点击窗口中右下角处的“前进”6、我们选择ubuntu系统为我们查找到并且“推荐”的打印机类型,然后点击“前进”7、接下来的两个驱动程序,系统也会默认为您选择好,我们就保持它默认的“推荐”驱动就好了。继续点击“继续”按钮。8、在打印机描述中,你可以更改里面的数据,位置也可以改变,但是我这里都保持默认,直接点击“应用”按钮继续操作。9、接下来,系统会开始着手为您安装该网络打印机的驱动程序,等待安装完成后。会提示您是否打印一张测试页,根据你的需求点击即可,这样我们就安装好了网络打印机啦。
先来介绍一下硬盘分区的基本知识:物理介质 The physical media逻辑卷管理说明不幸的是,该磁盘工具不支持LVM的大多数强大的特性,没有管理卷组、扩展分区,或者创建快照等选项。对于这些操作,你可以通过终端来实现,但是没有那个必要。相反,你可以打开Ubuntu软件中心,搜索关键字LVM,然后安装逻辑卷管理工具,你可以在终端窗口中运行sudo apt-get install system-config-lvm命令来安装它。安装完之后,你就可以从dash上打开逻辑卷管理工具了。这个图形化配置工具是由红帽公司开发的,虽然有点陈旧了,但却是唯一的图形化方式,你可以通过它来完成上述操作,将那些终端命令抛诸脑后了。比如说,你想要添加一个新的物理卷到卷组中。你可以打开该工具,选择未初始化条目下的新磁盘,然后点击“初始化条目”按钮。然后,你就可以在未分配卷下找到新的物理卷了,你可以使用“添加到现存卷组”按钮来将它添加到“ubuntu-vg”卷组,这是Ubuntu在安装过程中创建的卷组。要扩展逻辑分区到物理空间,你可以在逻辑视图下选择它,点击编辑属性,然后修改大小来扩大分区。你也可以在这里缩小分区。system-config-lvm的其它选项允许你设置快照和镜像。对于传统桌面而言,你或许不需要这些特性,但是在这里也可以通过图形化处理。记住,你也可以使用终端命令完成这一切。
前面两个经验我们准备好了安装Ubuntu15.04所需的工具和文件。一是下载好了Ubuntu15.04的系统镜像,需要注意的是通过官网下载,要到其英文官方网站上去下载最新的,假如是中文官网的话,可能内容较旧。二是我们通过Virtualbox新建好了一个虚拟机,我们可以将其理解成准备好了一台PC机。下面我们正式开始系统安装吧。软件名称:Ubuntu 14.04 官方正式版软件大小:752MB更新时间:2014-05-071、点击“Start”,打开虚拟机,启动系统安装。2、我们选择“Install Ubuntu”可以直接开始安装,也可以先试用,选择“Try Ubuntu”,然后再决定是否正式安装。此处,我们直接选择“Install Ubuntu”。3、此处我们需要注意的是:在安装Ubuntu桌面系统期间,最好断开网络,不然它会安装过程中连接互联网进行一些更新,这样会安装很慢。因此,我们断开网络。方法:在虚拟机右下角的网络图标上,选择断开。4、断开后,过一会,is connected to Internet 前面会变一个X字,表示网络已经断开。5、点击“Continue”继续,进入安装类型的选择,我们选择默认,“擦除磁盘并安装系统”,点击“Install Now”。6、需要确认,我们点击Continue继续。7、进入区域选择,我们选择Shanghai,或者直接输入Shanghai也是可以的。点击Continue。8、进入键盘布局配置,我们默认,继续Continue。9、进入用户配置。设置用户名和密码。点击Continue。10、此时就会进入安装界面了,我们可以来杯coffee了。11、安装成功。12、点击”Restart Now“,重启进入安装好的Ubuntu桌面系统。输入刚刚设置的密码,登录系统。
热门文章
- 1电脑多个U盘安装教程(简易步骤,快速安装你的U盘)
- 2ubuntu搭建nginx+scala+play 2.0运行环境学scala有段时间了,最近用scala做了个社区:,开始买了个内存512的vps,但是编译都不通过,jvm提示无法为对象分配空间,囧,升级到1G,经过3个小时的奋战,终于配置成功了,顺便也记录下。1、安装nginx,mysql编译什么的网上一大堆,就不细说了,大家可以google下。2、安装JDK注意:ubuntu用户请务必将OpenJDK替换成sunJDK[ubuntu用户]01sudo add-apt-repository ppa:ferramroberto/java02#假如上面命令提示:command not found,就输入如下命令:sudo apt-get install python-software-properties0304sudo apt-get update05sudo apt-get install sun-java6-jre sun-java6-plugin06sudo apt-get install sun-java6-jdk0708update-alternatives --config java09#选择jdk,输入上面命令后会有3个选项,选择第2个选项10 Selection Path Priority Status11------------------------------------------------------------12* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode13 1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode14 2 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode[非ubuntu用户]http://www.oracle.com/technetwork/java/javase/downloads/index.html解压后我把文件移动到了/usr/local/下修改/etc/profile文件1export JAVA_HOME=/usr/local/jdk1.7.0_052 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar3export PATH=$PATH:$JAVA_HOME/bin3、下载playframework文件[cc lang=c]http://www.playframework.org/[/cc] 3.1、安装scala,只运行play2.0的话是可以不用安装的。1http://www.scala-lang.org/ #下载debin包,假如安装的openjdk的话可能出现缺少 janic2 dpkg -I scala-2.9.2.deb 3.2、安装sbt https://github.com/harrah/xsbt/wiki/Getting-Started-Setup 我是安装ubuntu的方法安装的,记得别忘了下载,不然会提示找不到sbt包 http://apt.typesafe.com/repo-deb-build-0002.deb1dpkg -I repo-deb-build-0002.deb2apt-get update3apt-get install sbt 安装过程中可能需要点时间,完成后测试进入scala目录测试 sbt4、启动play2.0项目1play2start -Dhttp.port=90005、nginx设置代理01 server02 {03 listen 80;04 server_name *.cn-scala.com cn-scala.com;0506 location /static {07 root /static/public;08}09 location / {10 proxy_pass http://127.0.0.1:9000;11 proxy_set_header Host $host;12 proxy_set_header X-Real-IP $remote_addr;13}14 }
- 3在 Windows 中把时间设置正确了过后,回到在 Ubuntu 后系统的时间又不一样了,在 Ubuntu中把时间设置正确后进入 Windows 后,时间又不一致了。 出现这种情况的原因是 Windows 和 Ubuntu它们在默认情况下看待硬件时间(主板上的BOIS显示的时间)的方式不一样。 知道了问题存在的原因,我们就来解决这个问题。这个是一个关于时间的问题,我们就先来了解一下关于时间的概念UTC即Universal Time Coordinated,协调世界时GMT即Greenwich Mean Time,格林尼治平时Windows 与 Linux 缺省看待系统硬件时间的方式是不一样的: * Windows把系统硬件时间当作本地时间(local time),即操作系统中显示的时间跟BIOS中显示的时间是一样的。 * Linux/Unix/Mac把硬件时间当作 UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是GMT+8,则系统中显示时间是硬件时间+8。这 样,当PC中同时有多系统共存时,就出现了问题。假如你的 Ubuntu 和 Windows 中设置的时区都为北京时间东八区,而你在 Ubuntu中把当前系统时间更改为9:00AM。则此时硬件中存储的实际C时间是1:00AM。这时你重启进入Windows后,你会发现 windows系统中显示的时间是 1:00AM,比 Ubuntu 中慢了八个小时。同理,你在 Windows中更改或用网络同步了系统时间后,再到Ubuntu中去看,系统就会快了8小时。在实行夏令时的地区,情况可能会更复杂些。在ubunut下联网后时间还未能自动调整过来, 可用一下方法修改:让 Windows 把硬件时间当作 UTC开始->运行->CMD,打开命令行程序(Vista则要以管理员方式打开命令行程序方可有权限访问注册表),在命令行中输入下面命令并回车Reg add HKLMSYSTEMCurrentControlSetControlTimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1====================================================================Ubuntu中不使用UTC时间,而启用本地时间编辑/etc/default/rcS把其中的内容“UTC=yes”改成“UTC=no“,保存后重启系统就可以了
- 4电脑编程在线使用教程网站(从零基础到编程高手,编程在线使用教程网站帮你实现技术梦想)
- 5电脑常见错误提示及解决方法(解决电脑错误提示的技巧和方法)
- 6Win平板电脑使用教程(掌握Win平板电脑操作技巧,畅享便捷移动办公)
- 7徒手拆掉平板电脑的完整教程(以图文详解,轻松拆解平板电脑,维修更容易!)
- 8Ubuntu 14.04中加入了开启本地菜单的选项,允许用户将全局菜单移动到各个窗口中。前面为大家介绍了如何禁用Ubuntu 13.10全局菜单,而在14.04中只需更改设置即可完成。打开系统设置中外观选项,在外观选项窗口切换到行为标签,选择显示窗口菜单方式,选择“在窗口标题栏”后关闭该窗口,现在你可以看到菜单已由全局菜单移动到窗口标题栏中。
- 9腾龙17-50佳能扣镜头评测(画质出众功能全面佳能佳品推荐)
- 10先安装VMWare10,这个没什么可说的,安装好后启动,点击新建虚拟机,因为想设置虚拟机的磁盘保存方式,所以选择自定义选择“稍后安装操作系统”选择64位的版本给自己的机器取个名字,设定虚拟机磁盘路径,电脑c盘是SSD,为了速度就安到C盘了设置处理器的配置,这里需要看个人电脑配置,我是四核8线程的i7,这里就选了2*2,假如CPU核心数不多,就选择1*2分配内存,先来2G,以后不够再改配置后面的设置,除了磁盘的设置:将虚拟磁盘存储为单个文件,其他都默认就OK设置完成后,点击编辑虚拟机配置,设置ISO镜像文件路径完成后启动虚拟机,等安装文件加载,进入语言选择,默认是英文,下面有中文的语言选择我选择安装完成后再更新,音频解码就算了,虚拟机主要是为了布开发环境清除磁盘就行,不用怕,不会把真实磁盘清理掉的=。=把我默认到哈尔滨去了。。点击国内区域,选成shanghai注意:键盘布局选择英语(美国)设置用户名,密码下面登陆Ubuntu账户,愿意的填email创建一个,我选择以后登陆,估计很久很久以后=。=安装开始,趁机赶几行代码。。SSD安装就是快,完毕重启可以登陆了桌面很小,这时候还要安装VMtool点击顶部菜单栏的虚拟机选项,下拉选择“安装VMware Tools”,会自动载入光盘,打开窗口运行“vmware-tools-upgrader-64”无反应,把VMwareTools.tar.gz 文件拷贝而到桌面,右键提取到此处,会解压为一个 vmware-tools-distrib 目录打开终端,输入以下命令$ cd 桌面/vmware-tools-distrib$ sudo ./vmware-install.pl输入密码,执行,一路回车摁下去,到最后出现“Enjoy——the VMware team”的字样,安装完成打开VMware上方菜单栏的查看-自动调整大小,设置为自动适应客户机和自动适应窗口,右上角按钮重启虚拟机,登陆后就发现虚拟机桌面铺满窗口,调整壁纸平铺方式,显示OK至此,安装完成~