VirtualBox下对虚拟机硬盘进行扩充

因工作和开网银需要,在Ubuntu下安装了virtualbox,并在上面安装了windows7。随着时间推移,发现原本分配的25G虚拟硬盘不够用了,于是想给它扩容,在网上搜了一下,方法很简单,记录一下。

我了解的方法有两种:

1.直接新建一个虚拟硬盘(比如.vdi文件),然后直接挂到虚拟机上。这是最简单的办法,但是我不喜欢给一个系统挂两个VDI文件,也不利于以后备份。

2.用命令扩展空间

先把虚拟机中的win7关闭(必须是彻底关机,不能为休眠),然后从菜单进入管理虚拟介质管理,右击该win7系统对应的虚拟硬盘,选择”释放“,然后再次右击选择”删除“(注意,弹出提示框中必须选择“保留”,不会删除系统数据,如果选择”删除“那就完了,该VDI文件不能恢复了)。

至此,扩容前的准备工作全部完成。

接下来,打开命令窗口,输入:

yzy@thinkpad:~$ VBoxManage modifyhd ./VirtualBox\ VMs/win7/win7.vdi --resize 51200

结果显示:

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

说明扩容成功,我的win7扩容为50G了,最后将该VDI文件重新挂到该虚拟机即可,在此不再赘述。

注意:

1.VBoxManage modifyhd 命令只支持VDI及VHD格式的虚拟硬盘。

2.该命令只能用于扩容,而不能缩减硬盘。

3.该虚拟硬盘必须为动态分配(新建虚拟硬盘时都会有相关选择:动态分配或固定大小)。

3.如果你的硬盘格式不是VDI或VHD,可使用命令VBoxManage clonehd 将格式转换一下,命令参考:https://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvdi


解决windows下的zip压缩包在linux下解压出现乱码的问题

前言:

      windows平台下的默认编码一般为GBK、GB2312,而linux下一般默认为UTF8,当windows下的压缩文件在linux下解压时,由于该压缩文件没有指明采用的是何种编码,于是linux用默认UTF8编码解压后中文就会出现乱码。

      今天从网上下载的压缩包在ubuntu下解压后出现中文文件名乱码问题,但文件内容没有出现乱码。网上有多种解决方案,但许多方法不够通用,不能解决大多数人的问题,比如:

unzip -O CP936 xxx.zip

在我本地unzip命令就没有这个参数,不能执行。

在此,总结一下我用过的两个比较通用有效的方法:

1.在wine环境下安装一个windows平台下的解压软件

这个方法最简单。一般linux平台下我都会安装wine,于是我接下来安装了360压缩(也可安装其他解压软件),然后解压文件,一切正常,so easy!


2.使用linux命令解压

a.安装工具:

sudo apt-get install p7zip-full convmv

b.解压文件:

LANG=C 7za x test.zip

此时中文文件解压后,会显示类似乱码:

�ؿ�-�ļ��嵥��ʹ��˵��.txt (无效的编码)

准确点说,这应该不算乱码,可理解为未编码状态,此时可以继续下一步处理。

c.对上一步产生的乱码进行转换(gbk转utf8):

convmv -f GBK -t UTF8 -r --notest .

此时文件名被纠正为:

必看-文件清单及使用说明.txt

d.如果你的文件内容也出现乱码:

可以使用iconv命令解决,具体可通过iconv –help查看用法(本人暂未遇到文件内容乱码问题,就不演示了)。

总结:

第二种方法显然处理起来更稳定,但需要命令进行多次操作才能完成,以后有时间写成一个文件,方便使用。



解决ubuntu eclipse内置浏览器打不开的问题

在ubuntu中打开eclipse后,默认内置浏览器选项是灰色禁用的,进入WindowPreferenceGeneralWeb Browser即可看到。

当在代码中链接到一个URL时,会自动启用外部浏览器打开链接,如想在eclipse内部简单浏览一些网页信息,则可选择WindowShow ViewOther…GeneralInternal Web Browser,此时会弹出内置浏览器,但是该浏览器会报错:

org.eclipse.swt.SWTError: No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)] 

根据提示,将MOZILLA_FIVE_HOME设置值为/usr/lib/firefox,没有效果,然后又从网上找了一些解决方案,仍无结果,最后终于看到有人这样:

sudo apt-get install libwebkitgtk-1.0-0

通过安装这个依赖(gtk图形库下webkit浏览器内核),重启eclipse后,灰色禁用的Internal Web Browser选项终于可用了。

ubuntu中默认使用wps打开office文档

下载解压wps后即可直接打开wps,但用户在打开各类office文档(xls、ppt、doc等)时只能选用系统中的默认程序libreOffice,所以我们需要添加wps作为office文档可选的打开程序。

在ubuntu中,有三个文件可配置默认程序:

1./etc/gnome/defaults.list
2./usr/share/applications/defaults.list
3.~/.local/share/applications/mimeapps.list

其中第一和第二个属于系统级配置文件,里面包含了系统中配置好的文件类型及其对应的打开程序;第三个文件为当前登陆用户的局部配置环境,如果与前面系统级的配置有重复,则以局部配置优先,比如:我要修改xls文件的打开方式,我就会在第三个文件即mimeapps.list中加入一行:

application/vnd.ms-excel=wps-sheet.desktop

注意:wps-sheet.desktop是一个自定义的桌面快捷键,存放在与文件mimeapps.list相同的目录,即~/.local/share/applications/。在此不讨论如何创建快捷键。

保存后即可在右击excel文档时发现多出了一个wps打开选项,如图:

同理,我们可以继续修改,实现把word、ppt和其他任何文档以我们指定的程序打开,最后WPS配置后应该如下:

application/vnd.ms-excel=wps-sheet.desktop
application/msword=wps.desktop
application/vnd.openxmlformats-officedocument.presentationml.presentation=wps-ppt.desktop

最后,关于文件类型,可右击文件属性查看,然后按如上格式配置好对应的快捷方式(.desktop),比如,查看excel:

ubuntu系统中chrome浏览器的代理配置

工作环境迁入linux后,一般都会遇到一个普遍问题:怎样在linux环境下寻找windows常用程序的替代品?QQ,Office,邮件客户端等等。QQ目前我暂时用的webQQ,office用的ubuntu内置的libreOffice和金山wps for linux,其它的也都一一寻找到了替代品,如果实在不行,试试wine之类的模拟器。然而这都不是重点,最重要的是我习惯使用的chrome浏览器在linux下的版本无法使用代理功能。

    最终使用的一个曲线解决方案:

1、安装好google-chrome(或者chromium也行)后,我们发现浏览器的设置中,代理配置功能失效,显示为:

在受支持的桌面环境中运行google-chrome时,将使用系统代理设置。但您的系统不受支持,或启动系统配置时出现问题。

但您仍可通过命令行进行配置。如需详细了解各项实验功能和环境变量,请参见 man google-chrome。

2、关闭该google-chrome,并重新从命令行启动,加入一个参数:

yzy@thinkpad:~$ google-chrome --proxy-server="socks5://localhost:7077"

值得注意的是,由于我平常windows环境下使用的代理工具为:chrome+SwitchyOmega插件+MyEntunnel,配置是SSH+socks5,所以一开始没有在–proxy-server参数中指定socks5,导致启动后代理失效。(可通过google-chrome –help了解详细参数)

chrome成功启动后,打开百度输入“ip”,可显示我的代理服务器IP,说明代理成功启用。

3、此时我就可以在chrome中登陆google帐户了,然后我的所有扩展也就随之慢慢下载并安装完成,其中就包括我的SwitchyOmega(如果有没安装,可自行去google store下载)。接下来在SwitchyOmega中配置好我的ssh代理即可成功恢复之前windows环境下的代理配置了。

linux下我的代理工具为:chrome+SwitchyOmega+gSTM(代替windows下的MyEntunnel)。

最简单的SSH代理客户端实现

    我的SSH帐号是通过香港的虚拟主机附赠的,目前主要是用浏览器插件(比如SwitchySharp)+ MyEnTunnel/Bitvise + 远程主机SSH代理服务的模式实现的。

    一直以来相安无事,但前几天主机商把SSH服务的监听端口由默认的22改为了2289,在家里将相应的端口也改过来即可恢复正常,但在公司就没那么幸运了。公司内部网络对外网的端口访问作了限制,只能访问标准的如80,8080,21,22等端口,很不幸,2289端口不在此范围内。几天下来出不了墙,很是焦虑,后来在公司的几台测试用linux服务器上通过telnet myhost.com 2289测试可用,太幸运了,至少找到了一个可供代理出口的机器,但是在linux机器上我用什么软件来替代MyEnTunnel/Bitvise呢,后来基于这个思路去寻找相关替代品,终于在走了这段弯路之后,发现了SSH命令本身就具备动态转发的功能。十分简单:

usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]

只需挑出几个必需的参数即可:

root@testserver [~]# ssh -D 0.0.0.0:7077 -p 2289 myname@myhost 

然后根据提示输入相应的用户密码即可,这样就完成了在公司内网代理服务器的实现(相对于我的办公电脑它是服务器,相对远程虚拟主机它是客户端)。当然也可以写自动化shell脚本,但因为是公用测试机器,就没这个必要了,而且可避免其他人看到我的账密信息。

参数说明:
-D 表示启用基于socks的动态端口转发,监听本地7077端口,0.0.0.0:7077表示将所有IP发送到本地7077端口的请求转发到远程myhost主机2289端口

-p 远程接收请求的SSH服务端口

Linux添加开机启动服务

    上周生产环境不能访问,客户那边将服务器重启后,站点管理系统(基于tomcat)不能自动开机重启,但是apache却成功启动了,不知何故。

    我在生产环境中对这两个服务启动项的配置是基于/etc/rc.d/rc.local文件:

[root@IBMSrv2 ~]# cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/opt/tomcat6/bin/startup.sh
/usr/local/apache2/bin/apachectl start

最后两行就是分别配置的tomcat及apache启动脚本,对于tomcat不能启动的原因,经多方尝试仍不得解决。

http://bbs.chinaunix.net/thread-2223362-1-1.html

http://www.cnblogs.com/diyunpeng/archive/2009/11/11/1600886.html

http://blog.csdn.net/mezheng/article/details/7933228

http://www.blogjava.net/shiliqiang/articles/317455.html

通过VNC远程连接linux桌面

    对于远程连接windows系统的桌面,我们并不陌生,而对于linux桌面的远程连接,可能会相对较少,我们可以通过VNC或xmanager来实现。此文主要简单地讲下vnc连接redhat Linux桌面。

一、vnc基本原理

    vnc由服务端vnc server及客户端vnc viewer组成。在linux系统中安装vnc server并启动(如果是第一次启动,会要求输入密码),然后在客户端安装vnc viewer或者在浏览器中输入服务器IP及端口即可访问linux桌面,如10.13.1.35:5801。

二、检查linux系统的vnc服务器是否安装并启动

[root@myserver ~]# whereis vnc
vnc: /usr/share/vnc

这说明vnc在本机已安装vnc server,否则需要自行下载安装:

yum install vnc-server

三、启动vnc server

    第一次启动时会要求创建密码,此密码用于客户端连接时使用。

[root@myserver ~]# vncserver

You will require a password to access your desktops.

Password:
Verify:

New 'myserver:1 (root)' desktop is myserver:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/myserver:1.log

同时还会在当前用户目录下生成vnc相应配置文件,如果要修改桌面,比如使用kde桌面,就将gnome-session &注释掉,并加一行startkde,如下

[root@myserver ~]# vim ./.vnc/xstartup
#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
#gnome-session &
startkde

四、客户端访问

最简单的方式就是通过浏览器访问:

此种方式需要客户端安装有java运行环境,或者你也可以直接下载一个独立客户端,下载地址:http://www.realvnc.com/download/viewer/

连接成功后,即可看到远程linux桌面:

用图形工具连接数据库的几个小技巧

    维护数据库时,我们一般有几种连接数据库的方式:1.命令行工具,比如putty、secureCRT等。2.图形工具,比如navicat,或者web形式的phpMyAdmin。但我比如喜欢傻瓜式的数据库维护图形工具,所以我倾向于后者。

    为此,针对不同的客户生产环境,我总结了几个自己的实现方法,希望对码农们有用(高手就不用往下看了)。先简单概括一下我经历过的数据库网络环境:

    1.可用ssh直连生产服务器,但不能直连系统后台数据库。

    2.不能用ssh直连生产服务器,需要先VPN,然后才可以连接数据库,但VPN后我就上不了网。

    一、ssh代理

    针对第一种情况,比较简单,操作步骤如下:

先点击选项卡SSH,配置好SSH隧道代理所需信息

再回到”常规“选项卡,填写数据库所在服务器的IP(注意:是内网IP)及数据库的登陆帐密信息,并点击测试连接

二、需要VPN的情况

对此,可以有两种方式:

一种是给生产环境安装一个phpMyAdmin,这样既省去了VPN的麻烦,又可以使用本地网络上网,很方便。关于linux下安装phpMyAdmin及相关软件的方法,请参考我的另一篇博客:Linux下安装Apache、PHP、phpMyAdmin及Apache反向代理Tomcat配置实战

另一种是VPN后,可以用navicat访问生产数据库了,但因为进入了生产环境的局域网,由于限制,无法上网了。这时就需要借助上面第一种方式中用到的ssh代理,通过它,我们就可以在VPN环境下既可以用图形工具维护数据库,又可以上网查资料解决临时遇到的数据库问题,免去了本地网络和生产环境网络之间的频繁切换,多爽啊。

    我的SSH代理上网的常用工具是:chrome浏览器+SwitchySharp扩展+MyEnTunnel(ssh代理工具)。

    1.自行到网上下载MyEnTunnel

    2.配置MyEnTunnel

    

    3.安装chrome浏览器下的插件SwitchySharp,并配置好至MyEnTunnel的指定端口(我这里用的是7077)

    

然后在chrome浏览器右上角选择配置好的情境模式,就可以实现代理上网了。当然我们也可以用其他浏览器打开网页,比如IE,在代理中直接设置好MyEnTunnel的信息就可以了。

总结:全文的主角是VPN和SSH,特别是通过SSH的代理功能,我们实现了数据库的代理连接和网络代理访问。提到VPN和SSH,就让我们想到翻qiang的必备工具。VPN的特点是将我们的整个本地网络都代理了,也就是说,我们电脑上的每个应用,如需访问网络,都是走的VPN代理;而SSH则有所不同,它显得更轻量级,如上的配置,就只实现了chrome浏览器的代理,而本地其他程序的网络环境不受影响。

Linux下安装JRE

    由于是给客户的服务器升级server JRE版本至最新版(目前为1.7.0_21),所以实战以此拉开,而关于JDK的升级和安装,方法基本相同。

一、下载

通过浏览器进入oracle官网下载页面 http://www.oracle.com/technetwork/java/javase/downloads/server-jre7-downloads-1931105.html

首先需要点击单选按钮以确定同意相关协议之后才能下载,选择对应下载项:

Linux x64 88.98 MB    server-jre-7u21-linux-x64.tar.gz

不过需要注意的是,此链接为http://download.oracle.com/otn-pub/java/jdk/7u21-b11/server-jre-7u21-linux-x64.tar.gz,当点击时,会自动生成一个临时后缀参数AuthParam(此参数只能在当次下载有效),即链接变为了http://download.oracle.com/otn-pub/java/jdk/7u21-b11/server-jre-7u21-linux-x64.tar.gz?AuthParam=1370020273_9bb212fcecf243b1d1a500f2e7899b87
所以,在linux下的下载命令最终为:

[root@web-server ~]# wget http://download.oracle.com/otn-pub/java/jdk/7u21-b11/server-jre-7u21-linux-x64.tar.gz?AuthParam=1370020273_9bb212fcecf243b1d1a500f2e7899b87

二、解压安装 

下载后的文件重命名:

[root@loms-web ~]# mv server-jre-7u21-linux-x64.tar.gz\?AuthParam\=1370020273_9bb212fcecf243b1d1a500f2e7899b87  server-jre-7u21-linux-x64.tar.gz

解压:

[root@loms-web ~]# tar -xvf server-jre-7u21-linux-x64.tar.gz

解压后的默认文件名竟然变成了jdk1.7.0_21,不管它,然后把它移到常用软件安装的地方:

[root@loms-web ~]# mv ./jdk1.7.0_21 /opt/
[root@loms-web opt]# ls
jdk16  jdk1.7.0_21  mysql5  tomcat6

三、修改系统默认配置

可以看到,现在跟旧版的jdk16在同一目录下,先查看一下目前jre版本

[root@loms-web opt]# java -version
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)

好的,下面就把它配置为最新版

[root@loms-web opt]# vim /etc/profile

将其中的JAVA_HOME=/opt/jdk16
改为JAVA_HOME=/opt/jdk1.7.0_21

保存并退出,最后使更改生效

[root@loms-web opt]# source /etc/profile

再次查看jre版本

[root@loms-web opt]# java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

以后如果想切换到旧版本的jre时,只需要在/etc/profile文件里修改对应的JAVA_HOME即可。

(全文完!)