0.2版本更新记录:更新浏览器一节,详细介绍各类常用插件,介绍播放flash视频报错的解决方法;新增一节,介绍借助SmartHosts + GoAgent实现免费、稳定、高速、自适应。pdf下载地址https://www.box.com/s/991fade30acc10138f19。
//============================================================================
//版本信息:0.2
//作者姓名:杨新涛
//电子邮件:[email protected]
//更新时间:2012-8-19 18:16:00
//版权信息:本文版权归杨新涛所有。非商业转载,请保留本文档信息;商业转载,须经本人同意
//============================================================================
没那么神秘:linux下生存实录
事物的选择,不在于它能向你提供什么,而取决你需要什么。窗内的世界充其量算是舒适,窗外的天地那才是五彩斑斓。
操作系统,大部分人只晓得windows,鲜有人知道linux,一个以稳定、安全、开放为第一准则的操作系统(严格地说应该叫内核)。汉语,全球五分之一的人以它为母语,是使用人数最多的一门语言;英语,世界各地都有人使用,是使用范围最广的一门语言。windows与linux,就好像汉语与英语,windows,几乎占据了整个桌面领域,是装机量最多系统;linux,从深海潜艇到空中无人侦察机、从半间屋大的工作站到比手掌还小的手机、从远至美国南卡罗来纳州的google服务器到近到客厅的机顶盒,你都能见到linux身影。
我无意说服你抛弃目前娴熟使用的操作系统另寻新欢,但,假如你对当前系统保守封闭早已不满,假如你崇尚自由、渴求本质、热爱折腾,不妨试试linux!
【发行套件】
linux本身还算不上操作系统,它仅是内核(一方面管理协调下层的硬件资源,一方面为上层软件提供基础服务支撑),需搭配系统软件(shell、编译器、包管理器、桌面环境等等)、应用软件(办公软件、网页浏览器、视频播放器、图片编辑器等等)才能成为一套具备日常使用功能的操作系统,即,发行套件。
一、发行套件的选择
linux发行套件数量庞大(约140种)、用途迥异(如,专供盲人使用的、专供教育培训使用的、专用于家庭影院使用的),对每个发行套件逐一评测、比对选优,完全是费神耗时、意义不大。目前,知名的发行套件包括:puppy、slackware、debian、fedora、arch、gentoo、ubuntu、lfs、opensuse等,它们各具特色、追随者众,如,slackware是目前存活时间最长的古董级发行套件(经验丰富),fedora是redhat进行新技术实验的发行套件(技术创新),ubuntu号称用户零配置开箱即用的发行套件(简单易用)、lfs(linuxfrom scratch)让你从无到有构建专属于你的发行套件(配置灵活)、经验丰富+技术创新+简单易用+配置灵活=opensuse!(-_-#)
opensuse最早是slackware在德国的本地化版本,后来因其加入了大量特色功能升格为单独的发行套件,其原名为suselinux,10.2版本后改名opensuse。opensuse是由novell公司赞助、社区推动的发行套件,它的相关源码和技术可由novell使用,作为novell企业版发行套件sles的基础。opensuse旨在:a、推进linux在全球广泛使用;b、降低linux使用门槛,成为易于上手的发行套件;c、成为技术黑客和软件开发人员的首选平台。opensuse的logo是只可爱的变色龙,以此象征opensuse灵活、敏捷的特性。
(logo)
opensuse当前正式版本为12.1,下个版本12.2预计在12年9月中旬发布。关于发行套件版本升级,通常我会在最新正式版放出后半年左右再考虑,原因有二:一方面经过半年的大规模外部用户测试,大部分bug已被发现并修正,一定程度上规避了使用系统的不稳定性;一方面各类应用软件开发人员有足够时间针对新版本的发行套件进行功能升级和兼容性优化,让我真真正正感受到新版本带来的各项提升。所以,今年暂时不升级了,明年3月份再考虑。
二、发行套件的安装
既然是普通用户使用的发行套件,其势必继承了某种桌面环境以便用户通过可视化界面操作计算机(linux最底层由x.org提供图形图像服务,中间由桌面环境负责统一管理各应用软件发起的图形绘制请求并协调x.org予以响应)。opensuse12.1提供gnome和kde两种桌面环境供君选择(此外,还有xfce、lxde、ede、rox等等其他桌面环境可单独下载安装)。gnome是隶属gnu项目的子项目,全称为thegnu network object model environment,采用gtk(由c语言编写)作为底层开发库;kde全称kooldesktopenvironment,采用qt(由c++语言编写)作为底层开发库。gnome和kde是linux中最为流行的桌面环境,从操作习惯和界面风格来看,我更喜欢gnome。因此,本文将以采用gnome的opensuse12.1为例进行后文讲解。
1、下载镜像。访问http://software.opensuse.org/121/en,选择gnome、32位(或64位视情况而定)直接下载即可;
2、制作安装u盘。u盘安装既节省光盘介质费用,又能大幅提升安装速度,逐渐成为你安装系统的首选。官网上提供了制作opensuse安装u盘的工具imagewriter,分为windows版本(https://github.com/downloads/opensuse/kiwi/imagewriter.exe)和linux版本。windows版有个小bug,下载的镜像文件扩展名为iso,而imagewriter在选择镜像文件时只能识别扩展名为raw的文件,所以需要先调整镜像文件扩展名才能正常写入u盘;
3、安装系统。整个过程一路next,除了几个关键点稍加留意外,基本零难度(注,安装过程中,部分窗口过小,无法查看窗口中完整内容,可用鼠标拖动窗口边框以调整合适大小)。
1)时区设置。如果你是冏朝公民,按下图设置,其中必须勾选“将硬件时钟设置为utc”,否则时间有问题。
(时区设置)
2)创建分区。建议依次创建如下分区:/、swap、/home、/data。说明几点,a)linux的分区不同于windows,分区后没有所谓的c:、d:盘,而是一个个文件系统,这些文件系统没有具体名称,必须先挂载到某个目录(称之为挂载点)下才能正常使用,每个分区对应一个目录,但多个目录可能对应在同个分区中(如,/home/yangyang_gnu和
/home可能都在通过分区上);b)操作系统为扩展物理内存容量通常设有“虚拟内存”机制,将不活波内存页(如,未关闭但长时间没使用的程序)从物理内存中移至硬盘的虚拟内存中,从而释放宝贵的物理内存空间,swap分区就是所谓的虚拟内存,一般大小等同于物理内存,swap分区不用挂载目录;c)用户相关信息(如,各应用程序的配置文件)通常放在/home目录中,为避免重装系统导致各类配置文件丢失,需将/home放在独立分区上;d)所有非系统数据(如,歌曲、ebook、安装程序)都放在独立分区/data上,以便定期备份。按提示操作后,界面类似如下:
(硬盘分区)
3)安装前确认。正式安装系统前,可对先前安装设置信息进行确认、调整。如下图所示:
(安装前确认)
4)系统引导设置。opensuse为防止因异常导致系统无法正常启动,除安装“真正操作系统”之外,还附带安装了所谓的“紧急启动镜像”,个人觉得意义不大,如果不需要,可点击“booting”,可删除紧急启动镜像:
(紧急启动镜像)
另外,双击opensuse12.1(真正的操作系统),参照如下设置,分别取消启动时硬盘检查和设置字符模式下的分辨率:
(引导设置:取消硬盘检查、设置字符模式分辨率)
此外,进入“bootloader installation”->“boot loaderoptions”,取消引导程序等待用户选择操作系统耗时:
(引导设置:取消引导等待)
三、发行套件的设置
刚装好的操作系统都是默认设置,按个人习惯适当调整才贴心。
1、升级系统。linux上系统升级分两部分,一部分是内核升级,一部分是发行套件升级(即,除内核外的驱动程序、系统软件、应用软件等升级)。升级内核是为了享受新内核带来的安全增强以及更多的设备支持,由于涉及内核编译等高级主题,另文详讲;在进行发行套件升级前,先说说软件仓库。
前面说过,发行套件是集成内核、驱动程序、系统软件、应用程序等一整套可支撑普通用户日常工作、生活需求的操作系统,可见,发行套件充当了软件筛选、软件打包、软件依赖库测试、软件兼容性测试等多个角色,为确保发行套件的健壮性,发行套件厂商(或社区)将它筛选、打包、测试过的软件放在官方软件仓库中,这样,不论哪个厂商开发的应用程序,用户只需到软件仓库中查找、下载、安装即可,不用(像windows)再到各个软件官网逐一下载,当然,软件仓库中没有的,你仍可到软件官网单独下载,但要注意依赖库是否正确。
软件仓库一般放在发行套件官方服务器上,用户通过更新源访问软件仓库。因此,更新源就是软件仓库的路牌。冏朝的网络是具有社会主义特色滴,要么无法访问国外、要么满如蜗牛,给我们访问国外官方的软件仓库带来很大阻碍。幸好,国内还有几家上规模又有良心的it企业,通过它们自身带宽优势,准实时地从发行套件官网同步软件仓库到国内服务器上,冏朝用户可调整更新源,实现从这些企业的服务器上高速访问软件仓库。目前为各大发行套件建立国内软件仓库的企业主要包括搜狐和网易(感谢张总、丁总对中国开源事业的支持,曹总、马总你们人影呢),另外,各大专院校也建有本地软件仓库,学生朋友可参照使用。好了,了解了软件仓库、更新源等概念后,我们可以按如下步骤升级发行套件啦:
1)更改更新源。运行yast->softwarerepositories,删除所有来之官网的更新源(即,opensuse.org相关的),增加搜狐的软件仓库镜像:a)sohu-opensuse-12.1-oss:http://mirrors.sohu.com/opensuse/distribution/12.1/repo/oss、
b)sohu-opensuse-12.1-non-oss:http://mirrors.sohu.com/opensuse/distribution/12.1/repo/non-oss;c)sohu-opensuse-12.1-update:http://mirrors.sohu.com/opensuse/update/12.1;
2)升级系统。一旦指示系统启动升级,系统先在软件仓库(加载的所有更新源)中寻找是否有升级的可能。具体而言,命令zypperupdate,对于本地已安装程序,在软件仓库中是否有更新版本,若有则更新之,忽略系统有安装但仓库中根本不存在的软件;命令zypperdist-upgrade,将系统与软件仓库同步一致,也就是说,本地安装的软件必须只能是仓库中有的且版本必须一致,换言之,一旦执行该命令,将存在降级(本地版本高而仓库版本低)、升级(本地版本低而仓库版本高)、更改软件信息(发行套件官方更改应用软件某些信息)、甚至卸载(本地安装而仓库没有)等几种可能,特别是当你有通过源码安装过软件时切勿使用该命令。两个命令差异巨大,就日常而言,建议使用前者即可。
2、安装驱动。windows环境中增加了硬件,通常需要到硬件官网下载驱动,安装重启后系统才能识别新增硬件设备,linux对驱动的管理,你可以(片面地)理解为全都打包进内核中了,只要是较新版本内核(这正是前面说升级内核的主要目的之一),几乎能正常识别99%的硬件,换言之,你不用针对主板、芯片、(有/无线)网卡、显卡、声卡、甚至g3上网卡(后文将教你如何在linux下使用运营商的上网卡)单独安装驱动,因为内核已经集成了它们的驱动,当然,我指的是集成驱动能很好地管理对应硬件设备,如果管理得不是那么好呢?那就单独安装吧,比如,n卡驱动。opensuse内置了n卡驱动程序的开源版本nouveau,nouveau由第三方开发,并未得到nvidia官方支持,是开发人员对n卡官方驱动逆向分析后的重新编码,实现难度巨大,虽效果不尽人意但也值得你尊重。作为普通用户,肯定希望最大程度发挥显卡特性,那就安装n卡针对opensuse发布的(闭源)官方显卡驱动吧。先增加n卡官方更新源ftp://download.nvidia.com/opensuse/12.1,再升级即可。
3、美化桌面。前面提过,我选装的是gnome桌面环境。gnome3相较先前版本,不论从界面外观还是操作习惯都有非常大的差异,比如,窗口右上角只有关闭按钮,不再有最大化、最小化的概念,比如,托盘从任务栏中剥离出来,默认情况下为隐藏状态,比如,要选择桌面上的某个窗口,先得调出所有窗口的列表,在点击选择需要的那个,比如,不再有桌面图标,如此这些,让很多人无法适应、被人诟病。也许是心态问题,我倒是挺适应这种操作模式的,使用gnome3也有一年多时间了,虽谈不上驾轻就熟,但也不存在任何使用障碍,非要让我提一点意见的话,嗯~嗯~,好吧,真心希望gnome开发团队将横向布局的任务栏改为纵向布局,至于原因,你知道,如今的显示器几乎都是宽屏的,这就意味着屏幕的水平空间充裕而垂直空间紧张,现在又将任务栏水平放置在最顶部,进一步缩小了可用垂直空间,所以,强烈建议将任务栏垂直放置在屏幕左侧(效果类似ubuntu的unity),希望下一版本能有所改善。另外,个人认为,对于一项新生事务(我说的是gnome3),不妨抱着“拥抱变化、迎接未来”的心态去尝试接纳,或许,你会发现,原来它才是你的最爱。
扯远了,接着说gnome的美化。桌面美化,无非就是选一套符合你审美观的主题,下载、安装、启用即可:
1)下载主题。推荐两个gnome3相关的主题网站:gnome-look.org与deviantart.com,慢慢选,喜欢哪个下哪个。个人非常喜欢那种扁、平、薄的风格,比如android4.0主题风格,正好又有人将其移植到gnome3上,称之为holo(http://tiheum.deviantart.com/art/holo-80076980),搭配faience系列图标(http://tiheum.deviantart.com/art/faience-icon-theme-255099649)
2)安装主题。将上面两个下载后的压缩文件分别解压至~/.themes和~/.icons目录。
3)选择主题。运行advancedsettings,参照下图选择窗口和图标主题:
(选择主题)
4)启用主题。键入alt+f2,输入r回车,看到没,刚才选择的主题已经生效。如果存在滚动条粗大、按钮错位等情况,请检查相关主题引擎(murrine、pixbuf、unico、adwaita)是否都已正确安装。最终效果如下:
(gnome3-holo)
5)字体。opensuse中文显示默认采用文泉驿字体,相比之下,更喜欢微软雅黑那种方方正正的饱满字体,但微软雅黑中的英文字体又不咋地,有人发布了一款增强了英文字体的微软雅黑——yaheiconsolashybrid字体,可以下来试试,效果非常不错(本文全文采用的及时这个字体)。双击字体按提示安装,安装完后进入advancedsettings,按如下设置即可:
(字体设置)
【应用软件】
说了这么多,作为普通用户,我们关注的还是opensuse如何支撑我们的日常工作、生活需求。接下来看看,那些借助社区力量开发的优秀开源产品。开始之前,请增加第三方更新源packman(ftp://packman.inode.at/suse/opensuse_12.1/)。packman相对于发行套件的官方软件仓库有如下“优势”:a)包含大量采用新技术的软件(发行套件追求稳定,从这个角度看,如果引入过多新技术软件,未经过严格兼容性测试,极有可能影响系统稳定性);b)包含大量私有属性的闭源软件(发行套件通常是由社区制作,如果含有闭源软件,可能引入版权、专利问题)。因此,应将packman仓库与官方仓库搭配使用,可扩大用户的软件选择范围。(注,未特别说明,以下介绍的软件均可通过软件仓库查找、下载、安装。)
一、日常办公
现在的企事业单位几乎都需借助电脑办公,医生看病开处方、营业厅办理业务、会计帐务处理等等,电脑已成为各行各业办公的主要途径和手段。下面介绍几类常见的办公需求。
1、办公文书。word、excel、powerpoint等三个软件是windows中必装的办公文书软件,以支撑我们文字处理、表格制作、汇报演示等工作需要。linux中我们对应有writer、calc、impress等软件,这三个软件(外加draw、math、base)就是大名鼎鼎的libreoffice套件。libreoffice完全兼容ms-office文档,甚至还可以直接转存为pdf格式文件,
软件名称:libreoffice
界面截图:
(writer)
(calc)
(impress)
设置调整:tools->options->languagesettings->writing aids,取消options中的所有选项,以禁止拼写检查;
2、电邮收发。很多人习惯通过邮件服务提供商官网进行邮件收发,强烈建议改用邮件客户端,避免频繁登录邮箱,同时,还能离线查阅邮件内容。好的邮件客户端除了正常收发邮件外,还应具备地址簿管理、垃圾邮件过滤、多账户管理、日程安排、同步删除远程邮件,甚至为常见邮件提供商智能配置等等高级功能,thunderbird算是不错的。
软件名称:thunderbird
界面截图:
(thunderbird)
(写邮件)
3、电子书阅读。电子书格式类型较多,包括hlp、lit、wdl、ceb、abm、pdg、
epub、pdf、chm等等,但常见的还是最后两类。下面介绍下pdf和chm的阅读器。
1)pdf阅读。
软件名称:evince
界面截图:
(evince)
使用问题:大家知道,正常情况下,被选中的文本段会反色高亮显示,不知道是evince本地化问题还是什么,某些中文pdf文档,反色显示的文字会成乱码,虽不影响真正复制到粘贴板中的内容(换言之,从evince中复制出来的文字仍正常),但给我等喜欢选中一段看一段的用户带来阅读体验影响。如下图所示:
(未选前的文本)
(选中后的文本)
其他说明:推荐几个常用的软件开发相关电子书下载网站:
http://ishare.iask.sina.com.cn/
http://library.nu/
http://www.freetechbooks.com/
2)chm阅读。
软件名称:chmsee
界面截图:
(chmsee)
二、娱乐休闲
linux不是it大牛的专属系统,它不仅可以支撑生产运维,同时,也可为你提供日常休闲娱乐。
1、听歌聆听。常见的音频格式包括:mp3、ogg、aac、mp4、ape、wav、flac等,windows下知名的音频播放器foobar2000完美支持这些格式,linux下的deadbeef从解码效果来看,有过之而无不及。
软件名称:deadbeef
界面截图:
(deadbeef)
下载安装:直接从软件仓库选择安装即可;
设置调整:输出设备及音频解码插件请按下图设置,否则无法播放:
(deadbeef音频输出配置)
使用问题:目前不支持双击界面空白跳转到正在播放文件处,找了一圈也没发现解决该问题的插件。
2、电影观赏。我看电影有个习惯,喜欢把电影全屏铺满后再看,这样不至于在如今满是宽屏幕的环境中把人物压缩得又扁又胖。linux下几乎找不到支持该功能的视频播放器(包括大名鼎鼎的vcl和mplayer),除了——smplayer2。smplayer2是基于mplayer二次开发的软件,默认支持(即内置相关格式解码器)mkv、wmv、avi、mpg、3gp、mov、
rm、mpeg、mp4等视频格式。
软件名称:smplayer2
界面截图:
(普通比例)
(全屏铺满)
设置调整:A)smplayer2默认不支持rmvb格式,需要先安装realplayer(当然是linux版的);B)全屏铺满设置:video->aspectratio->disabled;
使用问题:全屏纵向拉伸设置只能针对单部影片有效,无法保持为永久设置,播放其他影片需要重新设置;
其他说明:推荐两个不错的电影下载网站:
人人影视:http://www.yyets.com
电影天堂:http://www.dy2018.com/
3、音频编辑。听到一首喜欢的歌曲,想把它设置为手机来电铃声,但整首歌曲又太长,最好能把高潮部分提取出来,一来电就进入高潮(-_-$,你想啥~)。
软件名称:audacity;
界面截图:
(audacity)
三、上网冲浪
问:宅男最怕失去啥?答:网络(谁说苍老师?@_@!)。网络在给我们带来无限乐趣的同时,也在不断地改变着人类生活方式。
1、无线上网。目前无线上网形式包括:adsl+无线路由器方式、wlan方式、3g上网卡方式。第一种是大家平时最常见的方式,找运营商开通宽度,自己买个无线路由器,将宽度帐号和密码设置进路由器,加电即用,该方式上网速度快,但受空间限制较大,一旦超过路由器信号覆盖就无法上网了;第二种方式需要先联系电信运营商开通wlan业务,联网后在运营商提供的页面输入帐号和密码即可上网,这种方式上网速度还是不错,但,费用高(按流量收费)、择区域(只有在热点附近才能使用wlan业务,通常小城市热点非常少,即便大城市也往往只有机场、星巴克等场所才有);第三种方式,3g上网卡方式,网速基本可接受(可在线观看非高清视频),包月费用约100rmb,将上网卡插入电脑,随时随地即可高速上网,这里为大家详细介绍下这种方式。3g上网卡有两个概念普及下,a)当前中移动、中电信、中联通等三家运营商均有提供各自3g上网卡,分别采用td、cdma2000、wcdma等三种网络制式,网速、费用、稳定性各不相同;b)华为、中兴两家是主流的卡设备提供商。运营商、设备请按个人情况选择,我用的是华为中移动g3上网卡,下文将以此为例进行介绍。
华为g3上网卡官方仅发布了windows驱动,linux下咋办?前面介绍升级内核时我提过,windows与linux对驱动的管理模式差异,windows需用户针对各个硬件单独下载、安装驱动,而linux在内核中已经集成了(绝大部分)硬件设备驱动程序,包括,这里说的华为中移动g3上网卡驱动。
大致原理如下:linux能识别g3上网卡,但默认将其视为usb存储设备,我们需要告诉系统说“它是一个网络拨号moden,不是u盘”,一旦系统接受了该设备模式转换请求,后续只需用某种拨号程序执行拨号操作即可。
先准备两个命令行程序:usb_modeswitch、wvdial,直接从软件仓库中安装。另外,必须先关闭系统自带的网络管理程序,在opensuse中,你可以这样:yast->networkdevices->network settings->globa options->network setupmethods->traditional method with ifup (instead of network manager)
以下操作均在命令行中执行,全流程步骤如下:
1)获取g3上网卡usb信息。执行:
lsusb| grep “huawei”
系统显示类似如下
bus002 device 003: id 12d1:1da1 huawei technologies co., ltd.
记录下你对应12d1:1da1位置的信息;
2)g3上网卡模式转换。
a)指定要进行模式转换的设备。用如下信息换/etc/usb_modeswitch.conf内容:
defaultvendor=0x12d1
defaultproduct=0x1da1
targetvendor=0x12d1
targetproduct=0x1da1
huaweimode=1
b)进行模式转换操作。执行:
usb_modeswitch-c /etc/usb_modeswitch.conf
显示如下信息
lookingfor target devices ...
founddevices in target mode or class (1)
...
scsiinquiry data (for identification)
-------------------------
vendorstring: huawei
modelstring: mobile cmcc cd
revisionstring: 1.25
-------------------------
usbdescription data (for identification)
-------------------------
manufacturer:huawei mobile
product:huawei mobile system solution
serialno.: 111111-11-111111
-------------------------
sendinghuawei control message ...
ok,huawei control message sent
->run lsusb to note any changes. bye.
注,这一步执行过程可能僵死,重新插入上网卡重新执行该步骤;
c)确认转换完成。执行第一步命令显示如下信息
bus002 device 009: id 12d1:1d09 huawei technologies co., ltd.
如果先前的1da1变为1d09那么恭喜你,关键一步已经成功了;
d)查看设备信息。执行:
ls/dev/ttya*
输出信息为
ttyacm0 ttyacm1 ttyacm2
那就转换成功了;
3)拨号上网。
a)生成g3上网卡拨号配置文件。执行:
wvdialconf
输出
editing`/etc/wvdial.conf'.
scanningyour serial ports for a modem.
modemport scan<*1>: s0 s1 s2 s3
wvmodem<*1>:cannot get information for serial port.
ttyacm0<*1>:atq0 v1 e1 -- ok
ttyacm0<*1>:atq0 v1 e1 z -- ok
ttyacm0<*1>:atq0 v1 e1 s0=0 -- ok
ttyacm0<*1>:atq0 v1 e1 s0=0 &c1 -- ok
ttyacm0<*1>:atq0 v1 e1 s0=0 &c1 &d2 -- ok
ttyacm0<*1>:atq0 v1 e1 s0=0 &c1 &d2 +fclass=0 -- ok
ttyacm0<*1>:modem identifier: ati -- manufacturer: huawei
ttyacm0<*1>:speed 4800: at -- ok
ttyacm0<*1>:speed 9600: at -- ok
...
ttyacm0<*1>:speed 230400: at -- ok
ttyacm0<*1>:speed 460800: at -- ok
ttyacm0<*1>:max speed is 460800; that should be safe.
ttyacm0<*1>:atq0 v1 e1 s0=0 &c1 &d2 +fclass=0 -- ok
wvmodem<*1>:cannot get information for serial port.
ttyacm1<*1>:atq0 v1 e1 -- ok
ttyacm1<*1>:atq0 v1 e1 z -- ok
ttyacm1<*1>:atq0 v1 e1 s0=0 -- ok
ttyacm1<*1>:atq0 v1 e1 s0=0 &c1 -- ok
ttyacm1<*1>:atq0 v1 e1 s0=0 &c1 &d2 -- ok
ttyacm1<*1>:atq0 v1 e1 s0=0 &c1 &d2 +fclass=0 -- ok
ttyacm1<*1>:modem identifier: ati -- manufacturer: huawei
ttyacm1<*1>:speed 4800: at -- ok
ttyacm1<*1>:speed 9600: at -- ok
ttyacm1<*1>:speed 19200: at -- ok
ttyacm1<*1>:speed 38400: at -- ok
ttyacm1<*1>:speed 57600: at -- ok
ttyacm1<*1>:speed 115200: at -- ok
ttyacm1<*1>:speed 230400: at -- ok
ttyacm1<*1>:speed 460800: at -- ok
ttyacm1<*1>:max speed is 460800; that should be safe.
ttyacm1<*1>:atq0 v1 e1 s0=0 &c1 &d2 +fclass=0 -- ok
wvmodem<*1>:cannot get information for serial port.
ttyacm2<*1>:atq0 v1 e1 -- ok
ttyacm2<*1>:atq0 v1 e1 z -- ok
ttyacm2<*1>:atq0 v1 e1 s0=0 -- ok
ttyacm2<*1>:atq0 v1 e1 s0=0 &c1 -- ok
ttyacm2<*1>:atq0 v1 e1 s0=0 &c1 &d2 -- ok
ttyacm2<*1>:atq0 v1 e1 s0=0 &c1 &d2 +fclass=0 -- ok
ttyacm2<*1>:modem identifier: ati -- manufacturer: huawei
ttyacm2<*1>:speed 4800: at -- ok
...
ttyacm2<*1>:speed 460800: at -- ok
ttyacm2<*1>:max speed is 460800; that should be safe.
ttyacm2<*1>:atq0 v1 e1 s0=0 &c1 &d2 +fclass=0 -- ok
foundan usb modem _disibledevent=0 &c1 &d2 +fclass=0"
ttyacm1
ttyacm2
b)修改拨号配置文件。将/etc/wvdial.conf文件内容替换为
[dialerdefaults]
init1= atz
init2= atq0 v1 e1 s0=0 &c1 &d2 +fclass=0
password= any
phone= *99***1#
modemtype = usb modem
stupidmode = 1
baud= 460800
newpppd = yes
modem= /dev/ttyacm0
isdn= 0
username= any
c)执行拨号联网。执行:
wvdial
输出
-->wvdial: internet dialer version 1.60
-->cannot get information for serial port.
-->initializing modem.
-->sending: atz
atz
ok
-->sending: atq0 v1 e1 s0=0 &c1 &d2 +fclass=0
atq0v1 e1 s0=0 &c1 &d2 +fclass=0
ok
-->modem initialized.
-->sending: atdt*99***1#
-->waiting for carrier.
atdt*99***1#
connect2800000
-->carrier detected. starting ppp immediately.
-->starting pppd at mon jun 22 11:11:50 2009
-->pid of pppd: 4134
-->using interface ppp0
-->local ip address 10.140.162.111
-->remote ip address 192.200.1.21
-->primary dns address 221.130.33.60
-->secondary dns address 221.130.33.52
-->connected... press ctrl-c to disconnect
4)其他说明。
a)如果是第一次使用3G上网卡,那么需要依次执行以上每步,后续只需执行wvdial命令即可拨号联网(有时3G信号不稳定,需要重复多次执行wvdial命令);
b)系统自带的网络管理程序NetworkManager与wvdial命令有冲突,如果通过无线路由器上网,请手工运行NetworkManager命令,如果使用g3上网卡,需要先杀掉NetworkManager相关进程(包括NetworkManager、dhclient、dhcpcd),再执行wvdial拨号。下图演示了如何杀NetworkManager相关进程:
(杀NetworkManager)
2、网页浏览。浏览器是互联网入口,各大互联网公司必争之地。opera、chrome、
firefox三大浏览器,opera功能上没有多少过人之处且不开源,弃之;chrome虽有开源版本chromium,但很多插件都仅支持windows平台而在linux下无法使用(包括google自己出品的ChromeToolbox),丢之;firefox,开源且以linux为第一阵营,凭借其高安全性和可扩充性赢得大量忠实用户。
软件名称:firefox
界面截图:
(firefox)
设置调整:你对firefox的任何需求,几乎都可以通过其丰富的插件资源得到满足(另一个有如此庞大插件资源的软件当数vim了,后面有介绍)。进入tools->add-ons即可在线查找需要的插件,找到后点击在线安装即可,安装完成需重启浏览器以让新装插件生效。下面介绍几款我觉得非常有用的插件:
a)下载管理—downloadstatusbar。完全替代firefox自带的下载管理器,它可以实时查看下载进度、可以直接打开下载完的文件、可以根据当前下载速度用不同颜色高亮提示等等。如下图,第一个文件已下载完毕,第二个正在下载,实时速度为167.2K、下载进度为19%、橙色背景表示速度在200K以下,若达到600K则会显示为绿色:
(downloadstatusbar)
b)链接拖拽—quickdrag。若拖拽链接则直接打开,若拖动文本则在当前搜索引擎中搜索;
c)鼠标手势—all-in-onegestures。我常用的右键向左拖动表示退回、向右拖动表示前进;
d)双击关闭tab—closetab by double click。无须多说,个人习惯;
e)侧边显示—all-in-onesidebar。将收藏夹、下载管理、插件管理、访问历史等统一收纳到侧边条中,如下图所示:
(all-in-onesidebar)
f)添加搜索引擎——Addto SearchBar。互联网是个巨大的知识库,你需要的任何知识都可以从中获取,前提是有个给力的搜索引擎。在我看来,好的搜索引擎应该:检索范围广泛、收录页面快速、检索结果无屏蔽、原创内容优先、智能分析类似关键字。
选择搜索引擎。根据搜索内容的不同,我会依次使用如下几个引擎进行查找(排名分先后):查找英文资料时先duckduckgo.com后google.com;查找中文技术资料时先google.com.tw(啰嗦两句,tw人的技术文章多以原创为主,不像冏朝清一色的转载,特别是,很多国外经典计算机书籍引入冏朝后,被所谓的大学教授翻译得比日文还难读,这时,可以考虑找找对应tw版,虽说有些读起来文绉绉、看起来满是繁体字,但基本体现了原著本意,不影响阅读)后baidu.com。
添加搜索引擎。安装Addto Search Bar好,在搜索引擎首页的输入框中右键,选择addto search bar即可,如下图所示:
(Add to Search Bar)
添加后,在浏览器的搜索引擎列表中将看到所有有效引擎:
(搜索引擎列表)
搜索操作习惯。你可以在firefox右上角的搜索引擎列表中选择喜欢的引擎直接搜索,也可以在页面上(借助quickdrag)直接拖拽要搜索的关键字启用当前引擎进行搜索;
g)恢复关闭tab——UndoClosed TabsButton。下载安装好后,先要通过customize将undo图标拖动到firefox工具栏中才能看到。如下图所示:
(UndoClosed Tabs Button)
h)flash播放。目前几乎所有在线视频、在线文库等网站都通过flash实现(亲,我说的通过浏览器直接访问,我知道你iphone也可以观看在线视频,但那是通过安装本地app观看,与这儿说的事情没啥干系),常逛这类网站的朋友必须得装flash插件才能正常访问。adobe不给力,导致很多浏览器加载flash文件时失败,提示“theadobe flash plugin has crashed”:
(flash插件报错)
同个机器上chromium为何又能正常播放flash呢?这是因为google与adobe合作开发应用了一项称之为pepperapi的新技术,google自家的chromium肯定支持pepper,这就使得flash可以以插件的形式运行在chromium浏览器中。包括firefox在内的其它浏览器则不支持这项技术,因此也就不能无法播放flash。
奇怪的是,先前版本的firefox播放flash又正常,那就只有两个可能,要么是新版本firefox与当前版本flash有冲突,要么是当前版本firefox与新版本flash有冲突。为了解决firefox播放flash报错的问题,我决定先从flash版本问题入手,先把adobe官网上30多个flash历史版本全下载下来,依次验证哪个版本的可用,经过五分之四小时又十九分二十八秒,遇到flashplayer 10.1.85.3的debug版本(fpdownload.macromedia.com/get/flashplayer/installers/archive/fp_10.1.85.3_and_9.0.283_archive.zip),哇~,就它了,文库、视频、小游戏测试都正常。赶紧把这个版本的库文件libflashplayer.so备份下来,已被不时之需,以后,一旦再出问题,用该库文件覆盖/usr/lib/browser-plugins/libflashplayer.so重启firefox后,问题解决,播放flash正常。亲,没事可千万别升级flash插件哟~
听闻adobe公告,从11.2以后不再支持linux平台,唉,乔帮主英明,adobe要自掘坟墓咱也别劝他,全当在给html5腾位置吧。
i)网页代理—Autoproxy。Autoproxy本身不具备代理功能,它通过一个在线配置文件,实时分析用户发起的网站访问请求中,哪些必须走代理访问、哪些可以直接访问。Autoproxy辅助GoAgnet将实现完美,详见后文。
3、搭梯。噢,写这个不会被抓吧。为让大家继续保有“天朝优越感”,+-屏蔽了大量“非法”的网站,有境内有境外的、有纯技术的(至今我都没搞明白一个专注于开源项目的在线代码托管网站sourceforge.net哪儿有问题)、有爱情动作的、有轮子功的,反正+-不喜欢的通通屏蔽掉。裆从小就教育我们,那里有压迫那里就有反抗,屏蔽之前,本来天朝的宅男还可以下载几部爱情动作片看看打发时间,得~~,看吧,让你屏蔽,宅男没事做了,那就研究下怎样吧。
常见的有在线代理和VPN两种方式。免费在线代理,网上一搜一大堆,使用简单,直接输入要访问的URL回车即可,但速度慢且可访问率较低,适合隔壁大妈;VPN方式,几乎没有免费的,而且速度也不快,适合有钱淫。这对我等爱折腾的人来说是无法接受的。
我需要免费、稳定、高速、自适应的梯子——SmartHosts+GoAgent。+-最常用的封锁手段无非不过是终止DNS域名解析,也就是说,用户输入www.google.com希望电信运营商解析出服务器真实IP,以便访问google,运营商在+-作用下停止解析这个URL,导致用户访问失败。
1)借助SmartHosts本地解析,高速访问(部分)被墙网站。SmartHosts(下载smarthosts.googlecode.com/svn/trunk/hosts),由众网友共同维护的一个hosts文件,里面存放着大量被墙URL的真实IP,将其内容追加到本地/etc/hosts文件中,此时,理论上,hosts中罗列出的所有URL你可以正常高速访问了。但是,存在两个问题:A)SmartHosts中的每条记录(IP与URL)都是各热心网友一条条手工添加的,不可能覆盖完所有被墙网站,肯定会出现一些你需要访问但又不在此列表中的网站;B)SmartHosts更新周期不定,有时3天、有时30天,所以你需要不时去关注,有更新是及时添加至本地hosts文件中;
2)借助GoAgent代理,稳定访问(所有)被墙网站。SmartHosts未收录的网站如何访问?需要使用GoAgent,它的服务端部署在google服务器上,从而实现借由google服务器代理访问其他被墙网站(对,正常访问google是个前提,前面介绍的SmartHosts已解决该问题),有google给你当代理,高速且稳定访问所有被墙网站绝不是问题。从操作先后顺序,依次将可能出错的关键点介绍如下:
A)申请google网站空间,部属GoAgent服务端。google空间就是GAE,用google帐号登录appengine.google.com,前面步骤按提示填写,直到填写短信验证码步骤,朝内三家运营商都屏蔽了google的短信,你只能通过向google提交在线表单,请工作人员将验证码通过邮件发给你,访问appengine.google.com/waitlist/sms_issues
,表单填写内容大致如下:
hi,
my mobile phone can't receive sms for verification code! plz send thecode to [email protected]. thx man~
2小时16分32秒后收到回复:
(GAE申请回复)
昏,还验证个啥,工作人员直接就将GAE空间分配给我了(太给力了,效率啊);
B)下载GoAgent。先访问developers.google.com/appengine/downloads?hl=zh-CN#Google_App_Engine_SDK_for_Python下载Python版的GoogleApp EngineSDK(当然是linux平台啦),这是运行GoAgent所需的环境。下载后解压至google_appengine目录;再访问code.google.com/p/goagent/,下载GoAgent,解压到google_appengine的子目录goagent中,即,google_appengine/goagent。
C)修改配置。既然是将GoAgent当作你自己开发的源码上传至GAE,那么所有的appid都要替换成你注册GAE时说所写的,以yangyanggnu为例,将google_appengine/goagent/server/python/app.yaml中的“application:”和google_appengine/goagent/local/proxy.ini文件中的“appid= “后均改写为yangyanggnu;
D)上传部署。在google_appengine目录下执行:pythonappcfg.py update goagent/server/python,整个过程大概1分钟左右,如下图所示:
(上传GoAgent至GAE)
E)导入证书。进入edit->preferences->advanced->encryption->viewcertificates->authorities->import,选择google_appengine/goagent/local/CA.crt即可,如果未导入,则有如下错误提示;
(未导入证书)
F)本地执行。先在firefox的edit->preferences->advanced->network->connection->settings中设置代理服务器地址为127.0.0.1,端口为8087,重启firefox,再到google_appengine/goagent/local/目录下执行:python proxy.py。这时,你的所有访问均通过google代理访问,久违的youtube出来了。
(youtube)
G)让世界更美好。上一步说过,到此我们是将所有网站访问请求都通过了google代理,对于本来没有被墙的网站来说难免有点多余,如果有个工具能实现当访问墙内网站时直接访问、访问墙外网站时走代理,那这个世界将变得更加的美好。firefox的Autoproxy插件就具备该功能,下载安装Autoproxy。首先,进入配置界面proxyrule->add rule subscription,选择gfwList(P.R.China),这个文件中存放了加密后的所有被+-屏蔽的网址,以后,凡是在这个列表中的走代理,不在的直接访问;其次,进入proxyserver->edit proxy server->add proxyserver,添加代理goagent、IP为127.0.0.1、端口为8087;然后,进入proxyserver->edit proxy server->choose proxy server,defaultproxy选择goagent、subscription选择gfwList(P.R.China)、whenno matching选择noproxy。
好了,第一次可能麻烦点,如果A~G每步都成功,那么你需要的免费、高速、稳定、自适应的梯子已经制作完成。平时,需要,只需到google_appengine/goagent/local目录下执行:pythonproxy.py即可。
4、资源下载。作为一个linux狂热用户,也不得不承认,要让电脑完全满足我日常需求,或多或少还是要借助windows。有些linuxer认为引入windows程序会玷污linux的纯洁性,宁愿放弃某些应用,也不愿和windows沾边。个人认为,任何事情不要走极端,我们玩linux,是为了享受它带来的开放、自由、创新,但同时,也不要人为丢弃windows提供的特有服务,毕竟,我们使用电脑是为了解决实际问题,而不是向谁证明“我是一名纯正的linuxer”,否则只会顾此失彼。当然,如果有功能类似的软件,肯定会优先选用linux版本,这点无须质疑。
我们需要借助windows,这倒不是linux系统本身不够完善,而是某些应用软件开发商只发布了windows版本,且那些软件又掌握着其所在领域的垄断权(两个特征:采用私有协议、用户规模大),以至于第三方即便有心也无力在linux下开发类似软件。对我而言,有几类应用让我离不开windows:网上购物和资源下载。先说说下载,网购后文有提及。
在冏朝,说起下载,一定会想到迅雷,离线下载、高速通道、多协议支持等等特性是其他任何下载软件无法提供的,特别是对冷门资源的下载非常有效。遗憾的是,迅雷仅提供windows版本,在linux下你是无法(直接)使用迅雷的。
有什么办法能解决“linux下如何使用windows程序”的问题?目前有两类解决方式:转换层方式和虚拟机方式。在介绍这两类方式前,先了解下为什么会存在这样的移植性问题。之所以windows程序不能在linux下运行,主要因为操作系统api不同所致,类似迅雷这类应用程序,由于对性能要求高、功能要求严,导致开发时必须与操作系统非常紧密联系,采用了大量系统提供的独有api,最终成为windows上的“原生应用程序”,一旦“原生应用程序”找不对应的操作系统就找不到api,当然也就无法正常运行了。好了,根结就在api上。
我们说的第一类解决方式,是在linux中部署一套为windowsapi转换层,我们让应用程序在转换层中运行,应用程序继续调用windows提供的api,转换层接收到api请求后将具体执行操作传递给linux系统,linux执行完后返回的转换层,转换层将请求执行结果反馈给windows应用程序,完成一次api请求,这样重复往返多次不同api调用,最终模拟完成整个应用程序执行过程。这种方式虽然可行,但也不完美:a)操作系统本身几乎就是由大量api组合而成,如果实现了所有windowsapi那就实现了windows系统,从工作量和复杂度上来说,这不是哪个开源社区能够负担得起的,所以,目前做得最好的转换层(wine,收费版本CrossOver)也仅实现了部分api,这意味着,不是所有windows程序都可以在转换层中运行,这是一个问题;b)既然是模拟api,那么从执行效率(实时性)、执行结果(正确性)上看,肯定与直接在windows中执行存在明显差距,时常会出现程序异常退出、运行缓慢等等问题,这对实时性要求较高的应用(在线3d游戏)来说,是用户无法接受的。正因为此,不推荐该方式。
第二类解决方式是安装虚拟机,在虚拟机中安装一个windows操作系统,这就像和你直接安装的windows一样,这样就有了一整套完整的windowsapi,所有应用程序均可正常运行。virtualbox就是一款著名的虚拟机。
软件名称:virtualbox
界面截图:
(virtualbox中运行迅雷)
下载安装:切勿从软件仓库中安装,仓库中的版本无法识别usb设备,官网提供了完整版(https://www.virtualbox.org/wiki/linux_downloads);
设置调整:要像使用真正windows那样使用装在virtualbox中的windows,必须注意以下几点:
a)内核管理。virtualbox对内核版本非常敏感,一旦有内核升级,必须对virtualbox核心模块进行重新编译。别担心,不需要你具备程序员的能力,virtualbox会自动执行,你,负责为它准备相关编译工具——gcc、make、
kernel-dev。第一个是编译器,第二个是代码管理工具,第三个是编译内核需要的头文件,这三个工具均可通过软件仓库安装。一旦准备好相关工具,用root权限执行“/etc/init.d/vboxdrvsetup”命令即可;
b)显卡与usb管理。要让virtualbox中的windows支持3d显卡加速、识别usb等等增强功能,必须安装在windows中安装virtualbox自带的增强包。增强包只能在windows的安全模式下才能安装完整,windows虚拟机启动时按f8进入安全模式,进入virtualbox菜单devices->installguest additions进行增强包的安装;
c)网卡管理。通常主操作系统(linux)配有无线网卡、有线网卡、3g上网卡,必须先映射到客操作系统(windows)后,在windows系统中才能正常上网。进入setting->network,将adapter1采用nat方式映射,将adapter2采用bridgedadapter方式映射到eth0(有线网卡设备编号)、将adapter3采用bridgedadapter方式映射到wlan0(无线网卡设备编号),进入windows,在“更改适配器设置”中将看到这三个网卡映射,依次将adapter1命名为“3g直连”、adapter2为“有线桥接”、adapter3为“无线桥接”,这样,启停不同网卡实现不同上网方式的切换。在windows虚拟机中看到的三张网卡如下(是的,下图反映了我正在用3G上网):
(映射到windows虚拟机中的网卡)
使用问题:高版本迅雷(v7)在虚拟机中运行会报c++运行时库溢出的错误,暂时只能安装低版本迅雷(V5)才可正常运行。网上找迅雷5,下载安装。这时先别急着下载资源,迅雷有自动升级机制,一旦联网,将强制升级,若取消升级则程序会退出,若升级则又变成高版而导致报错,唯一的方式是暴力破坏迅雷5的自动升级程序thunderliveud.exe,在迅雷所在的安装盘搜索在程序,找到后全量删除之;
其他说明:这部分内容是以迅雷为例介绍了在linux下“运行”windows应用程序的通用方法,其他应用,可以此参考。
5、网上购物。网上购物涉及两类操作,网银支付和在线交流,前者就是各大银行的在线支付程序,后者指的是淘宝旺旺软件,典型的两类windows原生应用,请参考上例在windows虚拟机中安装对应软件即可。唯一需要注意的u盾的识别,插入u盾后,先到virtualbox中setting->usb,勾选enableusb controller,再到windows虚拟机中devices->usbdevices列表中选中对应u盾,这样,windows就能正确识别u盾了。其他usb设备的识别与之类似;
罗嗦两句网银支付。目前看来,朝内绝大部分银行仅支持win+ie平台在线支付,完全忽视非windows用户的存在,强烈谴责“为保障您的资金安全,我行建议您在windows操作系统中完成交易”,举着安全大旗招摇过市(windows安全?你银行服务器莫非装的是windowsserver2K3?),相反,国外各大银行遵循标准化,支持在各类操作系统、各自浏览器上进行网上交易,如,美国花旗、汇丰,更有甚者(德国的银行业),银行外对开放API,允许用户自行开发交易程序,怎么没见这些银行发生安全事故!当然,不是所有朝内银行都是“如此重视安全”,浦发银行是少数几家支持跨平台交易的银行,大家风范,值得推荐(不过营业网点有限,二三线城市较少)。http://www.openbanks.info/是一个专注于探讨网银跨平台主题的网站,有兴趣可以逛逛。
6、即时通讯。常用的im工具包括飞信、qq、msn,这三个im都有对应的linux版本,但,不论是官方发布的还是第三方通过逆向工程实现的,从功能完整性、运行稳定性、界面友好性来看,均与windows原生版本存在巨大差距,实际使用效果并不理想。如果的确要用,建议参照上例,在windows虚拟机中安装运行。
或许是冏朝的linux用户量过少(linux在全球桌面领域占有率仅为2%,且主要分布在万恶的欧美等资本主义国家),国内软件开发商基本采用忽略态度,即便发布了linux版的程序,要么长年不更新(qqfor linux从2009年1月发布后从未更新过,http://im.
qq.com/qq/linux/download.shtml)、要么不对外发布(aliwangwangforlinux,仅用于淘宝公司内部测试,http://ge.tt/8sppgia),在此呼吁各大开发商,请对linux予以正确的认识和重视,尊重我们选择操作系统的权利。
四、系统管理
linux系统管理是很大一个领域,有专门的一群从业者靠此养家糊口,我无法在此进行详细讲解,仅以几类常规操作抛砖引玉。
1、数据备份。随着对电脑的依赖,我们多多少少积累了些重要资料,可以说这些资料是形成我们“个人能力”的主要来源,一旦丢失,多年的工作经验、生活点滴均将化为烟云,这是我们一笔无形的财富。硬盘老化、操作系统异常、电脑遗失等等都会导致资料丢失,为避免损失,应该养成定期备份数据的习惯。
就我个人经验来看,数据备份要注意以下几点:
1)存放备份的介质。必须要有一块独立外置硬盘(500G移动硬盘外套硬盘盒)用于存放备份数据,而不是在电脑内置硬盘上的一个分区备份到另一个分区,否则即便有备份,一旦内置硬盘出问题,原始数据和备份数据都将挂掉;
2)内置硬盘的分区。电脑内置硬盘在分区规划时,应单独创建一个文件系统,专门用于存放需要定期备份的数据(这里的几个说法容易混淆,概念澄清下,外置硬盘中用于存放备份而来的分区不妨称之为backup分区,内置硬盘中用于存放我们重要资料的需要被定期备份出去的分区称之为data分区);
3)其他项。A)全备,每次将所有数据资料全量备份而非仅备有差异部分(非增备);B)两个快照,任何时候应保留上上次和上次的两个备份快照,完成本次备份后再删除上上次备份快照,避免备份过程出问题导致历史备份丢失;C)直备,保持数据资料完整目录结构,直接备份到外置硬盘的backup分区,说白了就是直接复制,不进行任何再加工;D)月备,数据备份的周期要视你具体数据量和数据更新频率而定,个人而言,100g的数据量,备份耗时差不多25分钟,我一般每月备份一次(小提示,将工作、生活上需要定期做的事项按不同执行周期分类梳理到一张电子表格中,不时看看,你会发现,原来我是那么井井有条——引至《爱我何需理由》,作者:自恋小王子(这是笔名,真名吴凤辉,嘎嘎嘎嘎~):-)。
在备份软件方面,无须其他特殊软件,只要有tar、bzip2、gzip、zip、unzip几个常见命令即可。下面依次以直接打包备份、打包压缩备份、打包压缩带进度备份三种方式,由浅入深介绍具体备份操作。
1)直接打包备份。为了保持目录结构,通过采用打包命令tar进行备份。比如,希望将/data目录备份到名为backup_120g的外置硬盘上,备份文件命名为data_backup.tar
,那么完整命令及参数如下:
tar -p /data -cf /media/backup_120g/data_backup.tar
其中,-p表示完全保持/data目录下所有文件的文件属性,-cf表示需要创建一个备份文件且命名为backup.tar。
数据备份的时间点往往是我们最为关心的信息,所以习惯上备份文件名应该加上时间戳。linux的date命令能根据不同参数生成指定日期信息,完整的命令及参数如下:
tar -p /data -cf /media/backup_120g/data_backup@`date +%m-%d`.tar
其中,包裹命令date的”`”符号是tab键正上方、1键左边那个键,而非单引号。以指示shell优先执行整个命令行中该符号对包裹的命令(即,date+%m-%d)。
如果外置硬盘空间有限,/data中又包含部分不那么重要的数据(如,临时目录tmp,与windows虚拟机同享文件的目录share_folder),那么备份时可以将这些目录排除掉,通过tar的--exclude参数即可实现:
tar -p /data--exclude=/data/misc/tmp--exclude=/data/misc/software/vm/win_7/share_folder -cf/media/backup_120g/data_backup@`date +%m-%d`.tar
其中,--exclude参数语法非常特殊(其他命令中的该参数也是如此),注意几点:A)命令中的所有参数必须为绝对路径而非相对路径,且不能用~等等缩写字符;B)所有路径最后不能以“/”结尾。
2)打包压缩备份。如果排除了部分不重要数据后外置硬盘空间仍然紧张,可以考虑对打包文件进行压缩。linux上常见的压缩命令包括gzip和bzip2,由于两者采用的不同压缩算法,导致前者压缩率较低但速度较快,后者压缩率较高但速度慢,但相关用法差不多,请按需择优选用(本例以gzip为例,若需bzip2则直接替换即可)。打包和压缩是两个独立操作,写两条命令多麻烦啊!不用,借助linux强大的管道和重定向机制,可以在一条命令中以非常自然的方式实现:
tar -p -cf- /data --exclude='/data/misc/tmp'--exclude='/data/misc/software/vm/win_7/share_folder'| gzip >/media/backup_120g/data_backup@`date +%m-%d`.tar.gz
别被这些奇怪符号吓着,管道符(“|”)用于实现“打包一点压缩一点”,重定向符(“>”)用于实现“压缩一点写一点到备份文件中”,这样,串起来就是“不停打包、不停压缩、不停写文件”的流水作业,理解了吧!其中,上个命令中-cf后面跟的是备份文件名,本命令中改为“-”,就在告诉shell说,“先别急着写文件,你(shell)把我(tar)刚生成的数据流传递给后面负责压缩的兄弟(gzip),它知道该写哪个文件,谢谢哈~”。说明两点,A)你是否注意到备份文件的扩展名为“.tar.gz”,不仅本例,涉及linux主题的网站提供的下载几乎都采用这种命名方式,这叫命名约定,通常来说,如果仅打包不压缩则扩展名为“.tar”,如果打包且采用gzip压缩则扩展名为“.tar.gz”,如果打包且采用bzip2压缩则扩展名为“.tar.bz”或“.tar.bz2”;B)其实tar命令使用--gzip和--bzip2参数可以直接实现打包压缩,无须像上例,采用管道和重定向来实现,但,为精确显示整个备份进度率,必须采用这种变通方式,请接着看。
3)打包压缩带进度备份。要显示备份进度,必须得事前知道待备份数据(/data)的大小,可通过du命令实现:
du -sk /data --exclude='/data/misc/tmp'--exclude='/data/misc/software/vm/win_7/share_folder'
其中,-s表示计算/data整个目录包括子目录下所有文件的大小总和,-k表示计算结果以k为单位(或者m、g、t等)显示,单位的精度越高,在计算百分比进度时就越精确。
待备份目录大小知道了,如何计算进度?上面介绍过,打包、压缩、写文件都在借助管道传递数据流,如果能查看到管道中已经传递的数据量大小,用此大小除以总大小不就能显示出当前备份进度了么?噹噹噹哒~,pv就可以,顾名思义pv就是pipeviewer,明白了吧,管道查看器,它是监测管道数据的超级武器,没事多用用、系统更健康。
tar -p -cf - /data --exclude='/data/misc/tmp'--exclude='/data/misc/software/vm/win_7/share_folder' | pv --sizexxx | gzip >/media/backup_120g/data_backup@`date +%m-%d`.tar.gz
其中,xxx部分请用前面du命令输出结果(待备份目录/data总大小),并手工添加单位k。效果如下:
(可视化备份进度)
好了,到此包括打包、压缩、排除不重要目录、打时间戳、显示进度等特性在内的linux常规备份操作就介绍完了,一条命令啰哩吧嗦说了一大堆,看来的确是老了(小吴,好好干,路还长)。内容是多了点,一次没看明白就多看几次,其实也不复杂,我们一起看看简化模型吧(啰嗦的平方就是在下,谢谢,:O)。
du-sk /source
tar-p -cf - /source | pv --size xxxk | gzip > dest.tar.gz
有备份就有恢复,相对备份操作而言,恢复就太简单了。仍用tar命令,参数不同而言:
tar-xv -f dest.tar.gz -C .
其中,-x表示执行解压解包操作,采用哪种解压算法由tar自行侦测后决定,-v表示显示以及解压出的文件列表,-f表示该参数后面紧跟的就是待解压的文件名,-C表示该参数后面紧跟是解压后的文件存放路径。
这次真的说完了,没想到我对朴实的tar如此动情,不知不觉谈了这么多关于她的点滴。在介绍她的同时,我也再次品味到了unix(linux的大哥)哲学——分工明确、各司其职、齐心协作。(tar哭着说,你娶我是想更接近我哥)
2、碎片整理。要理解碎片,必须先了解硬盘基本结构和硬盘读写机制两个概念。之后,再看看不同操作系统写文件的策略,你自然会明白碎片在linux下是啥东东。
硬盘基本结构。硬盘内部是由多张磁片和一个机械臂组成,磁片上最小单位是扇区,一旦硬盘停止工作后(如,关机),机械臂将复位到第一个扇区处。对于扇区而言,不论写入数据有多小,一旦占用了某个扇区后,其他数据就不能再写入通过扇区,即便该扇区还有空余空间(这就是为什么我们说一个大文件要比拆分为多个小文件的合计要小一些的原因)。每次读或写操作之前,机械臂先移动寻找到要访问的扇区,这个过程称之为“寻址”,由于机械臂移动是个物理动作,如果读写操作老是在不同扇区间不停移来移去,势必会增长读写操作耗时。
硬盘读写机制。我们为每个扇区编个号,最开始的是0号扇区、接着是1号、然后2号、以此类推,任何操作系统都会尝试尽量将文件写入靠前的扇区,若已被占用则尝试下个扇区,直到找到空闲扇区,这样,理想情况下,整个硬盘应该是先用完靠前的空间。
了解了基础概念后,我们假定有A、B、C三个文件,依次连续占据0~3号扇区、4~7号扇区、8~9号扇区,如下图所示:
(碎片:初始状态)
这时,用户编辑了文件B,增加了大量内容,导致文件B体积增大了2个扇区的大小,windows写文件时采用的策略——“可以接受两地分居”,即,将增加部分内容写入最靠前空闲的10号和11号两个扇区,如下图所示:
(windows写文件策略)
以后,一旦用户需要访问文件B,系统先寻找到4号扇区,将4~7号扇区读入内存,再寻找到10号扇区,将10~11号扇区读入内存,最后将这6个扇区合并供用户使用。设想一下,刚装好系统时硬盘上有5000个文件,其中1000个在后来系统使用过程中被人为或程序调整过大小,那么这1000个文件个个都被截成几段,这就形成了“碎片”,文件越多、文件写入次数越多,产生的碎片就越多。
linux写文件采用的是与windows恰好相反的另一个策略——“分开就不是家庭”,即,将文件B后面紧挨着的文件C向后移动两个扇区,移动后文件C就从先前的8~9号扇区变成10~11号扇区,8~9号扇区空出来用于存放文件B增大的部分,如下图所示:
(linux写文件策略)
显然,按linux的策略,无论硬盘中有多少文件、写入多少次,系统永远不可能产生碎片。再回到前面的问题,linux碎片整理代表什么?代表没事找抽~~
有童鞋问,每次我写完文件要保持时,系统都要移动那个文件后面的所有文件,岂不是更慢?移动是肯定的,但linux也不会那么弱智,至少有三种辅助手段缓解这个问题:A)数据搬迁不一定在我们编辑完文件后立马执行(即便已经关闭了文件),系统会结合CPU、内存、IO等资源使用情况,综合判断何时搬迁,以减少大规模移动数据对用户带来的不好感知;B)linux会记录下经常被更改的文件,在适当时候将这些文件后面紧跟的文件向后移动,以腾出空间让这些频繁更改的文件在下次体积增大时可以直接使用连续扇区;C)系统采用dd命令在底层进行数据搬迁,效率不是cp等辈可触及的。linux通过这三种方式,既实现了消除碎片,又让用户对整个过程感知最小化。
其实,我们可以算本帐。windows是“今朝有酒今朝醉”,即,这种方式在写文件的当下感觉是最直接,但后续每次访问这个文件都要不同移动机械臂;而linux是“今天的短暂拥堵是为了明天长久的通畅”(引至成都BRT建设宣传语),即,在写文件当下是要慢些,但后续每次访问就会一致性读入。两种方式,随着文件数目的增加,个人觉得后者更优!
五、图形图像
我们活在五彩斑斓的世界,色彩组成了世间万物。计算机是真实世界的数字扩展,当然也应该多彩绚丽。
1、图片编辑。玩单反的朋友用photoshop,玩单反又玩linux的朋友用gimp。gimp是linux下著名的图形处理工具(同时,由它衍生出来了一种功能强大、设计灵活的通用图形库gtk,gtk被gnome选作基础库,成为gnome环境中图形应用程序的开发标准),功能与photoshop不分上下。
软件名称:gimp
界面截图:后面绿色区域是桌面背景啦,另,图中大象的玩弄、抚摸以及搓揉权归属吴凤辉先生,特此声明!
(gimp)
2、色彩提取。有时看到很好的配色方案想要把色彩记录下来,这时就需要一款提取色彩值的工具。
软件名称:gpick
界面截图:
(gpick)
3、屏幕截图。截图是很常用到的一种工具,我认为一个好的截图工具至少应具备能截取视频图片、能放大像素以让用户精确截图、预制常用的截图模式(即,除截取鼠标选中区域外,能针对窗口、菜单、提示气泡等直接截取)等功能点。shutter号称linux下最强截图工具,支持我提的三点要求,值得推荐。
软件名称:shutter
界面截图:
(shutter)
下载安装:如果安装软件仓库中的版本,运行时将报错(can'tlocate file/copy/recursive.pm in @inc)。请通过一键安装文件(http://downlo
ad.opensuse.org/repositories/home:/swyear:/shutter/opensuse_12.1/shutter.ymp)下载安装。
4、屏幕录像。说了屏幕截图肯定要说屏幕录像,如果是一副图抵得上100个字,那么一段视频就是50副图。录屏工具生成的视频格式非常重要,最高压缩比的视频文件体积都不小,能表达连续动作又能比视频文件体积小的文件格式是什么?gif格式。byzanz可以将录屏内容直接输出到gif文件中。byzanz是个命令行工具,但操作不难。
byzanz-record -d 16 -c test.gif
其中,-d表示录屏时长,-c表示包括录制鼠标。
软件名称:byzanz
界面截图:
(byzanz)
其他说明:真心喜欢这个软件,但受限于是个命令行程序,所以知道的人不多,空了我会为它写个图形前段,希望有助于它的推广。
六、其他杂项
前面分五类介绍了常用软件,除此之外,还有些我个人经常用到但有不能归入五类中的软件,暂且放置于此。
1、蓝牙收发。电脑与手机通过蓝牙协议收发文件是最常见的蓝牙应用场景之一,下面将以笔记本电脑和手机收发图片为例进行介绍。
opensuse默认已经安装好相关蓝牙管理程序(核心程序gnome-bluetooth和bluez
),请确认正确、完整安装。在开始之前,我们先要进行文件共享设置,以便笔记本接收手机发送的图片。运行“personalfile sharing ”程序,按参照下图选中所有勾选框:
(允许蓝牙接收文件)
就蓝牙收发图片的一般流程而言,我们先配对好两个蓝牙设备,在源设备中选中图片,选择通过蓝牙发送给目的设备,目的设备接收文件。但,opensuse蓝牙程序的bug,如果我们以待发送文件为操作对象进行发送操作,那么系统将提示失败,换言之,不论我是从笔记本发送到手机,还是从手机发送到笔记本,只要选择文件再通过(笔记本或手机)菜单“经蓝牙发送”均会失败,必须通过另一种变通方式来实现蓝牙收发文件——手机存储浏览。也就是说,不管笔记本或手机哪个是源、哪个是目的,我们都应该先通过蓝牙浏览手机存储(如,手机的micro-sd卡),然后像在笔记本自身移动图片一样,通过复制、粘贴方式在笔记本硬盘与手机存储卡之间移动图片,从而实现笔记本与手机间通过蓝牙相互收发文件。
具体演示步骤如下:
1)运行bluetooth,出现如下界面:
(未添加配对蓝牙设备)
2)点击“+”添加配对手机:
(添加手机“李大舅”:-)
3)点击右下角“browsefiles...”浏览手机存储卡,下图为手机存储文件列表:
(手机存储卡文件列表)
4)后续在笔记本和手机目录间剪切文件即可实现蓝牙文件传送。
随便说下,为增强系统的安全性,平时不需要时最好将蓝牙关闭(笔记本和手机都关了),省电不说,至少其他人看不到你设备上的任何资料,个人隐私还是要注意滴~
2、英文翻译。不管你英文有多好,难免会遇到几个生词,如果每次都复制粘贴到百度中搜索中文解释那多麻烦啊,英文翻译工具必不可少(当然也可以翻译其他语言,只要安装了对应词典文件)。
软件名称:stardict
界面截图:
(stardict)
设置调整:A)stardict自带词典单词量不够,可以网上下载专业词典,下载后复制到/usr/share/stardict/dic目录,重启stardict即可生效;B)stardict支持发音功能,但作适当调整。进入dictionary->sound,勾选“enablesound event”和“enableTTS program”,并将“commandfor playing sound files:”设置为“aplay”。
3、中文输入。个人认为影响linux在朝内推广的最大阻碍要算输入法。linux下常见输入法有scim、fictx、ibus。scim是老牌输入法,但项目几乎停滞,长年不见更新;fictx,俗称小企鹅输入法,有一定用户量;ibus,gnome唯一官方集成的中文输入法,有模糊拼音、常用词汇、智能匹配、主动学习、快速输入日期(rq)和时间(sj)等特点,很好用。如下图:
(ibus)
4、软件开发。这个时代,上规模的软件项目已不可能用简单的文本编辑器完成,IDE是必然选择。linux下IDE大致分为两类:“品牌机”和“组装机”。“品牌机”中有些(开源)产品还不错,比如:codeblocks、netbeans、eclipse、anjuta等等,对于初涉linux开发的朋友而言是个不错的选择(我指的是codeblocks),但对于老鸟来说总有这样那样的欠缺。听闻linustorvalds这类大牛用的是类emacs和一堆插件拼装而成的IDE,为向大牛致敬,加之那颗“喜欢折腾”的心,“组装机”是我的选择。首要任务,选择编辑器。linux上存在两种编辑器:神之编辑器—emacs,编辑器之神—vim。关于emacs与vim孰轻谁重之争已是世纪话题,我无意参与其中,在我眼里,二者都是创世纪的优秀编辑器,至少在这个领域作到了极致,它们让世人重新认识了编辑操作的本质——用命令而非键盘——去完成编辑任务。我是人类,选用vim。(此处省略31页半),详见《拼装的艺术:vim之IDE进化实录》,目前是v0.3版本,听说作者是个帅鸽。
5、命令行快捷键。linux下使用命令行是常有的事儿,介绍几个有用的命令行快捷键,将一定程度上提高你的效率。ctrl-c,结束当前进程;ctrl-z,挂起当前进程;ctrl-d,结束输入;ctrl-shift-c,拷贝选中文本;ctrl-shift-v,粘贴文本;ctrl-w,删除光标左边的一个单词;ctrl-a,光标移至行首;ctrl-e,光标移至行尾。
6、有待提升。讲了这么多,不是说openSUSE就很完美了,有些细节做得还不到位,有提升空间。如,显示器亮度调节问题,只有在纯命令行(非图形界面的模拟终端)下有效;又如,系统休眠(非待机)时不能连接有外设(音响、耳机、U盘等等),不能在低电量时休眠,否则都有一定几率夯机;再如,多屏幕投影时,无法实现多个屏幕内容一致。如此等等,虽大方面不影响使用,但如果发行商能及时修正,在这个各大发行套件血拼的时代,谁重视用户体验,谁就会赢得人心。
【完结】
一旦你决定移居linux,就要放下先前某些思维模式,入乡随俗,多了解它的风土人情——thinking in linux。末了,祝君在linux下生活幸福!
文章来源: http://blog.csdn.net/yangyang_gnu/article/details/7862896