mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-03-21 02:10:11 +08:00
Merge branch 'master' of github.com:LCTT/TranslateProject
This commit is contained in:
commit
0db6c79b7f
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
*.md~
|
||||
members.md
|
||||
*.html
|
||||
*.bak
|
||||
|
83
README.md
83
README.md
@ -1,11 +1,11 @@
|
||||
简介
|
||||
-------------------------------
|
||||
|
||||
LCTT是Linux中国社区([http://linux.cn/](http://linux.cn/))的翻译组,负责从国外优秀媒体翻译Linux相关的技术、资讯、杂文等内容。
|
||||
LCTT是“Linux中国”([http://linux.cn/](http://linux.cn/))的翻译组,负责从国外优秀媒体翻译Linux相关的技术、资讯、杂文等内容。
|
||||
|
||||
LCTT已经拥有近百余名活跃成员,并欢迎更多的Linux志愿者加入我们的团队。
|
||||
|
||||

|
||||

|
||||
|
||||
LCTT的组成
|
||||
-------------------------------
|
||||
@ -18,11 +18,10 @@ LCTT的组成
|
||||
|
||||
**发布**,负责将校对后的文章,排版进行发布。
|
||||
|
||||
|
||||
加入我们
|
||||
-------------------------------
|
||||
|
||||
请首先加入翻译组的QQ群,群号是:198889102,加群时请说明是志愿者。加入后记得修改您的群名片为您的github的ID。
|
||||
请首先加入翻译组的QQ群,群号是:198889102,加群时请说明是“志愿者”。加入后记得修改您的群名片为您的github的ID。
|
||||
|
||||
加入的成员,请先阅读[WIKI 如何开始](https://github.com/LCTT/TranslateProject/wiki/01-如何开始)。
|
||||
|
||||
@ -39,62 +38,75 @@ LCTT的组成
|
||||
- CORE [carolinewuyan](https://github.com/carolinewuyan),
|
||||
- CORE [DeadFire](https://github.com/DeadFire),
|
||||
- CORE [geekpi](https://github.com/geekpi),
|
||||
- CORE [tinyeyeser](https://github.com/tinyeyeser),
|
||||
- CORE [vito-L](https://github.com/vito-L),
|
||||
- CORE [jasminepeng](https://github.com/jasminepeng),
|
||||
- CORE [willqian](https://github.com/willqian),
|
||||
- CORE [vizv](https://github.com/vizv),
|
||||
- CORE [GOLinux](https://github.com/GOLinux),
|
||||
- [luoxcat](https://github.com/Luoxcat),
|
||||
- CORE [reinoir](https://github.com/reinoir),
|
||||
- Senior [tinyeyeser](https://github.com/tinyeyeser),
|
||||
- Senior [vito-L](https://github.com/vito-L),
|
||||
- Senior [jasminepeng](https://github.com/jasminepeng),
|
||||
- Senior [willqian](https://github.com/willqian),
|
||||
- Senior [vizv](https://github.com/vizv),
|
||||
- [runningwater](https://github.com/runningwater),
|
||||
- [luoxcat](https://github.com/Luoxcat),
|
||||
- [bazz2](https://github.com/bazz2),
|
||||
- [Vic020](https://github.com/Vic020),
|
||||
- [flsf](https://github.com/flsf),
|
||||
- [alim0x](https://github.com/alim0x),
|
||||
- [KayGuoWhu](https://github.com/KayGuoWhu),
|
||||
- [zpl1025](https://github.com/zpl1025),
|
||||
- [blueabysm](https://github.com/blueabysm),
|
||||
- [flsf](https://github.com/flsf),
|
||||
- [crowner](https://github.com/crowner),
|
||||
- [Linux-pdz](https://github.com/Linux-pdz),
|
||||
- [KayGuoWhu](https://github.com/KayGuoWhu),
|
||||
- [Linchenguang](https://github.com/Linchenguang),
|
||||
- [woodboow](https://github.com/woodboow),
|
||||
- [zpl1025](https://github.com/zpl1025),
|
||||
- [yechunxiao19](https://github.com/yechunxiao19),
|
||||
- [blueabysm](https://github.com/blueabysm),
|
||||
- [linuhap](https://github.com/linuhap),
|
||||
- [2q1w2007](https://github.com/2q1w2007),
|
||||
- [yechunxiao19](https://github.com/yechunxiao19),
|
||||
- [woodboow](https://github.com/woodboow),
|
||||
- [su-kaiyao](https://github.com/su-kaiyao),
|
||||
- [scusjs](https://github.com/scusjs),
|
||||
- [hyaocuk](https://github.com/hyaocuk),
|
||||
- [theo-l](https://github.com/theo-l),
|
||||
- [NearTan](https://github.com/NearTan),
|
||||
- [l3b2w1](https://github.com/l3b2w1),
|
||||
- [ThomazL](https://github.com/ThomazL),
|
||||
- [MikeCoder](https://github.com/MikeCoder),
|
||||
- [shipsw](https://github.com/shipsw),
|
||||
- [boredivan](https://github.com/boredivan),
|
||||
- [ThomazL](https://github.com/ThomazL),
|
||||
- [theo-l](https://github.com/theo-l),
|
||||
- [jiajia9linuxer](https://github.com/jiajia9linuxer),
|
||||
- [SteveArcher](https://github.com/SteveArcher),
|
||||
- [l3b2w1](https://github.com/l3b2w1),
|
||||
- [NearTan](https://github.com/NearTan),
|
||||
- [shipsw](https://github.com/shipsw),
|
||||
- [disylee](https://github.com/disylee),
|
||||
- [Love-xuan](https://github.com/Love-xuan),
|
||||
- [boredivan](https://github.com/boredivan),
|
||||
- [cvsher](https://github.com/cvsher),
|
||||
- [owen-carter](https://github.com/owen-carter),
|
||||
- [JonathanKang](https://github.com/JonathanKang),
|
||||
- [tenght](https://github.com/tenght),
|
||||
- [icybreaker](https://github.com/icybreaker),
|
||||
- [liuaiping](https://github.com/liuaiping),
|
||||
- [tenght](https://github.com/tenght),
|
||||
- [rogetfan](https://github.com/rogetfan),
|
||||
- [nd0104](https://github.com/nd0104),
|
||||
- [whatever1992](https://github.com/whatever1992),
|
||||
- [2q1w2007](https://github.com/2q1w2007),
|
||||
- [disylee](https://github.com/disylee),
|
||||
- [SteveArcher](https://github.com/SteveArcher),
|
||||
- [JonathanKang](https://github.com/JonathanKang),
|
||||
- [zzlyzq](https://github.com/zzlyzq),
|
||||
- [FineFan](https://github.com/FineFan),
|
||||
- [ailurus1991](https://github.com/ailurus1991),
|
||||
- [lfzark](https://github.com/lfzark),
|
||||
- [CNprober](https://github.com/CNprober),
|
||||
- [213edu](https://github.com/213edu),
|
||||
- [johnhoow](https://github.com/johnhoow),
|
||||
- [yujianxuechuan](https://github.com/yujianxuechuan),
|
||||
- [ggaaooppeenngg](https://github.com/ggaaooppeenngg),
|
||||
- [zzlyzq](https://github.com/zzlyzq),
|
||||
- [ailurus1991](https://github.com/ailurus1991),
|
||||
- [FineFan](https://github.com/FineFan),
|
||||
- [tomatoKiller](https://github.com/tomatoKiller),
|
||||
- [stduolc](https://github.com/stduolc),
|
||||
- [Maclauring](https://github.com/Maclauring),
|
||||
- [Hao-Ding](https://github.com/Hao-Ding),
|
||||
- [small-Wood](https://github.com/small-Wood),
|
||||
- [zsJacky](https://github.com/zsJacky),
|
||||
- [Hao-Ding](https://github.com/Hao-Ding),
|
||||
- [luoyutiantang](https://github.com/luoyutiantang),
|
||||
- [small-Wood](https://github.com/small-Wood),
|
||||
- [CHINAANSHE](https://github.com/CHINAANSHE),
|
||||
- [ggaaooppeenngg](https://github.com/ggaaooppeenngg),
|
||||
- [guodongxiaren](https://github.com/guodongxiaren),
|
||||
- [cereuz](https://github.com/cereuz),
|
||||
- [lijhg](https://github.com/lijhg),
|
||||
|
||||
|
||||
(更新于2014/06/18)
|
||||
(更新于2014/09/09)
|
||||
|
||||
谢谢大家的支持!
|
||||
|
||||
@ -112,4 +124,5 @@ LCTT的组成
|
||||
* 2014/01/02 增加了Core Translators 成员: geekpi。
|
||||
* 2014/05/04 更换了新的QQ群:198889102
|
||||
* 2014/05/16 增加了Core Translators 成员: will.qian、vizv。
|
||||
* 2014/06/18 由于GOLinux令人惊叹的翻译速度和不错的翻译质量,升级为Core Translators 成员。
|
||||
* 2014/06/18 由于GOLinux令人惊叹的翻译速度和不错的翻译质量,升级为Core Translators 成员。
|
||||
* 2014/09/09 LCTT 一周年,做一年[总结](http://linux.cn/article-3784-1.html)。并将曾任 CORE 的成员分组为 Senior,以表彰他们的贡献。
|
83
lctt2014.md
Normal file
83
lctt2014.md
Normal file
@ -0,0 +1,83 @@
|
||||
LCTT 2014 : LCTT 成立一年总结
|
||||
============================
|
||||
|
||||
### 缘起 ###
|
||||
|
||||
一年前,我因为开发 Linux 中国的微信公众号,想着在公众号里面提供 Linux 的 man 手册应该是个不错的主意,因此在网上遍寻中文 man 手册。虽然我之前也寻找过中文的 man 手册,知道颇多不全和错漏,但是这次仔细搜寻之下,却发现还远较我预计的还差。
|
||||
|
||||
无奈之下,只能先使用了英文版本作为 man 的内容,并因此萌发了组织一个翻译 man 手册的活动或组织的想法。说干就干,当时我就在 Linux 中国的 QQ 群里面发起了倡议,还真得到了大家响应。
|
||||
|
||||
于是,2013 年 9 月 10日,草草而就的 LCTT 就成立了,很快就创建了一个 QQ 群作为交流,并确定了名称为“Linux.CN Translate Team”,简称 LCTT。考虑到需要多人协作,几乎没有多想,就决定了采用 GITHUB 作为翻译平台——虽然现在看起来,GITHUB 作为主要工作平台,有利也有弊,但是,总体来说还是不错的。LCTT 就这样启动了。
|
||||
|
||||
### 发展 ###
|
||||
|
||||
次日,我们就组织起来了翻译,并初步拟定了翻译流程、分工之类的内容。
|
||||
|
||||
LCTT 草创,各种方面都没有经验,也出现过一些失误。比如说,开始时对于 GITHUB 以及 GIT,大部分人,包括我,都不是很熟悉,因此并未采用 Pull-Request 模式,而是共同控制的方式,也由于一些协调和经验的原因,出现过版本错误和回滚,甚至回滚得更乱。还有,初期还要求 LINUX 中国网站 的注册身份,但是后来发现这完全不必要。
|
||||
|
||||
本来成立 LCTT 的目标是为了 man 手册的翻译,但是经过研究,我发现翻译 man 手册还有一些困难:
|
||||
|
||||
1. man 手册是二进制的 groff 格式,因此生成和解析需要一些额外的过程,甚至需要一些特定的环境;
|
||||
2. man 手册对翻译的能力要求较高,并且应该对 man 手册所对应的命令有足够的了解,才能翻译得当,因为一字之差就可能导致很多误解。
|
||||
|
||||
所以,当时商量决定,先期启动普通的 Linux 方面、开源方面的文章翻译,以此来摸索翻译流程和锻炼协作,并作为翻译 man 手册的人员筛选环节。
|
||||
|
||||
我安排 Linux 中国站长,原本经常独自翻译发表来自国外文章的 DeadFire 来做选题。他负责将选题从英文的页面,转换成 Markdown 格式。我又找了朋友 jasminepeng 和 carolinewuyan 帮忙做校对,我自己则主要承担发布的工作。
|
||||
|
||||
初期,很快就涌现出了一些积极参与的人员,如 tinyeyeser、vito-L、boredivanivan等等,不一一列举了,他们不但积极参与翻译,而且还帮助撰写了第一批的翻译组 Wiki 文档,对引导新人起到了很大作用。
|
||||
|
||||
伴随着 LCTT 的逐步运作,一个月之后,我和大家感觉时间比较成熟了,就启动了 man 翻译计划。
|
||||
|
||||
### man 翻译计划的夭折 ###
|
||||
|
||||
_写下这个标题时,我也颇感觉惭愧的,这也算是我正视这个结果吧。不管怎么说,现在还是深夜,未过零点,我终究是在 LCTT 一周年之前正视了失败。_
|
||||
|
||||
其实,前面提到过,我检索过各种可以找到的中文 man 翻译项目的结果,但种种结果让人无法满意,因此我觉得,我应该能吸取其中的教训,为 Linux、为开源做点实事出来。
|
||||
|
||||
我总结的之前的 man 翻译项目失败的原因大概如下:
|
||||
|
||||
1. 缺乏足够的驱动力,翻译者无论从利益还是荣誉,都得不到鼓励,因此往往难以为继。
|
||||
2. 由于依赖个人热情,没有形成流动机制,因此,当某个人热情耗尽之后,就没有人继续接手维护。
|
||||
3. 翻译流程简单,没有形成初译、校对、发布等流程,无法保证质量,也没有保持同步更新的流程。
|
||||
|
||||
因此,我觉得,通过建立一个翻译的公益组织(即 LCTT)、建立翻译流程、翻译后保留翻译和校对等人员的署名,可以解决一些以上的问题。
|
||||
|
||||
但是,其实我还忽视了一点,翻译 man 手册,其实无论是环境还是流程,比较复杂,因此限制了参与者。参与门槛高,导致发展不能持续。
|
||||
|
||||
因此,实际上,man 翻译项目,在大概运作了一个月之后,就逐渐停滞下来了,虽然后期,willqian 独立完成了很多篇,但是总体来说,man 翻译项目算是失败了。
|
||||
|
||||
### 总结这一年 ###
|
||||
|
||||
抛开 man 翻译项目的失败不说,其实,LCTT 还是成果累累。
|
||||
|
||||
这一年,我们完成了 5820 次提交,发起了 1482 个 PR,翻译了 805 篇文章。
|
||||
|
||||
这一年,我们有了 98 个贡献者,得到了 162 个 fork。
|
||||
|
||||
我使用了一个工具,根据这一年来我们 LCTT 翻译项目的 git 日志,生成了一段[视频](http://img.linux.net.cn/static/video/lctt2014.mp4)。看着视频中如辛勤的工蜂一样忙忙碌碌的志愿者们;看着如穿花蝴蝶一样,承担了更多工作量的选题、校对们;看着归档时如同施展魔法一样,瞬间变出了一朵朵花,我感觉我们这一年是有收获的一年!
|
||||
|
||||
请大家观赏我们这一年: http://img.linux.net.cn/static/video/lctt2014.mp4 (213M,720p)
|
||||
|
||||
这是我用 kdenlive 合成配音的。虽然我的乐感很差,只能选择一首自己觉得还算配的音乐;虽然我根本不会用 kdenlive,连配音淡出都琢磨半天;虽然我编译用于生成这个视频的 gource 都花费了几个小时来解决问题;但是,看到这份视频,我为我们 LCTT 这一年来的工作感到骄傲。
|
||||
|
||||
### 感谢你们 ###
|
||||
|
||||
虽然很俗套,但是此刻,已经是 2014 年 9 月 10 日凌晨00:50了,我心情很激动,真心感谢所有的参与者、贡献者。几乎每个 LCTT 的成员我都知道,也有几个我特别熟悉;LCTT 的成员有新来的,也有逐渐淡出的,但是不论是那种,我都记得你们。
|
||||
|
||||
名单太长,我就不一一列举了: https://github.com/LCTT/TranslateProject/graphs/contributors
|
||||
|
||||
### 接下来 ###
|
||||
|
||||
我会说,man 计划我不会放弃么?
|
||||
|
||||
是的,man 计划是 LCTT 之所以发起的原因,也是 LCTT 能够持久发展的基础,而 man 翻译也是真正对国内的 Linux 、开源发展有实在意义的事情,所以,我不会放弃。
|
||||
|
||||
我会投入精力开发一个翻译平台,用于 man 项目的翻译、校对和发布,将复杂的翻译环境配置和使用方法隐藏在后面;并增加可视化的图表和进度显示,明了的体现翻译工作进展;对接 man7.org 的最新更新,保持 man 内容的及时更新等等。
|
||||
|
||||
期待 LCTT 的下一个年度的发展吧!
|
||||
|
||||
----
|
||||
|
||||
LCTT wxy
|
||||
|
||||
2014 年 9 月 10 日
|
@ -5,7 +5,7 @@
|
||||
微软因为以前对开源软件的态度而臭名昭著,但是公司改建后对开源软件发出了积极的信号。CNet报道了微软对开源软件认知的行为的改变。
|
||||
|
||||
> [CNet][1]消息:
|
||||
> 微软自助开源软件有一些时间了,那些曾经反对开源软件的领导者们已经退出了或者不在位了。开软软件现在用在遍布全世界的公司当中,这些公司有些自命不凡但这只是在认识到微软帝国之外的事。
|
||||
> 虽然微软资助开源软件有一些时间了,并且那些曾经反对开源软件的领导者们已经退出了或者不在位了。开源软件现在用在遍布全世界的公司当中,但这些与微软帝国无关。
|
||||
> 一些新的想法反映了企业顶层的一些变化,今年二月初Satya Nadella代替鲍尔默成为了微软CEO,Nadella已经给微软带来了一些新的东西改变了微软以前的一些束缚。
|
||||
>
|
||||
> [更多报道][2]
|
||||
@ -17,17 +17,17 @@
|
||||
|
||||
我是一个持悲观态度的人,但是我认为微软和开源软件之间的信任关系是有待确定的。一个新的CEO和些许改变或许会改变微软在开源世界中的存在状态,但是对于微软这么大的企业来说改变并不容易,所以对于开源的世界来说微软是否真的改变还有待确定。
|
||||
|
||||
我也从来不会忘记微软“欢迎,扩大,压死”的策略来打翻其他的竞争软件,光这一条凡是微软参合的开源项目就必须多一只谨慎的眼,或许这家公司真的改了,但如果没有呢!我们还是用几年时间来观察下吧。
|
||||
我也从来不会忘记微软用“欢迎,扩大,压死”的策略来打翻其他的竞争软件,光这一条凡是微软参合的开源项目就必须瞪大眼睛,或许这家公司真的改了,但如果没有呢!我们还是用几年时间来观察下吧。
|
||||
|
||||
### 安卓对抗windows ###
|
||||
|
||||
ZDNet曾经报道过使用数量最多的Linux发行版本,但是现在桌面环境仍然是windows的天下,但是安卓今年很可能会是用户数量最大的用户终端操作系统。
|
||||
ZDNet曾经报道过使用数量最多的Linux发行版本,不过现在桌面环境仍然是windows的天下,但是安卓今年很可能会是用户数量最大的用户终端操作系统。
|
||||
|
||||
> [ZDNet][4]报道:
|
||||
>
|
||||
> 如果桌面和平板依旧像预期增长的销量,安卓平板渐渐蚕食苹果的市场,PC市场继续萎缩,安卓在2014年末很有可能成为终端用户数量最多的操作系统而且不算安卓PC。
|
||||
> 如果桌面和平板依旧像预期增长的销量,安卓平板渐渐蚕食苹果的市场,PC市场继续萎缩,安卓在2014年末很有可能成为终端用户数量最多的操作系统,而且不算安卓PC。
|
||||
>
|
||||
> 总而言之,安卓几乎统治了Linux终端用户。你可能不会想到它作为桌面使用,尽管Intel和AMD努力在让它变成现实,但是安卓正在变成使用量第一的终端操作系统。
|
||||
> 总而言之,安卓几乎统治了Linux终端用户。你可能不会想把它作为桌面使用,尽管Intel和AMD努力在让它变成现实,但是安卓正在变成使用量第一的终端操作系统。
|
||||
|
||||
>
|
||||
> [更多消息][4]
|
||||
@ -37,18 +37,17 @@ ZDNet曾经报道过使用数量最多的Linux发行版本,但是现在桌面
|
||||
|
||||
上面提到的并不算真的惊喜,移动终端的革命发展了接近10年了。桌面依然还像原来那样重要,微软也确实没有真正的在乎过移动设备。即使现在,微软在艰难的推他的手机和平板,他仍旧认为移动终端市场并不重要。
|
||||
|
||||
|
||||
谷歌严重的破坏了微软在移动领域的努力,而现在他在桌面市场又对微软发起了挑战。从chrome OS到安卓,谷歌给微软一连串的打击,如果你查看下Amazon最受欢迎的[台式机][5]和[笔记本][6]的话,你会看到很多chrome OS的电脑甚至是装有安卓的PC。所以人们的购买需求在变得多样化,并不局限在windows一家了。
|
||||
|
||||
### Cinnamon和Unity在Ubuntu14.04上的对抗 ###
|
||||
|
||||
Tech Republic发表了一篇文章介绍了如何在Ubuntu14.04上安装cinnamon,研究了一下Ubuntu14.04上用cinnamon替换unity的可行性。
|
||||
Tech Republic发表了一篇文章介绍了如何在Ubuntu14.04上安装Cinnamon,研究了一下Ubuntu14.04上用Cinnamon替换unity的可行性。
|
||||
|
||||
> [Tech Republic][7]报道:
|
||||
>
|
||||
> 如果你寻求性能为主不需要其他有特色的可自定义的桌面,cinnamon适合你。Cinnamon是一个直观简洁的桌面,任何人都可以使用,不论你是IT工作者还是你的老妈妈。它非常的简单易用。Cinnamon很平淡,不会和你开什么玩笑,也不会让你感到有惊奇的感觉,但这就是它所注重的。它只会给桌面带来在标准层面上带来实用性,它不求突破,不耍花招,不加条条框框。
|
||||
> 如果你寻求性能为主不需要其他有特色的可自定义的桌面,Cinnamon适合你。Cinnamon是一个直观简洁的桌面,任何人都可以使用,不论你是IT工作者还是你的老妈妈。它非常的简单易用。Cinnamon很平淡,不会和你开什么玩笑,也不会让你感到有惊奇的感觉,但这就是它所注重的。它只会给桌面带来在标准层面上带来实用性,它不求突破,不耍花招,不加条条框框。
|
||||
>
|
||||
> Cinnamon是一个很平凡的桌面它只集成了最好的功能并且把它们集成到一起,完美整合到一块。如果你可以用一个看起来和用起来都点老掉牙但是性能很好的桌面的话,cinnamon完全适合你。如果你喜欢各种花哨的界面和看起来很现代的感觉,cinnamon可能就不适合你了。
|
||||
> Cinnamon是一个很平凡的桌面,它只集成了最好的功能并且把它们集成到一起,完美整合到一块。如果你可以用一个看起来和用起来都点老掉牙,但是性能很好的桌面的话,Cinnamon完全适合你。如果你喜欢各种花哨的界面和看起来很现代的感觉,Cinnamon可能就不适合你了。
|
||||
|
||||
> [ 更多消息][7]
|
||||
>
|
||||
@ -56,9 +55,9 @@ Tech Republic发表了一篇文章介绍了如何在Ubuntu14.04上安装cinnamon
|
||||
>
|
||||
> Image credit: [Tech Republic][7]
|
||||
|
||||
我是站在cinnamon这边的,unity有自己的长处,但是我从来没用习惯过。Cinnamon更接近传统桌面,我用起来不错!
|
||||
我是站在Cinnamon这边的,Unity有自己的长处,但是我从来没用习惯过。Cinnamon更接近传统桌面,我用起来不错!
|
||||
|
||||
但是在别人眼里,漂亮的桌面总是很受欢迎。Linux最大的特色就是提供很多很多不同的选择,如果你真不知道unity和cinnamon该选择谁,你就用自己最喜欢的就行了。
|
||||
但是在别人眼里,漂亮的桌面总是很受欢迎。Linux最大的特色就是提供很多很多不同的选择,如果你真不知道Unity和Cinnamon该选择谁,你就用自己最喜欢的就行了。
|
||||
|
||||
你赞成那些呢?请在下方留下你的评论吧
|
||||
|
||||
@ -69,7 +68,7 @@ Tech Republic发表了一篇文章介绍了如何在Ubuntu14.04上安装cinnamon
|
||||
|
||||
via: http://www.itworld.com/open-source/421894/has-microsoft-really-changed-its-attitude-toward-open-source
|
||||
|
||||
译者:[jiajia9linuxer](https://github.com/jiajia9linuxer) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[jiajia9linuxer](https://github.com/jiajia9linuxer) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,8 +1,8 @@
|
||||
对新用户来说最好的Linux发行版
|
||||
适合新用户的最佳的Linux发行版
|
||||
================================================================================
|
||||
这个争论无疑给许多Linux用户带来了麻烦。争论不能普遍归结为哪个发行版是真正最适合新用户的,而是哪个发行版受这些争论者的喜爱。如果我们撇开个人喜爱,我们会看到更清楚的一面。但即使这样,清晰也很快会被新用户的需求和期望遮蔽。考虑到这点,我决定采取一个不同的方法来找出“对新用户来说最好的发行版”。我评判最好发行版的标准不仅是易用,而且还要呼吁由日益增长的移动界面隐喻推动带来的现代设计美学。
|
||||
这个争论无疑给许多Linux用户带来了麻烦。争论的焦点一般不是哪个发行版是真正最适合新用户的,而是哪个发行版受这些争论者的喜爱。如果我们撇开个人喜爱,我们会看到更清楚的一面。但即使这样,明确的结论也会受到被新用户的需求和期望的影响。考虑到这点,我决定采取一个不同的方法来找出“对新用户来说最好的发行版”。我评判最好发行版的标准不仅是易用,而且还要具有由日益增长的移动界面风格所带来的现代设计理念。
|
||||
|
||||
为了这次评测,发行版必须要有如下要求:
|
||||
对于这次评测,我们对发行版有如下要求:
|
||||
|
||||
- 非常友好
|
||||
- 包括,开箱即用,所有常用的应用程序
|
||||
@ -13,13 +13,13 @@
|
||||
|
||||
### 用户友好 ###
|
||||
|
||||
这是一个备受争议的话题。但事实的真相是——新用户必须能够获得一种风格的Linux并开始使用,需要很少或不需要解释。如果必须很出太多解释,那么这个发行版便不是用户友好的。我不想成为那样的人,但是几乎任何用户都可以在近乎零指导的情况下坐在Windows 7或OS X桌面前并开始使用它。这是每一个Linux桌面都应当争取去做的。
|
||||
这是一个备受争议的话题。但事实的真相是——新用户必须能够选择某种风格的Linux并开始使用,只需要很少或不需要解释。如果必须很出太多解释,那么这个发行版便不是用户友好的。我不喜欢那些操作系统,但是几乎任何用户都可以在近乎零指导的情况下坐在Windows 7或OS X桌面前并开始使用它。这是每一个Linux桌面都应当争取去做的。
|
||||
|
||||
### 常用应用程序 ###
|
||||
|
||||
安装好系统后用户不应该去安装必需的程序。那么什么是必需的呢?每年列表都会变短。目前,必备的程序列表如下:
|
||||
安装好系统后用户不应该再去安装必需的程序。那么什么是必需的呢?每年列表都会变短。目前,必备的程序列表如下:
|
||||
|
||||
- 网页浏览器:Chrome或者Firefox(对不起,其他的浏览器不需提供)
|
||||
- 网页浏览器:Chrome或者Firefox(对不起,根本不需要其他的浏览器)
|
||||
- 电子邮件客户端:Thunderbird是显而易见的选择。
|
||||
- Office办公套件:LibreOffice。就这样。
|
||||
- 音乐播放器:播放本地文件以及连接到流媒体服务(比如Spotify)。
|
||||
@ -32,29 +32,29 @@
|
||||
|
||||
### 时尚的界面 ###
|
||||
|
||||
我已经多次提到移动设备的美化。由于iOS和Android,用户越来越喜欢时尚的界面。Linux的桌面需要进行效仿并且用独特的、时尚的和易用的界面来吸引用户注意力。旧的隐喻在多触控友好的移动世界里不再有影响力。
|
||||
我已经多次提到移动设备的美化。由于iOS和Android,用户越来越喜欢时尚的界面。Linux的桌面需要进行效仿并且用独特的、时尚的和易用的界面来吸引用户注意力。旧的风格在支持多触控的移动世界里不再有影响力。
|
||||
|
||||
排名前三的发行版
|
||||
## 排名前三的发行版 ##
|
||||
|
||||
以文中的标准,哪个发行版本满足了(或超过)我们的需求?首先,让我们来审查一下前三名的候选者。以下哪个满足了(或超过)标准。
|
||||
|
||||
#### Ubuntu ####
|
||||
### Ubuntu ###
|
||||
|
||||
[Ubuntu Linux][1]一直为用户友好型Linux的王者。开箱即用,寻找一个迷人和易用的桌面(Unity)是一个挑战,甚至是对于那些对平台不熟悉的人。它的桌面布局虽然与众不同,但却是合乎逻辑和很直观的。对于在桌面环境中添加一个最强大的搜索工具,在Linux中Ubuntu Unity应当获得最高成就。
|
||||
[Ubuntu Linux][1]一直是用户友好型Linux的王者。开箱即用,寻找一个比它更迷人和易用的桌面(Unity)有点困难,甚至是对于那些对平台不熟悉的人也是这样的。它的桌面布局虽然与众不同,但却是合乎逻辑和很直观的。对于在桌面环境中添加一个最强大的搜索工具,在Linux中Ubuntu Unity应当获得最高成就。
|
||||
|
||||
#### Linux Mint ####
|
||||
### Linux Mint ###
|
||||
|
||||
如果认为有一个篡夺王位的发行版,那它就是[Linux Mint][2]。Linux Mint做了更多桌面的标准方法,但是图层华丽且多变使其从老旧的桌面隐喻中脱颖而出。Linux Mint基于Ubuntu,所以它得益于“老大哥”Ubuntu的稳定性和可靠性。
|
||||
|
||||
#### Linux Deepin ####
|
||||
### Linux Deepin ###
|
||||
|
||||
用户友好型列表中的新成员是[Linux Deepin][3]。这个相对较新的受欢迎的发行版来自中国,而且应该扬起一些认真的浪波。为什么这样说?因为它使得Linux桌面转变为艺术美;同时也保持了高水平的用户友好性。我期待它的新版本发布将是个大事件。Linux Deepin使用的是GNOME 3桌面并将它重组得完全不同的,完全不可思议。
|
||||
用户友好型列表中的新成员是[Linux Deepin][3]。这个相对较新的受欢迎的发行版来自中国,而且应该正视它所带来的成就。为什么这样说?因为它使得Linux桌面转变为艺术美;同时也保持了高水平的用户友好性。我期待它的新版本发布将是个大事件。Linux Deepin使用的是GNOME 3桌面并将它重组得完全不同的,完全不可思议。
|
||||
|
||||
### 各发行版的比分 ###
|
||||
## 各发行版的比分 ##
|
||||
|
||||
在最佳的竞争者名单中,我们来比较一下每一个标准和等级。每个发行版的比分如下:对于每个标准,发行版排名从高到底(第一名得一分,最后一名得三分)。最后,总分决定谁是冠军——最低得分获胜。
|
||||
|
||||
#### 用户友好性 ####
|
||||
### 用户友好性 ###
|
||||
|
||||
这可能是最严密的分类和最艰难的判别。每个发行版以不同的方法在用户友好性上都各有优势。最后,我的排名是:
|
||||
|
||||
@ -64,13 +64,13 @@
|
||||
|
||||
3. Linux Deepin
|
||||
|
||||
为什么是这样呢?Mint仅有微小的优势,因为它的开始按钮,任务栏和桌面图标仍然使用旧的桌面隐喻。胜者的优势很微小,Ubuntu和Linux Deepin要求的学习曲线近乎为零——甚至是对于未使用者。
|
||||
为什么是这样呢?Mint仅有微小的优势,因为它的开始按钮,任务栏和桌面图标仍然使用旧的桌面风格。胜者的优势很微小,Ubuntu和Linux Deepin要求的学习曲线近乎为零——甚至是对于小白们。
|
||||
|
||||
#### 常用的应用程序 ####
|
||||
### 常用的应用程序 ###
|
||||
|
||||
这一类别难以判断的唯一原因是因为每个发行版都包括所有必要的应用程序。虽然Linux Deepin目前提供的是金山Office(一个最好的移动办公套件解决方案),它计划在2014发行版本中默认使用LibreOffice。
|
||||
这一类别难以判断的唯一原因是因为每个发行版都包括所有必要的应用程序。虽然Linux Deepin目前提供的是金山Office(一个最好的移动办公套件解决方案之一),它计划在2014发行版本中默认使用LibreOffice。
|
||||
|
||||
常用程序的我的一个问题是关于音乐播放器。虽然我在线听过很多音乐(使用Spotify客户端),但当我播放本地音乐时,总是使用Clementine。他们的默认播放器是:
|
||||
关于常用程序的我的一个问题是音乐播放器。虽然我在线听过很多音乐(使用Spotify客户端),但当我播放本地音乐时,总是使用Clementine。他们的默认播放器是:
|
||||
|
||||
- Ubuntu: Rhythmbox
|
||||
- Linux Mint: Banshee
|
||||
@ -98,7 +98,7 @@ rhythmbox
|
||||
|
||||
3. Linux Deepin
|
||||
|
||||
#### 应用程序商店 ####
|
||||
### 应用程序商店 ###
|
||||
|
||||
如果不分析这部分将难进行。为什么呢?因为对于新用户应用商店可以轻易成就或是毁掉一个Linux发行版。总会有应用需求而且没有用户想经过命令行的重重考验。每个发行版都有自己的应用商店。
|
||||
|
||||
@ -106,7 +106,7 @@ rhythmbox
|
||||
- Mint: 软件管理器
|
||||
- Linux Deepin: Deepin软件中心
|
||||
|
||||
应该说,这些工具中的每一个都是基于Ubuntu软件中心。奇怪的是Ubuntu软件中心却正好排在最底。主要原因是Ubuntu软件中心太慢了——甚至在一个非常强大的机器上。
|
||||
应该说,这些工具中的每一个都是基于Ubuntu软件中心的。奇怪的是Ubuntu软件中心却正好排在最底。主要原因是Ubuntu软件中心太慢了——甚至在一个非常强大的机器上。
|
||||
|
||||
我将应用商店排名设为如下:
|
||||
|
||||
@ -118,7 +118,7 @@ rhythmbox
|
||||
|
||||
每个应用商店有非常相似的功能。Linux Deepin获得第一的原因有两个:界面易于控制而且程序开启速度远远快于Ubuntu软件中心和Mint软件管理器。
|
||||
|
||||
#### 时尚的界面 ####
|
||||
### 时尚的界面 ###
|
||||
|
||||
在这部分Linux Mint远远落后。尽管它提供了一个华美的界面和有很浅的学习曲线,但相比之下它仍然是一个非常过时的桌面。甚至在强大的硬件(有强大的显卡)上,Linux Mint仍然很容易被看成是来自90年代末的桌面。为了评判结果,我们必须看看是Ubuntu Linux还是Linux Deepin能带我们走进未来。胜者是:
|
||||
|
||||
@ -130,7 +130,7 @@ rhythmbox
|
||||
|
||||
Linux Deepin使用GNOME 3来制作一个使用起来很漂亮的GNOME和OSX的混合体,你会认为你在处理一件互动的艺术品。
|
||||
|
||||
### 总冠军 ###
|
||||
## 总冠军 ##
|
||||
|
||||
虽然这是很初步的,对新用户来说最好的Linux发行版顺序应该是:
|
||||
|
||||
@ -140,7 +140,7 @@ Linux Deepin使用GNOME 3来制作一个使用起来很漂亮的GNOME和OSX的
|
||||
|
||||
3. Ubuntu Linux的总得分是9
|
||||
|
||||
如果你想知道关于这篇文章的作者主张,要知道:我已经使用Ubuntu Linux很多年了(而且仍在用)。我最近一直在说“如果有一个Linux发行版动摇使用Ubuntu的想法,它便是Linux Deepin。”虽然我很欣赏Linux Mint,但我只是用它来进行测试。当说到对新用户最好的Linux发型版,Linux Mint是显而易见的赢家。
|
||||
如果你想知道关于这篇文章的作者观点,要知道:我已经使用Ubuntu Linux很多年了(而且仍在用)。我最近一直在说“如果有一个Linux发行版能动摇我使用Ubuntu的想法,它便是Linux Deepin。”虽然我很欣赏Linux Mint,但我只是用它来进行测试。当说到对新用户最好的Linux发行版,Linux Mint是显而易见的赢家。
|
||||
|
||||
这件事真正的真相是——你在使用这些桌面中任何一个都不会错。他们都各有所长。如果你追求真正的美丽,使用Linux Deepin吧。如果你想要漂亮外观与易用结合,那就使用Ubuntu Linux。如果你只想要简单而且并不在乎漂亮的外观,那就用Linux Mint。不管你选哪一个,这都是三赢的局面。
|
||||
|
||||
@ -150,7 +150,7 @@ Linux Deepin使用GNOME 3来制作一个使用起来很漂亮的GNOME和OSX的
|
||||
|
||||
via: http://www.linux.com/news/software/applications/775873-the-best-linux-distribution-for-new-users/
|
||||
|
||||
译者:[linuhap](https://github.com/linuhap) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[linuhap](https://github.com/linuhap) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,74 @@
|
||||
什么是Unix以及它为什么这么重要?
|
||||
================================================================================
|
||||

|
||||
|
||||
大多数操作系统可以被划分到两个不同的家族。除了微软的基于Windows NT的操作系统外,几乎所有其他的都可以追溯到Unix。
|
||||
|
||||
Linux,Mac OS X,Android,iOS,Chrome OS,PlayStaion 4上运行的Orbis OS,运行在路由器上的各种固件,所有这些操作系统通常都被称为“类Unix”操作系统。
|
||||
|
||||
### Unix的设计现在都还在应用 ###
|
||||
|
||||
Unix在20世纪60年代中晚期诞生于AT&T的贝尔实验室中。最初发布的Unix中的一些重要设计因素到如今都还在使用。
|
||||
|
||||
其中一个设计是“Unix哲学”,建立小的模块化的应用,只做一件事情并把它做好。如果你对Linux终端很熟悉的话,应该对这个不陌生-系统提供了大量的应用,可以通过[管道或其他特性][1]形成不同的组合来完成更复杂的任务。甚至图形界面程序也经常会在后台调用更简单的应用去做比较耗时的任务。这种模式也让[建立终端脚本][2]更为简单,通过文本把一些简单工具结合起来去做复杂的事情。
|
||||
|
||||
Unix还设计了一个单一的文件系统,程序可以通过它互相通讯。这也是[为什么在Linux里说“一切都是文件”][3]-包括硬件设备文件,和提供系统信息及其他数据的特殊文件。这也是为什么只有Windows系统中才有磁盘盘符,这是从DOS继承过来的-在其他操作系统中,所有文件都是一个单一目录结构中的一部分。
|
||||
|
||||

|
||||
|
||||
### 那些从Unix派生出的系统 ###
|
||||
|
||||
类似任何可以往前追溯40年的历史,Unix的历史和它的派生系统一片混乱。为了简单,我们把Unix的派生系统大致分成两组。
|
||||
|
||||
一组Unix派生系统是学术界开发的。
|
||||
|
||||
首先是BSD(伯克利软件发布版),一个开源的类Unix操作系统。BSD如今还存在于FreeBSD,NetBSD和OpenBSD等系统中。NeXTStep基于最初版的BSD开发,苹果的Mac OS X基于NeXTStep,iOS基于Mac OS X。许多其他操作系统,包括运行在PlayStation 4上的Orbis OS,也源于各种BSD操作系统。
|
||||
|
||||
Richard Stallman建立GNU项目的目的是为了反对AT&T的Unix软件协议条款日渐严格的限制。MINIX是一个类Unix操作系统,为教育目的而实现的,而Linux则是受到了MINIX的启发。[我们今天所熟悉的Linux其实应该叫GNU/Linux][4],因为它是由Linux内核和大量GNU应用组成的。GNU/Linux不是直接从BSD继承下来的,但是它继承了Unix的设计而且根植于学术界。如今许多操作系统,包括Android,Chrome OS,Steam OS,以及数量巨大的在各种设备上使用的嵌入式操作系统,都基于Linux。
|
||||
|
||||
另一组是商用的Unix操作系统。AT&T UNIX,SCO UnixWare,Sun Microsystem Solaris,HP-UX,IBM AIX,SGI IRIX-许多大型企业都希望建立并授权自己版本的Unix。它们如今并不常见,但其中一些仍然存在。
|
||||
|
||||

|
||||
|
||||
图片致谢: [Wikimedia Commons][5]
|
||||
|
||||
### DOS和Windows NT的崛起 ###
|
||||
|
||||
许多人希望Unix能够成为工业标准操作系统,但是DOS和“IBM PC兼容”计算机却最终人气爆发而普及开来。微软的DOS也成为众多DOS系统中最成功的一个。DOS完全没有参照Unix,这也是[为什么Windows使用反斜杠划分文件路径,而其他所有系统都使用正斜杠][6]。这个决定是在早期的DOS系统中做出的,而之后的Windows版本继承了这一设定,就像BSD,Linux,Mac OS X,和其他类Unix操作系统继承了许多Unix设计因素一样。
|
||||
|
||||
Windows 3.1,Windows 95,Windows 98,和 Windows ME都是建立在DOS的基础上。当时微软已经在开发一个更现代更稳定的操作系统,叫做Windows NT-意思是“Windows新技术”。Windows NT最终通过Windows XP应用到普通计算机用户中,但是之前它都只用于针对企业用户的Windows 2000和Windows NT。
|
||||
|
||||
如今所有微软的操作系统都基于Windows NT内核。Windows 7,Windows 8,Windows RT,Windows Phone 8,Windows Server,以及Xbox One上的操作系统都在使用Windows NT内核。不像其他大多数操作系统那样,Windows NT没有被开发成一个类Unix操作系统。
|
||||
|
||||
当然,微软也不是完全从零开始的。为了维护DOS和旧版本Windows软件的兼容性,Windows NT继承了许多DOS里的设定,比如磁盘盘符,反斜杠区分文件路径,正斜杠作为命令行参数开关。
|
||||
|
||||

|
||||
|
||||
### 为什么它影响很大 ###
|
||||
|
||||
不知道你有没有看过Mac OS X终端或是文件系统,有没有注意到它们和Linux是如此相似,而又和Windows是如此不同?好吧,原因是-Mac OS X和Linux两个都是类Unix操作系统。
|
||||
|
||||
了解了这点历史,就可以帮助你理解什么是“类Unix”操作系统,以及为什么这么多操作系统看起来都差不多,而Windows却那么与众不同。这也可以解释为什么Linux极客对Mac OS X上的终端会感觉如此熟悉,而[Windows 7上的Command Prompt和PowerShell][7]相对于其他命令行环境显得格格不入。
|
||||
|
||||
这只是一点快速掠过的历史,帮助了解是如何发展到今天的,而不用陷入到细节中。如果你想了解更多,可以找到许多关于Unix历史的整本的书籍。
|
||||
|
||||
图片致谢: [Peter Hamer on Flickr][8], [Takuya Oikawa on Flickr][9], [CJ Sorg on Flickr][10]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.howtogeek.com/182649/htg-explains-what-is-unix/
|
||||
|
||||
译者:[zpl1025](https://github.com/zpl1025) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.howtogeek.com/110150/become-a-linux-terminal-power-user-with-these-8-tricks/
|
||||
[2]:http://www.howtogeek.com/107217/how-to-manage-processes-from-the-linux-terminal-10-commands-you-need-to-know/
|
||||
[3]:http://www.howtogeek.com/117939/htg-explains-what-everything-is-a-file-means-on-linux/
|
||||
[4]:http://www.howtogeek.com/139287/the-great-debate-is-it-linux-or-gnulinux/
|
||||
[5]:http://en.wikipedia.org/wiki/File:Unix_history.svg
|
||||
[6]:http://www.howtogeek.com/181774/why-windows-uses-backslashes-and-everything-else-uses-forward-slashes/
|
||||
[7]:http://www.howtogeek.com/163127/how-powershell-differs-from-the-windows-command-prompt/
|
||||
[8]:http://www.flickr.com/photos/peter-hamer/2876612463/
|
||||
[9]:http://www.flickr.com/photos/takuyaoikawa/2060554607/
|
||||
[10]:http://www.flickr.com/photos/cjsorg/2726088549/
|
@ -0,0 +1,127 @@
|
||||
如何拯救一台GRUB 2启动失败的Linux电脑
|
||||
================================================================================
|
||||

|
||||
|
||||
旧版GRUB我们使用了一段时间了,这个重要的Linux通用引导器的版本已经到了0.97。尽管旧版GRUB有很多的优点,但是它已经有点陈旧了,并且它的开发者也希望添加更多的功能,于是,GRUB 2 时代就要来了。
|
||||
|
||||
GRUB 2 做了几个明显的改进。它可以从移动存储设备上启动,并且可以通过配置一个选项来进入系统BIOS。相对于将所有的配置都放到一个配置文件`/boot/grub/menu.lst`中 (现在默认是`/boot/grub/grub.cfg `),使用各种脚本来配置会更复杂。你不要直接编辑这个文件,那不是人干的事,太复杂了,我们需要使用其它的脚本来改变。我们卑微的人类可以编辑修改`/etc/default/grub`文件,它主要是控制Grub菜单的外观。我们还可以修改` /etc/grub.d/ `下的脚本,这些脚本用于启动操作系统、控制外部应用程序,如memtest 、os_prober和theming等等 。`./boot/grub/grub.cfg`是由`/etc/default/grub`和`/etc/grub.d/*`生成的。当你修改了某个地方,你必须要运行update-grub命令来生成它。
|
||||
|
||||
好消息是,update-grub脚本可以可靠的检测内核、启动文件,并添加所有的操作系统,自动生成你的启动菜单,所以你不必手动的修改他们。
|
||||
|
||||
我们还要学习如何解决两个常见的故障。当启动系统时,它会停在grub>提示上,这是一个完整的GRUB 2命令界面,所以不要惊慌。这意味着GRUB 2依旧可以正常启动和加载normal.mod模块(它和其他模块分别位于/boot/grub/[架构]/ 下),但没有找到你的grub.cfg文件。如果你看到grub rescue> 这意味着它无法找到normal.mod,因此它有可能找不到你的启动文件。
|
||||
|
||||
这是如何发生的?因为内核可能改变驱动器分区号码的分配,或者您移动了您的硬盘驱动器,或者你手动改变一些分区,也有可能是安装一个新的操作系统或者移动一些文件。在这些情况下你的启动文件仍然存在,但GRUB不能找到他们。所以你可以在GRUB提示符中找到启动文件,设置它们的位置,然后启动您的系统并修复GRUB配置。
|
||||
|
||||
### GRUB 2 命令行 ###
|
||||
|
||||
GRUB 2 的命令界面和上一代GRUB中的一样强大。你可以用它来找到引导镜像,内核和根文件系统。事实上,它可以让你避开权限和其它访问控制,完全访问本地计算机上的所有文件。有些人可能会认为这是一个安全漏洞,但是你知道古老的UNIX的名言:有物理访问机器权限的人,就是拥有它的人。
|
||||
|
||||
当你在` grub > `提示时,你有许多类似命令行界面的功能,如命令历史和tab补全。但是`grub rescue> `模式是受限的,没有命令历史,没有tab补全。
|
||||
|
||||
如果你是在一个正常运作的系统上练习,那就当GRUB菜单出现时,可以按下C来打开GRUB命令行界面。你可以通过向上和向下光标键滚动你的菜单条目来停止启动倒计时。在GRUB命令行下做实验是安全的,因为做不了永久的修改,一切都是暂时的。如果你已经看到`grub > `或`grub rescue> `提示符,那就说明你的表现时刻到了。
|
||||
|
||||
接下来的几个命令可以在`grub>`和`grub rescue`模式下运行。你应该运行的第一个命令是设置一个分页器,将长的命令分页。如下:
|
||||
|
||||
grub> set pager=1
|
||||
|
||||
等号两侧必须不能出现空格。现在让我们做一点探索。输入`ls`来列出的GRUB识别的所有分区:
|
||||
|
||||
grub> ls
|
||||
(hd0) (hd0,msdos2) (hd0,msdos1)
|
||||
|
||||
msdos是什么?这意味着该系统具有老式的MS-DOS分区表,而不是全新的全局唯一标识符的分区表(GPT)。参见“[在Linux下使用新的GUID分区表,和古老的MBR说再见!][1]”。如果你正在运行的GPT,它会出现(hd0,GPT1)。现在让我们看看,使用ls命令查看你的系统里面有什么文件:
|
||||
|
||||
grub> ls (hd0,1)/
|
||||
lost+found/ bin/ boot/ cdrom/ dev/ etc/ home/ lib/
|
||||
lib64/ media/ mnt/ opt/ proc/ root/ run/ sbin/
|
||||
srv/ sys/ tmp/ usr/ var/ vmlinuz vmlinuz.old
|
||||
initrd.img initrd.img.old
|
||||
|
||||
太好了,我们已经找到了根文件系统。你可以省略msdos和GPT的标签。如果没有加分区后面的斜杠/,则只会列出分区的信息。你可以用cat命令显示文件系统上的任何文件:
|
||||
|
||||
grub> cat (hd0,1)/etc/issue
|
||||
Ubuntu 14.04 LTS \n \l
|
||||
|
||||
在一个多引导系统上,通过/etc/issue文件可以知道这是哪个Linux系统。
|
||||
|
||||
### 从 grub> 中启动###
|
||||
|
||||
下面讲述如何设置启动文件并从`grub >`提示下启动系统。我们已经知道如何从Linux根文件系统(hd0,1)下运行ls命令,你可以一直寻找直到找到你的/boot/grub所在位置。然后运行以下命令,记得使用您自己的根分区,内核和initrd映像等参数:
|
||||
|
||||
grub> set root=(hd0,1)
|
||||
grub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1
|
||||
grub> initrd /boot/initrd.img-3.13.0-29-generic
|
||||
grub> boot
|
||||
|
||||
第一行设置分区的根文件系统。第二行告诉GRUB您想要使用的内核位置。开始输入/boot/vmli,然后使用tab补完填写。输入`root= /dev/sdX`设置根文件系统位置。是的,这似乎是多余的,但如果你忘记了输入,你会得到一个kernel panic。你知道怎么找到正确的分区吗?hd0,1 即 /dev/sda1,hd1,1 即 /dev/sdb1,hd3,2 即 /dev/ sdd2。我想你可以自己推算剩下的了。
|
||||
|
||||
第三行设置initrd文件,必须是和内核相同的版本号。
|
||||
|
||||
最后一行启动系统。
|
||||
|
||||
在一些Linux系统上,内核和initrd是被符号链接到当前的根文件系统的根目录,就像:
|
||||
|
||||
$ ls -l /
|
||||
vmlinuz -> boot/vmlinuz-3.13.0-29-generic
|
||||
initrd.img -> boot/initrd.img-3.13.0-29-generic
|
||||
|
||||
所以,你也可以这样输入命令:
|
||||
|
||||
grub> set root=(hd0,1)
|
||||
grub> linux /vmlinuz root=/dev/sda1
|
||||
grub> initrd /initrd.img
|
||||
grub> boot
|
||||
|
||||
### 从grub rescue> 中启动 ###
|
||||
|
||||
如果你处在grub rescue> 命令界面下,命令有所不同,你必须要先加载两个模块normal.mod 和 linux.mod。
|
||||
|
||||
grub rescue> set prefix=(hd0,1)/boot/grub
|
||||
grub rescue> set root=(hd0,1)
|
||||
grub rescue> insmod normal
|
||||
grub rescue> normal
|
||||
grub rescue> insmod linux
|
||||
grub rescue> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1
|
||||
grub rescue> initrd /boot/initrd.img-3.13.0-29-generic
|
||||
grub rescue> boot
|
||||
|
||||
在你加载了这两个模块之后tab补完的功能就可以用了。
|
||||
|
||||
### 永久性的修复 ###
|
||||
|
||||
当你成功地启动你的系统,运行这些命令来永久修复GRUB:
|
||||
|
||||
# update-grub
|
||||
Generating grub configuration file ...
|
||||
Found background: /usr/share/images/grub/Apollo_17_The_Last_Moon_Shot_Edit1.tga
|
||||
Found background image: /usr/share/images/grub/Apollo_17_The_Last_Moon_Shot_Edit1.tga
|
||||
Found linux image: /boot/vmlinuz-3.13.0-29-generic
|
||||
Found initrd image: /boot/initrd.img-3.13.0-29-generic
|
||||
Found linux image: /boot/vmlinuz-3.13.0-27-generic
|
||||
Found initrd image: /boot/initrd.img-3.13.0-27-generic
|
||||
Found linux image: /boot/vmlinuz-3.13.0-24-generic
|
||||
Found initrd image: /boot/initrd.img-3.13.0-24-generic
|
||||
Found memtest86+ image: /boot/memtest86+.elf
|
||||
Found memtest86+ image: /boot/memtest86+.bin
|
||||
done
|
||||
# grub-install /dev/sda
|
||||
Installing for i386-pc platform.
|
||||
Installation finished. No error reported.
|
||||
|
||||
当你运行 `grub-install` 时,记得GRUB是安装到整个硬盘驱动器的主引导扇区而不是到一个具体分区,所以不要加上像/dev/sda1一样的分区号。
|
||||
|
||||
### 如果还是不能使用 ###
|
||||
|
||||
如果你的系统是如此的倒霉,而且这个方式没有能起作用,那就尝试[超级GRUB2现场救援磁盘][2]吧。[官方GNU GRUB手册][3]也应该有所帮助。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linux.com/learn/tutorials/776643-how-to-rescue-a-non-booting-grub-2-on-linux
|
||||
|
||||
译者:[MikeCoder](https://github.com/MikeCoder) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.linux.com/learn/tutorials/730440-using-the-new-guid-partition-table-in-linux-good-bye-ancient-mbr-
|
||||
[2]:http://www.supergrubdisk.org/
|
||||
[3]:https://www.gnu.org/software/grub/manual/grub.html
|
@ -1,16 +1,16 @@
|
||||
Linux截屏软件Shutter获得更新,修复bug,更换新图标
|
||||
Linux 截屏软件 Shutter
|
||||
================================================================================
|
||||

|
||||
|
||||
**[Shutter][1],是一款Linux平台下最受欢迎的截屏软件。最近的更新中,该软件修复了若干bug,并且使用了新的应用图标。**
|
||||
**[Shutter][1],是一款Linux平台下广受欢迎的截屏软件。最近的更新中,该软件修复了若干bug,并且使用了新的应用图标。**
|
||||
|
||||
这款开源并且功能强大的截屏工具可以让你选择桌面的任意区域、指定应用窗口或者整个屏幕区域来进行截屏。此外,你还可以添加注释、文本或者特效。
|
||||
|
||||
0.91版本修复了若干之前遗留的bug,包括在Ubuntu 14.04中缩略图无法正常地在应用切换栏中显示的问题。由于'imm.io'在今年早些停止服务,所以此次更新还取消了将截图上传到Pixlr图像服务的选项。
|
||||
0.91版本修复了若干明显的bug,包括在Ubuntu 14.04中缩略图无法正常地在应用切换栏中显示的问题。由于'imm.io'在今年早期停止了服务,所以此次更新还取消了将截图上传到Pixlr图像服务的选项。
|
||||
|
||||
最后,这次更新突出了由Lucas Romero Di Benedetto精心设计的百叶窗相机式的应用图标。
|
||||
最后,这次更新突出了由 Lucas Romero Di Benedetto 精心设计的相机快门式应用图标。
|
||||
|
||||

|
||||

|
||||
|
||||
### 在Ubuntu环境下安装Shutter 0.91版本 ###
|
||||
|
||||
@ -28,7 +28,7 @@ Linux截屏软件Shutter获得更新,修复bug,更换新图标
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/06/shutter-0-91-new-icon
|
||||
|
||||
译者:[JonathanKang](https://github.com/JonathanKang) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[JonathanKang](https://github.com/JonathanKang) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -2,9 +2,9 @@
|
||||
================================================================================
|
||||
[NeoBundle][1] 是一个 [Vim][2] 的插件管理器,以 [Vundle][3] 为基础(Vundle 是一个基于 [Pathogen][4] 的 Vim 插件管理器)。在之前的文章中,我[非常不推荐使用 Neobundle][5],原因是它当时还处于高速开发阶段(LCTT:意味着不稳定、变数大),并且当时它的英文文档很少。现在,已经过了一年多了,这两个问题都早已不再是问题。
|
||||
|
||||
我们为什么要使用插件管理器?Vim 支持大量插件,但是由于它没有严格定义框架,插件的文件可以胡乱分布在不同目录下,导致用户管理起来会很困难(LCTT:当然,前提是你有很多插件,还有点小小的强迫症,觉得理一理这些插件心里会舒服点)。而一款插件管理器能让管理变得简单许多。Pathogen, Vundle 和 NeoBundle 的工作就是为不同插件建立一个目录,然后将这些目录扔到 ~/.vim/bundle 目录下。这个文件整理方法可以让你方便彻底地删除插件,使用 'rm -rf <插件目录>' 或直接 'Ctrl + Del' 组合键把插件所在的目录删除就可以了,绝对绿色环保无残留。同时,这种方法还能最大程度避免插件与插件之间的不兼容性。
|
||||
我们为什么要使用插件管理器?Vim 支持大量插件,但是由于它没有严格定义框架,插件的文件可以胡乱分布在不同目录下,导致用户管理起来会很困难(LCTT:当然,前提是你有很多插件,还有点小小的强迫症,觉得理一理这些插件心里会舒服点)。而一款插件管理器能让管理变得简单许多。Pathogen, Vundle 和 NeoBundle 的工作就是为不同插件建立一个目录,然后将这些目录扔到 ~/.vim/bundle 目录下。这个文件整理方法可以让你方便彻底地删除插件,使用 'rm -rf <插件目录>' 或直接在文件管理器里面把插件所在的目录删除就可以了,绝对绿色环保无残留。同时,这种方法还能最大程度避免插件与插件之间的不兼容性。
|
||||
|
||||
NeoBundle 是一个基于 Vundle 的项目,如同 Vundle,它们都可以安装和升级插件。然而 NeoBundle 的说明文件上明确指出:“NeoBundle 不是一个稳定的插件管理器,如果你想要一个稳定的,请选择 Vundle”。最新的 release-note 上也有警“可能会造成兼容性问题”——这是一个开发者写的注解,说明这个管理器还不能让人放心使用。
|
||||
NeoBundle 是一个基于 Vundle 的项目,如同 Vundle,它们都可以安装和升级插件。然而 NeoBundle 的说明文件上明确指出:“NeoBundle 不是一个稳定的插件管理器,如果你想要一个稳定的,请选择 Vundle”。最新的 release-note 上也有警告“可能会造成兼容性问题”——这是一个开发者写的注解,说明这个管理器还不能让人放心使用。
|
||||
|
||||
所以,我们为什么要使用 NeoBundle?它都不能保证稳定运行!好吧,它还是有可取之处的。Vundle 只支持 [Git][6] 这种版本控制系统,而 NeoBundle 可以支持 [Subversion][7] 和 [Mercurial][8]。另一个原因是如果你不想插件升级时破坏你的 Vim 生态环境,你可以锁住 NeoBundle,让它只使用某个插件的固定版本。
|
||||
|
||||
@ -12,11 +12,11 @@ NeoBundle 是一个基于 Vundle 的项目,如同 Vundle,它们都可以安
|
||||
|
||||
### 安装并初始化 NeoBundle ###
|
||||
|
||||
NeoBundle 依赖 Vim 7.2.051 或更高版本,依赖 git,依赖 [cURL][12](用于下载文件)。你可以手动下载 NeoBundle,也可以使用 cURL 下载它在 GitHub 上的库。在你的 home 目录下使用如下命令,可以将 NeoBundle 插件下载到 .vim/bundle/neobundle.vim 目录里,然后 NeoBundle 就能管理它自己了。
|
||||
NeoBundle 支持 Vim 7.2.051 或更高版本,需要 git 和 [cURL][12](用于下载文件)。你可以手动下载 NeoBundle,也可以使用 cURL 下载它在 GitHub 上的库。在你的 home 目录下使用如下命令,可以将 NeoBundle 插件下载到 .vim/bundle/neobundle.vim 目录里,然后 NeoBundle 就能管理它自己了。
|
||||
|
||||
curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh | sh
|
||||
|
||||
你还需要修改 .vimrc 文件。NeoBundle 的 GitHub 主页提供一个 .vimrc 范本,使用这个范本后,NeoBundle 会为你下载5个插件。如果不需要它们,你可以使用下面的最小配置:
|
||||
你还需要修改 .vimrc 文件。NeoBundle 的 GitHub 主页提供一个 .vimrc 范本,但是直接使用这个范本,NeoBundle 需要你安装5个可能不需要插件。如果不需要它们,你可以使用下面的最小配置:
|
||||
|
||||
if has('vim_starting')
|
||||
set nocompatible
|
||||
@ -40,17 +40,17 @@ NeoBundle 依赖 Vim 7.2.051 或更高版本,依赖 git,依赖 [cURL][12](
|
||||
|
||||
NeoBundle 'tpope/vim-abolish'
|
||||
|
||||
再介绍一个小技巧:你可以为插件指定一个分支或版本号。什么意思?NeoBundle 只会关注这个插件的某个分支或版本的更新,而忽略其他更新。如果你使用的某个插件处于高速开发过程,你就可以使用这个技巧,避免用到有 bug 的插件版本。举个例子:
|
||||
再介绍一个小技巧:你可以为插件指定一个分支或版本号。什么意思?NeoBundle 只会使用这个插件的某个分支或版本,而忽略其版本更新。如果你使用的某个插件处于高速开发过程,你就可以使用这个技巧,避免用到有 bug 的插件版本。举个例子:
|
||||
|
||||
NeoBundle 'Shougo/vimshell', { 'rev' : '3787e5' }
|
||||
|
||||
还有一个技巧:在 .vimtc 文件内添加一行关于“NeoBundleCheck”的属性。NeoBundle 会检查被卸载的插件,并提示你安装它们。你也可以使用命令“:NeoBundleInstall”(LCTT:这是要在 Vim 编辑器的命令模式下输入)来安装或升级插件。
|
||||
还有一个技巧:在 .vimtc 文件内添加一行关于“NeoBundleCheck”的属性。NeoBundle 会根据配置检查没安装的插件,并提示你安装它们。你也可以使用命令“:NeoBundleInstall”(LCTT:这是要在 Vim 编辑器的命令模式下输入)来安装或升级插件。
|
||||
|
||||
### NeoBundle 用法 ###
|
||||
|
||||
很多 NeoBundle 命令用起来和 Vundle 类似,但命令的名字不一样。下面是 NeoBundle 命令的用法:
|
||||
|
||||
- `:NeoBundleUpdate`:安装或升级插件,如果你手动把一个插件的目录删除了,这个命令会重新安装这个插件。在这个命令后面加上插件名称,就只升级一个插件;不加参数,会将所有己安装但没被记录在案的插件给记录下来。“:NeoBundleInstall”命令效果相同。
|
||||
- `:NeoBundleUpdate`:安装或升级插件,如果你手动把一个插件的目录删除了,这个命令会重新安装这个插件。在这个命令后面加上插件名称,就只升级一个插件;不加参数,会将所有己安装但没被记录在案的插件给记录下来。`:NeoBundleInstall` 命令效果相同。
|
||||
- `:NeoBundle {REPOSITORY URI} [[REVISION}] [,OPTIONS}]]`:将一个插件锁定到固定版本,防止胡乱升级。
|
||||
- `:NeoBundleList`:列出所有未初始化的插件。
|
||||
- `:NeoBundleClean`:进入交互界面,删除插件。
|
||||
@ -59,7 +59,7 @@ NeoBundle 依赖 Vim 7.2.051 或更高版本,依赖 git,依赖 [cURL][12](
|
||||
|
||||
### 是否使用 NeoBundle,自己决定 ###
|
||||
|
||||
NeoBundle 是强大的工具,正处于高速开发状态。任何处于这种状态的项目,都会被帖上“有前途”和“不稳定”两个标签,看你自己怎么选。如果你想要最新的稳定版本的插件,NeoBundle 可以让 Vundle 和 Pathogen 永远保持在老界面。
|
||||
NeoBundle 是强大的工具,正处于高速开发状态。任何处于这种状态的项目,都会被帖上“有前途”和“不稳定”两个标签,看你自己怎么选。如果你想要最新的稳定版本的插件,NeoBundle 能够把 Vundle 和 Pathogen 甩出几条街。
|
||||
|
||||
然而在线帮助文档已经给出警告,它不是个稳定的产品,不及时更新版本可能造成一些插件运行出错。最后,你需要在 .vimrc 文件为你的 Neoundle 和其他插件指定一个稳定的版本。记住这警告,然后你可以在使用这些尖端技术产品时游刃有余。
|
||||
|
||||
@ -67,7 +67,7 @@ NeoBundle 是强大的工具,正处于高速开发状态。任何处于这种
|
||||
|
||||
via: http://www.openlogic.com/wazi/bid/348084/Managing-Vim-extensions-with-NeoBundle
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,4 +1,4 @@
|
||||
查看Linux硬盘分区和磁盘空间的9个命令
|
||||
Linux下掌控磁盘分区的九大神器
|
||||
================================================================================
|
||||
|
||||
在这篇文章中,我们来了解一些用来检查你的系统分区的一些命令,这些命令将检查每个磁盘的分区情况和其它细节,例如总空间容量,已用完的空间和文件系统等。
|
||||
@ -7,7 +7,7 @@
|
||||
|
||||
### 1. fdisk ###
|
||||
|
||||
Fdisk是检查磁盘上分区的最常用命令,fdisk命令可以显示分区和细节,如文件系统类型,但是它并不报告每个分区的大小。
|
||||
Fdisk是检查磁盘上分区的最常用命令,fdisk命令可以显示分区和细节,如文件系统类型,但是它并不报告每个分区的字节大小。
|
||||
|
||||
$ sudo fdisk -l
|
||||
|
||||
@ -36,7 +36,7 @@ Fdisk是检查磁盘上分区的最常用命令,fdisk命令可以显示分区
|
||||
Device Boot Start End Blocks Id System
|
||||
/dev/sdb1 * 2048 7907327 3952640 b W95 FAT32
|
||||
|
||||
单独显示了每个设备的详细信息:大小,秒,ID和单个分区。
|
||||
每个设备都单独显示其详细信息:容量大小,扇区数,设备ID及其包含的每个分区。
|
||||
|
||||
### 2. sfdisk ###
|
||||
|
||||
@ -81,13 +81,14 @@ Cfdisk是一个基于ncurses(提供字符终端处理库,包括面板和菜
|
||||
|
||||

|
||||
|
||||
Cfdisk一次只能列出一个分区,所以如果你需要看某一磁盘的细节,可以把设备名传给Cfdisk。
|
||||
Cfdisk一次只能列出一个分区,所以如果你需要看某一磁盘的细节,可以把该磁盘的设备名作为Cfdisk的参数。
|
||||
|
||||
$ sudo cfdisk /dev/sdb
|
||||
|
||||
### 4. parted ###
|
||||
|
||||
Parted是另一个命令行实用程序用来列出分区,如果需要的话,也可进行修改。
|
||||
Parted是另一个命令行实用程序,可以列出分区;如果需要的话,也可进行修改。
|
||||
|
||||
下面是一个例子,列出了详细的分区信息。
|
||||
|
||||
$ sudo parted -l
|
||||
@ -131,9 +132,9 @@ Df是不是一个分区工具,但它打印出挂装文件系统的细节,Df
|
||||
/dev/sda8 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1
|
||||
/dev/sda5 98G 37G 62G 38% /media/4668484A68483B47
|
||||
|
||||
文件系统只有以 /dev 开始的,是实际设备或分区。
|
||||
只有以 /dev 开始的文件系统才是实际的设备或分区。
|
||||
|
||||
使用grep命令来筛选出实际的硬盘分区或文件系统。
|
||||
可以使用grep命令来筛选出实际的硬盘分区或文件系统。
|
||||
|
||||
$ df -h | grep ^/dev
|
||||
/dev/sda6 97G 43G 49G 48% /
|
||||
@ -152,7 +153,7 @@ Df是不是一个分区工具,但它打印出挂装文件系统的细节,Df
|
||||
|
||||
### 6. pydf ###
|
||||
|
||||
它是用Python写的Df的改进版本,以一个方便阅读的方式打印出所有磁盘分区。
|
||||
它是用Python写的Df的改进版本,以易读的方式打印出所有磁盘分区。
|
||||
|
||||
$ pydf
|
||||
Filesystem Size Used Avail Use% Mounted on
|
||||
@ -160,13 +161,13 @@ Df是不是一个分区工具,但它打印出挂装文件系统的细节,Df
|
||||
/dev/sda8 195G 153G 32G 78.4 [#######..] /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1
|
||||
/dev/sda5 98G 36G 61G 37.1 [###......] /media/4668484A68483B47
|
||||
|
||||
另外,pydf限制为仅显示已挂载的文件系统
|
||||
另外,pydf被限制为仅显示已挂载的文件系统。
|
||||
|
||||
### 7. lsblk ###
|
||||
|
||||
列出了所有的存储块,包括磁盘分区和光盘驱动器。细节包括所有分区/块总大小和挂载点。
|
||||
列出了所有的块存储设备,包括磁盘分区和光盘驱动器。细节包括所有分区/块总大小和挂载点。
|
||||
|
||||
不报告分区上的已使用和空闲磁盘空间。
|
||||
它不会报告分区上的已使用和空闲磁盘空间。
|
||||
|
||||
$ lsblk
|
||||
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
||||
@ -182,13 +183,13 @@ Df是不是一个分区工具,但它打印出挂装文件系统的细节,Df
|
||||
sr0 11:0 1 1024M 0 rom
|
||||
|
||||
|
||||
如果没有挂载点,这就意味着文件系统未安装,对于cd/dvd这意味着没有磁盘。
|
||||
如果没有挂载点,这就意味着文件系统未安装,而对于cd/dvd这意味着没有插入光盘。
|
||||
|
||||
lsblk能够显示每个设备的更多信息,如标签和模型,更多请查看信息手册。
|
||||
lsblk能够显示每个设备的更多信息,如标签和型号,更多请查看信息手册。
|
||||
|
||||
### 8. blkid ###
|
||||
|
||||
打印块设备(分区和存储介质)属性,例如UUID和文件系统类型,不报告分区空间。
|
||||
显示块设备(分区和存储介质)属性,例如UUID和文件系统类型,不报告分区空间。
|
||||
|
||||
$ sudo blkid
|
||||
/dev/sda1: UUID="5E38BE8B38BE6227" TYPE="ntfs"
|
||||
@ -219,9 +220,9 @@ hwinfo是一个通用的硬件信息的工具,可以用来打印出磁盘和
|
||||
|
||||
### 总结 ###
|
||||
|
||||
parted的输出可以得到简洁而完整的不同分区的概述、上面的文件系统以及总空间。pydf和df被限制为只显示和它们一样的已挂载的文件系统。
|
||||
parted的输出可以得到简洁而完整的不同分区的概述、其上的文件系统以及总空间。pydf和df它们一样,只是被限制为只显示已挂载文件系统。
|
||||
|
||||
fdisk和sfdisk显示完整大量的信息,需要花些时间来解释。cfdisk是一个互动的分区工具,每次显示一个单一的设备。
|
||||
fdisk和sfdisk显示完整大量的信息,需要花些时间来解释。cfdisk是一个交互式分区工具,每次显示一个单一的设备。
|
||||
|
||||
来尝试下这些命令吧,别忘了在下面评论哟!
|
||||
|
@ -1,8 +1,8 @@
|
||||
Zukimac 主题使 Ubuntu 14.04 桌面变成 Mac 桌面
|
||||
在 Ubuntu 上体验 Mac 风格
|
||||
================================================================================
|
||||

|
||||
|
||||
虽然 Ubuntu Unity 本身已经是一款很漂亮的桌面了,但世界各地还是有很人被 Mac OS X 的外观所震撼。如果您恰好是其中之一,为了获得 OS X 的主题,是不需要换掉 Ubuntu 的,相反,您可以对它来个美化改造,**使 Ubuntu 14.04 看起来就像 Mac OS X**。
|
||||
虽然 Ubuntu Unity 本身已经是一款很漂亮的桌面了,但世界各地还是有很人被 Mac OS X 的外观所震撼。如果您恰好是其中之一,要获得 Mac OS X 一样外观体验,是不需要丢掉 Ubuntu 的,相反,您可以对它来个美化改造,**使 Ubuntu 14.04 看起来就像 Mac OS X**。
|
||||
|
||||
### 让 Ubuntu 14.04 看起来像 Mac OS X ###
|
||||
|
||||
@ -12,11 +12,11 @@ Zukimac 主题使 Ubuntu 14.04 桌面变成 Mac 桌面
|
||||
- 解压下载的 Zip 包,解压后会出现 Zukimac 和 Zukimac-ml 两个目录文件。把这些目录拷贝到您的 home 目录下的 .themes 文件夹中。进入 Home 目录中,按下快捷键 Ctrl+H 可以显示所有隐藏的文件,如果没有 .themes 文件夹,需要创建一个。
|
||||
- 使用 [Unity Tweak Tool 来改变主题][2].
|
||||
|
||||
就这些操作。Zukimac 提供了一些基本的 Mac OS 系统的外观和视窗感觉。下面是带有默认的 OS X MaVeric 壁纸的外观。
|
||||
就这些操作。Zukimac 提供了一些基本的 Mac OS 系统的外观和视窗感觉。下面是带有默认的 OS X Maveric 壁纸的外观。
|
||||
|
||||

|
||||
|
||||
### Ubuntu 14.04 中获得 Mac 感觉更多的调整###
|
||||
### Ubuntu 14.04 中获得更多 Mac 体验 ###
|
||||
|
||||
通常,您可以**安装像 Plank 或 Docky 这样的 dock 启动面板**。在 Ubuntu 14.04 中要安装 Plank 可以使用下面的命令:
|
||||
|
||||
@ -42,7 +42,7 @@ Zukimac 主题使 Ubuntu 14.04 桌面变成 Mac 桌面
|
||||
|
||||
via: http://itsfoss.com/ubuntu-1404-mac-zukimac-theme/
|
||||
|
||||
译者:[runningwater](https://github.com/runningwater) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[runningwater](https://github.com/runningwater) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,12 +1,12 @@
|
||||
安装Linux Mint 17 Qiana Cinnamon后要做的20件事
|
||||
安装Linux Mint 17后要做的20件事
|
||||
================================================================================
|
||||
### Linux Mint 17 Qiana Cinnamon ###
|
||||
|
||||
Linux Mint 17已经[发布][1],定名为Qiana。Mint是Linux最佳发行版之一,它定位于桌面用户,关注可用性和简洁。它携带了风格迥异的桌面环境,如Mate以及Cinnamon,并基于不同的发行版,如Ubuntu或Debian。
|
||||
|
||||
在本文中,我们使用的是Linux Mint 17的cinnamon版本。要获取更多关于Cinnamon版本的信息(包括下载链接),可以访问 - [http://blog.linuxmint.com/?p=2626][2]
|
||||
在本文中,我们使用的是Linux Mint 17的cinnamon版本。要获取更多关于Cinnamon版本的信息(包括下载链接),可以访问 - http://linux.cn/article-3260-1.html
|
||||
|
||||
下载适合你系统的正确的iso,烧录成dvd,或者也可以制作成usb启动盘来启动。安装完毕了,是时候来使用一些优化工具和基本应用程序来优化系统性能和体验,让你系统激情澎湃吧!
|
||||
下载适合你系统的正确的iso,烧录成dvd,或者也可以制作成usb启动盘来启动。安装完毕,是时候来使用一些优化工具和基本应用程序来优化系统性能和体验,让你系统激情澎湃吧!
|
||||
|
||||
### 1. 更新系统 ###
|
||||
|
||||
@ -34,6 +34,7 @@ Chronium浏览器可以在仓库中获取。
|
||||
$ sudo apt-get install chromium-browser
|
||||
|
||||
至于Google Chrome,请访问google.com/chrome下载deb包,并使用gdebi来安装。
|
||||
|
||||
# 64 位
|
||||
$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
|
||||
$ sudo gdebi google-chrome-stable_current_amd64.deb
|
||||
@ -46,7 +47,7 @@ Chronium浏览器可以在仓库中获取。
|
||||
|
||||
Mint上默认安装adobe flash插件包(adobe-flashplugin),因此,你可以在Firefox中畅玩flash游戏,也可以尽情享受网页版视频了。
|
||||
|
||||
Google Chrome现在使用了基于flash player的Pepper API,而且该插件也内建于Chrome中,因此,你也不需要为它做任何事情了。
|
||||
Google Chrome现在使用了基于flash player的Pepper API,而且该插件也内建于Chrome中,因此,你也不需要为它额外做任何事情了。
|
||||
|
||||
然而对于Chronium,基于flash player的Pepper没有被囊括进来(因为它不是个自由组件),所以你需要手动安装了。
|
||||
|
||||
@ -71,11 +72,11 @@ Google Chrome现在使用了基于flash player的Pepper API,而且该插件也
|
||||
|
||||
### 6. 安装专有驱动 ###
|
||||
|
||||
如果你有一张英伟达或者ati的图形卡,或者broadcom的无线网卡,那么请安装厂商提供的专有驱动,这些驱动会为你带来最佳的硬件性能。
|
||||
如果你有一张Nvidia或者ati的图形卡,或者broadcom的无线网卡,那么请安装厂商提供的专有驱动,这些驱动会为你带来最佳的硬件性能。
|
||||
|
||||
要安装英伟达驱动,你可以参照先前的这篇文章
|
||||
要安装Nvidia驱动,你可以参照先前的这篇文章
|
||||
|
||||
如何在Linux Mint上安装最新的Nvidia驱动
|
||||
[如何在Linux Mint上安装最新的Nvidia驱动][3]
|
||||
|
||||
### 7. 安装Dropbox ###
|
||||
|
||||
@ -83,7 +84,7 @@ Linux mint仓库已经提供了dropbox的客户端软件包,所以你不必满
|
||||
|
||||
$ sudo apt-get install dropbox python-gpgme
|
||||
|
||||
如果你还是比较喜欢从官方网站下载,那么出门可直达[https://www.dropbox.com/install?os=lnx][4],请遵照说明下载用于Ubuntu的deb安装包。
|
||||
如果你还是比较喜欢从官方网站下载,那么翻墙可直达[https://www.dropbox.com/install?os=lnx][4],请遵照说明下载用于Ubuntu的deb安装包。(LCTT译注:墙内用户还是忽视此条吧。)
|
||||
|
||||
Copy是另外一个云存储解决方案,它也有本地Linux客户端。详情可查阅[copy.com][5],它也有[ppa仓库][6]。
|
||||
|
||||
@ -95,7 +96,7 @@ Skype可以在Ubuntu canonical合作仓库中找到。
|
||||
|
||||
### 9. 安装rar和其它归档工具 ###
|
||||
|
||||
要想在Nemo这样的文件管理器中通过上下文菜单创建rar归档,请安装rar工具。安装rar的同时,请安装其它几个包以增加对其它归档格式的支持。
|
||||
要想在Nemo这样的文件管理器中通过上下文菜单创建rar归档,请安装rar工具。安装rar的同时,也可安装其它几个包以增加对其它归档格式的支持。
|
||||
|
||||
$ sudo apt-get install unace p7zip-rar sharutils rar arj lunzip lzip
|
||||
|
||||
@ -109,15 +110,13 @@ Diodon在cinnamon桌面上似乎存在一些问题,在历史列表增长时会
|
||||
# 或者
|
||||
$ sudo apt-get install clipit
|
||||
|
||||
然后,你可以从应用程序菜单中启动它们,它们应该会在你每次登陆时启动。
|
||||
然后,你可以从应用程序菜单中启动它们,它们应该会在你每次登录时启动。
|
||||
|
||||
### 11. 优化桌面 ###
|
||||
|
||||
#### 1. 修复系统托盘上的日期格式 ####
|
||||
|
||||
在底部面板右边的时间小程序只显示了时间,它也可以设置显示日期。右击底部面板右边的日期-时间小程序,然后点击配置
|
||||
Check the box labelled "Use a custom date format" and fill in
|
||||
选中标有“使用自定义日期格式”的选框,然后填入
|
||||
在底部面板右边的时间小程序只显示了时间,它也可以设置显示日期。右击底部面板右边的日期-时间小程序,然后点击配置,选中标有“使用自定义日期格式”的选框,然后填入
|
||||
|
||||
%B %e, %I:%M %p
|
||||
|
||||
@ -133,12 +132,11 @@ Check the box labelled "Use a custom date format" and fill in
|
||||
|
||||
你也许注意到,Firefox默认选择了Yahoo搜索引擎,而搜索引擎列表中并没有Google。点击“管理搜索引擎” > 获取更多搜索引擎,它会带你去[http://www.linuxmint.com/searchengines.php][7]。
|
||||
|
||||
向下拉动滚动条到商业搜索引擎部分,找到并点击Google图标。进入下一页后,再次点击搜索引擎列表,而这次你会看到“添加Google”选项,点击它就可以用上Google搜索了。
|
||||
向下拉动滚动条到商业搜索引擎部分,找到并点击Google图标。进入下一页后,再次点击搜索引擎列表,而这次你会看到“添加Google”选项,点击它就可以用上Google搜索了。(LCTT译注:墙内用户也请忽略此条。怒!)
|
||||
|
||||
### 12. 优化字体渲染 ###
|
||||
|
||||
Linux mint默认使用Dejavu Sans字体,它看起来真普通啊。你可以使用Droid和Noto字体获得好看得多视觉享受。请参照我们先前的教程,它会一步一步带你渐入佳境。
|
||||
[如何在Linux Mint上获得华丽好看的字体][8]
|
||||
Linux mint默认使用Dejavu Sans字体,它看起来真普通啊。你可以使用Droid和Noto字体获得好看得多视觉享受。请参照我们先前的教程,它会一步一步带你渐入佳境。[如何在Linux Mint上获得华丽好看的字体][8]
|
||||
|
||||
### 13. Guake下拉终端 ###
|
||||
|
||||
@ -172,7 +170,7 @@ Linux Mint自带了Transmission,这是个简洁而高效的torrent客户端。
|
||||
|
||||
### 16. Hardinfo - 系统信息工具 ###
|
||||
|
||||
Hardinfo是一个十分便利的gui工具,它可以用来报告大量完整的系统硬件信息。你可以通过它来集中查看处理器、内存、存储设备、网络配置、打印机、usb设备、声音/视频适配器等等信息。它具有测试和评估系统性能的功能。
|
||||
Hardinfo是一个十分便利的GUI工具,它可以用来报告大量完整的系统硬件信息。你可以通过它来集中查看处理器、内存、存储设备、网络配置、打印机、usb设备、声音/视频适配器等等信息。它具有测试和评估系统性能的功能。
|
||||
|
||||
$ sudo apt-get install hardinfo
|
||||
|
||||
@ -236,31 +234,33 @@ Linux确实有一些酷爽的游戏,很具娱乐性,而且是免费的。注
|
||||
#### 为Google Chrome/Chronium提供Java小程序支持 ####
|
||||
|
||||
默认情况下已经安装了"icedtea-plugin",用以为firefox提供java小程序支持。
|
||||
|
||||
然而,Chrome和Chronium却不再支持基于NPAPI的插件。因此java小程序,在没有获得基于Pepper api的java插件前,java小程序是不能在这些浏览器中工作的。要查看更多信息,请往[这里][9]。
|
||||
|
||||
#### 更多应用程序 ####
|
||||
|
||||
如果你正在为你的Mint盒子寻找更多的应用程序,那么这里列出了一部分更好的应用程序,所有这些都可以在软件管理器中安装。
|
||||
Opera - 网页浏览器
|
||||
Gnome Encfs Manager - 管理使用Encfs加密的文件和文件夹
|
||||
Smplayer - 多媒体播放器
|
||||
Rhythmbox, Clementine - 音乐播放器
|
||||
Openshot, Kdenlive - 视频编辑器
|
||||
Audacity - 音频编辑器
|
||||
Inkscape - 图形和图像编辑
|
||||
Gparted - 分区编辑器
|
||||
Gufw - 防火墙配置工具
|
||||
qBittorrent, Vuze - Torrent客户端
|
||||
Gwenview - 图像浏览
|
||||
Team viewer - 远程桌面
|
||||
Tv-maxe - 查看电视频道
|
||||
Grub Customizer - 修改GRUB启动菜单设置
|
||||
Linrunner TLP - 电源管理工具,对笔记本节电很有用
|
||||
Virtualbox - 虚拟化
|
||||
Kazam, recordMyDesktop - 桌面录像/演示
|
||||
Bleachbit - 通过删除旧的/临时文件释放磁盘空间
|
||||
Cheese - 使用网络摄像头拍照
|
||||
Shutter - 带有众多功能的屏幕截图工具
|
||||
|
||||
* Opera - 网页浏览器
|
||||
* Gnome Encfs Manager - 管理使用Encfs加密的文件和文件夹
|
||||
* Smplayer - 多媒体播放器
|
||||
* Rhythmbox, Clementine - 音乐播放器
|
||||
* Openshot, Kdenlive - 视频编辑器
|
||||
* Audacity - 音频编辑器
|
||||
* Inkscape - 图形和图像编辑
|
||||
* Gparted - 分区编辑器
|
||||
* Gufw - 防火墙配置工具
|
||||
* qBittorrent, Vuze - Torrent客户端
|
||||
* Gwenview - 图像浏览
|
||||
* Team viewer - 远程桌面
|
||||
* Tv-maxe - 查看电视频道
|
||||
* Grub Customizer - 修改GRUB启动菜单设置
|
||||
* Linrunner TLP - 电源管理工具,对笔记本节电很有用
|
||||
* Virtualbox - 虚拟化
|
||||
* Kazam, recordMyDesktop - 桌面录像/演示
|
||||
* Bleachbit - 通过删除旧的/临时文件释放磁盘空间
|
||||
* Cheese - 使用网络摄像头拍照
|
||||
* Shutter - 带有众多功能的屏幕截图工具
|
||||
|
||||
那么,请选择你喜欢的那些,并尽情享受Linux Mint吧!!
|
||||
|
||||
@ -279,7 +279,7 @@ Linux Mint论坛
|
||||
|
||||
via: http://www.binarytides.com/better-linux-mint-17-cinnamon/
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,11 +1,9 @@
|
||||
CNprober 翻译完成... 619913541
|
||||
|
||||
10招让你的Git技能提升一个台阶
|
||||
已经会用Git了?不会这十招怎么行
|
||||
================================================================================
|
||||
|
||||
之前我们发了一些教程让你熟悉[Git基础][1]和[在团队合作环境中使用Git][2].我们讨论的这些Git命令足够让一个开发者在Git的世界里生存下去。在这篇教程里,我们试着探索如何高效地管理你的时间以及如何充分利用Git提供的特性。
|
||||
|
||||
> 注意:这里介绍的命令中有的包含方括号(例如:`git add -p [file_name]`)。在这些例子中,你应该用你自己的数字,标识符等替代方括号里的内容,并且去掉方括号。
|
||||
> 注意:这里介绍的命令中有的包含方括号(例如:`git add -p [file_name]`)。在这些例子中,你应该用你自己的数字、标识符等替代方括号里的内容,并且去掉方括号。
|
||||
|
||||
### 1. Git自动补全 ###
|
||||
|
||||
@ -62,7 +60,7 @@ CNprober 翻译完成... 619913541
|
||||
|
||||
假设你提交了一些不需要的东西,然后你进行了hard重置回到之前的状态。后来,你发现在这个过程中你丢失了其他一些重要的信息,你想要把这些信息找回来,或者至少可以查看一下这些信息。这就需要`git reflog`帮忙。
|
||||
|
||||
简单的`git log`只能告诉你最近的提交,这个提交的父提交,父提交的父提交,等等。但是`git reflog`是一个HEAD指向的提交的列表。记住,这个列表依赖于你自己的操作环境,它不是库的一部分,也不包含在push或者merge中。
|
||||
简单的`git log`只能告诉你最近的提交,这个提交的父提交,父提交的父提交,等等。但是`git reflog`是一个HEAD指向的提交的列表。记住,这个列表依赖于你自己的本地操作环境,它不是库的一部分,也不包含在push或者merge中。
|
||||
|
||||
如果执行`git log`命令,可以看到提交历史,这是我的库的一部分:
|
||||
|
||||
@ -74,7 +72,7 @@ CNprober 翻译完成... 619913541
|
||||
|
||||
### 6. 暂存文件的一部分更改以便进行一次提交 ###
|
||||
|
||||
通常依据特性来提交是一个好的实践方法,意思是说,每一个提交都只添加一个特性或者修复一个bug。想一下如果你一次修复了两个bug或者添加了两个特性但是都还没有提交该怎么办。这种场景下,你可以将他们一起提交。但是有一个更好的办法:单独暂存这些文件,然后分开提交。
|
||||
通常依据特性来提交是一个好的实践方法,意思是说,每一个提交都只添加一个特性或者修复一个bug。想一下如果你一次修复了两个bug或者添加了两个特性但是都还没有逐个提交该怎么办。这种场景下,你可以将他们一起提交。但是有一个更好的办法:单独暂存这些文件,然后分开提交。
|
||||
|
||||
让我们假设你对一个文件做了多个更改,然后想让这些更改分开提交。这时,我们用带`-p`的添加命令。
|
||||
|
||||
@ -88,7 +86,7 @@ CNprober 翻译完成... 619913541
|
||||
|
||||

|
||||
|
||||
似乎Git认为所有的更改都是同一个目的的一部分,所以把他们分组到同一个块里。这时,你可以:
|
||||
看起来Git认为所有的更改都是同一个目的的一部分,所以把他们分组到同一个块里。这时,你可以:
|
||||
|
||||
- 输入 y 暂存块
|
||||
- 输入 n 不暂存块
|
||||
@ -100,13 +98,13 @@ CNprober 翻译完成... 619913541
|
||||
|
||||

|
||||
|
||||
如你所见,我们已经添加了第1和第3行,忽略了第2行。你可以看到库的状态并且进行一次提交。
|
||||
如你所见,我们已经逐个添加了第1和第3行,忽略了第2行。你可以看到库的状态并且进行一次提交。
|
||||
|
||||

|
||||
|
||||
### 7. 合并多个提交 ###
|
||||
|
||||
为了进行核查或者发起一个合并请求(这经常发生在开源项目里),对代码进行了修改提交。但在最后代码被接受之前,你也许会被要求修改你的代码。于是你修改代码,但是下一次核查的时候又一次被要求进行修改。不知不觉中,你就已经有了好几个提交。理论上你应该用rebase命令把他们合并起来。
|
||||
为了进行核查或者发起一个合并请求(这经常发生在开源项目里),对代码进行了修改提交。但在最后代码被接受之前,你也许会需要修改你的代码。于是你修改代码,但是下一次核查的时候又一次需要进行修改。不知不觉中,你就已经有了好几个提交。理论上你应该用rebase命令把他们合并起来。
|
||||
|
||||
git rebase -i HEAD~[number_of_commits]
|
||||
|
||||
@ -118,7 +116,7 @@ CNprober 翻译完成... 619913541
|
||||
|
||||

|
||||
|
||||
接着你被要求提供一个对新提交的说明。这个过程会重写你的提交历史。
|
||||
接着你应该提供一个对新提交的说明。这个过程会重写你的提交历史。
|
||||
|
||||

|
||||
|
||||
@ -182,7 +180,7 @@ CNprober 翻译完成... 619913541
|
||||
|
||||
via: http://www.sitepoint.com/10-tips-git-next-level/
|
||||
|
||||
译者:[love_daisy_love](https://github.com/CNprober) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[love\_daisy\_love](https://github.com/CNprober) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,97 @@
|
||||
Linux 目录导航技巧
|
||||
================================================================================
|
||||
|
||||
目录当行是命令行系统的基础概念.虽然不是什么难以理解的东西,但是知道一些技巧能够丰富你的经验并且提高工作效率.在这篇文章中,我们会讨论这些小技巧。
|
||||
|
||||
### 我们已经知道的东西 ###
|
||||
|
||||
在开始高级技巧之前,有一些必须知道的基本命令:
|
||||
|
||||
- ‘pwd’显示当前目录
|
||||
- ‘cd’ 改变当前目录
|
||||
- ‘cd’ 跟两个点(cd ..)能返回父目录
|
||||
- ‘cd’ 跟着相对目录就能直接切换当相对目录下
|
||||
- ‘cd’ 跟着绝对目录就能切换到绝对目录下
|
||||
|
||||
### 高阶技巧 ###
|
||||
|
||||
这节将介绍几个技巧方便你进行目录的切换
|
||||
|
||||
### 从任何地方回到home目录 ###
|
||||
|
||||
虽然使用‘cd /home/<你的主目录>’, 不是什么大麻烦, 但是有一种方法直接打‘cd’ 就能回到你的主目录.
|
||||
|
||||
例子:
|
||||
|
||||
$ pwd
|
||||
/usr/include/netipx
|
||||
$ cd
|
||||
$ pwd
|
||||
/home/himanshu
|
||||
|
||||
所以无论你在哪个目录下,都能这么干,然后回到home目录。
|
||||
|
||||
**注意**- 如果要切换到某个其它的指定用户的目录下, 就使用 ‘cd ~user_name'
|
||||
|
||||
### 用cd - 在目录间切换 ###
|
||||
|
||||
假设你的当前工作目录是这样的:
|
||||
|
||||
$ pwd
|
||||
/home/himanshu/practice
|
||||
|
||||
如果你想切换到 **/usr/bin/X11**, 然后又想回到之前的目录。 你会怎么做? 最直接的 :
|
||||
|
||||
$ cd /usr/bin/X11
|
||||
$ cd /home/himanshu/practice/
|
||||
|
||||
虽然这样行得通,但是要记住这些复杂的目录就太笨了。这种情况下使用 ‘cd -’ 命令就行.
|
||||
|
||||
使用 ‘cd -’的第一步和上面的例子是一样的, 你可以 cd 到你想要切换到的<路径>下,但是回到之前的目录用 ‘cd -’就可以。
|
||||
|
||||
$ cd /usr/bin/X11
|
||||
$ cd -
|
||||
/home/himanshu/practice
|
||||
$ pwd
|
||||
/home/himanshu/practice
|
||||
|
||||
如果你想再次回到刚刚访问的目录(在这个例子中是/usr/bin/X11),再使用'cd -'就可以。但是这个命令只会记住上一次访问的目录,这是一个缺点。
|
||||
|
||||
### 用 pushd 和 popd 来切换目录 ###
|
||||
|
||||

|
||||
|
||||
如果你对'cd -'非常了解了的话,你会发现这个命令只能帮助你在两个目录之间移动,但是很多场景下需要在很多目录之间切换。比如你要从A切换到B再到C然后又想回到A。
|
||||
|
||||
一般来说,你需要打出A的完整路径,但是如果这个路径非常复杂,将是非常烦人的一件事,特别是在你的切换非常频繁的话。
|
||||
|
||||
一些场景下可以使用 ‘pushd’ 还有 ‘popd’ 命令。 ‘pushd’ 将一个目录存到内存中,‘popd’ 将目录从内存中去除,并且转换到那个目录下。
|
||||
|
||||
例如:
|
||||
|
||||
$ pushd .
|
||||
/usr/include/netipx /usr/include/netipx
|
||||
$ cd /etc/hp/
|
||||
$ cd /home/himanshu/practice/
|
||||
$ cd /media/
|
||||
$ popd
|
||||
/usr/include/netipx
|
||||
$ pwd
|
||||
/usr/include/netipx
|
||||
|
||||
使用‘pushd’ 命令存储当前的工作目录 (用 .表示), 然后切换到各种各样的目录去。为了返回之前的目录,只要使用 ‘popd’命令就行了。
|
||||
|
||||
(LCTT译注:显然,pushd和popd 是堆栈式操作,你可以push多个目录,然后逐一pop出来,自己试试吧。)
|
||||
(LCTT译注:我们之前介绍的[autojump][1],更加智能,不过需要安装一下。)
|
||||
|
||||
**注意**- 你也可以使用不带参数的 ‘pushd’ 来切换到之前存储的目录, 但是不会像 ‘popd’ 一样去除这个目录。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://linoxide.com/linux-command/directory-navigations-tips-tricks/
|
||||
|
||||
译者:[ggaaooppeenngg](https://github.com/ggaaooppeenngg) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://linux.cn/article-3401-1.html
|
@ -1,14 +1,14 @@
|
||||
如何在Ubuntu,Linux Mint,Debian上禁用Ipv6
|
||||
如何在Ubuntu,Linux Mint,Debian上禁用IPv6
|
||||
================================================================================
|
||||
### Ipv6 ###
|
||||
### IPv6 ###
|
||||
|
||||
IPv6是寻址方案Ipv4的下一个版本,被用来给如google.com这样的域名分配数字地址。
|
||||
IPv6是寻址方案IPv4的下一个版本,被用来给域名分配数字地址。
|
||||
|
||||
Ipv6比Ipv4支持更多的地址。然而,它还没有被广泛支持,还在被接受的过程中。
|
||||
IPv6比IPv4支持更多的地址。然而,它还没有被广泛支持,还在被接受的过程中。
|
||||
|
||||
### 你的系统支持Ipv6么? ###
|
||||
### 你的系统支持IPv6么? ###
|
||||
|
||||
为了支持Ipv6,需要很多事情。首先你需要系统/操作系统支持Ipv6。Ubuntu,Linux Mint,和大多是现代发行版都支持它。如果你看一下ifconfig指令的输出,你就会看见你的网络接口被分配了ipv6地址。
|
||||
为了支持IPv6,需要很多事情。首先你需要系统/操作系统支持IPv6。Ubuntu,Linux Mint,和大多是现代发行版都支持它。如果你看一下ifconfig指令的输出,你就会看见你的网络接口被分配了IPv6地址。
|
||||
|
||||
$ ifconfig
|
||||
eth0 Link encap:Ethernet HWaddr 00:1c:c0:f8:79:ee
|
||||
@ -32,13 +32,13 @@ Ipv6比Ipv4支持更多的地址。然而,它还没有被广泛支持,还在
|
||||
|
||||
看一下行“inet6 addr”。
|
||||
|
||||
接下来你需要一个支持ipv6的路由器/调制解调器。额外地,你的ISP也必须支持ipv6。
|
||||
接下来你需要一个支持ipv6的路由器/调制解调器。此外,你的ISP也必须支持IPv6。
|
||||
|
||||
除了检查网络设备的每一部分,最好查出你是否可以通过ipv6访问网站。
|
||||
除了检查网络设备的每一部分,最好查出你是否可以通过IPv6访问网站。
|
||||
|
||||
有很多网站可以检测你的连接是否支持ipv6. 这里就是个例子:[http://testmyipv6.com/][1]
|
||||
有很多网站可以检测你的网络连接是否支持IPv6. 这里就是个例子:[http://testmyipv6.com/][1]
|
||||
|
||||
下面是在内核中启用ipv6的参数:
|
||||
下面是在内核中启用IPv6的参数:
|
||||
|
||||
$ sysctl net.ipv6.conf.all.disable_ipv6
|
||||
net.ipv6.conf.all.disable_ipv6 = 0
|
||||
@ -54,13 +54,13 @@ Ipv6比Ipv4支持更多的地址。然而,它还没有被广泛支持,还在
|
||||
$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6
|
||||
0
|
||||
|
||||
注意这里的变量是控制ipv6的“禁用”。所以设置1就会禁用ipv6。
|
||||
注意这里的变量是控制IPv6的“禁用”。所以设置1就会禁用IPv6。
|
||||
|
||||
### 如果它不支持就禁用ipv6 ###
|
||||
### 如果它不支持就禁用IPv6 ###
|
||||
|
||||
如果你的网络设备中不支持ipv6,那最好就全部禁用它们。为什么?因为这回引起延迟域查询,在网络连接中不必要地尝试连接到ipv6地址导致延迟等等问题。
|
||||
如果你的网络设备中不支持IPv6,那最好就全部禁用它们。为什么?因为这会引起域名查询延迟,在网络连接中不必要地尝试连接到IPv6地址导致延迟等等问题。
|
||||
|
||||
我也遇到过像这样的问题,apt-get命令偶尔会尝试连接到ipv6地址失败接着检索ipv4地址。看一下下面的输出。
|
||||
我也遇到过像这样的问题,apt-get命令偶尔会尝试连接到IPv6地址失败接着检索IPv4地址。看一下下面的输出。
|
||||
|
||||
$ sudo apt-get update
|
||||
Ign http://archive.canonical.com trusty InRelease
|
||||
@ -76,9 +76,9 @@ Ipv6比Ipv4支持更多的地址。然而,它还没有被广泛支持,还在
|
||||
|
||||
我在其他的应用上也注意到了相似的问题,如Hexchat,同样Google Chrome也会有时会在查询域名的时候花费更长的时间。
|
||||
|
||||
所以最好的方案是完全禁用Ipv6来摆脱这些事情。这只需要一点点配置但可以帮助你解决很多你系统上的很多问题。用户甚至反应这可以加速网络。
|
||||
所以最好的方案是完全禁用IPv6来摆脱这些事情。这只需要一点点配置但可以帮助你解决很多你系统上的很多问题。用户甚至反应这可以加速网络。
|
||||
|
||||
#### 禁用 Ipv6 - 方案1 ####
|
||||
#### 禁用 IPv6 - 方案1 ####
|
||||
|
||||
编辑文件 - /etc/sysctl.conf
|
||||
|
||||
@ -97,7 +97,7 @@ Ipv6比Ipv4支持更多的地址。然而,它还没有被广泛支持,还在
|
||||
|
||||
$ sudo sysctl -p
|
||||
|
||||
再次检查ifconfig的输出,这里应该没有ipv6地址了。
|
||||
再次检查ifconfig的输出,这里应该没有IPv6地址了。
|
||||
|
||||
$ ifconfig
|
||||
eth0 Link encap:Ethernet HWaddr 08:00:27:5f:28:8b
|
||||
@ -108,12 +108,11 @@ Ipv6比Ipv4支持更多的地址。然而,它还没有被广泛支持,还在
|
||||
collisions:0 txqueuelen:1000
|
||||
RX bytes:1501691 (1.5 MB) TX bytes:104883 (104.8 KB)
|
||||
|
||||
If it does not work, then try rebooting the system and check ifconfig again.
|
||||
如果不行,尝试重启系统并再次检查ifconfig
|
||||
|
||||
#### 禁用 ipv6 - GRUB 方案 ####
|
||||
#### 禁用 IPv6 - GRUB 方案 ####
|
||||
|
||||
Ipv6同样可以通过编辑grub配置文件禁用。
|
||||
IPv6同样可以通过编辑grub配置文件禁用。
|
||||
|
||||
$ sudo gedit /etc/default/grub
|
||||
|
||||
@ -125,13 +124,13 @@ Ipv6同样可以通过编辑grub配置文件禁用。
|
||||
|
||||
$ sudo update-grub2
|
||||
|
||||
重启,现在ipv应该就已经禁用了。
|
||||
重启,现在IPv6应该就已经禁用了。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.binarytides.com/disable-ipv6-ubuntu/
|
||||
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[geekpi](https://github.com/geekpi) ,校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,14 +1,17 @@
|
||||
在Linux终端中加速目录导航
|
||||
自动补完不算什么,一键直达目录才是终极神器!
|
||||
================================================================================
|
||||
与在命令行中导航目录一样令人称道的是,很少有比一遍又一遍重复”cd ls cd ls cd ls……“更令人沮丧的事情了。如果你不是百分百确定你想要进入的下一个目录的名字,那么你不得不使用ls来确认,然后使用cd来进入你想要进的那一个。所幸的是,现在大量的终端和shell语言提供了强大的自动补全功能来处理该问题。但是,你仍然需要一直疯狂地敲击制表键来干这事。如果你和我一样懒惰,你就会对autojump十分痴迷。自动跳转是一个命令行工具,它允许你可以直接跳转到你喜爱的目录,而不用管你现在身在何处。
|
||||
|
||||
在命令行中切换目录是最常用的操作,不过很少有比一遍又一遍重复“cd ls cd ls cd ls ……”更令人沮丧的事情了。如果你不是百分百确定你想要进入的下一个目录的名字,那么你不得不使用ls来确认,然后使用cd来进入你想要进的那一个。所幸的是,现在大量的终端和shell语言提供了强大的自动补全功能来处理该问题。但是,你仍然需要一直疯狂地敲击TAB键来干这事。如果你和我一样懒惰,你一定会对autojump感到惊喜。
|
||||
|
||||
autojump是一个命令行工具,它允许你可以直接跳转到你喜爱的目录,而不用管你现在身在何处。
|
||||
|
||||
### 在Linux上安装autojump ###
|
||||
|
||||
在Ubuntu或Debian上autojump:
|
||||
在Ubuntu或Debian上安装autojump:
|
||||
|
||||
$ sudo apt-get install autojump
|
||||
|
||||
要在CentOS或Fedora上安装autojump,请使用yum命令。在CentOS上,你需要先[启用EPEL仓库][1]。
|
||||
要在CentOS或Fedora上安装autojump,请使用yum命令。在CentOS上,你需要先[启用EPEL仓库][1]才行。
|
||||
|
||||
$ sudo yum install autojump
|
||||
|
||||
@ -20,11 +23,11 @@
|
||||
|
||||
### autojump的基本用法 ###
|
||||
|
||||
autojump的工作方式很简单:它会在你每次启动命令时记录你当前位置,并把它添加进它自身的数据库中。那样,某些目录比其它一些目录添加的次数多,这些目录一般就代表你最重要的目录,而它们的“weight”也会增大。
|
||||
autojump的工作方式很简单:它会在你每次启动命令时记录你当前位置,并把它添加进它自身的数据库中。这样,某些目录比其它一些目录添加的次数多,这些目录一般就代表你最重要的目录,而它们的“权重”也会增大。
|
||||
|
||||
从那儿,你可以使用下面的语法来直接跳转到这些目录:
|
||||
现在不管你在哪个目录,你都可以使用下面的语法来直接跳转到这些目录:
|
||||
|
||||
autojump [name or partial name of the directory]
|
||||
autojump [目录的名字或名字的一部分]
|
||||
|
||||
注意,你不需要输入完整的名称,因为autojump会检索它的数据库,并返回最可能的结果。
|
||||
|
||||
@ -38,9 +41,9 @@ autojump的工作方式很简单:它会在你每次启动命令时记录你当
|
||||
|
||||
如果你也很讨厌打字,那么我推荐你为autojump起个别名,或者使用默认的别名。
|
||||
|
||||
$ j [name or partial name of the directory]
|
||||
$ j [目录的名字或名字的一部分]
|
||||
|
||||
另外一个引人注目的功能是,autojump支持
|
||||
另外一个引人注目的功能是,autojump支持zsh和自动补完。如果你不确认哪里是不是你要跳转的地方,敲击TAB键就会列出完整路径。
|
||||
|
||||
还是同样的例子,输入:
|
||||
|
||||
@ -48,29 +51,29 @@ autojump的工作方式很简单:它会在你每次启动命令时记录你当
|
||||
|
||||
然后敲击tab键,将会返回/root/home/doc或者/root/home/ddl。
|
||||
|
||||
最后,对于高级用户,你可以访问目录数据库,并修改它的内容。它使得使用下面的命令来手动添加一个目录成为可能:
|
||||
最后,对于高级用户,你可以访问目录数据库,并修改它的内容。可以使用下面的命令来手动添加一个目录:
|
||||
|
||||
$ autojump -a [directory]
|
||||
$ autojump -a [目录]
|
||||
|
||||
如果你突然想要把它变成你的最爱和使用最频繁的文件夹,你可以通过命令的内部参数来手工增加它的weight
|
||||
如果你突然想要把当前目录变成你的最爱和使用最频繁的文件夹,你可以在该目录通过命令的参数 i 来手工增加它的权重
|
||||
|
||||
$ autojump -i [weight]
|
||||
$ autojump -i [权重]
|
||||
|
||||
这将使得该目录更可能被选择跳转。相反的例子是使用内部参数来减少weight:
|
||||
这将使得该目录更可能被选择跳转。相反的例子是在该目录使用参数 d 来减少权重:
|
||||
|
||||
$ autojump -d [weight]
|
||||
$ autojump -d [权重]
|
||||
|
||||
要跟踪所有这些改变,输入:
|
||||
|
||||
$ autojump -s
|
||||
|
||||
这会显示数据库中的统计数据,然而:
|
||||
这会显示数据库中的统计数据。而以下:
|
||||
|
||||
$ autojump --purge
|
||||
|
||||
上面的命令将会把不再存在的目录从数据库移除。
|
||||
命令将会把不再存在的目录从数据库中移除。
|
||||
|
||||
简言之,autojump将会受到所有命令行高级用户的欢迎。不管你是在ssh进一台服务器,还是仅仅想要追随复古潮流,敲更少的键来减少导航时间总是件好事。如果你真的热衷于此类工具,你也肯定会看看[Fasd][3],它应该会很称职。
|
||||
简言之,autojump将会受到所有命令行高级用户的欢迎。不管你是在ssh进一台服务器,还是仅仅想要追随复古潮流,敲更少的键来减少导航时间总是件好事。如果你真的热衷于此类工具,你也肯定也想看看[Fasd][3],它应该会给你一个惊喜,我们下次再介绍它。
|
||||
|
||||
你觉得autojump怎么样?你会经常用它么?发表一下你的评论吧。
|
||||
|
||||
@ -78,7 +81,7 @@ autojump的工作方式很简单:它会在你每次启动命令时记录你当
|
||||
|
||||
via: http://xmodulo.com/2014/06/speed-up-directory-navigation-linux-terminal.html
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,18 +1,23 @@
|
||||
如何在Linux中同步微软 OneDrive
|
||||
逝去的纪念:如何在Linux中同步微软 OneDrive
|
||||
================================================================================
|
||||
[OneDrive][1](以前称为SkyDrive)是微软的一个广受欢迎的云存储产品。目前OneDrive为每一个新注册用户提供7GB免费存储空间。正如你所想,OneDrive与微软其他软件产品很好地集成。微软还提供了一个独立的OneDrive客户端,它会自动备份照相机拍摄的图片和视频到OneDrive。但你猜怎么着。该客户端可用于除Linux的各大PC/移动平台。 “OneDrive在任何设备,任何时间”?嗯,这还不存在。
|
||||
【编者注】:本文译文完成之后不久,OneDrive 就成了中国人的昨日黄花了。编者想了想,还是发出来罢,仅以此文纪念我们逝去的这个、那个、以及这些和那些。也许若干年后我们回忆起来,我们曾经有过那么多那些,而当时却挑三拣四,没有珍惜,如果再给我一次机会……
|
||||
|
||||
不要失望。开源社区已经已经拿出了解决方案。 Boilermaker写的[onedrive-d][2]可以完成这项工作。作为监测守护进程运行,onedrive-D可自动将本地文件夹同步到OneDrive云存储。
|
||||
---
|
||||
|
||||
[OneDrive][1](以前称为SkyDrive)是微软的一个广受欢迎的云存储产品。目前OneDrive为每一个新注册用户提供7GB免费存储空间。正如你所想,OneDrive与微软其他软件产品很好地集成。微软还提供了一个独立的OneDrive客户端,它会自动备份照相机拍摄的图片和视频到OneDrive。但你猜怎么着。该客户端可用于除Linux的各大PC/移动平台。
|
||||
|
||||
“OneDrive在任何设备,任何时间”?哦,不,这还不行。
|
||||
|
||||
不过不要失望。开源社区已经已经拿出了解决方案。 Boilermaker写的[onedrive-d][2]可以完成这项工作。作为监测守护进程运行,onedrive-D可自动将本地文件夹同步到OneDrive云存储。
|
||||
|
||||
I在本教程中,我将介绍**如何在Linux上使用onedrive-d同步微软OneDrive**。
|
||||
|
||||
### 在linux上onedrive-d ###
|
||||
### 在linux上安装onedrive-d ###
|
||||
|
||||
虽然onedrive-d最初是为Ubuntu/ Debian开发的,但它仍然支持CentOS/ Fedora的/ RHEL。
|
||||
虽然onedrive-d最初是为Ubuntu/ Debian开发的,但它仍然支持CentOS/ Fedora/ RHEL。
|
||||
|
||||
安装就像输入下面的命令一样容易。
|
||||
|
||||
|
||||
$ git clone https://github.com/xybu92/onedrive-d.git
|
||||
$ cd onedrive-d
|
||||
$ ./inst install
|
||||
@ -25,7 +30,7 @@ I在本教程中,我将介绍**如何在Linux上使用onedrive-d同步微软On
|
||||
|
||||
$ mkdir ~/onedrive
|
||||
|
||||
接着运行下面的命令开开启一次性配置。
|
||||
接着运行下面的命令开启一次性配置。
|
||||
|
||||
$ onedrive-d
|
||||
|
||||
@ -49,19 +54,19 @@ I在本教程中,我将介绍**如何在Linux上使用onedrive-d同步微软On
|
||||
|
||||
这里有两种方法来使用onedrice-d将本地文件夹与OneDrive存储同步。
|
||||
|
||||
一种是“手动使用命令行来同步OneDrive”。就是当你需要与你的OneDrive账户同步时运行:
|
||||
一种是“手动使用命令行来同步OneDrive”。就是当你需要与你的OneDrive账户同步时运行如下命令:
|
||||
|
||||
$ onedrive-d
|
||||
|
||||
`onedrive-d`接着将扫描本地文件夹与OneDrive帐户的内容并使两者同步。这意味着要么上传一个在本地文件夹新添加的文件,或者从远程OneDrive帐户下载最新发现的文件。如果你从本地文件夹删除任何文件,相应的文件将自动在与OneDrive帐户同步后被删除。同样的事情也会在相反的方向发生。
|
||||
`onedrive-d`接着将扫描本地文件夹与OneDrive帐户的内容并使两者同步。这意味着要么上传一个在本地文件夹新添加的文件,或者从远程OneDrive帐户下载最新发现的文件。如果你从本地文件夹删除任何文件,相应的文件将自动在与OneDrive帐户同步后被删除。反之亦然。
|
||||
|
||||
一旦同步完成,你可以使用Ctrl-C杀掉onedirve-d的前台运行进程。
|
||||
一旦同步完成,你可以使用Ctrl-C中断onedirve-d的前台进程。
|
||||
|
||||

|
||||
|
||||
另一种方法是将onedrive-d作为一个始终运行的守护进程在开机时自动启动。在这种情况下,后台守护进程会同时监视本地文件夹和OneDrive账户,以使它们保持同步。对于这一点,只需将onedrive-D加入到你桌面[自动启动程序列表][3]中就行了。
|
||||
另一种方法是将onedrive-d作为一个始终运行的守护进程在开机时自动启动。在这种情况下,后台守护进程会同时监视本地文件夹和OneDrive账户,以使它们保持同步。要做到这一点,只需将onedrive-D加入到你桌面的[自动启动程序列表][3]中就行了。
|
||||
|
||||
当onedrive-D作为守护进程在后台运行,你会在桌面状态栏中看到OneDrive图标,如下图所示。每当同步更新被触发,你就会看到一个桌面通知。
|
||||
当onedrive-D作为守护进程在后台运行时,你会在桌面状态栏中看到OneDrive图标,如下图所示。每当同步更新被触发,你就会看到一个桌面通知。
|
||||
|
||||

|
||||
|
||||
@ -71,7 +76,7 @@ I在本教程中,我将介绍**如何在Linux上使用onedrive-d同步微软On
|
||||
|
||||
via: http://xmodulo.com/2014/06/sync-microsoft-onedrive-linux.html
|
||||
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -7,11 +7,11 @@
|
||||
|
||||
Curlew可以转换超过100种不同的格式、显示文件的详细信息、转换预览、插入字幕等等。
|
||||
|
||||
根据变更日志,转换前后实例的最后大小和位置会被记住、加入了一些失去对话图标、文件系统会在挂起前同步。
|
||||
此次更新包括:该软件打开时会记住上次的窗口大小和位置、增加了丢失了的对话框图标、在系统挂起前会主动同步文件系统。
|
||||
|
||||
这个程序有一些依赖:至少Python 2.7 (小于3.0)、python-gobject 3.0、gir1.2-gtk 3.0、 ffmpeg 0.8、libav-tools 0.8、 mencoder、libavcodec-extra、xdg-utils、mediainfo。
|
||||
这个程序需要的依赖环境包括:Python 2.7及其以上 (但是不兼容3.x)、python-gobject 3.0、gir1.2-gtk 3.0、 ffmpeg 0.8、libav-tools 0.8、 mencoder、libavcodec-extra、xdg-utils和mediainfo等。
|
||||
|
||||
来自noobslab.com的人提供一种通过PPA来简单地安装这个应用的方法。你要做的是在命令行下输入少量的命令(你需要使用root权限来生效)
|
||||
来自noobslab.com的兄弟们提供一种通过PPA来简单地安装这个应用的方法。你要做的是在命令行下输入少量的命令(你需要有root权限才行)
|
||||
|
||||
sudo add-apt-repository ppa:noobslab/apps
|
||||
sudo apt-get update
|
||||
@ -30,7 +30,7 @@ Curlew可以转换超过100种不同的格式、显示文件的详细信息、
|
||||
|
||||
via: http://news.softpedia.com/news/Open-Source-Multimedia-Converter-Curlew-0-1-22-3-Is-Out-448028.shtml
|
||||
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,26 +1,26 @@
|
||||
KVM和Xen的性能基准测试
|
||||
性能基准测试:KVM大战Xen
|
||||
================================================================================
|
||||
在上周,我们讨论了 KVM 和 Xen 的性能上一些令人感兴趣的话题后,我打算自己做一些这方面的研究。我能找到的最新的资料,是来自[2013年 Phoronix Haswell 性能评测][1]上的基准测试。当然,还有[2011年的评测][2],由于 Xen 已经被收录进 Kernel 3.0,这些曾经都是热门话题。
|
||||
在上周,我们对 KVM 和 Xen 近几年里在性能上的改进进行了一些有趣的探讨后,我打算自己做一些这方面的小研究。我能找到的最新的资料,是来自[2013年 Phoronix Haswell 性能评测][1]上的基准测试。当然,还有[其它一些2011年的评测][2],不过由于 Xen 被收录进 Kernel 3.0,它们都已被热烈地讨论过。
|
||||
|
||||
2011年的测试提供了[许多很好的基准报表][3],我尽最大努力把它们列出的属性重新测试一遍,但少测了两三个基准测试,原因是它们在未经特定优化的配置后跑出来的数据不是很好,或者它们需要跑很长时间才能得到结果。
|
||||
2011年的测试提供了[许多很好的基准报表][3],在三年后的现在,我尽最大努力把它们列出的属性重新测试一遍。但我删减了其中两三个基准测试,原因是它们在未经特定优化的配置后跑出来的数据不是很好,或者它们需要跑很长时间才能得到结果。
|
||||
|
||||
### 测试环境 ###
|
||||
|
||||
测试环境由两台一模一样的超微服务器组成,都配备一颗[Intel 至强 E3-1220][4](4核,3.10GHz),24G 金士顿 DDR3 内存,4块西数 RE-3 160G 磁盘(组成 RAID10 阵列)。另外 BIOS 也是一模一样。
|
||||
测试环境由两台一模一样的超微服务器组成,分别都配备一颗[Intel 至强 E3-1220][4](4核,3.10GHz),24G 金士顿 DDR3 内存,4块西数 RE-3 160G 磁盘(组成 RAID10 阵列)。另外 BIOS 也是一模一样。
|
||||
|
||||
所有测试项目(即实体机和虚拟机)都在 Fedora 20 (开 SELinux)上进行,并且测试过程中没有跑很多的不相关的服务。这里列一下相关服务的版本:
|
||||
所有测试项目(即实体机和虚拟机)都在 Fedora 20 (开 SELinux)上进行,并且测试过程中几乎没有运行的不相关的服务。这里列一下相关服务的版本:
|
||||
|
||||
- Kernel: 3.14.8
|
||||
- For KVM: qemu-kvm 1.6.2
|
||||
- For Xen: xen 4.3.2
|
||||
|
||||
根文件系统是 XFS,使用默认配置。虚拟机使用 virt-manager 来创建(virt-mamager 也使用默认配置)。虚拟磁盘使用 raw 镜像,容量为 8GB,虚拟4颗 CPU。Xen 虚拟机使用 [PVHVM][5] 建立虚拟磁盘。
|
||||
根文件系统都是使用默认配置的 XFS。虚拟机使用 virt-manager 来创建(virt-mamager 也使用默认配置)。虚拟磁盘使用 raw 镜像,容量为 8GB,虚拟4颗 CPU。Xen 虚拟机使用 [PVHVM][5] 建立虚拟磁盘。
|
||||
|
||||
### 警告 ###
|
||||
### 附加说明 ###
|
||||
|
||||
也许有人会考虑到 Fedora 是红帽公司所有,红帽一直在维护 KVM,而 Xen 则自从[在2009年红帽重新选择 KVM 作为虚拟化产品][6]后,再没得到这个公司的维护。在本测试中这个因素不会对结果产生任何影响,不过可以在心里稍微注意一下。
|
||||
也许有人会考虑到 Fedora 是红帽公司所有,红帽一直在维护 KVM,而 Xen 则自从[在2009年红帽重新选择 KVM 作为虚拟化产品][6]后,再没得到这个公司的重要改进。我将这个因素排除在了测试所考虑的范围之外,不过仍然可以在心里稍微注意一下。
|
||||
|
||||
不考虑资源竞争产生的影响。在大多数虚拟服务器上,你可以跑多个虚拟机,而这些虚拟机会争用 CPU 时间片、磁盘 IO、网络带宽等等资源。在本测试中也不考虑这些因素。一台虚拟机抢到资源少,性能就差,而另一台抢得多,性能就好(LCTT:它们的性能总和,就可以大致当作是 KVM 或 Xen 的性能了)。
|
||||
并且,资源竞争产生的影响也有被严格控制并最小化。在大多数虚拟服务器上,你可以跑多个虚拟机,而这些虚拟机会争用 CPU 时间片、磁盘 IO、网络带宽等等资源。在本测试中也不考虑这些因素。一台虚拟机抢到资源少,性能就差,而另一台抢得多,性能就好(LCTT译注:它们的性能总和,就可以大致当作是 KVM 或 Xen 的性能了)。
|
||||
|
||||
本测试运行在 Intel 的 CPU 上。如果使用的是 AMD 或 ARM,可能有些数据会不一样。
|
||||
|
||||
@ -28,11 +28,11 @@ KVM和Xen的性能基准测试
|
||||
|
||||
本测试使用裸机作为虚拟服务测试的基准设备。在不跑虚拟机的情况下,两台裸机的性能偏差不会大于0.51%
|
||||
|
||||
在所有测试中,KVM 的性能相比宿主机而言下降了1.5%以内,除了两个测试。第一个是 7-zip 压缩,比宿主机慢了 2.79%。第二个就奇怪了,我们搭了一个邮件服务器,用 PostMark 测试其性能,结果表明 KVM 竟比宿主机快了4.11%。然后我在两台服务器中重新跑了几遍 PostMark 测试,结果性能差异基本不变,浮动在1%以内。由于我对 virtio 的内部机制没有很深的理解,我只能在以后再对这个怪现象进行进一步了解。
|
||||
在几乎所有测试中,KVM 的性能相比宿主机而言下降了1.5%以内,只有两项测试例外。第一个是 7-zip 压缩,比宿主机慢了 2.79%。第二个就奇怪了,我们搭了一个邮件服务器,用 PostMark 测试其性能,结果表明 KVM 竟比宿主机快了4.11%。然后我在两台服务器中重新跑了几遍 PostMark 测试,结果性能差异基本不变,浮动都在最初测试结果的1%以内。由于我对 virtio 的内部机制没有很深的理解,我只能在以后再对这个怪现象进行进一步了解。
|
||||
|
||||
Xen 的性能相对宿主机而言差异就比较大了。有3个测试性能下降在2.5%以内,剩下的性能下降率都是 KVM 的2~4倍。PostMark 测试的性能比 KVM 慢了14.41%,这结果令我大吃一惊。重新跑了下测试,性能差还是在14%左右。KVM 表现最好的两个测试:CPU 测试和 MAFFT 对齐测试,是 Xen 表现最差的。
|
||||
Xen 的性能相对宿主机而言差异就比较大了。有3项测试性能下降在2.5%以内,剩下的性能下降率都是 KVM 的2~4倍。PostMark 测试的性能比 KVM 慢了14.41%,这结果令我大吃一惊。重新跑了下测试,性能差还是几乎不变,浮动都在最初结果的2%以内。KVM 表现最好的 CPU 测试:MAFFT 对齐测试,是 Xen 表现倒数第二差的。
|
||||
|
||||
现在奉上一个总结表:
|
||||
现在奉上一个简短得总结表:
|
||||
|
||||
<table id="tablepress-3" class="tablepress tablepress-id-3 dataTable">
|
||||
<thead>
|
||||
@ -67,19 +67,19 @@ Xen 的性能相对宿主机而言差异就比较大了。有3个测试性能下
|
||||
|
||||
### 结论 ###
|
||||
|
||||
基于上面的测试环境,KVM 的性能损耗在2%以内,Xen 则只有3项损耗在2.5%以内,其他几项损耗都在5~7%之间。虽然 KVM 在 PostMark 测试中性能表现优异,但这个测试只是众多测试中的一项,如果想证明 KVM 确实在 I/O 处理方面很强悍,就需要更多测试。
|
||||
基于上面的测试环境,KVM 的性能损耗几乎都在2%以内,Xen 则在十多项测试中有3项损耗在2.5%以内,而其他几项损耗都在5~7%之间。虽然 KVM 在 PostMark 测试中性能表现优异,但这是众多测试中仅有的一项 I/O 测试,如果想证明 KVM 确实在 I/O 处理方面很强悍,就需要更多测试。
|
||||
|
||||
对我来说,我需要深入理解 KVM 和 Xen 在 I/O 处理上为什么会有这么大的差别。并且还需要跑一些压力测试,来证明虚拟机是否真的比宿主机表现得更出色。
|
||||
对我来说,我想要深入了解一下 KVM 和 Xen 在 I/O 方面的处理,以及它们之间为什么会有这么大的差别。我也许还会跑一些有竞争的测试,来看看虚拟机在有压力的条件下是否真的能比宿主机表现得更出色。
|
||||
|
||||
我鼓励读者通过使用[Phoronix 测试套件][8]来进行一些基准测试,你们可以找到一些能模仿你们工作环境的用例。如果你的工作环境是低 CPU 高 I/O,你可以找找套件里面的 I/O 压力测试。另一方面,如果你的工作是音频、视频转码,你可以试试套件里面的 x264 或 mp3 测试。
|
||||
|
||||
更新:[Chris Behrens 指出][9],我忘了提到 Xen 虚拟机类型了。这里补充下,我使用的是 PVHVM 模型(LCTT:目前支持的模型包括 PV、HVM 和 PVHVM),因为在 Xen 4.3 中这个选拥有最好的性能。另外需要注意的是在 Xen 4.4 中可以使用 PVH,但是在 Fedora 20 中还没有使用 Xen 4.4。
|
||||
更新:[Chris Behrens 指出][9],我忘了提到 Xen 虚拟机类型了。这里补充下,我使用的是 PVHVM 模型(LCTT译注:目前支持的模型包括 PV、HVM 和 PVHVM),因为在 Xen 4.3 中这个选拥有最好的性能。另外需要注意的是在 Xen 4.4 中可以使用 PVH,但是在 Fedora 20 中还没有使用 Xen 4.4。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://major.io/2014/06/22/performance-benchmarks-kvm-vs-xen/
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[ReiNoir](https://github.com/reinoir)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,41 @@
|
||||
超算TOP 500的计算性能仍然保持在 33.86 千万亿次/秒
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
天河2号一年以前第一次跳上世界超算舞台,拥有了当时世界上最强计算机的皇冠。当时,天河2号被评测为 33.86 petaflops (千万亿次/秒)。
|
||||
|
||||
整整一年后天河-2 性能指数仍旧保持不变,它仍然坐在世界上最强超级计算机的头把交椅上。
|
||||
|
||||

|
||||
|
||||
在 2013 年 6 月时,世界上第二快的超级计算机是安置于美国能源部橡树岭国家实验室的 Cray Titan。一年前,Titan可飙至 17.59 petaflops。Titan的优秀表现,正如同天河-2一样, 到了2014 年 6 月仍然保持住了他的地位。
|
||||
|
||||
事实上,在最近的一年中,世界上顶尖的前 10 超级计算机的性能排名几乎没有任何改变,至少根据世界超算 500 强名单来看是这样的。
|
||||
|
||||
如果看看名单底部,在超算排行榜的第500名,是德国Deutcher Wetterdienst 的Cray XC30 ,其性能已经逼近 133.7 teraflops (万亿次/秒)。
|
||||
|
||||
TOP500 网站[指出][1],"最新名单上的最后的一个系统其实以前处在20年前世界 500 强排行榜中384位"。"这说明这二十年中列表变化不大。
|
||||
|
||||
|
||||
再次,列表有 85.4%的超级计算机都是英特尔芯片占主导地位的,而 IBM Power 处理器拥有 8%的市场份额。AMD 的占有率目前仅为 6%。
|
||||
|
||||
|
||||
就芯片架构来说,53.6%的超算都使用 8 个或更多核心的CPU, 13.4%的超算则是 10 个或更多的核心的CPU。
|
||||
|
||||
再来看看网络互联,Infiniband和以太网拆分了整个市场。在 2014 年 6 月名单上,Infiniband占据了系统的 44.4%。
|
||||
|
||||
相比之下,据报道千兆以太网有 25.4%的市场份额, 万兆以太网拥有 15%,合计占以太网整体份额的 40.4%。
|
||||
|
||||
惠普和 IBM 再次占领了超级计算供应商的列表。惠普现在占有 36.4%的份额,而 IBM 占有 35.2%。Cray 排名降低,位列第三,占有10.2%的市场份额。
|
||||
|
||||
虽然在世界前 500 的超级计算机榜单排名里面硬件供应商们,芯片体系架构,核心数量和互联方式竞争激烈,但是在选择操作系统的时候,毫无疑问的是,97%的超算都安装了linux操作系统,即top500超算榜单上的485个超算都安装了linux系统。
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.serverwatch.com/server-news/top500-supercomputer-remains-stuck-at-33.86-petaflops.html
|
||||
|
||||
译者:[owen-carter](https://github.com/owen-carter) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://top500.org/blog/lists/2014/06/press-release/
|
@ -1,5 +1,3 @@
|
||||
CNprober翻译完成。。。619913541
|
||||
|
||||
Betty:通过大白话执行Linux命令
|
||||
================================================================================
|
||||
|
||||
@ -7,7 +5,7 @@ Betty:通过大白话执行Linux命令
|
||||
|
||||
### 安装 ###
|
||||
|
||||
Betty的安装非常简单直接。首先确认你已经安装了下面这些依赖包[译注,需要安装至少Ruby1.9以上版本]。
|
||||
Betty的安装非常简单直接。首先确认你已经安装了下面这些依赖包[LCTT译注,需要安装至少Ruby1.9以上版本]。
|
||||
|
||||
#### 对于基于Debian的系统:####
|
||||
|
||||
@ -17,7 +15,7 @@ Betty的安装非常简单直接。首先确认你已经安装了下面这些依
|
||||
|
||||
yum install git curl ruby
|
||||
|
||||
现在git工具把Betty库clone到你自定义的任何路径。这里我克隆到我的home目录,**例如 /home/sk/**.
|
||||
现在用git工具把Betty库clone到你自定义的任何路径。这里我克隆到我的home目录,**例如 /home/sk/**.
|
||||
|
||||
git clone https://github.com/pickhardt/betty
|
||||
|
||||
@ -35,7 +33,7 @@ Betty的安装非常简单直接。首先确认你已经安装了下面这些依
|
||||
|
||||
### 用法 ###
|
||||
|
||||
你应该在英语短语之前加上单词“betty”。你也许已经知道,如果我们想知道在系统中我们的用户名,应该运行下面的命令:
|
||||
你应该在英语短语之前加上单词“betty” [LCTT译注,你自然可以用你的小甜心的名字来替换这个不是知道是谁的Betty :>]。你也许已经知道,如果我们想知道在系统中我们的用户名,应该运行下面的命令:
|
||||
|
||||
whoami
|
||||
|
||||
@ -60,7 +58,7 @@ Betty的安装非常简单直接。首先确认你已经安装了下面这些依
|
||||
|
||||
betty whats my name
|
||||
|
||||
Betty不确定她应该查找系统用户名还是用户全名。这种情况下,她会询问你多个问题来找到准确的结果。如你下面所见,Betty问我想要运行哪一条命令(whoami 还是 finger $(whoami) | sed 's/.*:*//;q')[译注,需要你的系统已经安装finger]。我只想知道我的用户名,所以我选择数字**1**。
|
||||
Betty不确定她应该查找系统用户名还是用户全名。这种情况下,她会询问你多个问题来找到准确的结果。如你下面所见,Betty问我想要运行哪一条命令(whoami 还是 finger $(whoami) | sed 's/.*:*//;q')[LCTT译注,需要你的系统已经安装finger]。我只想知道我的用户名,所以我选择数字**1**。
|
||||
|
||||
Betty: Okay, I have multiple ways to respond.
|
||||
Betty: Enter the number of the command you want me to run, or N (no) if you don't want me to run any.
|
||||
@ -76,7 +74,6 @@ Betty不确定她应该查找系统用户名还是用户全名。这种情况下
|
||||
|
||||
如果你想要压缩一个文件或者文件夹,用下面的命令。例如,我想压缩我home目录下的“test”文件夹。
|
||||
|
||||
|
||||
betty compress test/ test.tar.gz
|
||||
|
||||
输出是这样的:
|
||||
@ -197,7 +194,7 @@ Cheers!
|
||||
|
||||
via: http://www.unixmen.com/betty-translate-english-phrases-linux-commands/
|
||||
|
||||
译者:[love_daisy_love](https://github.com/CNprober) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[love\_daisy\_love](https://github.com/CNprober) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,6 +1,6 @@
|
||||
在Ubuntu下使用“Reprepro”工具在Sourceforge.net中创建".deb"包仓库
|
||||
在Ubuntu下如何创建远程".deb"包仓库
|
||||
================================================================================
|
||||
**Reprepro**是一款小巧的命令行工具来方便地创建并管理**.deb**仓库。今天我们会战士如何人使用reprepro简单地创建一个Debian包仓库,并使用**rsync**上传到Sourceforge.net。
|
||||
**Reprepro**是一款小巧的命令行工具来方便地创建并管理**.deb**仓库。今天我们会展示给你如何使用reprepro简单地创建一个Debian包仓库,并使用**rsync**上传到Sourceforge.net。
|
||||
|
||||

|
||||
|
||||
@ -10,11 +10,11 @@
|
||||
|
||||
$ sudo apt-get install reprepro gnupg
|
||||
|
||||
现在你需要使用hnupg生成一个gpg key,这里使用下面的命令。
|
||||
现在你需要使用gnupg生成一个gpg key,这里使用下面的命令。
|
||||
|
||||
$ gpg --gen-key
|
||||
|
||||
它会询问你一些问题,比如你想要哪种key、key的有效期、如果你不知道如何回答,只需点击**Enter** 来选择默认选项(建议)
|
||||
它会询问你一些问题,比如你想要哪种key、key的有效期、如果你不知道如何回答,只需点击**回车** 来选择默认选项(建议)
|
||||
|
||||
当然,它会询问你用户名和密码,在脑海中记住这些,因为我们会在之后需要它。
|
||||
|
||||
@ -85,7 +85,7 @@
|
||||
|
||||
### 步骤 2: 创建一个包仓库并导出key ###
|
||||
|
||||
我们现在要开始创建仓库,首先你需要创建一些文件夹,我们的仓库会在**/var/www/apt**目录,让我们先创建这些目录。
|
||||
我们现在要开始创建仓库,首先你需要创建一些文件夹,我们的仓库会放在**/var/www/apt**目录,让我们先创建这些目录。
|
||||
|
||||
$ sudo su
|
||||
# cd /var/www
|
||||
@ -98,7 +98,7 @@
|
||||
|
||||
# gpg --armor --export username yourmail@mail.com >> /var/www/apt/key/deb.gpg.key
|
||||
|
||||
注意:用你之前步骤中输入的用户名代替username,用你的email代替yourmail@mail.com。
|
||||
注意:用你之前步骤中输入的用户名代替username,用你的email代替上面的yourmail@mail.com。
|
||||
|
||||
我们需要在**/var/www/apt/conf**创建一个文件“**distributions**”。
|
||||
|
||||
@ -106,14 +106,14 @@
|
||||
|
||||
加入下面这几行到distributions这个文件中并保存。
|
||||
|
||||
Origin: (yourname)
|
||||
Label: (name of repository)
|
||||
Suite: (stable or unstable)
|
||||
Codename: (the codename for the distribution you are using, like trusty)
|
||||
Version: (the version for the distribution you are using, like 14.04)
|
||||
Architectures: (the repository packages architecture, like i386 or amd64)
|
||||
Components: (main restricted universe multiverse)
|
||||
Description: (Some information about the repository)
|
||||
Origin: (你的名字)
|
||||
Label: (库的名字)
|
||||
Suite: (stable 或 unstable)
|
||||
Codename: (发布的代码名,比如 trusty)
|
||||
Version: (发布的版本,比如 14.04)
|
||||
Architectures: (软件包所支持的架构, 比如 i386 或 amd64)
|
||||
Components: (包含的部件,比如 main restricted universe multiverse)
|
||||
Description: (描述)
|
||||
SignWith: yes
|
||||
|
||||
接下来我们会创建仓库树,运行这些命令:
|
||||
@ -137,7 +137,7 @@
|
||||
|
||||
### 步骤 3: 在新创建的仓库中加入包 ###
|
||||
|
||||
现在准备你的**.deb**包来加入到仓库中。进入 **/var/www/apt**目录,你每次要加包的时候都不得不这么做。
|
||||
现在准备你的**.deb**包来加入到仓库中。进入 **/var/www/apt**目录,你每次要加包的时候都必须这么做。
|
||||
|
||||
# cd /var/www/apt
|
||||
# reprepro --ask-passphrase -Vb . includedeb Trusty /home/ravisaive/packages.deb
|
||||
@ -159,7 +159,7 @@
|
||||
Please enter passphrase:
|
||||
Successfully created './dists/Trusty/InRelease.new'
|
||||
|
||||
你的包已经加入了仓库,要移除它:
|
||||
你的包已经加入了仓库,如果要移除它的话采用如下命令:
|
||||
|
||||
# reprepro --ask-passphrase -Vb /var/www/apt remove trusty package.deb
|
||||
|
||||
@ -167,13 +167,15 @@
|
||||
|
||||
### 步骤 4: 上传仓库到Sourceforge.net ###
|
||||
|
||||
要上传仓库到**Sourceforge.net**,你当然需要一个活跃账号与一个活跃项目,让我假设你想要上传仓库到**http://sourceforge.net/projects/myfoo/testrepository**,这里的myfoo是项目名(UNIX名称,不是URL,不是标题),testrepository是你想要上传文件到这上面的目录,这里我们会使用[rsync 命令][1]
|
||||
要上传仓库到**Sourceforge.net**,你当然需要一个可用的账号与一个可用的项目,让我假设你想要上传仓库到**http://sourceforge.net/projects/myfoo/testrepository**,这里的myfoo是项目名(UNIX上的名称,不是URL,不是标题),testrepository是你想要上传文件到这上面的目录,这里我们会使用[rsync 命令][1]。(LCTT译注:当然你也可以上传到其它的支持Http/Rsync的服务器上,以提供远程软件库的服务。)
|
||||
|
||||
# rsync -avP -e ssh /var/www/apt/ username@frs.sourceforge.net:/home/frs/project/myfoo/testrepository/
|
||||
|
||||
**注意**:用你在sourceforge.net上的用户名代替username,用你的项目的UNIX类型名称代替myfoo,用你想要存储的文件夹代替testrepository。
|
||||
**注意**:用你在sourceforge.net上的用户名代替username,用你的项目的UNIX名称代替myfoo,用你想要存储的文件夹代替testrepository。
|
||||
|
||||
现在你的仓库上传到了**http://sourceforge.net/projects/myfoo/testrepository**,要把它加入到已安装的系统,首先你需要导入仓库key,它会在**/var/www/apt/key/deb.gpg.key**,但是这是一个本地路径,并且你仓库的用户不能添加到他们的系统中,这就是为什么我们要导入来自sourceforge.net的key的原因。
|
||||
现在你的仓库(包括设置和key等等)上传到了**http://sourceforge.net/projects/myfoo/testrepository**。
|
||||
|
||||
要把它加入到一个已装好的系统,首先你需要导入仓库key,它实际上就是**/var/www/apt/key/deb.gpg.key**,但是这是一个本地路径,使用你的仓库的其它用户不能添加到他们的系统中,这就是为什么我们要导入来自sourceforge.net的key的原因。
|
||||
|
||||
$ sudo su
|
||||
# wget -O - http://sourceforge.net/projects/myfoo/testrepository/apt/key/deb.gpg.key | apt-key add -
|
||||
@ -194,7 +196,7 @@
|
||||
|
||||
via: http://www.tecmint.com/create-deb-pacakge-repository-in-ubuntu/
|
||||
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,57 @@
|
||||
RHEL 7值得注意的5个新特性
|
||||
================================================================================
|
||||
> RHEL 7 支持Docker容器,systemd,兼容微软的身份管理和支持高达500TB的XFS文件系统。
|
||||
|
||||

|
||||
|
||||
在前一个主版本发布3年之后,经过至少6个月的[公开测试][1],RHEL(Red Hat Enterprise Linux)版本7终于发布了。这次更新表明了红帽子公司对于在RHEL中添加最新的以企业和数据为中心的特性的兴趣。这里列举了其中5个最吸引人眼球的新特性。
|
||||
|
||||
### 1. Docker ###
|
||||
|
||||
RHEL 7中最大的新特性就是[紧密集成][2]了广受欢迎的应用程序虚拟化技术[Docker][3]。随着[Docker 1.0发布][4],把它集成到RHEL 7里正是恰逢其时。
|
||||
|
||||
用Docker包装的应用程序可以独立于操作系统,所以它们可以在操作系统之间移植并且正常运行。RHEL 7打算尽可能高效地使用Docker,以防止应用程序竞争资源或者为使用哪种运行时环境而困惑。
|
||||
|
||||
从RHEL的Docker路线图上的长期计划表来看,这可能会超越操作系统本身,发展成一系列的Docker容器,它可以支持用最小的开销部署一个系统。这个被称为"[Atomic项目][5]"的计划还处于早期阶段,红帽公司准备首先将它部署在他的Fedora Linux发行版,仅仅当做对前沿技术的测试。
|
||||
|
||||
### 2. Systemd ###
|
||||
|
||||
引入systemd进程管理器可能引起系统管理员和Linux专家之间激烈的争论。systemd就被开发用于替代自专用Unix出现以来就在使用的init系统,它使得启动过程中装载服务更加高效。
|
||||
|
||||
因为systemd可能会带来一些不适,红帽公司没有马上在RHEL上使用systemd。早在2010发布的Fedora版本15就已经包含了systemd作为默认项目,这给了红帽公司一次很好的了解systemd在真实世界的运行的经验。同样,systemd也没有孤立地加入RHEL 7,而是作为这个OS大计划的一部分。例如,红帽公司希望通过使用systemd加强对RHEL 7中Docker容器的支持。
|
||||
|
||||
### 3. 默认使用 XFS ###
|
||||
|
||||
第3个主要的改变是使XFS成为RHEL默认的文件系统,尽管这可能不那么引人瞩目。
|
||||
|
||||
最初由Silicon Graphics International(硅谷图形公司)创建的XFS在Linux系统上用做生产环境已经很长时间了。在RHEL 7上它将支持高达500TB的文件系统。RHEL 6默认使用ext4,尽管它有XFS选项。红帽子的竞争对手Suse Linux [也支持XFS][6],尽管它安装时[默认使用ext3][7]。
|
||||
|
||||
非常不幸的是,没有真正的方法可以将RHEL目前使用的其他文件系统,比如ext4或者btrfs移植到XFS。只能备份然后重建(来进行移植)。
|
||||
|
||||
### 4. 兼容微软的身份管理 ###
|
||||
|
||||
就算是那些不是微软系统粉丝的管理员也对微软目录服务保持一定的尊重。RHEL 7添加了两个关键的特性以优化处理微软目录服务(AD)的方式。跨域认证现在可以在RHEL 7和微软目录服务之间建立,所以目录服务用户可以直接访问Linux侧的资源,不需要再进行一次登录。RHEL 7另一个目录服务相关的附加特性,是基于DNS信息自动发现和加入目录服务(或者其他红帽子认证服务)。
|
||||
|
||||
### 5. 性能监控(PCP:Performance Co-Pilot) ###
|
||||
|
||||
进行性能调整的时候看不到实时数据就像是开着一辆挡风玻璃被刷上了油漆的车,所以RHEL 7添加了一个新的性能监控系统PCP([Performance Co-Pilot][8]),PCP最初由Silicon Graphics International(硅谷图形)[创建][9],但是现在它是RHEL 7的一部分。除了监控和记录系统状态,PCP还为其他子系统提供获取数据的API和工具集,比如正如你猜到的,刚刚介绍的systemd。
|
||||
|
||||
遵循这个思路,另一个次要的附加特性:新的性能配置文件。RHEL 6已经有符合特殊应用场景的调整RHEL的配置文件。RHEL 7不仅默认有一个新的性能最大化的配置文件,而且包含另一个新的平衡性能表现和能源消耗的配置文件。
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
via:http://www.infoworld.com/t/linux/keep-eye-these-5-new-features-in-rhel-7-244023
|
||||
|
||||
译者:[love\_daisy\_love](https://github.com/CNprober) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.infoworld.com/t/linux/red-hat-enterprise-linux-7-beta-now-available-232520
|
||||
[2]:http://www.infoworld.com/t/application-virtualization/red-hat-fast-tracks-docker-apps-enterprise-linux-238122
|
||||
[3]:http://www.infoworld.com/t/application-virtualization/docker-unleashed-app-portability-gets-boost-231716
|
||||
[4]:http://www.infoworld.com/d/application-development/review-docker-10-ready-prime-time-243935
|
||||
[5]:http://www.projectatomic.io/
|
||||
[6]:https://www.suse.com/products/server/technical-information/
|
||||
[7]:https://www.suse.com/products/server/technical-information/
|
||||
[8]:http://developerblog.redhat.com/2013/11/19/exploratory-performance-pcp/
|
||||
[9]:http://oss.sgi.com/projects/pcp/index.html
|
58
published/201407/20140626 Joy of Programming--Fail Fast.md
Normal file
58
published/201407/20140626 Joy of Programming--Fail Fast.md
Normal file
@ -0,0 +1,58 @@
|
||||
编程的乐趣:快速终止!
|
||||
================================================================================
|
||||

|
||||
|
||||
> 当软件出现问题的时候,它应该以一种很容易引起注意的方式马上终止。这种“快速终止”的方式值得借鉴,我们会在这期专栏里谈谈这个重要的概念。
|
||||
|
||||
一开始,“快速终止”看上去是一种会影响可靠性的不好的实践——为什么一个系统在还可以继续运行的时候要崩溃(或者说终止)?对于这个,我们需要理解,快速终止是和Heisenbugs(对于不易复现bug的一种称呼)紧密联系在一起的。
|
||||
|
||||
考虑一下Bohrbugs(对于能够重现的bug的一种称呼),它们在一个给定输入的条件下总是会出现,比如,访问空指针。这类问题很容易测试、复现并修复。而如今,所有有经验的程序员应该都面对过这样的情形:导致崩溃的bug在重启软件后就不再出现了。不管花多少时间或努力去重现问题,那个bug就是跟我们捉迷藏。这种bug被称为Heisenbugs。
|
||||
|
||||
花在寻找、修复和测试Heisenbugs上的努力比起Bohrbugs来说,要高出一个数量级。一种避免Heisenbugs的策略是将它们转化为Bohrbugs。怎么做呢?预测可能导致Heisenbugs的因素,然后尝试将它们变成Bohrbugs。是的,这并不简单,而且也并不是一定可行,但是让我们来看一个能产生效果的特殊例子。
|
||||
|
||||
并发编程是Heisenbugs经常出现的一个典范。我们的例子就是一个Java里和并发相关的问题。在遍历一个Java集合的时候,一般要求只能通过Iterator的方法对集合进行操作,比如remove()方法。而在遍历期间,如果有另一个线程尝试修改底层集合(因为编程时留下的错误),那么底层集合就可能会被破坏(例如,导致不正确的状态)。
|
||||
|
||||
类似这种不正确的状态会导致不确定的错误——假如我们幸运的话(实际上,这很不幸!),程序可以继续执行而不会崩溃,但是却给出错误的结果。这种bug很难重现和修复,因为这一类的程序错误都是不确定的。换句话说,这是个Heisenbug。
|
||||
|
||||
幸运的是,Java Iterators会尝试侦测这种并发修改,并且当发现时,会抛出异常`ConcurrentModificationException`,而不是等到最后再出错——那样也是没有任何迹象的。换句话说,Java Iterators也遵从了“快速终止”的方法。
|
||||
|
||||
如果一个`ConcurrentModificationException`异常在正式版软件中发生了呢?根据在Javadoc里对这个异常的说明,它“只应该被用于侦测bug”。换句话说,`ConcurrentModificationException`只应该在开发阶段监听和修复,而不应该泄漏到正式代码中。
|
||||
|
||||
好吧,如果正式软件确实发生了这个异常,那它当然是软件中的bug,应当报告给开发者并修复。至少,我们能够知道曾经发生过一次针对底层数据结构的并发修改尝试,而这是软件出错的原因(而不是让软件产生错误的结果,或是以其他现象延后出错,这样就很难跟踪到根本原因)。
|
||||
|
||||
“防止崩溃”的途径就意味着开发健壮的代码。一个很好的编写容错代码的例子就是使用断言。很可惜的是,关于断言的使用有大量不必要的公开争论。其中主要的批评点是:它在开发版本中使用,而在发布版中却被关掉的。
|
||||
|
||||
不管怎么样,这个批评是错误的:从来没有说要用断言来替代应该放到发布版软件中的防御式检查代码。例如,断言不应该用来检查传递给函数的参数是否为空。相应的,应该用一个if语句来检查这个参数是否正确,否则的话抛出一个异常,或是提前返回,来适合上下文。然而,断言一般可以用于额外检查代码中所作出的假设,这些假设应该一直为真才正常。例如,用一个语句来检查在进行了入栈操作后,栈应该不是空的(例如,对“不变量”的检查)。
|
||||
|
||||
所以,快速终止,随时中断,那么你就走在开发更加健壮代码的道路上了。
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via:http://www.opensourceforu.com/2011/12/joy-of-programming-fail-fast/
|
||||
|
||||
译者:[zpl1025](https://github.com/zpl1025) 校对:[ReiNoir](https://github.com/reinoir)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:
|
||||
[2]:
|
||||
[3]:
|
||||
[4]:
|
||||
[5]:
|
||||
[6]:
|
||||
[7]:
|
||||
[8]:
|
||||
[9]:
|
||||
[10]:
|
||||
[11]:
|
||||
[12]:
|
||||
[13]:
|
||||
[14]:
|
||||
[15]:
|
||||
[16]:
|
||||
[17]:
|
||||
[18]:
|
||||
[19]:
|
||||
[20]:
|
@ -1,8 +1,11 @@
|
||||
主流搜索引擎闯入Linux命令行世界
|
||||
================================================================================
|
||||
(LCTT译注:这里,我们姑且认为您身处能够访问Internet的地方!)
|
||||
|
||||
为什么会有人要从终端搜索互联网上的东西?我不清楚,这里头可能有许多的原因。但是,因为没人要求答案总比没人知道答案少令人失望一点。这里,列出了一些流行的搜索引擎的命令行工具,可以让你们通过Linux终端来访问它们。
|
||||
|
||||
### 1. Google ###
|
||||
|
||||
让我们从一个巨头开始吧:Bing!好吧,只是开个玩笑,事实上应该是Google。坦白讲,你根本不需要使用命令行工具来进行Google搜索。只需要简简单单的一个命令:
|
||||
|
||||
$ xdg-open https://www.google.com/search?q="[query]"
|
||||
@ -84,11 +87,12 @@ Twitter是迎合潮流的一个很好的搜索引擎。我们已经在[如何在
|
||||
#### Adrien Brochard ####
|
||||
|
||||
我是一位来自法国的Linux爱好者。在尝试了多个发行版后,我最后认可了Archlinux。然而,我一直在试着通过积累一些知识和技巧来改善我的系统。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/2014/06/access-popular-search-engines-command-line-linux.html
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,49 @@
|
||||
KDE Connect增加了安卓文件发送、触摸板模拟等功能
|
||||
================================================================================
|
||||
|
||||

|
||||
|
||||
通过安卓版的KDE和Plasma Desktop可以将所连接设备的触摸屏当作电脑的触摸板使用。(注:Plasma 是KDE项目提供的所有图形环境总称。目前有三个Plasma子项目:Plasma Desktop用于传统的桌面电脑和笔记本电脑、Plasma Netbook用于上网本,以及Plasma Active用于平板电脑。)
|
||||
|
||||
这个新附加的无线输入设备可以作为一般的鼠标使用,不过仍然不支持像双指划动或双指右击这样的多点触摸。(LCTT译注:双指右击指在触摸板上双指同时双击,代表鼠标右键点击)
|
||||
|
||||
安卓的共享方式现在支持KED Connect,允许你从安卓发送文件到你的桌面,也可以通过Dolphin文件管理的菜单或者用命令行推送文件的方式,从桌面发送文件到安卓。
|
||||
|
||||
在[iOS 8 和 OS X Yosemite][1]、 [Android ‘L’ 和 Chrome OS][2]上的类似支持,计划在这个秋天首次亮相。
|
||||
|
||||
本次更新的版本修复了很多的漏洞,包括很多的改进和对FreeBSD系统的支持。
|
||||
|
||||
完整的特性如下:
|
||||
|
||||
- 在安卓和KDE之间共享文件
|
||||
- 用平板电脑模拟触摸板
|
||||
- 在桌面接收来自安卓4.3以上版本的通知
|
||||
- 共享剪切板支持手机和PC之间的拷贝、粘贴
|
||||
- 可以遥控桌面上选定的媒体播放器
|
||||
- 电池状态
|
||||
- WI-FI连接共享
|
||||
- RSA加密
|
||||
|
||||
### KDE Connect 0.7版下载 ###
|
||||
|
||||
从Google Play和F-Droid商店可以免费下载到KDE Connect Android的应用。
|
||||
|
||||
- [ 从Google Play下载KDE Connect][3]
|
||||
|
||||
为了能用到这些最新特征,你需要安装Plasma的最新版本KDE Connect(0.7版)。撰写本文时,还没有提供deb安装包和PPA源。不过可以在Kubuntu 14.04 LTS上通过安装源码来安装,或用以下介绍方式[戳这里][4]。
|
||||
|
||||
- [下载KDE Connect 0.7源代码][5]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
点击: http://www.omgubuntu.co.uk/2014/06/kde-connect-android-notifications-linux-desktop
|
||||
|
||||
译者:[bookjoy](https://github.com/bookjoy) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.omgubuntu.co.uk/2014/06/os-x-10-10-feature-ubuntu-already
|
||||
[2]:http://www.omgchrome.com/android-apps-notifications-call-alerts-chromebook/
|
||||
[3]:https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp
|
||||
[4]:https://albertvaka.wordpress.com/2014/06/28/awesome-contributions-to-kde-connect/#comment-1175
|
||||
[5]:http://download.kde.org/unstable/kdeconnect/0.7/src/kdeconnect-kde-0.7.tar.xz.mirrorlist
|
@ -0,0 +1,34 @@
|
||||
Linux 播客软件‘Vocal’进入Beta阶段,准备测试
|
||||
================================================================================
|
||||
**在四月份我们就被一款叫做['Vocal'][1]的Ubuntu下的播客软件吸引了,但它从一个漂亮的草图到能真正可用,还有一段路要走,而你则可以帮助我们测试一下Vocal。**
|
||||
|
||||
该软件的开发者,Nathan Dyer已经完成了一个beta版本,仍然不够稳定,其中还有很多功能也未完成,但它已经可以通过专用的PPA在Ubuntu 14.04 LTS以及14.10版本下进行测试了。
|
||||
|
||||
新闻的发布者宣称,这个beta版本只能**安装在下一代Elementary OS桌面的系统中**。并且自从Elementary OS不再为用户提供官方的Beta预览版后,让测试这事更加的麻烦了。
|
||||
|
||||
对于Unity、GNOME或者KDE来说试试也许并不太难,我想大概。如果你是Ubuntu的用户,想要试用Vocal,首先得安装不稳定版的Elementary OS的PPA,通常我们都不是很建议这样做。
|
||||
|
||||
Dyer建议感兴趣的用户等待下一代的Elementary OS桌面的beta版本开发完毕吧。
|
||||
|
||||
现在,我们只能望梅止渴了。
|
||||
|
||||

|
||||
|
||||
Vocal Beta 在 Elementary OS中(图: Dyer)
|
||||
|
||||
因为Vocal是开源的,那将没有任何东西能阻挡它被完美的移植到类似Unity的主流Linux桌面系统中。
|
||||
|
||||
了解更多请访问[开发者的Blog][1]、[查看最新版本][2]或者在Launchpad.net上[查看Vocal的最新信息][3]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/06/linux-podcast-app-vocal-hits-preview-kicker
|
||||
|
||||
译者:[nd0104](https://github.com/nd0104) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.omgubuntu.co.uk/2014/04/vocal-podcast-manager-linux
|
||||
[2]:http://nathandyer.me/2014/06/28/vocal-beta-released-daily-ppa-available/
|
||||
[3]:https://launchpad.net/~nathandyer/+archive/vocal-daily
|
||||
[4]:https://launchpad.net/vocal
|
@ -0,0 +1,67 @@
|
||||
Ubuntu 14.04 LTS: 定制 Unity
|
||||
================================================================================
|
||||
虽然Unity桌面管理器自从伴随 Ubuntu 11.10首次发布以来表现出了强劲的性能,并在可用性上迈进了一大步,但是有人对自定义其外观和行为所带的限制感到反感。我们现在来看看如何自定义Unity,让你重拾自己掌控桌面的感觉。
|
||||
|
||||
### Unity中的可用定制项目 ###
|
||||
|
||||
在ubuntu 14.04中,Unity 有一些以前没有的可定制项。登入你的 Unity,进入“设置”并选择“显示”,你将看到以下画面:
|
||||
|
||||

|
||||
|
||||
Ubuntu 14.04 LTS 显示和 Unity 设置
|
||||
|
||||
你看到的大多数项目相比 Ubuntu 11.01 而言都是新的,而且一些相比较上一个版本的 Ubuntu13.10 也是新的。从Ubuntu13.10开始,Ubuntu加入了可以改变菜单栏和标题栏大小的新特性。
|
||||
|
||||
Unity中所特有的一个特性是我们能够打开或者关闭的“粘性边缘”功能,它能让你的鼠标停止在多显示器组的每个屏幕的边缘,它使光标暂时停在边缘,仿佛是鼠标卡住了一样,我们可以选择关闭它。(LCTT译注,其实我觉得挺有用的,可以避免无意中切换到其他工作桌面,不要关闭)
|
||||
|
||||
在“设置”中选择“外观”选项,可以看到如下画面。
|
||||
|
||||

|
||||
|
||||
Ubuntu 14.04 LTS 显示和Unity设置
|
||||
|
||||
这里我们可以看到一个人们最渴望在 Unity 启动器栏中包含的功能-能够改变启动器大小。虽然在Ubuntu 11.10及以后的各种版本中可以通过多种方法实现这个特性,但将其放入外观设置中使其显得更加正式。我喜欢它能将启动器图标缩小直至16的功能(我们接下来所要讲到的工具仅能支持最小调至24)。
|
||||
|
||||
### Unity Tweak Tool-强大! ###
|
||||
|
||||
在Unity首次伴随Ubuntu 11.10发布的几天之内这款工具就跟着出现了,只是你得大费周折去自己把它安装好而且在Unity升级时它可能会损坏。
|
||||
|
||||
然而现在它被正式添加进了Ubuntu的默认软件仓库并且会在Unity更新时同时更新。它附带大量的定制项,那么我们就来安装它吧:
|
||||
|
||||
sudo apt-get install unity-tweak-tool
|
||||
|
||||
安装好,启动后你将看到如下画面:
|
||||
|
||||

|
||||
|
||||
正式的Unity Tweak Tool
|
||||
|
||||
这款工具它集大量Unity桌面定制项目于一体。这些定制项大多能通过默认的Unity设置,命令行操作或者是即使是编辑有时候也很难寻找到的配置文件来实现。
|
||||
|
||||
我们可以改变启动器栏,网页小程序和面板的行为,可以在Unity菜单中搜索等等。所有的都通过着一个工具来实现。花些时间去挖掘适合你的选项-Unity Tweak Tool-学习它,和它一起生活,爱上它(如果你使用Unity,这是起码的)
|
||||
|
||||
### 结尾的一些想法 ###
|
||||
|
||||
Ubuntu 14.04 LTS 越来越被人们视作Linux上的典型的Desktop,(对不起,Canonical,你还没有摆脱Linux身份),Linux Desktop不仅可以作为偶尔使用Linux的那些人(的确有这样的事)的选择,也适用于骨灰级linux专家。
|
||||
|
||||
比之前没有工具,功能可以定制,或是通过配置文件修改定制但是有可能被之后个更新所破坏,现在对于Unity桌面我们就拥有了更多的控制权。Unity桌面性能强劲可靠,又通过Unity Tweak Tool加入一些特色元素,使得它的外观也酷极了!!!
|
||||
|
||||
请给我们你的想法或者点击链接发表你对Unity桌面的评论,我们将有兴趣知道你是如何使用Ubuntu 14.04 LTS 的。
|
||||
|
||||
|
||||
----------
|
||||
|
||||
#### Terrence T. Cox ####
|
||||
|
||||
开发者,Linux倡导者,开源爱好者。 进入这个技术领域很久,被认为经验丰富,但从未感到厌倦。
|
||||
[Twitter][1]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://linuxacademy.com/blog/linux/ubuntu-14-04-lts-customizing-unity/
|
||||
|
||||
译者:[Love-xuan](https://github.com/Love-xuan) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:https://twitter.com/mourngrymtc/
|
@ -0,0 +1,39 @@
|
||||
五个超赞的字符艺术生成器!
|
||||
================================================================================
|
||||

|
||||
|
||||
ASCII是一个非常吸引人的字符编码系统,在计算机,通讯设备,以及其他设备中,通过它来用代码表示字符。新生代的人可能会觉得它已经过时了,但是那些熟悉它的人会懂得ASCII是多么的独特。我们在这里为你准备了五个超赞的ASCII字符艺术生成器。
|
||||
|
||||
### 1.[GlassGiant ASCII Art][1] ###
|
||||
|
||||
这个小程序可以把图片转换成ASCII文字艺术-一堆胡乱堆在一起的文字,数字和符号,看上去没有任何意义,直到你往后站一步去看完整的画面。它也没有什么实际的用途,只是看上去非常简洁灵巧。
|
||||
|
||||
### 2.[ASCII Art Generator][2] ###
|
||||
|
||||
ASCII字符艺术是一种在电脑上把可打印字符作为图片元素来拼接展现一幅图像的艺术活动。你所需要做的只是上传你的图片,然后它会帮你转成ASCII字符艺术。
|
||||
|
||||
### 3.[Ascii.mastervb][3] ###
|
||||
|
||||
ASCII字符艺术来源于7比特ASCII字符标准。ASCII字符艺术曾经在70-80年代很流行。在那个时候,计算机系统都还是基于字符的。这个程序可以非常快地把图片转换成ASCII字符。
|
||||
|
||||
### 4.[IMG2TXT][4] ###
|
||||
|
||||
这个脚本可以将GIF,JPG或PNG的链接转换成ASCII字符或是带颜色的HTML。
|
||||
|
||||
### 5.[picascii][5] ###
|
||||
|
||||
它可以把图片转换成ASCII文本或是HTML。要做转换,你只需要输入链接地址或是选择一张你电脑上的图片(gif/jpeg/png)。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.efytimes.com/e1/fullnews.asp?edid=142480
|
||||
|
||||
译者:[zpl1025](https://github.com/zpl1025) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://glassgiant.com/ascii/
|
||||
[2]:http://www.ascii-art-generator.org/
|
||||
[3]:http://ascii.mastervb.net/
|
||||
[4]:http://www.degraeve.com/img2txt.php
|
||||
[5]:http://picascii.com/
|
@ -1,4 +1,4 @@
|
||||
如何在Ubuntu 14.04中添加多时区时间 [小技巧]
|
||||
[小白技巧]如何在Ubuntu 14.04中添加多个时区时间
|
||||
================================================================================
|
||||
如果你需要和多时区时间打交道的话,你一定希望你的电脑时钟可以显示多个时区的时间。作为一个移居国外的人,我需要关注法国和印度的时间。在Ubuntu系统中,你可以进行简易的设置来添加多时区时间。
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
### 在Ubuntu 14.04系统中添加多时区时间 ###
|
||||
|
||||
打开系统设置(按下标有微软徽标的按键,在Dash中搜索“系统设置”),进入”时间&日期“选项。
|
||||
打开系统设置(按下标有微软徽标的按键,在Dash中搜索“系统设置”),进入“时间&日期”选项。
|
||||
|
||||
接下来,进入**时钟**标签页,找到**其他时区时间**选项,然后点击**选择地区**按钮。
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
|
||||

|
||||
|
||||
好好的感受Ubuntu多时区时钟给你带来的便捷吧。:)
|
||||
体验下Ubuntu多时区时钟给你带来的便捷吧。:)
|
||||
|
||||
----------
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
|
||||
via: http://itsfoss.com/add-multiple-timezones-ubuntu-1404/
|
||||
|
||||
译者:[JonathanKang](https://github.com/JonathanKang) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[JonathanKang](https://github.com/JonathanKang) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,83 @@
|
||||
命令行星期二 —— 第三篇
|
||||
================================================================================
|
||||
今天,肖茨先生将带领我们游历文件系统的第一部分。我们将学到如何访问、列出目录内的文件,以及首次介绍一些选项的运用。OK,让我们开始学习这周的第一个命令。
|
||||
|
||||
### ls ###
|
||||
|
||||
ls 是一个用来列出目录内文件的命令。通过添加**选项**来实现多种不同的用途。简单起见,你可以只需键入 ls 。但是,你也可以在命令后面添加一个选项,它会帮助你修饰你的命令。如果你想要随意摆弄一些信息时,这会帮到你的。举例来说,当你要从一个命令的大量输出中找寻指定信息,你可以用选项缩小范围来实现。
|
||||
|
||||
这就是选项的基础概念。我们可以用下面书写格式表示:
|
||||
|
||||
command(命令) -option(选项) argument(参数)
|
||||
|
||||
命令,恩...,我们可以输入 pwd、 ls, 或者我们到目前为止所有学过的命令。
|
||||
|
||||
以上我们已经阐述了选项的目的。但是我们需要注意一下书写格式:在前头添加一个破折号。所以,如果选项为 l, 你需要在命令后键入**-l**。
|
||||
|
||||
**参数**是一个命令的操作对象(在这个例子中,它是一个目录,我们将会学到如何浏览它们)。
|
||||
|
||||
接着,让我们尝试在主目录里尝试用 ls 命令列出 /etc 目录内容。这次我们先不添加选项。
|
||||
|
||||

|
||||
|
||||
就这样,列出了一大堆的文件。它们还根据颜色进行了分类。蓝色的是目录,白色的为普通文件,绿色的似乎是某种 shell 脚本文件。除此之外,还有其他不同的颜色来代表不同的文件类型。
|
||||
|
||||
接下来,你可以在刚才的命令里添加 -l 选项。添加选项 -l 后也会列出同样的文件和目录,但是以长格式方式输出。如果你需要查看更多信息的话,这个选项将是不错的选择。
|
||||
|
||||

|
||||
|
||||
### 长格式 ###
|
||||
|
||||
这样,用了长格式后,你可以看到更详细的信息,以及在每行开头类似-rw-r--r-- 令人抓狂的标示。实际上,这只是一种组合,代表了各种意义的信息。
|
||||
|
||||

|
||||
|
||||
(File Name)就是文件的名称。(Modification time)是文件最后修改的时间。(Size) 用 byte 计量的文件大小。(Group) 是组的名称,和拥有者一起构成文件权限。(Owner) 是文件拥有者的名称。最最重要的…
|
||||
|
||||
###…文件权限 ###
|
||||
|
||||
文件权限在长格式每一行的开端都显得非常的杂乱。第一个字符代表文件类型。如果是 'd' , 意味着它是一个目录。如果是 '-' , 意味着它是一个一般文件。接下来的三个字符分别代表拥有者的可读, 可写 ,可执行的权限。再接着三个字符表示组成员的享有的文件权限,而最后三个字符表示其他人(既不是拥有者也不是同组)对文件的享有权限。
|
||||
|
||||
例如,如果有个文件在长格式下显示为:-rw-r--r--, 这说明这是个普通文件(首字符 '-'),拥有者享有可读可写权限,但是没有可执行权限,导致拥有者无法执行该文件(首字符'-'后'rw-'),用户组和其他用户只享有可读权限(你不难发现'r--'字段在后面出现了两次 。如果用户组是 'rwx' 而不是 'r-',则意味着它们可读,可写,可执行)。
|
||||
|
||||
ls 的下个选项是 ls -la .. ,-a 它会列出所有的文件,包括隐藏文件。在通常情况下,隐藏文件是不可见的。用长格式列出当前工作目录下的父目录的所有文件。
|
||||
|
||||
### less ###
|
||||
|
||||
less 是一个可以显示你的文本文件的命令。举例来说,你要在 /etc 下找寻名为 os-release 的文本文件。你可以使用 ls /etc 成功实现,而现在你想要阅读它的内容。
|
||||
|
||||
你只需要使用 less /etc/os-release。
|
||||
|
||||

|
||||
|
||||
..就这样了。
|
||||
|
||||
你要如何控制 less 呢?
|
||||
|
||||
简单的, 你只需要动动键盘就行了!
|
||||
|
||||
less 一次只会显示一个页面的文本。往前翻页你需要按 **Page Up**, 或者 **'b'**。往后翻页你可以按**Page Down**, 或者 **空格**。大写的**G**会跳转到文本的末尾,**1G**会跳转到文本的开端。**/字符**会在文本内搜索指定字符(例如,如果你输入 /suse ,它会找寻所有文本含有的 suse 并标记出来)。n 会重复执行你的搜索,**h**会显示所有的选项(h,即帮助的意思)。
|
||||
|
||||

|
||||
|
||||
按q退出 less 命令。
|
||||
|
||||
### file ###
|
||||
|
||||
file 会显示文件的类型,是否是你要找的 ASCII 文本,还是 jpg 图片,bash 脚本等。让我们用 /etc/os-release 执行练习。
|
||||
|
||||

|
||||
|
||||
这样,如你所见,os-release 是一个 ASCII 文本文件。 请尝试其他文件,并观察结果。
|
||||
|
||||
下回见了,记住…
|
||||
|
||||
…一定要玩的开心啊!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.opensuse.org/2014/07/01/command-line-tuesdays-part-three/
|
||||
|
||||
译者:[Luoxcat](https://github.com/Luoxcat) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -1,8 +1,8 @@
|
||||
如何在Linux上检查MySQL的存储引擎类型
|
||||
[小白技巧]如何在Linux上检查MySQL数据表的存储引擎类型
|
||||
================================================================================
|
||||
> **提问**: 我想要知道我的MySQL数据库是MyISAM还是Innodb类型。我该如何检查MySQL数据库表的类型?
|
||||
|
||||
MySQl主要使用两种存储引擎:**MyISAM and Innodb**。MyISAM是非事务的,因此拥有读取更快,然而InnoDB完全支持细颗粒的事务锁定(比如:commit/rollback)。当你创建一张新的MySQL表时,你要选择它的类型(也就是存储引擎)。如果没有选择,你就会使用与预设置的默认引擎。
|
||||
MySQl主要使用两种存储引擎:**MyISAM 和 Innodb**。MyISAM是非事务的,因此拥有读取更快,然而InnoDB完全支持细颗粒度的事务锁定(比如:commit/rollback)。当你创建一张新的MySQL表时,你要选择它的类型(也就是存储引擎)。如果没有选择,你就会使用与预设置的默认引擎。
|
||||
|
||||
如果你想要知道已经存在的MySQL数据表的类型,这里有几种方法达到。
|
||||
|
||||
@ -34,7 +34,7 @@ MySQl主要使用两种存储引擎:**MyISAM and Innodb**。MyISAM是非事务
|
||||
|
||||
via: http://ask.xmodulo.com/check-mysql-storage-engine-type-linux.html
|
||||
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,11 +1,10 @@
|
||||
如何在linux中创建sosreport(RHEL 5.X / RHEL 6.X)
|
||||
如何用sosreport在Linux上创建诊断信息
|
||||
================================================================================
|
||||
**Sosreport**是linux中的一个命令**RHEL / CentOS**),它会收集**系统配置**和你linux机器上如正在运行的内核版本、加载的模块和系统和服务配置文件之类的诊断信息。这个命令同样可以运行外部的程序来收集更多的信息,并存储这些输出到一个结论文档中。
|
||||
**Sosreport**是**RHEL / CentOS**上的一个命令,它会收集**系统配置**和你linux机器上的诊断信息,如正在运行的内核版本、加载的模块和系统和服务配置文件之类的信息。这个命令同样可以运行外部的程序来收集更多的信息,并存储这些输出到一个结论文档中。
|
||||
|
||||
Sosreport在你需要获得redhat的技术支持时需要它。Redhat的支持工程师会要求你服务器上的sosreport来用于故障排除。
|
||||
|
||||
To run sosreport , **sos** package should be installed. Sos package is part of default installation in most of linux. If for any reason this package is no installed , then use below yum command to install **sos package** :
|
||||
要运行sosreport,需要安装**sos** 包。Sos包是大多是linux的默认安装包中的一部分。如果有任何原因没有安装,那么运行下面的yum命令来安装**sos 包** :
|
||||
要运行sosreport,需要安装**sos** 包。sos包是大多是linux的默认安装包中的一部分。如果因为某种原因没有安装,那么运行下面的yum命令来安装**sos 包** :
|
||||
|
||||
# yum install sos
|
||||
|
||||
@ -15,7 +14,7 @@ To run sosreport , **sos** package should be installed. Sos package is part of d
|
||||
|
||||
# sosreport
|
||||
|
||||
这条命令正常情况下会在**几分钟**里完成。根据本地配置,在某些情况下,某些选项可能需要更长的时间才能完成。一旦完成,sosreport将在**/ tmp目录**目录中生成压缩文件。不同版本使用不同的压缩方案(** gz,bz2,或xz**)。该文件应提供给红帽的支持代表(在开放的情况下通常作为附件)。
|
||||
这条命令正常情况下会在**几分钟**里完成。根据本地配置,在某些情况下,某些选项可能需要更长的时间才能完成。一旦完成,sosreport将在**/ tmp目录**目录中生成一个压缩文件。不同版本使用不同的压缩方案(** gz,bz2,或xz**)。该文件应提供给红帽的支持代表(在开放的情况下通常作为附件)。
|
||||
|
||||
**注意**:sosreport需要root权限才能运行。
|
||||
|
||||
@ -38,6 +37,6 @@ sosreport命令有一个**模块化结构**,并允许用户启用和禁用模
|
||||
|
||||
via: http://www.linuxtechi.com/how-to-create-sosreport-in-linux/
|
||||
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -1,8 +1,9 @@
|
||||
怎样去查找并杀掉非法的MySQL查询
|
||||
怎样把坏的MySQL查询找到并杀死?
|
||||
================================================================================
|
||||
有时,相关数据库系统的复杂性可能被压倒.幸运地,这种复杂性是一种优势,与 MySQL工具一起管理查询. 在本教程中, 我将向你们展示 **怎样去查找并杀掉任何非法的MySQL查询**.
|
||||
|
||||
为了浏览当前正在运行的查询, 登陆到MySQL终端,然后运行‘show processlist’命令:
|
||||
有时,关系型相关数据库系统的复杂性会把你搞晕,不过幸运的是,使用MySQL工具来管理查询就就可以避免这些复杂性。 在本教程中,我将向你们展示 **怎样去查找并杀掉任何非法的MySQL查询**。
|
||||
|
||||
为了浏览当前正在运行的查询,登陆到MySQL终端,然后运行‘show processlist’命令:
|
||||
|
||||
mysql> show processlist;
|
||||
|
||||
@ -16,10 +17,10 @@
|
||||
+--------+--------+-----------------+---------+---------+-------+-------+------------------+-----------+---------------+-----------+
|
||||
4 rows in set (0.03 sec)
|
||||
|
||||
首先 你应该查看'Time'项, 这里记录了进程执行 "doing the thing it's doing" 操作的秒数. ‘command’项处于‘Sleep’
|
||||
状态的进程正在等待查询, 因此,它并没有消耗任何资源. 对于其他任何进程而言,‘Time’超过一定的秒数表明出现问题.
|
||||
首先你应该查看'Time'项,这里记录了进程执行 "做其当做的事情" 操作的秒数。‘command’项处于‘Sleep’
|
||||
状态的进程表示其正在等待接受查询,因此,它并没有消耗任何资源。对于其他任何进程而言,‘Time’超过一定的秒数表明出现问题。
|
||||
|
||||
在这种情况下,只能通过运行‘show processlist’命令来查询.如果我们有一个糟糕的写查询,让我们来看看情况如何:
|
||||
在上面的例子中,唯一运行的查询是我们的‘show processlist’命令。让我们来看看如果我们有一个写的很烂的查询是怎么样的:
|
||||
|
||||
mysql> show processlist;
|
||||
|
||||
@ -35,19 +36,19 @@
|
||||
+--------+--------+-----------------+-----------+---------+-------+--------------+----------------------------------+-----------+---------------+-----------+
|
||||
6 rows in set (0.00 sec)
|
||||
|
||||
啊哈!现在我们看到这里的查询几乎运行了30s. 如果我们不想让它继续运行,可以使用它的'Id'去执行kill命令:
|
||||
啊哈!现在我们看到有一个查询运行了将近30秒。如果我们不想让它的进程继续运行,可以将它的'Id'传递给kill命令:
|
||||
|
||||
mysql> kill 132033;
|
||||
Query OK, 0 rows affected (0.00 sec)
|
||||
mysql>
|
||||
|
||||
(注意 由于我们没有改变任何数据,MySQL总是报告0行被影响.)
|
||||
(注意 由于我们没有改变任何数据,MySQL总是报告0行被影响。)
|
||||
|
||||
明智的使用kill命令能够清除积压的查询.记住,但那不是一种永久的方法 - 如果这些查询来自你的应用,你需要去重写它们,或者将继续看到相同的问题.
|
||||
明智的使用kill命令能够清除积压的查询。然而,要记住的是,那不是一种永久的方法 - 如果这些查询来自你的程序,你需要去重写它们,或者将继续看到相同的问题不断出现。
|
||||
|
||||
### 另请参阅 ###
|
||||
|
||||
关于不同‘Command’的MySQL文档:
|
||||
关于不同‘命令’的MySQL文档:
|
||||
|
||||
- [https://dev.mysql.com/doc/refman/5.7/en/thread-commands.html][1]
|
||||
|
||||
@ -55,7 +56,7 @@
|
||||
|
||||
via: http://xmodulo.com/2014/07/find-kill-misbehaving-mysql-queries.html
|
||||
|
||||
译者:[hunanchenxingyu](https://github.com/hunanchenxingyu) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[hunanchenxingyu](https://github.com/hunanchenxingyu) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,83 @@
|
||||
命令行星期二——第四部分
|
||||
===================
|
||||
|
||||
大家好。新的一周,新的冒险!
|
||||
|
||||
今天,我们将会学习使用四个相当简单的命令去操作文件。好,废话少说,我们开始吧。
|
||||
|
||||
在开始学习这些命令之前,我们先稍微说些题外话,讲讲“通配符”的用处。
|
||||
|
||||
###通配符###
|
||||
|
||||
使用图形工具区复制、粘贴、新建目录等操作也许很容易,但是若想完成一些更复杂的任务,例如仅仅将一个目录下的所有.html文件复制到另一个目录中、或者只复制在某个目录中不存在的文件,这时命令行也许会比较方便。我们回到通配符的学习中,通配符是shell的基本功能,它是一个由一些特殊字符组成的集合,它让你可以用一些简单的规则来选择出某些文件。(通配符可以出现在文件名中,用于指定文件名的字符个数和字母的大/小写等规则)。
|
||||
|
||||
如下表 :
|
||||
|
||||

|
||||
|
||||
下面是肖茨先生给出的一些实例,如下表:
|
||||
|
||||

|
||||
|
||||
如果你使用一个包含文件名参数的命令,你就可以使用通配符。
|
||||
|
||||
###cp###
|
||||
|
||||
cp是一个用于复制文件或者目录的命令,它的用法相当的简单。进入到你想复制的文件所在的目录,然后使用如下命令
|
||||
|
||||
`cp file1 file2` -复制一个文件
|
||||
|
||||
或者
|
||||
|
||||
`cp file1 file2 ... directory` -从当前工作目录复制多个文件到指定的目录。
|
||||
|
||||
下表是肖茨先生给出的cp命令的一些选项:
|
||||
|
||||

|
||||
|
||||
###mv###
|
||||
|
||||
mv是今天的第二个命令,我们可以使用mv来重命名一个文件或目录,或者移动一个文件或目录。我们可以这样使用mv命令。
|
||||
|
||||
`mv filename1 filename2` -若想将文件filename1重命名为filename2。
|
||||
|
||||
或者
|
||||
|
||||
`mv file directory` -若想将一个文件移动到某个目录。
|
||||
|
||||
下表是一些mv命令的实例
|
||||
|
||||

|
||||
|
||||
###rm###
|
||||
|
||||
rm命令是用于删除文件或目录,它的用法比较直接,如下:
|
||||
|
||||
`rm file`
|
||||
|
||||
或者
|
||||
|
||||
`rm -r driectory`
|
||||
|
||||
这里也有一个包含rm其他选项的表
|
||||
|
||||

|
||||
|
||||
但是,使用rm命令时要小心点。因为并没有撤销删除的选项,因此使用rm命令式要格外的小心,避免对你的系统造成不必要的破坏。
|
||||
|
||||
###mkdir###
|
||||
|
||||
mkdir是用于创建目录.它是今天最简单的一个命令:
|
||||
|
||||
`mkdir directory`
|
||||
|
||||
看,目录成功创建了!
|
||||
|
||||
这是本周的内容,下周二再见,致以最真诚的问候!
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
via: https://news.opensuse.org/2014/07/08/command-line-tuesdays-part-four/
|
||||
|
||||
译者:[cvsher](https://github.com/cvsher) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -0,0 +1,44 @@
|
||||
[小技巧]如何在Ubuntu14.04中禁用叠加滚动条
|
||||
================================================================================
|
||||

|
||||
|
||||
Hello 伙计们,
|
||||
|
||||
这是一个如何在Ubuntu中禁用叠加滚动条的小技巧。注意,在本文中讲的不是删除叠加功能,而是告诉你如何启用或禁用它。
|
||||
|
||||
### 禁用 ###
|
||||
|
||||
打开终端并执行以下命令
|
||||
|
||||
gsettings set com.canonical.desktop.interface scrollbar-mode normal
|
||||
|
||||
更改后会立即生效:
|
||||
|
||||

|
||||
|
||||
### 启用 ###
|
||||
|
||||
gsettings reset com.canonical.desktop.interface scrollbar-mode
|
||||
|
||||

|
||||
|
||||
Enjoy!
|
||||
|
||||
----------
|
||||
|
||||

|
||||
|
||||
[Enock Seth Nyamador][1]
|
||||
|
||||
我穿着--[0-0]--(比基尼?), 一个开源的瘾君子。一个发展中的非洲geek。我是一个菜鸟开发者和一个有追求的摄影师。想提供给我什么或者是小贴士,请随时与我联系。我随时准备开发和照片。干杯!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.unixmen.com/disable-overlay-scrollbars-ubuntu-14-04-quick-tip/
|
||||
|
||||
译者:[Vito](https://github.com/vito-L) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.unixmen.com/author/seth/
|
||||
|
@ -0,0 +1,44 @@
|
||||
红帽公司发布 OpenStack Platform 5
|
||||
================================================================================
|
||||

|
||||
|
||||
红帽公司[宣布][1]在RHEL上推出OpenStack Platform5,这是基于OpenStack开源云的第三个企业级发行版。该版本不仅开发了一些新功能,针对的用户群体也大为增多,如高大上的云用户、电信企业、互联网服务供应商(ISP)、公有云服务供应商等。
|
||||
|
||||
OpenStack Platform 5是基于最新的Openstack Icehouse的发行版,并且针对云计算技术做了大量的修改和优化工作而来的。
|
||||
|
||||
这个最新的发行版有3年的技术支持周期,[我选择了使用][2]它是考虑到红帽公司在Linux系统上对用户无以伦比的技术支持,红帽公司对其OpenStack Platform 5的技术支持服务将是促使企业购买的关键之一。
|
||||
|
||||
对于红帽公司是否会支持OpenStack的其他发行版尚未有定论,但一份OpenStack用户调查已经显示[90%的OpenStack开发人员并没有在RHEL上使用OpenStack][3],而是选用了Ubuntu或者CentOS Linux和其虚拟化技术。
|
||||
|
||||
OpenStack Platform 5的最新功能:
|
||||
|
||||
> **支持和VMware基础架构的整合**,结构包含虚拟化、管理、网络和存储。
|
||||
用户一般会使用已经在使用的VMware vSphere资源,比如虚拟化驱动作为OpenStack (Nova)的计算节点,再使用上层的OpenStack Dashboard(Horizon)对节点进行管理。
|
||||
同样的,RHEL OpenStack Platform 5也支持VMware的NSX插件,作为OpenStack NetWorking (Neutron)对网络进行管理,支持VMware虚拟磁盘(VMDK)以插件形式存在,作为OpenStack Block Storage(Cinder)来使用。
|
||||
>
|
||||
|
||||
> **对云资源的使用,采取了更好的布置。**服务器组让计算散布到OpenStack云的服务节点上,这让分布式应用有了更强的弹性,对于复杂的应用,也能起到降低通信延迟,提高运算性能的作用。
|
||||
>
|
||||
|
||||
> **对虚拟机更好的支持,支持加密,满足美英国家对信息安全的要求** 使用RHEL 7中提供的半虚拟化随机数生成器,在用户程序中也添加进这个工具,可以更好的加密质量和性能提升。
|
||||
|
||||
> **提升协议栈的互通性**红帽公司宣称,Neutron中新开发的模块化的网络技术将简化OpenStack的部署。这种技术将允许用户在OpenStack中部署多种网络方案来解决异构网络的访问。
|
||||
|
||||
红帽公司虚拟化和OpenStack产品线总经理 Redhesh Balakrishnan说到:
|
||||
|
||||
> “我们看到越来越多的企业级用户或服务供应商选择OpenStack作为私有云平台,RHEL OpenStack Platform 5不只是一个基于OpenStack Icehouse产品,我们还开发了很多简单易用的功能,增强了产品的可靠性。
|
||||
在未来三年内,我们要让用户看到,RHEL OpenStack Platform 5所提供的功能和技术支持服务,将为他们部署的应用保驾护航,让用户对我们的产品充满信心。
|
||||
|
||||
我敢跟你打赌,--三年的技术支持服务--将是企业用户在竞争激烈的云平台领域选择红帽的关键点。并且,毋庸置疑,红帽公司把自己的未来放在了云计算,放在了OpenStack Platform上面。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://ostatic.com/blog/red-hat-announces-availability-of-its-openstack-platform-5
|
||||
|
||||
译者:[nd0104](https://github.com/nd0104) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.marketwatch.com/story/red-hat-announces-general-availability-of-red-hat-enterprise-linux-openstack-platform-5-2014-07-08
|
||||
[2]:http://ostatic.com/blog/why-red-hats-openstack-support-must-be-as-inclusive-as-possible
|
||||
[3]:http://www.openstack.org/blog/2013/11/openstack-user-survey-october-2013/
|
@ -0,0 +1,65 @@
|
||||
Linux基础:如何在命令行中查看目录的大小
|
||||
=====================================================================
|
||||
|
||||
这是写给Liunx新用户的一系列文章中的第一篇,在这系列文章我将会写一些对新用户来说非常好用的**Linux基础命令**。
|
||||
|
||||
**注意**:本文的目标读者是仅有小量甚至是没有任何Linux命令行使用经验的读者。
|
||||
|
||||
>作为一个Linux的新用户,我怎样可以在命令行终端中查看某个目录的属性?
|
||||
|
||||
###要求###
|
||||
|
||||
唯一的要求是**du**命令行工具。du基本上是所有Linux发行版本默认提供的工具。用以下的命令来检查你的系统中是否可以使用du命令:
|
||||
|
||||
man du
|
||||
|
||||
**du** 命令用于输出文件的空间使用情况。
|
||||
|
||||
###使用du###
|
||||
|
||||
不带任何参数的运行du命令会显示当前工作目录以及其子目录的文件名和所占用的空间大小(以字节为单位)。
|
||||
|
||||
du
|
||||
|
||||

|
||||
|
||||
使用**-h**参数以对用户友好的方式输出文件大小,即分别以**K, M**和**G**来表示**Kb,Mb**和**Gb**
|
||||
|
||||
du -h
|
||||
|
||||

|
||||
|
||||
若想查看某个特定目录的文件大小,则在du命令中指定要查看的目录名,如下:
|
||||
|
||||
du -h Mapmaker
|
||||
|
||||

|
||||
|
||||
使用 **-c** 参数来查看目录所占用磁盘空间的总大小
|
||||
|
||||
du -ch
|
||||
|
||||

|
||||
|
||||
使用 **-s** 参数只输出指定目录占用空间的大小
|
||||
|
||||
du -sh Mapmaker Sandbox
|
||||
|
||||

|
||||
|
||||
使用 man du 查看du命令更多参数的用法
|
||||
|
||||
man du
|
||||
|
||||

|
||||
|
||||
知道du命令更多的用法?请分享给我和其他人。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.unixmen.com/linux-basics-find-size-directory-commands/
|
||||
|
||||
译者:[cvsher](https://github.com/cvsher) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,80 @@
|
||||
ncdu – 基于ncurses库的磁盘使用分析器
|
||||
================================================================================
|
||||
[Ncdu][1] (NCurses Disk Usage) 是一个基于Ncurses库的du命令的界面。它通过大家熟知的[du][2]命令,为用户提供一个快速且容易被使用的界面。它可以显示磁盘使用的百分比,且允许你使用ncurses库的方式在目录之间导航。
|
||||
|
||||

|
||||
|
||||
### 安装 ###
|
||||
|
||||
ncdu已经被移植到大多数linux发行版本,可从官方资源库中安装.
|
||||
|
||||
Arch / Manajaro 及其衍生版:
|
||||
|
||||
sudo pacman -S ncdu
|
||||
|
||||

|
||||
|
||||
Ubuntu / Debian / Linux Minut 及其衍生版:
|
||||
|
||||
sudo apt-get install ncdu
|
||||
|
||||
Fedora 及其衍生版:
|
||||
|
||||
sudo yum install ncdu
|
||||
|
||||
在[这里][3]可以找到其他的发行版。
|
||||
|
||||
### 使用 ncdu ###
|
||||
|
||||
键盘操作:
|
||||
|
||||
|
||||
- up, k — 向上移动光标
|
||||
- down, j – 向下移动光标
|
||||
- right/enter — 打开选定的目录
|
||||
- left, <, h — 打开父目录
|
||||
- n — 按文件名排序(升序/降序)
|
||||
- s — 按文件大小排序(升序/降序)
|
||||
- C – 按项目数排序(升序/降序)
|
||||
- d – 删除选定的文件或目录
|
||||
- t — 排序时将目录放在文件前面
|
||||
- g – 以图形方式显示百分比
|
||||
|
||||
为使用ncdu,请打开终端并且运行
|
||||
|
||||
ncdu
|
||||
|
||||
开始扫描目录.
|
||||
|
||||

|
||||
|
||||
当扫描完成后,你能够很容易的看到文件/目录的大小.
|
||||
|
||||

|
||||
|
||||
确认删除文件:
|
||||
|
||||

|
||||
|
||||
在[这里][4] 阅读ncdu命令手册或运行:
|
||||
|
||||
man ncdu
|
||||
|
||||
**荣誉**: 有两位读者**BasketCase**和**Sama Vim**在阅读“[Linux基础:如何在命令行中查看目录的大小][5]”之后 向我们推荐了这个Ncdu工具。
|
||||
|
||||
|
||||
Enjoy!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.unixmen.com/ncdu-ncurses-disk-usage-analyzer/
|
||||
|
||||
译者:[hunanchenxingyu](https://github.com/hunanchenxingyu) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://dev.yorhel.nl/ncdu
|
||||
[2]:http://www.unixmen.com/linux-basics-find-size-directory-commands/
|
||||
[3]:http://dev.yorhel.nl/ncdu
|
||||
[4]:http://dev.yorhel.nl/ncdu/man
|
||||
[5]:http://linux.cn/article-3473-1.html
|
@ -0,0 +1,28 @@
|
||||
放弃微软产品,慕尼黑省下数百万美元
|
||||
=================================================
|
||||

|
||||
|
||||
**慕尼黑这座城市已经成为了从微软产品转向开源的,最突出的城市管理案例之一,而且Canonical公司和ubuntu为这次变革起了很大的作用。**
|
||||
|
||||
慕尼黑成功脱离了微软的依赖,但是他们为这次摆脱过程付出了价值不菲的代价。从微软产品转向开源的好处看起来似乎很昂贵,但是转变的成本比之后的产品升级显著要低,不仅如此,在未来,我们会发现这种做法更便宜。
|
||||
|
||||
当你在像慕尼黑城市这种大城市,尝试从一个专有解决方法转向开源的时候,这可并不容易。因为慕尼黑拥有22个组织单位,每个单位都有自己的IT部门,更不要说各部门之间不同版本的应用程序。
|
||||
|
||||
地方政府不能只采用一个Linux发行版本。第一次的尝试是在2006年伴随着Debian的回归,但是特定的操作系统并没有一个可预测的发布时间表。这就是新操作系统LiMux产生的原因,一个基于ubuntu的操作系统。
|
||||
|
||||
“LiMux/开源项目是漫长而又反复的,但是经过几年时间运行这种大型Linux,我们意识到ubuntu才是最能满足我们需求的平台。通过结合开源软件的低成本和自由,加以对我们需要的硬件和应用程序的持续支持,这种做法才是这个项目成功的关键因素之一。当然,最终要还有我们的市府在项目上始终给予的高度支持。”慕尼黑项目经理Peter Hofmann[说道][1]。
|
||||
|
||||
截至2013年,如果只考虑升级成本的话,这个项目帮助慕尼黑节省了€1000万(1360万美元)。如果我们能量化官方支持软件和其余隐藏成本的话,这个数额显得有些多。
|
||||
|
||||
眼下,慕尼黑14000台PC机运行着LiMux,而且数量还在持续增长。这很有可能影响其余德国城市在未来也这么做,尤其是慕尼黑的邻居。
|
||||
|
||||
慕尼黑当局采用了13年才完成这次变革,但是最终事实证明,这样做可以省下一大笔资金,而且证明了Linux实际上是整个城市IT基础设施又好有免费的解决方案。
|
||||
|
||||
---------------------------------------------------------------------------------
|
||||
via: http://news.softpedia.com/news/Canonical-and-Ubuntu-Helped-Munich-Save-Millions-of-Dollars-By-Ditching-Microsoft-Products-450571.shtml
|
||||
|
||||
译者:[su-kaiyao](https://github.com/su-kaiyao) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:https://insights.ubuntu.com/2014/07/07/ubuntu-and-open-source-help-the-city-of-munich-save-millions/
|
@ -0,0 +1,64 @@
|
||||
Ubuntu 14.04中修复默认启用HDMI后没有声音的问题
|
||||
================================================================================
|
||||
|
||||
声音问题在Ubuntu中是老生常谈了。先前我已经在[修复Ubuntu中的“无声”问题][1]一文中写到了多种方法,但是我在此正要谈及的声音问题跟在另外一篇文章中提到的有所不同。
|
||||
|
||||
因此,我安装了Ubuntu 14.04,实际上是重新安装了一遍。一如既往,我将[全新安装Ubuntu 14.04后要做的事][2]全部又重新做了一遍。然后,我意识到系统突然失声了。当我正侦查问题所在之时,我发现了一件奇怪的事情。我检查了[alsamixer][3],发现它的状况有点离奇。
|
||||
|
||||

|
||||
|
||||
正如你能看到的,**alsamixer中默认设置了HDMI**。这意味着默认情况下将使用HDMI输出,而不是内置扬声器。这就是我从系统上内置扬声器无法获得声音的原因。
|
||||
|
||||
使用下面的命令来检查alsamixer的状态:
|
||||
|
||||
alsamixer
|
||||
|
||||
如果alsamixer默认设置成了HDMI或者其它声音输出,那就继续读下去吧,看看我们是怎么来修复这个问题的。
|
||||
|
||||
### 修复默认设置成HDMI时Ubuntu的失声问题 ###
|
||||
|
||||
现在来强制Ubuntu使用模拟输出来取代默认的HDMI,但我们还需要一点点信息。打开终端,然后使用下列命令:
|
||||
|
||||
aplay -l
|
||||
|
||||
这会列出设备,卡号之类的东西。注意,向下检查模拟输出使用的卡和设备编号。我的输出如下所示:
|
||||
|
||||

|
||||
|
||||
一旦你取得了所需的卡和设备编号,重新构建一个配置文件:
|
||||
|
||||
sudo gedit /etc/asound.conf
|
||||
|
||||
上面的命令也会打开文件,将下面两行添加进去,当然将卡和设备编号替换成你自己的:
|
||||
|
||||
defaults.pcm.card 1
|
||||
defaults.pcm.device 0
|
||||
|
||||
保存文件,并重启计算机。现在,你应该听到声音了吧。需要提一下的是,这对所有的Linux发行版都有效,如Linux Mint,Elementary OS,Fedora,Arch Linux等等都可以。正如我之前所说,该“失声疗法”仅针对HDMI被设置为默认设备的情况。对于其它情况,你可以阅读[关于在Ubuntu和Linux Mint中修复失声问题这篇文章][4]。
|
||||
|
||||
您可以尽情发表评论来告诉我这个方法是否有疗效,或者您有更好的方法来处理该问题,也可以告诉我。再见了!
|
||||
|
||||

|
||||
|
||||
----------
|
||||
|
||||

|
||||
|
||||
关于Abhishek
|
||||
|
||||
我是Abhishek Prakash,It's F.O.S.S.的“创立者”,我有一个通信系统工程的硕士学位。我酷爱Linux和开源。我使用Ubuntu,信奉知识分享。除了Linux之外,我也喜爱经典的侦探推理小说,是Agatha Christie作品的超级粉丝。大家尽可以在[Google+][g]上将我圈进去,并追随[@abhishek_pc][t]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://itsfoss.com/fix-sound-ubuntu-1404/
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://itsfoss.com/fix-sound-ubuntu-1304-quick-tip/
|
||||
[2]:http://itsfoss.com/things-to-do-after-installing-ubuntu-14-04/
|
||||
[3]:http://en.wikipedia.org/wiki/Alsamixer
|
||||
[4]:http://itsfoss.com/fix-sound-ubuntu-1304-quick-tip/
|
||||
[g]:https://plus.google.com/u/0/110180944531110746460
|
||||
[t]:https://twitter.com/abhishek_pc
|
@ -0,0 +1,40 @@
|
||||
“Simple Dock” GNOME Shell扩展乾坤大挪移,钟爱应用桌面展现
|
||||
================================================================================
|
||||

|
||||
|
||||
**我爱GNOME Shell,但是我痛恨的是费力从隐藏屏幕中找到我所钟爱的应用或者在我正运行的应用间切换。**
|
||||
|
||||
这么说,听起来就像我是个老古董,像是一个UX勒德分子,也像是某个过分沉溺于Unity可用性瘾君子,但我,像阅读本文的许多人一样,喜欢将app启动器/切换器放到桌面上。这是一个用户所熟悉并且快捷的工作方式。
|
||||
|
||||
而GNOME Shell,从设计上看,却完全是个不同的世界。它将所有这一切隐藏起来 —— 从消息中心和通知,到工作区和应用列表。它弱化了审美效果,包含了这样的道理:帮助用户专注于最重要的部分。
|
||||
|
||||
但是对我而言,我的桌面需要的不仅仅是一个美化的相框。
|
||||
|
||||
### GNOME Shell之美 ###
|
||||
|
||||
抛开我自己的偏好,隐藏应用是GNOME Shell之美的一部分。它带来了默认的桌面体验:用户友好,稳健以及可预见性——而且也完全可扩展。因此,它也附带有大量的扩展组件以迎合不同用户的需要、职业和希望,包括传统应用菜单,桌面停靠栏,以及甚至是Ubuntu Unity Dash的复制品!
|
||||
|
||||
在本文中,我仅仅关注那个能满足我需要的扩展:它有个恰如其分的名字**Simple Dock**。Simple Dock获取GNOME Shell应用网格以及收藏栏,并可以将它放到任何我想要放的不引人注目的位置:桌面上。
|
||||
|
||||
目前为止,它只支持放置在屏幕底部,只提供了最小的设置项。虽然是最小的,但我觉得所有这些设置已经能满足我的需要:
|
||||
|
||||
- 智能自动隐藏
|
||||
- 最小化/还原应用窗口
|
||||
- 拖放收藏
|
||||
- 覆盖活动启动按钮
|
||||
|
||||
你也想要吗?如果你正在Ubuntu 13.10或更高版本上使用GNOME Shell,那么你可以使用它。只需在支持的浏览器(Firefox, GNOME Web之类)中访问下面的链接就可以导航到GNOME扩展页面,然后将页面上开个从“off”拖动到“on”上。
|
||||
|
||||
- [GNOME Shell扩展中的Simple Dock][1]
|
||||
|
||||
要调整Simple Dock设置,点击GNOME扩展页面上的齿轮图标,或者通过GNOME优化工具这样的桌面应用程序来设置。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/07/simple-dock-gnome-shell-extension
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:https://extensions.gnome.org/extension/815/simple-dock/
|
@ -0,0 +1,55 @@
|
||||
在 Ubuntu 桌面上显示歌词
|
||||
================================================================================
|
||||

|
||||
|
||||
除了免费的流媒体音乐外,我最喜欢[Spotify][1]的地方就是它的歌词插件了。有时候我听不懂一首歌里面的所有歌词,尤其是rap。[TuneWiki][2]插件在这种情况下就派得上用场了。但TuneWiki仅有支持Windows和iTune的插件,那我们在linux桌面上有什么选择呢?
|
||||
|
||||
如果你使用过一段时间Linux桌面,你也许听过[OSD Lyrics][3]。它是一个显示桌面歌词的小程序。你可以借助一些音乐播放器来使用它,比如 Rythmbox,[Banshee][4],[Clementine][5]等等。
|
||||
|
||||
### 在Ubuntu 14.04和Linux mint 17上安装OSD Lyrics ###
|
||||
|
||||
两年以前 OSD Lyrics 它的官方仓库还在积极地维护,但现在对它的开发已经停止了。尽管这个PPA已经不可用,但可以通过网络下载OSD Lyrics的安装包。虽然这些安装执行文件最初是为 Ubuntu 12.02 设计的,但这些文件也能在 Ubuntu 14.04 上良好地工作。我们一起看看怎么在 Ubuntu 14.04 和 Linux mint 17 上安装OSD Lyrics。
|
||||
|
||||
[前往下载页下载OSDLyrics][6],根据你是使用[32位还是64位的ubuntu][7]来下载相应的.deb 文件。你会在网页的上方找到这些文件。
|
||||
|
||||

|
||||
|
||||
下载完成后,双击它通过使用Ubuntu软件中心来安装。另外,你也可以使用[Gdebi ][8]来快速地安装.deb安装包。
|
||||
|
||||
### 怎样在 Ububtu 和 linux mnit 上使用 OSD Lyrics 显示歌词 ###
|
||||
|
||||
安装完成后,你可以从Unity Dash运行OSD Lyrics :
|
||||
|
||||

|
||||
|
||||
首次运行时,OSD Lyrics会检测你的系统中能被它支持的播放器。你可以设定一个默认播放器,以后当你运行OSD Lyrics时它就会自动启动 。
|
||||
|
||||

|
||||
|
||||
有一件事值得注意,那就是OSD Lyrics不像[Shazam][9]等软件一样,它不是通过音频来寻找歌词,而是通过比如名称,专辑,艺术家等信息来关联音乐文件。所以你得确保你的音乐文件的来源正当,或者是你得保持你的音乐文件的信息是正确并且是已经更新后的。
|
||||
|
||||
如果OSD Lyrics辨认出了音乐文件,它就会用卡拉OK格式在桌面上显示歌词了:(译者注:OSD Lyrics可以自动在千千静听和虾米歌词站点在线下载歌词,这对我们中文用户来说是个福音)
|
||||
|
||||

|
||||
|
||||
OSD Lyrics有大量设置选项,你可以改变歌词字体,文字大小等等。
|
||||
|
||||
你认为 OSD Lyrics 怎么样?你还使用其它歌词插件吗?欢迎您和我们分享。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://itsfoss.com/display-song-lyrics-desktop-ubuntu-1404/
|
||||
|
||||
译者:[Love-xuan](https://github.com/Love-xuan) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://itsfoss.com/install-spotify-ubuntu-1404/
|
||||
[2]:http://www.tunewiki.com/
|
||||
[3]:https://code.google.com/p/osd-lyrics
|
||||
[4]:http://banshee.fm/
|
||||
[5]:https://www.clementine-player.org/
|
||||
[6]:https://code.google.com/p/osd-lyrics/downloads/list
|
||||
[7]:http://itsfoss.com/how-to-know-ubuntu-unity-version/
|
||||
[8]:http://itsfoss.com/install-deb-files-easily-and-quickly-in-ubuntu-12-10-quick-tip/
|
||||
[9]:http://www.shazam.com/
|
@ -0,0 +1,34 @@
|
||||
Git 2.0.2版本控制系统现在可供下载使用了
|
||||
==================================================================================================================================================
|
||||
|
||||

|
||||
|
||||
**Git 2.0.2如今已正式发布。这是一个免费和开源的分布式版本控制系统,因其处理速度和效率的优势,它可以处理大大小小各种项目。**
|
||||
|
||||
新的Git 2.0.x分支保持着带来大量更新的传统,它整合了大量的改变和修正。这个最新的更新只是维护版,但是它的功能特性的确有一些有趣的修改。
|
||||
|
||||
根据开发者的描述:"git submodule sync(git子模块的同步)"的文档中提到的子命令可以使用"--recursive"(递归)的选项;在.gitignore中跟踪引用反斜杠的空格的处理不当已经被纠正;对"git repack"命令的更新,将不再错误地复制那些被.keep标签标记的pack目录下的对象。
|
||||
|
||||
还有,"git clone -b brefs/tags/bar"不再认为git遵循一个单一的tag,尽管它是一个分支的名称;"%G(G后面没有跟任何东西)"是一个无效的漂亮的格式说明符,现在的解析器不再对它进行解析;用于避免增加相同替代对象的存储的代码经过了两次修正,而且其余的几个修正也已经完成。
|
||||
|
||||
想要查看完整的改变列表,查看[changelog][1]。
|
||||
|
||||
下载Git 2.0.2:
|
||||
|
||||
- [tar.gz][1][sources] [4.70 MB]
|
||||
- [Debian/Ubuntu DEB ALL][2][ubuntu_deb] [0 KB]
|
||||
- [Red Hat/Fedora/Mandriva/openSUSE RPM noarch][3][rh_rpm] [0 KB]
|
||||
|
||||
-------------------------------------------------------------------------------------
|
||||
|
||||
via: http://news.softpedia.com/news/Git-2-0-2-Version-Control-System-Now-Available-for-Download-451147.shtml
|
||||
|
||||
译者:[su-kaiyao](https://github.com/su-kaiyao) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:https://github.com/git/git/blob/master/Documentation/RelNotes/2.0.2.txt
|
||||
[2]:https://github.com/git/git/archive/v2.0.2.tar.gz
|
||||
[3]:http://git-scm.com/download/linux
|
||||
[4]:http://git-scm.com/download/linux
|
||||
|
@ -0,0 +1,37 @@
|
||||
小伙伴们,该更新系统啦:Ubuntu 13.10的支持到今天结束
|
||||
================================================================================
|
||||

|
||||
|
||||
|
||||
**尽管目前运行良好,在经历了9个月的折腾后,今天官方对Ubuntu 13.10(俏皮蝾螈)的支持正式寿终正寝。**
|
||||
|
||||
> 尽管它的名字叫'俏皮蝾螈',但它所提供的新功能却无比的乏味。
|
||||
|
||||
那些仍然在使用它的用户应该看看最新的发行的稳定版了,Ubuntu 14.04 LTS。在四月推出的这个版本,提供良好的图形化支持,支持期限是到2019年的4月中旬。
|
||||
|
||||
对于Ubuntu 13.10的服务器版的支持,也到今天正式停止。
|
||||
|
||||
### 俏皮蝾螈已然失宠 ###
|
||||
|
||||
Ubuntu 13.10于去年10月发布,Canonical对其桌面版本承诺提供时长9个月的安全和Bug修复更新。截至今年7月17日,所有更新将停止,未来也不再提供。
|
||||
|
||||
Canonical[推荐的升级方案][1]是升级到14.04版本,目前可以直接通过图形化工具去升级,包括使用升级程序,或者在命令行运行‘`do-release-upgrade`‘命令。
|
||||
|
||||
俏皮蝾螈,它的名字非常的好听,但表现平平,13.10在Ubuntu所有的发行版中也不是一个取得卓越成功的版本,[这一点已经被很多网络评论预言到了][2]。
|
||||
|
||||
然而,它曾经让人眼前一亮的是,<del>强加</del>提供了键盘指示符来快速的选择安装语言,这可以让用户简便的在该智能域操作,这也是第一个在安装程序中整合了`Ubuntu One Single Sign-on`的发行版。
|
||||
|
||||
查看13.10版本的所有新功能,请查看完整视频:
|
||||
Youtobe 视频地址:[http://www.youtube.com/embed/1EiRQ-znEcI?feature=oembed][3]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/07/ubuntu-13-10-support-ends-today
|
||||
|
||||
译者:[nd0104](https://github.com/nd0104) 校对:[ReiNoir](https://github.com/reinoir)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:https://help.ubuntu.com/community/TrustyUpgrades
|
||||
[2]:http://www.omgubuntu.co.uk/2013/10/ubuntu-13-10-press-reaction
|
||||
[3]:http://www.youtube.com/embed/1EiRQ-znEcI?feature=oembed
|
@ -0,0 +1,57 @@
|
||||
Dropbox原生Linux客户端首次展示QT界面
|
||||
================================================================================
|
||||
**Dropbox原生Linux客户端的最新试验版首次展示了全新的QT界面。**
|
||||
|
||||
Dropbox表示这次的UI重写,将同时应用到Windows和Linux,将修复“大量”长期遗留下来的错误和问题。这个跨平台的工具也将整体提升性能。
|
||||
|
||||
在全新的设置向导和登录界面(见下面的图片)旁边是几个重新设计过的启动画面。
|
||||
|
||||

|
||||
登录界面
|
||||
|
||||

|
||||
设置界面
|
||||
|
||||

|
||||
欢迎界面
|
||||
|
||||
### 目前还不稳定 ###
|
||||
|
||||
Dropbox开发人员提醒参与测试的人,目前大部分新界面“还很粗糙”,在使用中可能会碰到大量的界面问题。新界面还不能配合一些辅助工具一起工作,例如屏幕阅读器。
|
||||
|
||||

|
||||
|
||||
新UI使用了(目前)系统自带的QT界面主题。它本身也不算很丑,不过在Ubuntu桌面上看起来不怎么合适,特别是和之前的版本比较。据说内存占用也变多了,在空闲情况下有时候会从60MB一下子跳到178MB。那些使用低端设备的人应该忍耐一下试用这个版本的诱惑-至少在这个特别的问题解决之后。
|
||||
|
||||
Dropbox 2.11.0 (试验版本) for Linux的完整改动日志:
|
||||
|
||||
- 用QT重写了Windows & Linux界面
|
||||
- 在移动和重命名文件后会尝试识别
|
||||
- 新的设置/登录体验
|
||||
- 更快上传小文件
|
||||
- 新的启动画面
|
||||
|
||||
### 下载Dropbox Linux Build 2.11.x ###
|
||||
|
||||
想尝鲜的话,可以通过下面的链接下载和你系统对应的安装包。
|
||||
|
||||
- [Dropbox Experimental (64bit) Offline Linux Installer][1]
|
||||
- [Dropbox Experimental (32bit) Offline Linux Installer][2]
|
||||
|
||||
下载完后,解压到主目录。它默认是隐藏的,所以打开终端,’`cd`‘到‘`.dropbox-dist/dropbox-lnx`‘目录下,然后运行‘`./dropbox start`‘。
|
||||
|
||||
演示Dropbox终端操作的gif动画:
|
||||
|
||||

|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/07/dropbox-experimental-linux-build-qt-rewrite
|
||||
|
||||
原文作者:[Joey-Elijah Sneddon][a] 译者:[zpl1025](https://github.com/zpl1025) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://plus.google.com/117485690627814051450/?rel=author
|
||||
[1]:https://d1ilhw0800yew8.cloudfront.net/client/dropbox-lnx.x86_64-2.11.0.tar.gz
|
||||
[2]:https://d1ilhw0800yew8.cloudfront.net/client/dropbox-lnx.x86-2.11.0.tar.gz
|
@ -0,0 +1,77 @@
|
||||
在 Linux 中怎样使用cp命令合并目录树
|
||||
================================================================================
|
||||
|
||||
怎样将两个布局相似的目录树合并成一个新的目录树?为理解该问题让我们思考下面的例子.
|
||||
|
||||
假设 dir1 和 dir2 目录中分别有3个子目录a,b和c.目录布局如下所示:
|
||||
|
||||

|
||||
输入目录布局
|
||||
|
||||
在目录a,b和c中有一些文件,tree命令的输出将能更好的说明:
|
||||
|
||||

|
||||
文件布局
|
||||
|
||||
### 1. 使用cp命令创建合并: ###
|
||||
|
||||
现在我们将这两个目录合并成一个名为"merged"新的目录中.完成上述操作最简单的方式就是递归复制目录,如下图所示:
|
||||
|
||||

|
||||
递归复制完成新的合并
|
||||
|
||||
#### 1.1 cp命令和替换带来的问题: ####
|
||||
|
||||
这种方式所带来的问题是该合并目录中所创建的文件为原文件的副本,并非原文件本身.别急, (你可能正在问自己) 如果不是原文件又有什么问题? 要回答你的问题,考虑下你有很多大文件的情况.那种情形下,复制所有的文件可能花费数小时.
|
||||
|
||||
现在让我们回到刚那问题上,且尝试使用mv命令而不是cp命令.
|
||||
|
||||

|
||||
企图使用mv命令进行合并操作
|
||||
|
||||
这些目录不能被合并.因此我们不能像这样使用mv命令去合并目录.
|
||||
现在你该怎样将原文件保存到"merged"目录中?
|
||||
|
||||
### 2. 解决方法: ###
|
||||
|
||||
cp命令有一个非常有用的选项来帮助我们摆脱这种状况.
|
||||
cp命令的-l 或 --link选项能够创建硬链接而非原文件副本.让我们尝试一下.
|
||||
|
||||
在我们尝试cp命令的硬链接选项前,让我们查看一下原文件的inode号码.
|
||||
可通过tree命令--inodes选项来查看inodes:
|
||||
|
||||

|
||||
原文件的inodes
|
||||
|
||||
现在我们有了inodes的列表,对于cp命令可通过--link选项创建硬链接:
|
||||
|
||||

|
||||
使用硬链接合并的目录
|
||||
|
||||
#### 2.1 验证文件: ####
|
||||
|
||||
现在文件已经被复制,让我们验证一下inodes是否和原文件匹配:
|
||||
|
||||

|
||||
Verify Inodes
|
||||
|
||||
#### 2.2 清除: ####
|
||||
|
||||
|
||||
正如你所看到的,这些文件的inodes和原文件的一样.现在问题已经被解决,且
|
||||
原文件已被复制到合并目录中.现在我们能够移除dir1和dir2目录.
|
||||
|
||||

|
||||
移除原始目录
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://linoxide.com/linux-command/merge-directory-trees-linux/
|
||||
|
||||
原文作者:[Raghu][a]
|
||||
|
||||
译者:[hunanchenxingyu](https://github.com/hunanchenxingyu) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://linoxide.com/author/raghu/
|
@ -0,0 +1,43 @@
|
||||
Oracle Linux 7.0发布!
|
||||
===
|
||||

|
||||
|
||||
**Oracle已经发布了Oracle Linux 7.0操作系统,新系统带来了大量的新特性,比如“第三代坚不可摧的内核 UEK”(Unbreakable Enterprise Kernel Release 3)和一个新的默认文件系统**
|
||||
|
||||
为了这次新的发行版的发布,Oracle的开发者们已经放出过两个预览版,现在最终版终于来了。果然,它有着大量的改进,其中包括使用新的XFS作为默认的文件系统**[注:原文为操作系统,应该是笔误]**,可选的Btrfs文件系统,Linux Containers (LXC), DTrace,Ksplice,加强版Xen和UEK R3。
|
||||
|
||||
作为广泛流行的文件系统EXT4的对抗者,XFS有一个显著优势。它所允许用户的文件系统的大小达到了500TB,这比你在EXT4文件系统中所能达到最大值的十倍还多。唯一的缺点是单个文件的大小最大仅为16TB。
|
||||
|
||||
这个发行版的一大特色是它支持两种内核。一个是红帽兼容性内核(RHCK),基于Linux内核版本3.10,第二个是Oracle自己的内核版本“第三代坚不可摧的内核”(UEK R3),版本号从3.8.13开始,因为它基于3.8的Linux内核。你或许还记得Linux内核3.8.x已经寿终正寝,但是看来Oracle一直在维护着自己的分支。
|
||||
|
||||
“已经能够从Oracle软件发布云上下载了,Oracle Linux 7可以免费下载和部署。所有的bug修复和安全勘误会被发布到Oracle的公共yum服务器上,不管有没有付费,用户都能安装同样的代码,并且从免费到付费的迁移十分简单,无需重新安装。”
|
||||
|
||||
“当发布最新的Linux更新,工具以及推送给客户和参与者新功能的时候,需要为现代化的数据中心提供企业级的解决方案。为此最新的发行版是构建在Oracle对OpenStack这样的新兴技术提供支持的基础上,”从官方声明可以看出。
|
||||
|
||||
通过变更记录来看,Ksplice已经为了实现零宕机的内核完成了安全更新和bug修复,systemd也成了新的系统管理工具,Grub2现在是默认的启动引导程序,并且支持新的固件类型(比如UEFI),还有一个加强版Anaconda安装器,一个新的Apache Web服务器,支持GPT,和大量的安全特性被添加进来。
|
||||
|
||||
更多关于最新的Oracle Linux发行版的详细内容可以参考官方[声明][1]。
|
||||
|
||||
立即下载Oracle Linux 7.0:
|
||||
|
||||
|
||||
- [Oracle Enterprise Linux 6.5 (ISO) 64-bit][2][iso] [3 GB]
|
||||
- [Oracle Enterprise Linux 6.5 (ISO) 32-bit][3][iso] [3.60 GB]
|
||||
- [Oracle Enterprise Linux 7.0 (ISO) 64-bit][4][iso] [4.50 GB]
|
||||
|
||||
|
||||
---------------------------------
|
||||
|
||||
原文: http://news.softpedia.com/news/Oracle-Linux-7-0-OS-Has-XFS-as-Default-File-System-and-Unbreakable-Enterprise-Kernel-Release-3-451894.shtml
|
||||
|
||||
作者:[Silviu Stahie][a]
|
||||
译者:[guodongxiaren](https://github.com/guodongxiaren)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://news.softpedia.com/editors/browse/silviu-stahie
|
||||
[1]:http://www.oracle.com/us/corporate/press/2245947
|
||||
[2]:http://mirrors.dotsrc.org/oracle-linux/OL6/U5/i386/OracleLinux-R6-U5-Server-i386-dvd.iso
|
||||
[3]:http://mirrors.dotsrc.org/oracle-linux/OL6/U5/x86_64/OracleLinux-R6-U5-Server-x86_64-dvd.iso
|
||||
[4]:https://edelivery.oracle.com/linux/
|
44
published/201407/20140728 CoreOS Stable Release.md
Normal file
44
published/201407/20140728 CoreOS Stable Release.md
Normal file
@ -0,0 +1,44 @@
|
||||
CoreOS 稳定版发布
|
||||
================================================================================
|
||||
|
||||
随着CoreOS稳定版的发布,我们相信我们已经为SysAdmin节准备好了一个不错的惊喜。从现在起,用户可以在产品环境中运行CoreOS了。这个版本对于想运行CoreOS的用户来说,是最经考验的、最安全的、最可靠的CoreOS版本。这对我们来说,是一个重大的里程碑。自从2013年八月我们第一个alpha版本发布以来,我们做了:
|
||||
|
||||
- 191个发布版本
|
||||
- 通过alpha和beta频道测试了成千上万的服务器
|
||||
- 支持10个以上平台,从裸机到Rackspace和Google云平台的主要镜像
|
||||
|
||||
对我们来说这是一个极为重要的日子,因为我们为了稳定版的发布付出了努力的工作。当然,如果没有社区的帮助,我们完成不了这些工作,感谢你们所有对项目的支持和贡献。
|
||||
|
||||
[CoreOS 367.1.0][2], 这是我们在稳定频道上的第一个版本, 包括以下内容:
|
||||
|
||||
- Linux 3.15.2
|
||||
- Docker 1.0.1
|
||||
- 所有主流的云服务商的支持, 包括 Rackspace Cloud, Amazon EC2 (包括 HVM) 和 Google Compute Engine
|
||||
- 通过 [CoreOS Managed Linux][3] 的商业支持
|
||||
|
||||
如果你还没有阅读我们的[Update Philosophy][4],我们建议您先看看。
|
||||
|
||||
请注意:稳定发布版本为了保持稳定性而不包括etcd和fleet ,此发布版仅针对基本的操作系统和Docker1.0。etcd和fleet的稳定版本支持会在随后的发布版本中。
|
||||
|
||||
如果想开始在产品中运行CoreOS,请确保阅读我们的快速指南“[切换到发布频道][5]”。如果你正在装新的机器,请确保在一开始就把他们建立在你想要的更新频道上。
|
||||
|
||||
最后,感谢社区的支持,我们迫不及待地想听到你们的反馈。对那些在产品环境中运行CoreOS上,希望得到额外支持的用户,请确保查看我们的[Managed Linux][6] 建议,因为我们已经有了一个完整的支持团队,他们正在准备回答你遇到的任何问题。
|
||||
|
||||
SysAdmin节快乐,感谢你们让互联网变得如此令人惊叹。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://coreos.com/blog/stable-release/
|
||||
|
||||
作者:Alex Polvi
|
||||
译者:[lfzark](https://github.com/lfzark)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://sysadminday.com/
|
||||
[2]:https://coreos.com/releases/#367.1.0
|
||||
[3]:https://coreos.com/products/managed-linux/
|
||||
[4]:https://coreos.com/using-coreos/updates/
|
||||
[5]:https://coreos.com/docs/cluster-management/setup/switching-channels/
|
||||
[6]:https://coreos.com/products/managed-linux/
|
65
published/201407/Command Line Tuesdays – Part Five.md
Normal file
65
published/201407/Command Line Tuesdays – Part Five.md
Normal file
@ -0,0 +1,65 @@
|
||||
命令行星期二——第五部分
|
||||
=========================================================
|
||||
对,你也许已经猜到了又是我们相见的时候了。这一次我们将会学习如何使用命令工作。因此,事不宜迟,我们直入正题吧。
|
||||
|
||||
肖茨先生指出,到现在为止,我们学习了一些神奇的命令及其参数和选项,而今天正是我们揭开他们那神秘面纱一角的一天。我们将会学习如下的一些命令及其作用:type, which, help和man。但是在此之前,我么先学习一下——
|
||||
|
||||
###什么是命令?###
|
||||
|
||||
我们可以将**命令**分为四个种类。
|
||||
|
||||
**1)可执行的程序:**命令可以是一个可执行程序。如果你在前面的课程中有遍历过你的系统,这也是你应该做的。你也许已经发现了/user/bin这个目录,你看到很多的像transmission-gtk, deluge-gtk等的名字。对我们新手来说,现在这些可以编译成二进制文件或者用脚本语言编写的可执行程序具体是什么并不太重要。重点是,他们是可执行文件,你可以运行它们。找到/user/bin这个目录,列出里面的文件,随便挑一个去运行它。
|
||||
|
||||
**2)shell内置命令:** bash提供了一系列的shell内置命令,例如,cd命令就是一个shell内置命令。
|
||||
|
||||
**3)shell函数:**内置于系统环境中的小型的shell脚本。现在我们简单的提及一下它,因为在后面的几个星期中我们将要学习它。
|
||||
|
||||
**4)别名:**你可以基于其他命令定义你自己的命令。我们也会在后面的课程中学习到。
|
||||
|
||||
现在,知道我们要处理的命令的哪一类是有意义的。我们可以使用**type**命令查看。
|
||||
|
||||
###type###
|
||||
|
||||
你可以使用**type + command**来查看你要使用的命令属于什么类型。你只要输入type command就可以得到命令类型的输出,如下:
|
||||
|
||||

|
||||
|
||||
或者
|
||||
|
||||

|
||||
|
||||
从上面例子可以看出‘ls’命令实际上是‘\_ls’的别名。(LCTT译注:不同机器上的别名定义可能不同,比如RedHat/Centos系列上,ls实际上是‘ls --color=auto’的别名,而这个‘\_ls’想必是openSUSE上的情况。)
|
||||
|
||||
###which###
|
||||
|
||||
有时(虽然在桌面系统中很少会出现这种情况),在一台机器中存在一个可执行程序的多个版本。为了找到某个可执行程序的准确位置,我们可以使用which命令。which命令只对可执行程序有用。
|
||||
|
||||

|
||||
|
||||
如今,多数的命令都会附带说明文档,因此,当你在没有网络的的情况下使用命令行时,你不能在论坛或者IRC上提问,但是你又必须要知道某个命令的准确用法。此时你有两种解决方法,第一个是——
|
||||
|
||||
###help###
|
||||
|
||||
help命令对shell内置命令有用(在上面的第二类中我们有提到过)。所以,你可以选择一个shell内置命令为例,如cd,简单的输入help cd即可。你会得到一个有用的页面,去试一下看cd为我们提供了什么功能。该页面列出了该命令的用法和可选项(选项列在方括号中,表明它们是可选的,如果方括号中有垂直分隔符分隔某些选项,则这些选项是互斥的,不要同时使用他们!)
|
||||
|
||||
###--help###
|
||||
|
||||
(LCTT译注:Linux上的命令中,通常单字符参数前使用一个破折号,而多个字符的长参数则使用两个破折号,原文此处用的是“-help”,实际上这种情况很少,所以修正为“--help”)
|
||||
|
||||
help只对shell内置命令有用。但是很多的可执行程序有--help选项。其作用类似于help命令,但是你必须在你要查看帮助的命令后输入 --help。例如,transmission-gtk --help。试一下看在改该可执行程序中有什么可选项可以使用。
|
||||
|
||||
###man###
|
||||
|
||||
多数的可执行程序都提供一个正式发说明文档。你可以使用man命令查看这份说明文档。试一下只输入man program,看有什么输出。在你的系统中随便找一个程序去尝试一下。例如,我们试一下man transmission-gtk。你会打开了一个由目录分割的文件。这个文件包含该程序是什么、做什么和你可以怎样去使用它等的信息。但是这个文件并没有提供使用范例,因为它不是一个指导手册。(LCTT译注,man里面有时候也会带有一些范例,但是往往不会很详细,另外还有一个info命令,通常能得到更多的使用帮助。不过真正理解每个命令的各种用户,还是要多查阅各种资料,并亲自试验才行。)
|
||||
|
||||
这周我们就到先讲这里了。
|
||||
|
||||
我想再花一分钟来感谢大家对本节的建议和贡献。是你们让这个系列的文章变得越来越好,我希望在你们的帮助下,我们这些新用户在夏季结束前可以使用基本的命令行工具。你们是最棒的。像我一样的新用户们,我们都会感到失落,坚持到底,我们的付出总会有回报的!
|
||||
|
||||
--------------------------------------------------------
|
||||
|
||||
via: https://news.opensuse.org/2014/07/15/command-line-tuesdays-part-five/
|
||||
|
||||
译者:[cvsher](https://github.com/cvsher) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -1,7 +1,8 @@
|
||||
来自树莓派的Eben Upton:我们是怎么让大家都成为DIY黑客的。
|
||||
树莓派的联合创始人访谈——我们是怎么让大家都成为DIY黑客的
|
||||
================================================================================
|
||||
> 请记住它是为喜欢折腾的人准备的只要35美元的计算机
|
||||
|
||||

|
||||
我永远不会忘记我第一次看到树莓派的情形。那个小巧的,信用卡大小的计算机,性能却足够强劲,可以作为一般家用PC,媒体中心,电视游戏机,或是其他任何你能够想像的东西。只有35美元的价格,它是任何年龄段的动手爱好者都可以拥有的小东西,可以在上面捣腾硬件和软件试验,而不用担心会弄坏昂贵的家庭电脑。
|
||||
|
||||
[Eben Upton][1],是树莓派基金会的共同创始人,通常被誉为这个神奇机器背后的魔法师。在剑桥大学的计算机实验室攻读哲学博士学位的时候,他费尽苦心地手工打造了树莓派的原型机。
|
||||
@ -14,17 +15,17 @@ ReadWrite网: 一开始是什么让你对技术这么感兴趣?它又是如何
|
||||
|
||||
**Eben Upton**: 在我还是孩子的时候就开始对技术感兴趣了。我有个对工程技术有很大兴趣的父亲,他自己不是工程师,而是一个英语老师。我们的房子里经常到处堆着各种电子器件,在还不知道这些东西是干嘛的时候,我就开始摆弄了。都是些小玩意,比如在床头装个灯,在“关灯”后还可以继续看书之类的。
|
||||
|
||||

|
||||

|
||||
|
||||
之后我有了一台计算机。在英国,我们把这种机器叫做[BBC微计算机][2],实际上是8位单片机,做教学用的。我们在学校的时候接触到这种机器,我之后就学会了编程,而且还蛮喜欢的。
|
||||
|
||||
这些机器在学校里并不一定是用来编程的,或者说他们根本不是用来编程的,一般都运行教学软件。但是我却给它编程,之后我还买了一台回家,在我买了这台BBC微机后,我就泡在了房间里,再没出来过。[笑]
|
||||
|
||||
编程对于小孩来说太神奇了。当你还是小孩的时候,并没有太多力量。没有听话的随从,反而身边有很多的限制。编程最伟大的地方在于,这是一个可以让你随喜所欲的小世界。而这当然让我无法抗拒。
|
||||
编程对于小孩来说太神奇了。当你还是小孩的时候,并没有太多力量。没有听话的随从,反而身边有很多的限制。编程最伟大的地方在于,这是一个可以让你随心所欲的小世界。而这当然让我无法抗拒。
|
||||
|
||||
我一直都对科学和数学,以及硬科学学科感兴趣。我在我的BBC微机上做了大量的计算和编程,之后我拥有了一台Commodore Amiga。
|
||||
我一直都对科学和数学,以及理科感兴趣。我在我的BBC微机上做了大量的计算和编程,之后我拥有了一台Commodore Amiga。
|
||||
|
||||
在大学里我学习了物理,工程和计算机科学。这是激发树莓派项目想法的原因,因为当我在学校呆了10年的时候[当时在读博士学位],我发现那些新来的孩子们在他们小时候并没有机会获得这方面的经验。你也许仍然能拥有乐高玩具,但是问题是梯子。
|
||||
在大学里我学习了物理,工程和计算机科学。这是激发树莓派项目想法的原因,因为当我在学校呆了10年的时候[当时在读博士学位],我发现那些新来的孩子们在他们小时候并没有机会获得这方面的经验。你也许仍然能拥有乐高玩具,但是它不是我们要的梯子。
|
||||
|
||||
在一定程度上我们把身后的梯子撤掉了。我们造出了这些非常复杂而且用户友好的计算机给小孩使用,或者不仅仅是计算机,还包括电视游戏机,电话和平板,以及一些家用电器。但是,人们却没有机会自己动手改一改。所以实际上,树莓派是回到最初的一种尝试,当然也不会过于原始,希望找到在过去25年里计算机发展中迷失掉的那种感觉。
|
||||
|
||||
@ -34,7 +35,7 @@ ReadWrite网: 一开始是什么让你对技术这么感兴趣?它又是如何
|
||||
|
||||
另外一件麻烦事是募集资金。我们是非营利组织,所以我们得去找人赞助,而这最后都变成了董事会中的几个人自掏腰包。我们有25万美元的启动资金是从我和其他几个成员自己借的。所以我觉得,当初这样做还挺有勇气。
|
||||
|
||||

|
||||

|
||||
|
||||
### 从东方到西方 ###
|
||||
|
||||
@ -62,7 +63,7 @@ ReadWrite网: 一开始是什么让你对技术这么感兴趣?它又是如何
|
||||
|
||||
**EU:** 我们尝试过基于所谓的微控制器技术做了几台机器。不知道你有没有听过一个叫Arduino的[开源电子原型]平台?它们的性能跟Arduino是一个级别的,优点是很容易买到,是常用的元器件,非常便宜,也很容易掌握。
|
||||
|
||||

|
||||

|
||||
|
||||
所以我们试了一下。最后的成品只能从技术上来说还是计算机,你可以把它接到电视机或其他显示设备上。但是,它太原始了,很明显不能吸引孩子们的兴趣。这个是一号原型机,它在爱尔兰一家博物馆的叫“失败”的展览中展出[笑]。我下个月会去看看。它现在被装载一个玻璃盒子里,作为一次辉煌失败的典型。
|
||||
|
||||
@ -76,13 +77,13 @@ ReadWrite网: 一开始是什么让你对技术这么感兴趣?它又是如何
|
||||
|
||||
真正的突破是三号原型机。我们从Broadcom拿到了另一种应用了ARM处理器的芯片,可以直接运行标准Linux。我们意识到终于可以做出能够满足所有的需求的机器了,这就是我们推向市场的产品。
|
||||
|
||||
### 黑黑下一代黑客 ###
|
||||
### 黑一黑下一代黑客 ###
|
||||
|
||||
**RW:** 八岁的孩子就开始用树莓派做项目了。这在你意料中吗,还是说让你意外了?
|
||||
|
||||
**EU:** 八岁是很好的年纪。我想每个人都会把自己开始编程的年龄定义成合适的年龄。我就是八岁开始编程的。某种程度上来说,孩子们所需要的只是年龄大到拥有相对完整的认知技能,或者说是解决问题的技能。也许在学校学一点数学就够了。
|
||||
|
||||

|
||||

|
||||
|
||||
年龄大到可以计划任务,编程就是终极的计划任务。还是得有一定的智力基础去做这个事情。八岁的时候,大多数孩子在自己的思维上已经非常成熟了。另外还需要敏捷的身手,对更小的孩子来说还存在一个问题就是,他们还不够灵巧去使用键盘。
|
||||
|
||||
@ -118,9 +119,9 @@ ReadWrite网: 一开始是什么让你对技术这么感兴趣?它又是如何
|
||||
|
||||
**RW:** 你怎么看现在出现的主流硬件黑客文化?
|
||||
|
||||
**EU:** 我觉得,这太美妙了,不是吗?这是在软件工程领域里完全无法想到的。我接触这些之前就有软件背景,所以,实际上人们用树莓派制作的多数很酷的东西都是硬件相关的,让我很惊讶。当然现在没那么吃惊了,不过一开始是有的。
|
||||
**EU:** 我觉得,这太美妙了,不是吗?这是在软件工程领域里完全无法想到的。我接触这些之前就有软件背景,所以,实际上人们用树莓派制作的大多数很酷的东西都是硬件相关的,让我很惊讶。当然现在没那么吃惊了,不过一开始是有的。
|
||||
|
||||

|
||||

|
||||
|
||||
我认为这是非常积极的趋势,基于所有这些因素。因为它给孩子们带来了相关的经验。在我看来,在屏幕上移动一下像素还是很酷的,不过事实上,它没有像80年代那样酷了。我觉得,在现实世界里移动一些物体,比如机器人,对于现在的孩子来说是非常酷的。
|
||||
|
||||
@ -152,11 +153,11 @@ ReadWrite网: 一开始是什么让你对技术这么感兴趣?它又是如何
|
||||
|
||||
显然,我们同时也必须做一点[硬件方面]的事情。我真的不知道具体在什么时候。如果到了2017,2018,我们还在销售树莓派B型的话,那也挺糟糕的。但是,我认为我们也许在一年后再认真考虑后面要做什么。
|
||||
|
||||
**RW:** 很多人的项目同时用到了派和Arduino,一个DIY电子调试工具套件。你在设计派的时候,有考虑类似Arduino的工具吗?
|
||||
**RW:** 很多人的项目同时用到了派和Arduino(一个DIY电子调试工具套件)。你在设计派的时候,有考虑类似Arduino的工具吗?
|
||||
|
||||
**EU:** 实际上没有,但是我们很早就意识到,媒体可能会倾向于把我们和Arduino看作竞争者。对于这件事情我们有点多疑,我觉得,因为我认为派和Arduino分别处理不同的事情,而且他们都做得很好。
|
||||
|
||||
我们并没有把它设计成配合Arduino工作,但是Arduino被设计成配合家用PC一起工作。所以,我们为Arduino制作了一台非常低功耗的家用PC。所以好吧,只是巧合,我猜。
|
||||
我们并没有把它设计成配合Arduino工作,但是Arduino被设计成配合家用PC一起工作。所以,我们实际上为Arduino制作了一台非常低功耗的家用PC。所以好吧,只是巧合,我猜。
|
||||
|
||||
**RW:** 你在家里用树莓派做什么?工作中呢?
|
||||
|
||||
@ -169,13 +170,14 @@ ReadWrite网: 一开始是什么让你对技术这么感兴趣?它又是如何
|
||||
不过,看到这么多的人喜欢它,看到它被出现在各种不同的地方,也是很开心的。我听说在《生活大爆炸》中提到了我们,我要去找找是哪一集。它出现在所有的这些不可思议的地方。真是非常开心,看到这么多人把它放在心上,开始用它做点事情。
|
||||
|
||||
承蒙树莓派基金会提供Eben Upton的图片;
|
||||
|
||||
树莓派图片来自Flickr用户:[Johan Larsson][5], [Clive Darra][6], [Pete Sneekes][7], [Luca Sbardella][8]和[Ashley Basil][9]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://readwrite.com/2014/04/08/raspberry-pi-eben-upton-builders#awesm=~oBGnazhOCOfaUd
|
||||
via: http://readwrite.com/2014/04/08/raspberry-pi-eben-upton-builders
|
||||
|
||||
译者:[zpl1025](https://github.com/zpl1025) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[zpl1025](https://github.com/zpl1025) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,23 @@
|
||||
|
||||
Linux有问必答——如何为sudo命令定义PATH环境变量
|
||||
================================================================================
|
||||
>**问题**:我安装了一个程序到/usr/local/bin目录下,这个程序需要root权限才能执行,当我用sudo去执行它时,收到"sudo: XXXXX: command not found"的错误提示,不知道为什么/usr/local/bin没有被包含到PATH环境变量下面来,我该如何解决这个问题?
|
||||
|
||||
当你使用sudo去执行一个程序时,处于安全的考虑,这个程序将在一个新的、最小化的环境中执行,也就是说,诸如PATH这样的环境变量,在sudo命令下已经被重置成默认状态了。所以当一个刚初始化的PATH变量中不包含你所要运行的程序所在的目录,用sudo去执行,你就会得到"command not found"的错误提示。
|
||||
|
||||
要想改变PATH在sudo会话中的初始值,用文本编辑器打开/etc/sudoers文件,找到"secure_path"一行,当你执行sudo 命令时,"secure_path"中包含的路径将被当做默认PATH变量使用。
|
||||
|
||||
添加所需要的路径(如 /usr/local/bin)到"secure_path"下,在开篇所遇见的问题就将迎刃而解。
|
||||
|
||||
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
|
||||
|
||||
这个修改会即刻生效。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://ask.xmodulo.com/define-path-environment-variable-sudo-commands.html
|
||||
|
||||
译者:[nd0104](https://github.com/nd0104) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,185 @@
|
||||
使用Linux命令行管理DigitalOcean VPS水滴
|
||||
================================================================================
|
||||
[DigitalOcean][1]是云VPS主机市场中最炙手可热的新生儿。虽然没有提供像Amazon之类一样的综合服务业务,但DigitalOcean定位于中小型企业和开发者,已经成为基于Linux的最佳云VPS服务的强有力竞争者,这都得归功于它们具有竞争力的价格和用户友好的管理界面。
|
||||
|
||||

|
||||
|
||||
不管什么时候,当你需要一个面向网络的服务器用于你的个人项目,你都可以全速开动一个“水滴”([DigitalOcean][3]中VPS实例的昵称),也可以在你不需要时杀掉它,没必要为了让你的VPS保持运作而烧光了你的钱袋。尽管DigitalOcean基于网络的管理界面已经十分高效,但对于那些命令行界面的死忠派,它还是提供了基于命令行界面的水滴管理工具,它叫[tugboat][4]。多亏了这个命令行工具,所有复杂的水滴管理任务都可以简单地转变成一个脚本来完成。
|
||||
|
||||
在本文中,我打算讲述**怎样使用tugboat来从命令行对DigitalOcean水滴进行管理**。
|
||||
|
||||
### 在Linux上安装tugboat ###
|
||||
|
||||
在Debian,Ubuntu或者Linux Mint上安装tugboat:
|
||||
|
||||
$ sudo apt-get install ruby-dev
|
||||
$ sudo gem install tugboat
|
||||
|
||||
在Fedora上安装tugboat:
|
||||
|
||||
$ sudo yum install ruby-devel
|
||||
$ sudo gem install tugboat
|
||||
|
||||
要在CentOS上安装tugboat,首先[安装或升级到最新的Ruby][5],因为在CentOS 6.5以及更早的版本上,默认的Ruby不满足Tugboat所需的最小版本(1.9及更高版本)。安装Ruby 1.9及更高版本后,请按如下方式安装tugboat。
|
||||
|
||||
$ sudo gem install tugboat
|
||||
|
||||
### tugboat首次使用配置 ###
|
||||
|
||||
在安装完后,就该进行一次配置,其中包括授权tugboat访问DigitalOcean帐号。
|
||||
|
||||
转到[https://cloud.digitalocean.com/api_access][6],并创建新的API密钥,记录客户ID和API密钥。
|
||||
|
||||

|
||||
|
||||
通过运行以下命令来启动授权过程:
|
||||
|
||||
$ tugboat authorize
|
||||
|
||||
在提示你输入客户ID和API密钥时,请输入。它会询问几个其它问题,目前你可以接受默认的回答。我们将会在后面自定义默认设置。
|
||||
|
||||
[][7]
|
||||
|
||||
现在,让我们自定义默认水滴设置,以反映你典型的使用状况。要做到这一点,首先检查水滴提供的可用设置项(如,可用的镜像、区域、大小)。
|
||||
|
||||
运行以下命令,它会列出可用的水滴镜像。选取使用一个默认镜像,并记录相关的ID。
|
||||
|
||||
$ tugboat images --global
|
||||
|
||||

|
||||
|
||||
类似,从可用区域中选取一个默认的地理位置:
|
||||
|
||||
$ tugboat regions
|
||||
|
||||
同时,从可用的RAM大小中选择一个默认的水滴大小:
|
||||
|
||||
$ tugboat sizes
|
||||
|
||||

|
||||
|
||||
现在,把你的默认选择放到~/.tugboat中。例如,我在这里自定义了默认设置:区域在纽约,系统是Ubuntu 14.04,内存512MB。如果你想要通过密钥验证启用SSH,设置“ssh_user”为root,这个我很快会讲到。
|
||||
|
||||
$ vi ~/.tugboat
|
||||
|
||||
----------
|
||||
|
||||
---
|
||||
authentication:
|
||||
client_key: XXXXXXXXXXXXXXXXXXX
|
||||
api_key: XXXXXXXXXXXXXXXXXXXX
|
||||
ssh:
|
||||
ssh_user: root
|
||||
ssh_key_path: /home/dev/.ssh/id_rsa
|
||||
ssh_port: '22'
|
||||
defaults:
|
||||
region: '4'
|
||||
image: '3240036'
|
||||
size: '66'
|
||||
ssh_key: ''
|
||||
private_networking: 'false'
|
||||
backups_enabled: 'false'
|
||||
|
||||
### 创建并添加SSH密钥到DigitalOcean ###
|
||||
|
||||
要访问水滴实例,一个安全的方式是通过[密钥验证][8]的SSH连接到该实例。
|
||||
|
||||
事实上,你可以通过使用[DigitalOcean][9]来注册SSH公钥,为你的水滴实现自动启用密钥验证。下面告诉你怎么做。
|
||||
|
||||
首先,生成一个公/私密钥对(如果你还没有)。
|
||||
|
||||
$ ssh-keygen -t rsa -C "your@emailaddress.com"
|
||||
|
||||
假设生成的密钥对由~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)构成,去将你的公钥上传吧,命令如下:
|
||||
|
||||
$ tugboat add-key [name-of-your-key]
|
||||
|
||||
你可以任意给你的密钥命名(如,“my-default-key”)。当出现提示时,输入公钥路径(如,/home/user/.ssh/id_rsa.pub)。在密钥上传完成后,运行以下命令来验证密钥是否正确添加:
|
||||
|
||||
$ tugboat keys
|
||||
|
||||

|
||||
|
||||
密钥也应该出现在DigitalOcean的[SSH密钥页][10]。如果你想要密钥自动使用到水滴中,添加密钥ID到~/.tugboat中。
|
||||
|
||||
ssh_key: '182710'
|
||||
|
||||
### Tugboat的基本用法 ###
|
||||
|
||||
这里列出了tugboat命令行的一些基本使用情况。
|
||||
|
||||
1. 使用默认设置创建新水滴。
|
||||
|
||||
$ tugboat create <name-of-droplet>
|
||||
|
||||
2. 列出所有活动水滴。
|
||||
|
||||
$ tugboat droplets
|
||||
|
||||
3. 显示水滴的信息。
|
||||
|
||||
$ tugboat info <name-of-droplet>
|
||||
|
||||
[][11]
|
||||
|
||||
4. 关闭水滴,并移除镜像。
|
||||
|
||||
$ tugboat destroy <name-of-droplet>
|
||||
|
||||
5. 关闭水滴,但保持镜像
|
||||
|
||||
$ tugboat halt <name-of-droplet>
|
||||
|
||||
6. 为水滴创建快照,水滴必须先关闭。
|
||||
|
||||
$ tugboat snapshot <snapshot-name> <name-of-droplet>
|
||||
|
||||
7. 调整水滴大小(增加或减少RAM大小),水滴必须先关闭。
|
||||
|
||||
$ tugboat resize <name-of-droplet> -s <image-id>
|
||||
|
||||
如果你想要了解特定命令的更多选项,运行:
|
||||
|
||||
$ tugboat help <command>
|
||||
|
||||

|
||||
|
||||
### 排障 ###
|
||||
|
||||
1. 当我运行tugboat命令时,它出现以下错误。
|
||||
|
||||
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': /usr/lib/ruby/gems/1.8/gems/tugboat-0.2.0/lib/tugboat/cli.rb:12: syntax error, unexpected ':', expecting kEND (SyntaxError)
|
||||
|
||||
Tugboat要求Ruby 1.9及更高版本,你需要升级Ruby来解决该问题。对于CentOS,请参考[此教程][12]
|
||||
|
||||
2. 当我试着用gem来安装Tugboat时,出现了下面的错误。
|
||||
|
||||
/usr/local/share/ruby/site_ruby/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- json/pure (LoadError)
|
||||
|
||||
安装以下gem来修复该问题。
|
||||
|
||||
$ sudo gem install json_pure
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/2014/07/manage-digitalocean-vps-droplets-command-line-linux.html
|
||||
|
||||
原文作者:[Dan Nanni][a]
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://xmodulo.com/author/nanni
|
||||
[1]:http://xmodulo.com/go/digitalocean
|
||||
[2]:http://news.netcraft.com/archives/2013/12/11/digitalocean-now-growing-faster-than-amazon.html
|
||||
[3]:http://xmodulo.com/go/digitalocean
|
||||
[4]:https://github.com/pearkes/tugboat
|
||||
[5]:http://ask.xmodulo.com/upgrade-ruby-centos.html
|
||||
[6]:https://cloud.digitalocean.com/api_access
|
||||
[7]:https://www.flickr.com/photos/xmodulo/14685122101/
|
||||
[8]:http://xmodulo.com/2012/04/how-to-enable-ssh-login-without.html
|
||||
[9]:http://xmodulo.com/go/digitalocean
|
||||
[10]:https://cloud.digitalocean.com/ssh_keys
|
||||
[11]:https://www.flickr.com/photos/xmodulo/14501627440/
|
||||
[12]:http://ask.xmodulo.com/upgrade-ruby-centos.html
|
@ -0,0 +1,89 @@
|
||||
如何在Linux命令行下访问SoundCloud
|
||||
================================================================================
|
||||
如果你喜欢流媒体音乐和原创音乐,你不能错过[SoundCloud][1]。这家云流媒体服务总部设在德国,这对任何音乐爱好者都非常有名,且功能完善。自然,作为一个Linux爱好者,你可能想知道如何在Linux中体现你对音乐的热情。作为一个解决方案,我建议你使用Soundcloud2000,这是一个脱胎于[Music Hack Day Stockholm '13][2]的**SoundCloud的命令行客户端**。
|
||||
|
||||
### 安装 ###
|
||||
|
||||
对于Debian或者Ubuntu用户,如下安装:
|
||||
|
||||
$ sudo apt-get install portaudio19-dev libmpg123-dev libncurses-dev ruby1.9.1-dev
|
||||
$ sudo gem install soundcloud2000
|
||||
|
||||
对于Archlinux用户,在[AUR][3]仓库中可以获取到包
|
||||
|
||||
对于Fedora用户,如下安装:
|
||||
|
||||
$ sudo yum install portaudio-devel libmpg123-devel ncurses-devel ruby-devel
|
||||
$ sudo gem install soundcloud2000
|
||||
|
||||
对于CentOS用户,安装或者升级到[最新 Ruby/RubyGems][4] (1.9或更高),启用[Repoforge repo][5],如下安装:
|
||||
|
||||
$ sudo yum install portaudio-devel mpg123-devel
|
||||
$ sudo gem install curses soundcloud2000
|
||||
|
||||
最后,到官方的github页面获取源码
|
||||
|
||||
### 使用 ###
|
||||
|
||||
Soundcloud2000非常容易使用。有些人甚至会说简单。我喜欢它的庄重以及三位作者和贡献者的努力。如下启动它:
|
||||
|
||||
$ soundcloud2000
|
||||
|
||||
这里,你将看到一个闪屏:
|
||||
|
||||

|
||||
|
||||
接着是歌曲列表:
|
||||
|
||||

|
||||
|
||||
您可以通过上下键滚动列表,回车播放一首歌曲,空格键是暂停/恢复,左右箭头键是快进/快退。正如你所看到的,没有什么突破性的但绝对符合人体工程学。
|
||||
|
||||
如果随机列表太长无法滚动完,你有一个选项来查看所有曲目,用户通过点击'u'键接着输入自己的名字。
|
||||
|
||||

|
||||
|
||||
这可能是Soundcloud2000的主要缺陷之一。虽然导航没有优化过,但是我对这个很年轻的软件的改善和支持还是寄予厚望的。
|
||||
|
||||
### 奖励 ###
|
||||
|
||||
另外一个额外的奖励:如果你喜欢在终端上使用SoundCloud的想法,但不想安装任何额外的软件(也许你不能),我劝你去[cmd.fm][6]。该网站是一个伪装的SoundCloud,它隐藏在一个shell界面后。
|
||||
|
||||
[][7]
|
||||
|
||||
输入“help”可以得到命令列表,这比Soundcloud2000长很多。比如,我看到:
|
||||
|
||||
- _genres 列出所有流派
|
||||
- _play random 随机播放
|
||||
- _pause 暂停播放
|
||||
- _playlist new 建立新的播放节目单
|
||||
- _loop 循环播放
|
||||
- _cinema 如同星球大战一样的字幕
|
||||
|
||||
它甚至支持通过tab键自动补完流派名称
|
||||
|
||||
最后,Soundcloud2000的确是一个整洁的程序。我们可以原谅其目前的缺陷,因为它还年轻。我真的希望它会成长,并包含更多的功能(并从潜在的cmd.fm得到的灵感)。
|
||||
|
||||
如果您喜欢这个主意,我邀请你支持程序员,如果你喜欢这类举措,请支持[Music Hack Day][8],这其中混合了软件开发和音乐。
|
||||
|
||||
你认为在命令行下使用SoundCloud怎么样?让我们在评论中知道你的想法。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/2014/07/access-soundcloud-command-line-linux.html
|
||||
|
||||
原文作者:[Adrien Brochard][a]
|
||||
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://xmodulo.com/author/adrien
|
||||
[1]:https://soundcloud.com/
|
||||
[2]:https://www.hackerleague.org/hackathons/music-hack-day-stockholm-13/
|
||||
[3]:https://aur.archlinux.org/packages/ruby-soundcloud2000/
|
||||
[4]:http://ask.xmodulo.com/upgrade-ruby-centos.html
|
||||
[5]:http://xmodulo.com/2013/01/how-to-set-up-rpmforge-repoforge-repository-on-centos.html
|
||||
[6]:https://cmd.fm/
|
||||
[7]:https://www.flickr.com/photos/xmodulo/14494448218/
|
||||
[8]:http://new.musichackday.org/
|
114
published/20140723 Top 10 Fun On The Command Line.md
Normal file
114
published/20140723 Top 10 Fun On The Command Line.md
Normal file
@ -0,0 +1,114 @@
|
||||
用命令行去发掘有趣的“前十”
|
||||
================================================================================
|
||||
|
||||
**如果你喜欢做‘排名前10’之类的列表但又有点不好意思这样说,那么告诉人们你热爱数据的探索。为了进一步打动他们,向他们解释你在命令行间的数据探索。但是不要告诉他们这其实很容易,以免你的好形象就这样被毁灭了哦!**
|
||||
|
||||
在这篇文章中,我将基于GNU/Linux工具和'单列表格'(也就是我所说的简单列表)来做一些数据探索。如若想在这里通过命令行查看更多的信息,请查看'man'页,或者在“注释”部分求解。
|
||||
|
||||
### 密码 ###
|
||||
|
||||
在第一个列表里探讨的是马克.伯内特2011著的关于[10000 个最常用的密码][1]汇编。这个列表是有序的、使用最频繁的,也是广为人知的阶乘“密码”的最常用来源之一,与“123456”并列排名第二。在这里,我把该列表放到一个名为“passwords”的文件中,并且使用head命令把排名前10的列出来了:
|
||||
|
||||

|
||||
|
||||
(伯内特解释他是如何收集这些密码的[这里][2]。你会注意到在列表中他把所有大写字母都转换成小写的。)
|
||||
|
||||
OK,所以'password'是伯内特列表的顶部。那么每个数字呢?
|
||||
|
||||

|
||||
|
||||
非常有趣的是!数字'1'出现在密码列表中的次数多于第二个最常用数字'2'的两倍,而且,除了0和9之外,这十个数字出现的次数以其数字顺序排列。而排名前10的字母呢?
|
||||
|
||||

|
||||
|
||||
在 passwords 文件中出现最频繁的字母依次是EARONISTLC,类似于EAIRTONSLC,这是至少[一个出版的表格][3]中提到的常用英文单词中出现的字频。这是否意味着,大部分密码其实是一些常见的英语单词呢,也许会参杂一些数字呢?
|
||||
|
||||
为了找到答案,我先把密码转换成一个纯字母的字符串列表,然后看看有多少字符串是可以在英语词典中找到的。
|
||||
|
||||
首先我将通过 **sed** 命令删除所有密码中的数字,然后删除所有的标点符号,再删除所有的空行。这将创建出一个纯字母的密码列表。然后我通过**sort** 和 **uniq**来修剪列表的排序,将重复项取出。(例如,'abc1234def'和'abc1!2!3!def!'都剔除剩下'abcdef'.) 。根据wc命令,我把1000个密码减至成8583个纯字母的字符串:
|
||||
|
||||

|
||||
|
||||
我经常使用一本便携式的英语字典,我通常会使用`usr/share/dict/american-english`,这个文件是来自Debian Linux的一个发行版本。它包含了99171个单词。我会先通过**tr**命令将这个词表转换为纯小写的,然后使用**sort** 和 **uniq**删除掉任何重复的条目排序(例如'A' 和 'a' 都将成为 'a')。这样就将词表的数量减至97723项了:
|
||||
|
||||

|
||||
|
||||
我现在可以用comm命令及'-23'的参数来比较两个列表,并报告纯字母文件中而没有出现在字典中的单词:
|
||||
|
||||

|
||||
|
||||
总数是3137,所以至少有8583 -3137 = 5446个'核心'密码在伯纳特的纯小写字母列表中(大约63%)是简单的英语单词,或者是简单的单词附加一些数字或者标点符号。我之所以说“至少”,是因为在3137个字符串中有很大比例是只有经过轻微修改的纯英语单词、名称、或者在/usr/share字典中未能找到的名称修改而成的。在LA项中,例如,'labtec', 'ladyboy', 'lakeside', 'lalakers', 'lalala', 'laserjet', 'lasvegas', 'lavalamp' 和 'lawman'.
|
||||
|
||||
### 地名 ###
|
||||
|
||||
在之前的一篇[Linux Rain article][4],我描述了如何建立一张37万项澳大利亚的地名表。有了它,我现在可以回答一些类似这样的关键问题“Round Hill是澳大利亚山脉中最流行的名字吗?”和“桑迪是沙滩之最,而岩溪峡谷呢?”
|
||||
|
||||
在地名表中地名字段的排名第2,所以这里有:
|
||||
|
||||

|
||||
|
||||
哇。我当时甚至没有关闭这个终端。(但是请注意到我是如何通过**\^string1\^string2**命令保存打印的内容。它重复着最后一个命令,但是用第2个字符串代替了第1个字符串。这是多么有用的BASH绝招!)
|
||||
|
||||
另一个亟待解决的问题是有多少地名有'Mile'在其中,例如'Six Mile Creek',而他们的排名又是如何:
|
||||

|
||||
|
||||
我在我的澳洲之旅发现有很多Dead Horse Creeks,因此有这些地名:
|
||||
|
||||

|
||||
|
||||
|
||||
### 种类 ###
|
||||
|
||||
第三个列表是探索我今年出版的1961-2010年期间澳大利亚新种类昆虫名。从这个列表中,我去掉所有“物种的绰号”,就是种群组合的第二部分,比如像智人(你和我)和西方蜜蜂(欧洲蜜蜂)。
|
||||
|
||||
(科技小贴士:这个昆虫表,可以从开发数据Zenodo库中[https://zenodo.org/record/10481][5]取得,包括亚种。在我的‘top 10’练习中,我首先分离出所有独特的种群组合,这样避免了重复的,例如蜜蜂iberica的亚种,以避免蜜蜂的绰号intermissa,等等。最后一个物种文件有18155个绰号。)
|
||||
|
||||
大多数人讲科学名称带玩笑式地用'-us'结局,如'Biggus buggus'。那么昆虫学家呢?有几个不错的,用命令行的方式获取字符串的最后2个字母,在这里我都会用到这2个:
|
||||
|
||||

|
||||
|
||||
耶!昆虫学家喜欢也‘-us’结尾。接下来,我不知道有多少物种是以我的家乡Tasmania州来命名的?(下面我想看看前100行,来确保我得到的所有'tasman'组合.)
|
||||
|
||||

|
||||
|
||||
那么昆士兰呢?
|
||||
|
||||

|
||||
|
||||
一般来说,昆虫物种名单中的前10名分别是什么呢?
|
||||
|
||||

|
||||
|
||||
嗯,除了明显的'australis'和'australiensis',而地理方面的'occidentalis'(西部),另外昆虫学家创建7个在10个最流行列表中的绰号已经履行了其它昆虫学家的意愿。(绰号'commoni'是给澳大利亚蝴蝶和蛾专家Ian F.B. Common[1917-2006]的荣誉。)
|
||||
|
||||
### 演变 ###
|
||||
|
||||
上面的这些命令用在简单列表上。要从简单的列表变成文本块,那就再次需要我们的命令行朋友了。例如,我把澳大利亚参议院于2014年7月16日的[演讲][6]保存成文本文件hansard。将hansard分割成一个单词列表:
|
||||

|
||||
|
||||
|
||||
现在看看讲话中的单词使用频率:
|
||||
|
||||

|
||||
|
||||
### 即将推出... ###
|
||||
|
||||
从多列的表中做'top 10'等排名,需要更多些的命令行工具。我将会在未来的文章中证明他们的用处。
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://thelinuxrain.com/articles/top-10-fun-on-the-command-line
|
||||
|
||||
原文作者:Bob Mesibov(Bob Mesibov is Tasmanian, retired and a keen Linux tinkerer.)
|
||||
|
||||
译者:[disylee](https://github.com/译者ID) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:https://xato.net/passwords/more-top-worst-passwords/#.U8eD13AvDy0
|
||||
[2]:https://xato.net/passwords/how-i-collect-passwords/#.U8eEdnAvDy0
|
||||
[3]:http://www.rinkworks.com/words/letterfreq.shtml
|
||||
[4]:http://www.thelinuxrain.com/articles/building-a-gazetteer-table-from-kml-files
|
||||
[5]:https://zenodo.org/record/10481
|
||||
[6]:http://parlinfo.aph.gov.au/parlInfo/search/display/display.w3p;db=CHAMBER;id=chamber%2Fhansards%2F232fa1a8-d7e8-4b22-9018-1a99b5a96812%2F0025;query=Id%3A%22chamber%2Fhansards%2F232fa1a8-d7e8-4b22-9018-1a99b5a96812%2F0000%22
|
73
published/201408/20 Amazing Linux Blogs For Beginners.md
Normal file
73
published/201408/20 Amazing Linux Blogs For Beginners.md
Normal file
@ -0,0 +1,73 @@
|
||||
初学者福利 —— 20 个超赞的 Linux 博客
|
||||
================================================================================
|
||||
你是刚刚开启 Linux 开源世界奇幻旅程的新人还是寻求灵感的老鸟?不论你是谁,博客都能给你提供一站式服务,满足你的所有需要。博客是一种言辞简洁格式清晰的信息来源,这些信息都源于现实世界里像你我一样乐于帮助他人掌握知识的人。
|
||||
|
||||
1.[Ubuntux][1]
|
||||
|
||||
2.[Mark shuttleworth's Official Blog][2]
|
||||
|
||||
3.[Ubuntu Living][3]
|
||||
|
||||
4.[Planet Gnome][4]
|
||||
|
||||
5.[Planet KDE][5]
|
||||
|
||||
6.[Linux Tracker][6]
|
||||
|
||||
7.[Linux Watch][7]
|
||||
|
||||
8.[Mandriva Blog][8]
|
||||
|
||||
9.[Linux Security][9]
|
||||
|
||||
10.[Linux on Desktop][10]
|
||||
|
||||
11.[LinuxBSDos][11]
|
||||
|
||||
12.[All for Linux][12]
|
||||
|
||||
13.[Linux from Scratch][13]
|
||||
|
||||
14.[RootPrompt][14]
|
||||
|
||||
15.[Linux Home Networking][15]
|
||||
|
||||
16.[YoLinux][16]
|
||||
|
||||
17.[Librenix][17]
|
||||
|
||||
18.[Linux Journal][18]
|
||||
|
||||
19.[Linux Street][19]
|
||||
|
||||
20.[Linux Hub][20]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.efytimes.com/e1/fullnews.asp?edid=144715
|
||||
|
||||
译者:[sailing](https://github.com/blueabysm)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.ubuntux.org/
|
||||
[2]:http://www.markshuttleworth.com/
|
||||
[3]:http://ubuntuliving.blogspot.in/
|
||||
[4]:http://planet.gnome.org/
|
||||
[5]:http://planetkde.org/
|
||||
[6]:http://linuxtracker.org/
|
||||
[7]:http://efytimes.com/e1/www.linux-watch.com
|
||||
[8]:http://blog.mandriva.com/en/
|
||||
[9]:http://www.linuxsecurity.com/
|
||||
[10]:http://linuxondesktop.blogspot.in/
|
||||
[11]:http://www.linuxbsdos.com/
|
||||
[12]:http://allforlinux.com/
|
||||
[13]:http://www.linuxfromscratch.org/
|
||||
[14]:http://rootprompt.org/
|
||||
[15]:http://www.linuxhomenetworking.com/
|
||||
[16]:http://www.yolinux.com/TUTORIALS/
|
||||
[17]:http://librenix.com/
|
||||
[18]:http://www.linuxjournal.com/
|
||||
[19]:http://www.linuxstreet.net/
|
||||
[20]:http://linuxhub.net/
|
57
published/201408/20140528 Install Webmin On Ubuntu 14.04.md
Normal file
57
published/201408/20140528 Install Webmin On Ubuntu 14.04.md
Normal file
@ -0,0 +1,57 @@
|
||||
在Ubuntu 14.04中安装Webmin
|
||||
================================================================================
|
||||

|
||||
|
||||
[Webmin][1]是一款开源的、基于web的、适合Unix/Linux的系统管理工具。使用Webmin,你可以通过任何一款现有的网页浏览器来设置和配置所有的系统服务,比如DNS、DHCP、Apache、NFS和Samba等。因此,你无需记住所有的命令或手动编辑任何的配置文件了。
|
||||
|
||||
### 使用官方仓库在Ubuntu 14.04 LTS上安装Webmin ###
|
||||
|
||||
添加webmin的官方库:
|
||||
|
||||
编辑文件**/etc/apt/sources.list**,
|
||||
|
||||
sudo vi /etc/apt/sources.list
|
||||
|
||||
添加下列行内容:
|
||||
|
||||
deb http://download.webmin.com/download/repository sarge contrib
|
||||
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
|
||||
|
||||
添加GPG密钥:
|
||||
|
||||
sudo wget http://www.webmin.com/jcameron-key.asc
|
||||
sudo apt-key add jcameron-key.asc
|
||||
|
||||
更新软件列表:
|
||||
|
||||
sudo apt-get update
|
||||
|
||||
使用下列命令安装webmin:
|
||||
|
||||
sudo apt-get install webmin
|
||||
|
||||
如果你想远程访问webmin的控制台,则需要设置防火墙允许通过webmin的默认端口“10000”。
|
||||
|
||||
sudo ufw allow 10000
|
||||
|
||||
### 访问Webmin控制台 ###
|
||||
|
||||
打开你的浏览器,转到这个地址**https://ip-address:10000/**。将会出现下面的画面,输入用户名和密码就可以登陆进webmin控制台了。
|
||||
|
||||

|
||||
|
||||
这是我的Webmin控制面板的样子。
|
||||
|
||||

|
||||
|
||||
就是这样简单。现在你就可以图形化地管理和配置你的Ubuntu服务器了。欢呼吧!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.unixmen.com/install-webmin-ubuntu-14-04/
|
||||
|
||||
译者:[KayGuoWhu](https://github.com/KayGuoWhu) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.webmin.com/
|
113
published/201408/20140607 Got Linux--Add Proprietary Code.md
Normal file
113
published/201408/20140607 Got Linux--Add Proprietary Code.md
Normal file
@ -0,0 +1,113 @@
|
||||
为什么不要在Linux上只运行开源软件?
|
||||
================================================================================
|
||||

|
||||
|
||||
> 对于一些产业来讲,在开源的Linux发行版上运行专属(proprietary)软件并不是个例,--相反这很常见。例如,在华尔街,“华尔街上百分之九十九的应用依赖于专属软件。在那些运行在Linux上而有专属许可证的产品中,Oracle是我们非常喜欢的一款”, FSMLabs 的总裁 Victor Yodaiken这样说。
|
||||
|
||||
迁移到Linux平台并不是一个非此即彼的提议。linux作为一个灵活开放的计算平台为用户在软件选择上提供了更多的选项。
|
||||
|
||||
第一个方法是Linux的桌面环境,个人计算用户,小型办公室和企业都可以从众多的企业级Linux发行版中选择。在Windows和被限定在其昂贵硬件的基于unix的苹果OS X之外,Linux桌面系统为用户提供了另外一种零成本或者低成本的选择。
|
||||
|
||||
另一个迁移的办法是,让员工放弃Linux桌面办公,取而代之,企业可以在Linux服务器上运行后台办公系统。在网络应用和云计算领域遍布Linux的足迹,Linux服务器能在各种企业设定中寻找到自己的位置。
|
||||
|
||||
第三个方法是运行一个完整的Linux商店,常用的办公计算、网上浏览、图片编辑工作软件都存放在开源的软件包中。开源的数据库程序连接着后台的软件和服务器,而且Linux不需要特殊的硬件和多余的花销。
|
||||
|
||||
培训员工使用Linux桌面应用仅需要很少的投入。这要感谢职员们对跨平台软件的熟悉,例如LibreOffice 和 Open Office, 当然还有 google Chrome和 Firefox浏览器。先前的办公交流工具真的面临着威胁。
|
||||
|
||||
Linux很灵活。一种新的趋势是编写第三方的特定软件来满足自己的商业需求,商业软件公司可以重新编译打包那些必备的windows或者其他平台的软件。他们也可以结合开源的组件用他们自己特定的代码来编写特定需求的linux应用程序。
|
||||
|
||||
Dayan Jeremiah,[Icewarp Pacific][1]的CEO告诉linuxinsider:“我相信这将是一个新的趋势,企业正在使用可以运行在Linux系统上的第三方软件。让企业走向定制化软件的一个因素就是购买微软授权的经济负担太重。”
|
||||
|
||||
### Linux 上运行专属软件 ###
|
||||
|
||||
很多公司转向其他操作系统面临的问题就是软件和应用程序的兼容性问题,比如转向Linux,那么这家企业必须保证它用的软件必须是兼容Linux操作系统的,jeremiah补充道。
|
||||
|
||||
Linux操作系统有着数量巨大的软件,它们运行在数量众多的linux发行版和桌面环境当中。考虑到行业的特殊性,广大的开源团体或许并没有提供替代一个特定计算任务的替代品。这样的情况下,就不得不花费精力寻找第三方软件开发者的帮助。
|
||||
|
||||
“通过第三方厂商帮助来保证兼容性的问题,比如,我们可以混合和匹配各种软件组件在一起,以便让一个应用程序可以运行在Linux上。”jeremiah这样说。
|
||||
|
||||
### 旧貌换新颜 ###
|
||||
|
||||
越来越多的专属软件公司,比如Icewarp,开发特定的软件来满足企业特定的业务需求,他们将许多开源组件混合在一起使用。
|
||||
|
||||
相比在微软框架下,这样不仅节约了授权费用,也节省了开发代码的费用。
|
||||
|
||||
“我们可以使用现成的软件组件为Linux构建完整的软件解决方案,这个方案非常节省,高效而且稳定。”jeremiah补充道。
|
||||
|
||||
Icewarp开发的特定软件并不是免费的开源项目,并不提供免费版本,需要订购并支付费用,而且售后支持也是收费的。
|
||||
|
||||
### 代码移植的混乱 ###
|
||||
|
||||
[Lucera][2]的CEO Jacob Loveless提到,把一个来自其它平台的软件变成Linux兼容的,一个很大的障碍就是Linux的多样性。Linux操作系统有一个通用的内核,但是不同的发行版有很多不同的特点。
|
||||
|
||||
“当软件公司不得不在多个Linux系统中交叉编译时,问题进一步加深。”除了微软的Exchange数据库之外(LCTT译注:此处疑为笔误,可能是“MS SQL Server”),大部分数据库都在linux上运行的很好,MySQL和PostSQL是其中非常出名的两个开源软件(LCTT译注:此处PostSQL应该是Postgresql)。”
|
||||
|
||||
在软件移植到Linux时的最大挑战,是需要重新编译代码,通常你必须要完成一些平台特定的修改才能让它工作,他说。
|
||||
|
||||
比如,你有特定的基于.Net的代码或者其他的针对Windows的语言代码,Linux上开源的编译器并不总是兼容,所以你有很多的软件工作必须重做,loveless解释说。
|
||||
|
||||
另外一个例子就是数据库,你往往不得不改用其他的数据库或者不同的网页服务器。
|
||||
|
||||
“这确实需要一些工作”loveless说道。
|
||||
|
||||
### 多但不足够 ###
|
||||
|
||||
另外一个转向Linux的兼容性问题就是公司需要的开源软件类型。
|
||||
|
||||
“对于公司特定的计算需求开源软件方案并不完善”ICeWarp的Jeremiah补充说“但是,通常对于Linux来说都是足够的,开源团体无法做到的特定的应用程序可以由第三方来实现。”
比如说,IceWarp最近完成的一个特定的Linux兼容的应用程序就不需要采购额外的硬件也没产生多余的授权费用。
|
||||
|
||||
这个特定的软件包含一个负载均衡的集群,一个运行数据库的集群,另外一个是IP服务器的集群。所有的都运行在RHEL或者CentOS linux发行版当中。
|
||||
|
||||
### 跟钱走! ###
|
||||
|
||||
在一些情况下,有钱才有Linux操作系统的应用,有时候Linux服务器在一个领域很流行,又有些时候只是一个特定的Linux桌面应用程序,有时候两者都有。
|
||||
|
||||
举个例子,例如在华尔街,在金融市场中时间同步是关键。金融网络依靠分布式网络,用户必须在截止时间内完成交易。其它的应用需要在交易前进行精确的计时。[FSMLabs][3] 的总裁 Victor Yodaiken 说,这些功能需要精确的时间同步控制。
|
||||
|
||||
当FSMLabs开始开发时间同步软件时,Yodaiken觉得他们只需要开发一个Windows版本。
|
||||
|
||||
然而,事实证明每一个在使用自动交易或者高频交易的人,甚至以高精度采集数据的人,都运行的是Linux系统,他告诉LinuxInsider。
|
||||
|
||||
### 惜时如金 ###
|
||||
|
||||
FSMLabs在Linux上运行他们的专属代码,Linux上的互联网时间协议(NTP)并不适用于同步时间在纳秒级别的应用,比如那些追踪股票变动,或者交易需求。 windows的不足有另一个原因。
|
||||
|
||||
Yodaiken说道:“(在这方面,)Linux比Windows流行是因为windows没有一个标准的API可以让你在毫秒级之下获取时间,所以Window并不是真的都好,你必须得有特定的API才行。而在Linux下。你不需要在你的应用程序上费力了。”
|
||||
|
||||
金融市场是第一个拥抱Linux的,很多早期的系统管理员来自20世纪80年代的[贝尔实验室][4],因此这是一个很成熟的市场,他补充到。
|
||||
|
||||
### 满足需求 ###
|
||||
|
||||
在某些领域,在开源的Linux发行版上运行有专利的软件并不意外,这是很常见的。
|
||||
|
||||
“华尔街99%的应用都运行在有专利的产品上。在我们在Linux上运行的有专属许可证的产品中,我们很喜欢Oracle。”FSMLab 的 Yodaiken说。
|
||||
|
||||
一些使用Linux的市场需要更多特定的软件,现有的开源软件并不能满足他们,这就是为什么软件开发者们为企业Linux应用提供了商业的解决方案。他补充道。
|
||||
|
||||
“这很平常,开源软件很适合大的市场,这就是为什么他有广泛而且通用的需求,不是很多人需要绝对的微秒级的时间,而且如果没有市场就会发出信号。”他指出。
|
||||
|
||||
### Linux纯粹主义是没有意义的 ###
|
||||
|
||||
在Linux上运行完全免费开源的软件的观念是欠缺的,有时候你要运行专属软件。对于任何特定的行业都是这样。
|
||||
|
||||
当一个专业的计算不需要进入广泛市场时,第三方的软件开发者可以提供特定的,商业的或者闭源的软件解决方案。由于商业需求不断进入Linux系统,绝对的开源将成为过去的事情。
|
||||
|
||||
“在Linux上拥有商业软件是相当普遍的”,Yodaiken说,“商人都不是纯粹主义者,他们只想解决问题。”
|
||||
|
||||
Jack M.Genmain从Apple II和PC时代就开始报道电脑科技,他还有原始的IBM PC-Jr和运行DOS的机器。他留着共享软件和开源软件的linux桌面。他运行着好几种版本的Windows和Linux,经常不能决定是用他的tablet还是netbook还是android智能机,而不是用他的桌面电脑或者笔记本。你可以在google+上联系他。
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxinsider.com/story/80555.html
|
||||
|
||||
作者:Jack M. Germain
|
||||
译者:[jiajia9linuxer](https://github.com/jiajia9linuxer)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.icewarp.com/
|
||||
[2]:https://lucerahq.com
|
||||
[3]:http://www.fsmlabs.com/
|
||||
[4]:http://www.bell-labs.com/
|
@ -0,0 +1,50 @@
|
||||
鲜为人知的 Apache Mesos 项目帮助 Mesosphere 公司得到了千万美元投资
|
||||
================================================================================
|
||||

|
||||
|
||||
[Mesosphere][1],一家试图围绕鲜为人知的 Apache Mesos 项目开展商业活动的公司,刚刚从 Andreessen Horowitz 那里获得了 1000 万美元投资。以下是为什么这个项目能够吸引如此巨款的原因。
|
||||
|
||||
事实上 Mesos 这款自动扩放软件已经出现了五年了。据 Mesosphere 的CEO及联合创始人 Florian Leibert 所述,Mesos 已经在 Twitter 内已经管理了超过 50,000 个以上的CPU。此外, EBay, AirBnB, Netflix 还有 HubSpot 也是这款软件的使用者。
|
||||
|
||||
当那些互联网巨头发现 Mesos 的时候,这项技术却并不为大多数企业所知。但它确实可以满足一些公司在他们内部的数据中心上应用公共云的一些技术的需求。
|
||||
|
||||
Mesos 管理集群机器,根据需要自动扩放应用。它在每台机器上只依赖很少的软件,它由一个主调度程序协调。据 Leibert 所说,其CPU 占用为 0 并且几乎不消耗任何内存。在其工作的每台机器上的该软件会向调度程序报告关于虚拟机或者服务器的容量信息,接着调度程序向目标机器分派任务。
|
||||
|
||||
“如果一项任务终断并且没有返回任何结果,主调度程序知道如何重新调度它和它所用的资源在哪里。” Mesosphere 的资深副总裁 Matt Trifiro 说。
|
||||
|
||||
Mesos 能自动扩放一系列的任务,包括 Hadoop 数据库,Ruby on Rails 节点,以及 Cassandra 。
|
||||
|
||||
使用 Mesos 使得 Hubspot 削减了一半的 AWS(Amazon Web Services) 的费用支出,Liebert 说道。这是因为 Mesos 能够在目标机器之间有效地分配作业量的原因。
|
||||
|
||||
然而,Mesos 更有可能应用到那些试图真正地在内部创建一个类 AWS 环境的企业,一位来自 451 Research 的分析员 Jay Lyman 说。AWS 提供一些[自动扩放工具][3],但大多数公司对于在公共云基础设施上运行所有东西还是感到不安。与此同时,他们并不想着反对他们的开发者采用 AWS 那样的公共云中可用的优异性能。他们希望他们的私有云能集成这些可用的优点。
|
||||
|
||||
“如你所见,类似 AWS 风格的界面风格,与监控、命令、操控以及稳定性相融合,” Liebert 继续说道。
|
||||
|
||||
Mesos 既可以在一个私有云上也可以在 AWS 上运行,向企业提供最有效率地使用其内部云的方法,并在需要扩放时自动切换到 AWS 去。
|
||||
|
||||
但是,从另外的方面说 Mesos 也是有一些缺点的。它[并不能运行][4]任何 Windows 操作系统或者比较古老的应用比如说 SAP 软件。
|
||||
|
||||
不过,Lyman 说,“假如一个团队拥有长时期使用云的经历,他们大概早就对 Linux 操作系统情有独钟了。”
|
||||
|
||||
在将来,Mesosphere 能够支持 Windows 操作系统是很有可能的。最初,像 Puppet 和 Chef 这样的技术也只支持 Linux 操作系统,Lyman 表示。“这只是早期 Mesosphere 的特性。现在它还是不太成熟,” 他又说道。
|
||||
|
||||
Mesosphere 正瞄向大部分使用现代编程技术构建了越来越多的运行于 Linux 的应用的企业,以及 Twitter 和 Netflix 这种在初创时还没有 Mesos 类似技术的第一代 Web 2.0 公司。“这是早期两类最常见的客户概况,” Trifiro 说。
|
||||
|
||||
年终之前,Mesosphere 希望发布包含文档的商业产品,通过技术支持与颁发许可证来获得营收。Mesosphere 已开发一款名为 Marathon 的大规模扩放编制工具,并且支持 Docker 集成。它现在免费提供打包好的 Mesos 发行版,希望以此占有未来的市场。
|
||||
|
||||
Mesosphere 同时也正在为少数早期的顾客工作。它帮助 HubSpot 实施有关 Mesos 的搭建。
|
||||
|
||||
Mesosphere 在这个领域并不唯一。Rightscale,Scalr 以及现在归 Dell 所有的 Enstratius,全都提供了一些各种版本的扩放或云管理技术。Mesosphere 强调说,Mesos 及其公司自己开发的技术在单独机器中创建服务器集群方面的表现远胜于市场上的其他同类软件。来自 Andreessen 的新投资一定会帮助 Meos 获得更大的动力。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://thenewstack.io/little-known-apache-mesos-project-helps-mesosphere-raise-10m-from-andreessen/
|
||||
|
||||
译者:[SteveArcher](https://github.com/SteveArcher) 校对:[ wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://mesosphere.io/
|
||||
[2]:http://mesos.apache.org/
|
||||
[3]:http://aws.amazon.com/autoscaling/
|
||||
[4]:http://mesosphere.io/learn/
|
@ -0,0 +1,151 @@
|
||||
如何无盘启动Linux
|
||||
================================================================================
|
||||
无盘启动意味着一台客户端电脑在启动操作系统时没有任何的磁盘存储介质。在这种情形之下,电脑能够通过网络从远程NFS服务器上加载内核和根文件系统。在这过程中可能会用到多种不同的方法来从NFS服务器上加载内核和根文件系统:RARP,BOOTP或是DHCP协议。在这个指导教程中,我会使用BOOTP/DHCP协议,因为它们能够被大多数的网卡所支持。
|
||||
|
||||
### 无盘计算机的优势 ###
|
||||
|
||||
想象一下你的办公室内有30台电脑,每一台都需要使用相同的应用程序。如果你作为管理这些电脑的管理员,你会怎么做?如果你在每一台电脑上安装应用程序,那只是在浪费你的时间。另一方面来说,一套无盘系统就能解决你的问题。有了一套无盘系统,你只需在中央NFS服务器上安装需要的程序,然后通过网络启动这30台客户机即可。
|
||||
|
||||
### 需要什么 ###
|
||||
|
||||
两台或更多的装备有支持DHCP协议的网卡的Linux电脑。这些将扮演NFS服务器角色的电脑应当配有硬盘,其它客户机不需要任何的硬盘。服务器和客户机需要连接到同一个本地网络之内。
|
||||
|
||||
设置一个无盘系统共需要五步。
|
||||
|
||||
1. 安装所需的包
|
||||
1. 配置TFTP服务器
|
||||
1. 配置DHCP服务器
|
||||
1. 配置NFS服务器
|
||||
1. 启动无盘客户机
|
||||
|
||||
在这个指导教程中,我假设作为启动服务器的电脑运行的是 Ubuntu。如何你正在使用其它的Linux发行版,原理是一样的。
|
||||
|
||||
### 第一步:安装所需的包 ###
|
||||
|
||||
像下面这样使用 apt-get 命令来安装所有需要的包。
|
||||
|
||||
$ sudo apt-get install dhcp3-server tftpd-hpa syslinux nfs-kernel-server initramfs-tools
|
||||
|
||||
### 第二步:配置TFTP服务器 ###
|
||||
|
||||
TFTP服务器是一个小型FTP服务器,需要用它来在本地网络中的客户机和服务器之间自动传输启动文件。
|
||||
|
||||
向/etc/default/tftpd-hpa中添加以下行:
|
||||
|
||||
RUN_DAEMON="yes"
|
||||
OPTIONS="-l -s /var/lib/tftpboot/"
|
||||
|
||||
接着,创建一个启动文件夹。
|
||||
|
||||
$ sudo mkdir -p /var/lib/tftpboot/pxelinux.cfg
|
||||
|
||||
复制引导程序镜像。
|
||||
|
||||
$ sudo cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot
|
||||
|
||||
像下面这样创建一个默认启动配置文件。
|
||||
|
||||
$ sudo vi /tftpboot/pxelinux.cfg/default
|
||||
|
||||
----------
|
||||
|
||||
LABEL Ubuntu
|
||||
KERNEL vmlinuz
|
||||
APPEND root=/dev/nfs initrd=initrd.img nfsroot=10.10.101.1:/nfsroot ip=dhcp rw
|
||||
|
||||
注意:
|
||||
|
||||
- "root=/dev/nfs"表示服务器上的网络文件系统(不需要修改)。
|
||||
- "initrd=initrd.img"是一个用于系统启动的启动脚本。
|
||||
- "nfsroot=10.10.101.1/nfsroot"指明了服务器的IP地址以及NFS共享文件夹的名称。用你的服务器地址来替换掉IP地址。
|
||||
- "ip=dhcp"表示客户端电脑使用DHCP寻址方案。
|
||||
- "rw"表示NFS共享是可读/可写的。
|
||||
|
||||
最后,重启TFTPD服务。
|
||||
|
||||
sudo /etc/init.d/tftpd-hpa restart
|
||||
|
||||
### 第三步:配置DHCP服务 ###
|
||||
|
||||
你还需要在NFS服务器上配置DHCP服务来允许使用/var/lib/tftpboot/pxelinux.0启动。假设你在使用10.10.101.0作为子网,你的配置可能看起来像下面这样子。
|
||||
|
||||
$ sudo vi /etc/dhcp3/dhcpd.conf
|
||||
|
||||
----------
|
||||
|
||||
allow booting;
|
||||
allow bootp;
|
||||
|
||||
subnet 10.10.101.0 netmask 255.255.255.0 {
|
||||
range 10.10.101.2 10.10.101.254;
|
||||
option broadcast-address 10.10.101.255;
|
||||
option routers 10.10.101.1;
|
||||
filename "/pxelinux.0";
|
||||
}
|
||||
|
||||
然后重启DHCP服务。
|
||||
|
||||
$ sudo service isc-dhcp-server restart
|
||||
|
||||
### 第四步:配置NFS服务器 ###
|
||||
|
||||
创建一个保存客户机根文件系统目录的文件夹。
|
||||
|
||||
$ sudo mkdir /nfsroot
|
||||
|
||||
接着,设置NFS服务器导出客户机根文件系统。向/etc/exports添加以下行来实现。
|
||||
|
||||
/nfsroot *(rw,no_root_squash,async,insecure,no_subtree_check)
|
||||
|
||||
运行下列命令来重新载入修改过的/etc/exports。
|
||||
|
||||
$ sudo exportfs -rv
|
||||
|
||||
默认情况下,Ubuntu在initrd镜像中不提供网络启动支持。因此你需要创建一个新的initrd.img文件。首先添加下列行到/etc/initramfs-tools/initramfs.conf中。
|
||||
|
||||
BOOT=nfs
|
||||
MODULES=netboot
|
||||
|
||||
然后运行下列命令来创建一个新的initrd.img。
|
||||
|
||||
$ sudo mkinitramfs -o /var/lib/tftpboot/initrd.img
|
||||
|
||||
将新的内核镜像文件复制到/var/lib/tftpboot中。
|
||||
|
||||
$ sudo cp /boot/vmlinuz-`uname -r` /var/lib/tfftpboot/vmlinuz
|
||||
|
||||
是时候将整个根文件系统拷贝到/nfsroot中了。
|
||||
|
||||
假设您使用的是一个全新的Ubuntu服务器安装,你只需将文件系统拷贝到NFS的根之中。
|
||||
|
||||
$ sudo cp -ax / /nfsroot
|
||||
|
||||
然后通过文本编辑器打开/nfsroot/etc/fstab 并添加以下行。
|
||||
|
||||
/dev/nfs / nfs defaults 1 1
|
||||
|
||||
文件夹/var/lib/tftpboot应拥有全局读写权限。否则客户机无法从网络启动。
|
||||
|
||||
$ sudo chmod -R 777 /var/lib/tfftpboot
|
||||
|
||||
最后,为了避免任何服务器设置出现错误,我推荐对运行DHCP服务的网卡使用静态IP。举个例子,如果网卡名为eth0,你的/etc/network/interfaces中的配置应该看起来像这样:
|
||||
|
||||
iface eth0 inet static
|
||||
address 10.10.101.1
|
||||
netmask 255.255.255.0
|
||||
broadcast 10.10.101.255
|
||||
network 10.10.101.0
|
||||
|
||||
### 第五步:启动无盘客户机 ###
|
||||
|
||||
在您完成了服务器上的配置之后,从网络启动你的客户机。要从网络启动一般你只需修改BIOS设置中的启动优先顺序即可。
|
||||
|
||||
如果客户机启动成功,您的无盘环境就配置好了。无需做任何修改就可以任意添加一台或多台客户端电脑。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/2014/06/diskless-boot-linux-machine.html
|
||||
|
||||
译者:[alim0x](https://github.com/alim0x) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
113
published/201408/20140617 Does Linux Lack a Killer App.md
Normal file
113
published/201408/20140617 Does Linux Lack a Killer App.md
Normal file
@ -0,0 +1,113 @@
|
||||
Linux 缺乏一款杀手级应用程序吗?
|
||||
================================================================================
|
||||

|
||||
|
||||
**Linux 最需要的就是游戏, Hyperlogos 的博主 Martin Espinoza 如是说。然而,“如果您把它限定到一款应用程序的话,最需要的很可能仍是 Photoshop 。尽管大家都在谈论 GIMP 已经变得多么多么强大,但它的易用性仍然是个悲催的噩梦;虽然开源社区有些相关的文档,但 GIMP 仍是处在缺乏文档的可怜状态。”**
|
||||
|
||||
这些日子这儿越来越热了,Linux 博客世界和 FOSS 论坛的粉丝们都蜂拥入带有破窗的休息室,边吹着冷空调,边讨论此话题。
|
||||
|
||||
甚至是 [Linux Girl][9],这些天也被这些越来越多的潮流所冲击,正在 blogobar 上寻求能使其降温的慰籍,而且越来越频繁。
|
||||
|
||||
虽然她们这样做比较正确,但或许她们已经错过了最鲜最美味可口的辩论大餐。“Linux 缺少什么样的杀手级应用程序?”这个问题[已经扩大化了][1],关于此的讨论越演越烈,已经超出以往任何时候。
|
||||
|
||||
“开源软件世界的软件是如此令人难以置信的丰富,几乎涵盖了所有的领域,” **Linux Voice** 的 Mike Saunders 开头说到。“我们有桌面端的、服务端的、开发相关的及多媒体工具等一大笔来自开源世界的财富可以选择 -- 其中的某些还是在相关领域中最好的呢。”
|
||||
|
||||
“但还缺少什么吗?” Sanders 接下来提出可争议的话题。“是不是存在一款杀手级应用程序,它会使你的主机不能 24x7 小时的在运行?”
|
||||
|
||||
参与者围绕着吧台考虑这话题的时候,出现了短暂的间歇。Linux Girl 也享受着这短暂的平静,但并没有持续多久。
|
||||
|
||||
### '取决于您的所需' ###
|
||||
|
||||

|
||||
|
||||
“很久以前,Linux 需要很多东西,” Google+ 的博主 Alessandro Ebersol 发言了。“当任何软件和厨房水槽都迁移到云端的那些日子,做任何的事情都得考虑多平台兼容性。”
|
||||
|
||||
“我想说的是我们缺少游戏,但这种情况也正在被改变,” Ebersol 说道。“所以我觉得我们并不是那么迫切的需要一个杀手级应用了。”
|
||||
|
||||
“杀手级应用程序?取决于你想用计算机做什么,” consultant 和 [Slashdot][2] 博客的 Gerhard Mack 认为。“如果您正准备拟稿做设计,那么杀手级应用程序就是 AUTOCAD 。但对其它行业来说杀手级应用程序将是别的。”
|
||||
|
||||
### '企业平台空间' ###
|
||||
|
||||
Google+ 博客的 Kevin O'Brien 有相似的观点。
|
||||
|
||||
“在消费级存在的应用程序不算太多,” O'Brien 说。“我虽然会抱怨游戏或者 Nvidia 驱动程序,并且我看还没有任何东西能真正替代 Quicken。(译者注:Quicken 是一款家庭及个人财务管理软件,可管理个人及家庭的日常收支、银行卡、支票、信用卡及税务等财务信息,有着丰富的功能和简单快捷的操作。)但对我来说最大的不同是企业平台空间。”
|
||||
|
||||
“微软就拥有企业平台空间,没有什么比得过 Outlook/Exchange 服务, Sharepoint 等这些应用的,”他断言到。“我猜测部分原因可能是真正关心这些的开源开发者很少很少。”
|
||||
|
||||
### '浪潮正发生改变' ###
|
||||
|
||||
与其说是“缺乏应用程序”这种情况,不如说是“临界的质量不够”的问题,Google+ 博客 Gonzalo Velasco C. 建议说。
|
||||
|
||||
比起五年前,现在用 Linux 的人已经越来越多了,他指出;但同时很人都依赖于非 Linux 友好的应用程序。
|
||||
|
||||
“虽然每个人都在使用 Skype ,但一大半的应用程序都是基于 GNU/Linux 协议的,从简单易用的 Pidgin(我的最爱)到 Ekiga 和通用 VoIP 等等,” Gonzalo Velasco C. 解释说。“一些用户仍宣称他们需要 PhotoShop,并不想花时间来掌握和改进 GIMP、Inkscape、Bender 及其它的。”
|
||||
|
||||
“曾经是很缺乏游戏,“但这状况正发生改变,主要是(但并不是唯一)因为 Valve 的勇敢开创 SteamOS 之举,”他补充道。
|
||||
|
||||
### '零售货架空间' ###
|
||||
|
||||
“我认为这段时期根本就没有‘杀手级’应用程序,”[Robert Pogson][3] 博客上的观点。“在 Debian GNU/Linux 系统上,有 40000以上 的软件包,虽然我的 PC 只安装了 3000 多的软件,但我一样都不缺。我有多个浏览器、编辑器、编译器/解释器、多个操作平台和像 KVM 这样的虚拟机,我可以根据需要在多个操作系统和不同版本的软件中尽情玩乐。”
|
||||
|
||||
“在局域网内,我可以把多台机器当做一台机器来使用,” Pogson 补充道。“在局域网内我能从任何机器上访问存储在任意节点的资源。还有什么不能满足的吗?”
|
||||
|
||||
"有些说法,几个专业人士告诉我,在 GNU/Linux 上的视频和图像编辑是有点弱,”他说。 “GIMP 正在比特级别的图像上改进,所以应该不算了。Lightworks(译者注:好莱坞级专业电影编辑软件) 最终会被当做 FLOSS(译者注:自由/开源软件:世界影响研究) 发布,所以视频应该不算。”
|
||||
|
||||
"尽管如此,在 IT 行业中还有特少数的专业功能软件,”他指出。“很多普通用户几十年都不会使用那些极其特殊的应用程序软件,所有我认为 GNU/Linux 系统已经不需要什么了。”
|
||||
|
||||
但是真正的杀手在市场上,在零售商店缺乏货架空间,Pogson 断言到。“只要解决这问题,GNU/Linux 必定蓬勃发展。”
|
||||
|
||||
### 'Linux 已经输给 OS X' ###
|
||||
|
||||
Chris Travers,一名工作于 [LedgerSMB][5] 的[博主][4],有不同的观点。
|
||||
|
||||
“我认为杀手级应用程序并不是关键问题,”他开始说到。“真正的问题是,虽然跟 BSD 系统一样,Linux 正在占据服务器市场,但在桌面市场 Linux 已经普遍输于 OS X 了。Linux 用户正在寻找开放的桌面系统。”
|
||||
|
||||
Linux “既需要微软的增长势头,又需要 OS X 系统的精致用户界面和引人入胜的细节设计,”Travers 说到。“这些迟早会来有的。”
|
||||
|
||||
### 文档问题 ###
|
||||
|
||||
“Linux 并不是缺少杀手级应用程序” -- "缺少的是一如既往的打磨抛光," [Hyperlogos][6] 的博主 Martin Espinoza 认为。“根本就没有 Linux 的桌面环境能像 Windows XP 系统那样精雕细琢,更别说是 Windows 7 系统了。”
|
||||
|
||||
"除了可以用臃肿复杂的 GNOME 或 [KDE][7] 的色拉一样的小部件,难道还要用拥有极其可怕的文件管理器和非常原始的面板的 Xface 或 LXDE 吗?" Espinoza 增加道。"GNOME 仅仅只是非常接近 DE。真正的 DE 是十分简洁的,还会隐藏他们的存在。"
|
||||
|
||||
Windows 也仅仅是“表现的比较好,”他断言说。
|
||||
|
||||
不过,如果 Linux 要获得广泛的接受的话,“最缺的正是游戏,”Espinoza 说到。“如果您把它限定到一款应用程序的话,最需要的很可能仍是 Photoshop 。尽管大家都在谈论 GIMP 已经变得多么多么强大,但它的易用性仍然是个悲催的噩梦;虽然开源社区有些相关的文档,但 GIMP 仍是处在缺乏文档的可怜状态。”
|
||||
|
||||
"GIMP “也许能做 Photoshop 能做的大部分事情,但我很可能并不知道,”Espinoza 的结论。“我想,如果我花了几个小时逛论坛就可以找出如何使用 GIMP 了。这就是大多数开源软件项目失败的地方,包括那些认为他们是真的是有了足够多的说明文档的。”
|
||||
|
||||
### '易用和有技术支持' ###
|
||||
|
||||
SoylentNews 的博主 hairyfeet 定义说易用和有技术支持就是 “杀手级应用”。
|
||||
|
||||
“嗯,一个新手安装好一个看起来很漂亮的 Linux 发行版系统,它工作得也很正常;但问题是它不会一直正常工作或一直都让人赏心悦目,”他解释到。“第一个更新,哎哟!WPA V2 无线网用不了了。第二个更新呢,像脉冲呕吐一样,声音没了。还有第一个‘升级’?呃,都不需要继续了!”
|
||||
|
||||
“这正是 Linux 欠缺而 Windows 和 OS X 已经具有的:易用性及技术支持,”hairyfeet 结束道。“相同的时段有 15 款以上的 Linux 发行版本跟仅仅只是一款 Windows 发行版本所获得的技术支持生命周期能一样吗?不好意思的说,您们的产品不是同一重量级的 -- 您是拿高中棒球赛跟职业联赛在比较。”
|
||||
|
||||
### 'Windows 8' ###
|
||||
|
||||
最后但并非是不重要的,[Linux Rants][8] 的博主 Mike Stone 提供了一个让人惊讶的建议。
|
||||
|
||||
“这些年 Linux 缺乏的杀手级应用是 Windows 8,”Stone 打趣说。
|
||||
|
||||
"说真的,我认为并没有一个特定的应用程序可以被称为'杀手级应用',“他说,”Linux 需要有更多的主流应用的支持,而这将意味着 Photoshop 和微软的 Office 是必须具有的。值得庆幸的是,微软已经做了最大的努力以使 Office 可以跨平台,至于 Photoshop 的话大多数人并不需要的。"
|
||||
|
||||
Linux "应该是很争议性的话题,上面我所说的 Windows 8 仅仅只是个玩笑,"他总结说。“基于 Linux 的应用程序正如火如荼,而当前的 Windows 系统明显不受欢迎。祈祷我们能很快就看到这一变化。”
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxvoice.com/voice-of-the-masses-what-killer-app-is-linux-missing/
|
||||
|
||||
译者:[runningwater](https://github.com/runningwater) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.linuxvoice.com/voice-of-the-masses-what-killer-app-is-linux-missing/
|
||||
[2]:http://slashdot.org/
|
||||
[3]:http://mrpogson.com/
|
||||
[4]:http://ledgersmbdev.blogspot.com/
|
||||
[5]:http://www.ledgersmb.org/
|
||||
[6]:http://hyperlogos.org/
|
||||
[7]:http://www.kde.org/
|
||||
[8]:http://linuxrants.com/
|
||||
[9]:http://www.linux-girl.com
|
@ -1,15 +1,15 @@
|
||||
给linux用户的11个高级MySQL数据库面试问题和答案
|
||||
================================================================================
|
||||
我们已经发表了两篇MySQL的文章,非常感谢Tecmint社区的大力支持.这是MySQL面试系列的第三篇文章,并且在面试专栏中排第16.
|
||||
我们已经发表了两篇MySQL的文章,非常感谢Tecmint社区的大力支持。这是MySQL面试系列的第三篇文章,并且在面试专栏中排第16。
|
||||
- [15个基本的MySQL面试问题][1]
|
||||
- [给中级人员的10个MySQL面试问题][1]
|
||||
|
||||

|
||||
|
||||
感谢你们这一路上对我们的支持.这篇文章主要针对MySQL的实用性,讲面试方面的问题.
|
||||
因为有大家的支持,我们才能做到现在,感谢你们这一路上对我们的支持.在这篇文章中,我们将主要针对MySQL的实用技巧,讲讲面试中相关的问题.
|
||||
|
||||
### 1. 如何使用SELECT语句找到你正在运行的服务器的版本并打印出当前数据库的名称? ###
|
||||
**Ans**:下面的语句的结果会显示服务器的版本和当前的数据库名称
|
||||
**答**:下面的语句的结果会显示服务器的版本和当前的数据库名称
|
||||
|
||||
mysql> SELECT VERSION(), DATABASE();
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
+-------------------------+------------+
|
||||
1 row in set (0.06 sec)
|
||||
|
||||
在Database一栏中显示**NULL**是因为我们当前没有选择任何数据库.因此,使用下面的语句先选择一个数据库,就能看到相应的结果.
|
||||
在Database一列中显示**NULL**是因为我们当前没有选择任何数据库。因此,使用下面的语句先选择一个数据库,就能看到相应的结果。
|
||||
|
||||
mysql> use Tecmint;
|
||||
|
||||
@ -40,9 +40,9 @@
|
||||
+-------------------------+------------+
|
||||
1 row in set (0.00 sec)
|
||||
|
||||
### 2. 使用非运算符(!)从表"Tecmint"中列出除了user等于"SAM"的所有记录
|
||||
### 2. 使用非运算符(!)从表"Tecmint"中列出除了"SAM"以外的所有user记录
|
||||
|
||||
**Ans**:使用下面的语句
|
||||
**答**:使用下面的语句
|
||||
|
||||
mysql> SELECT * FROM Tecmint WHERE user !=SAM;
|
||||
|
||||
@ -53,13 +53,13 @@
|
||||
| 2001-05-15 08:50:57 | TIM | venus | phil | venus | 978 |
|
||||
+---------------------+---------+---------+---------+---------+-------+
|
||||
|
||||
### 3. 是否能够使用非运算符(!)来实现'AND'运算
|
||||
### 3. ‘AND’运算符有可能带着非运算符(!)一起用吗?
|
||||
|
||||
**Ans**: 我们使用’=’号和OR运算符或者'!='和AND运算符,下面是'='和AND运算符的例子
|
||||
**答**:当我们使用‘=’号时用‘AND’连接,用‘!=’时用‘OR’连接,下面是‘=’和AND运算符一起用的例子
|
||||
|
||||
mysql> SELECT * FROM mail WHERE user = SAM AND root = phil
|
||||
|
||||
'!='和OR运算符的例子
|
||||
‘!=’和OR运算符的例子
|
||||
|
||||
mysql> SELECT * FROM mail WHERE user != SAM OR root != phil
|
||||
|
||||
@ -71,13 +71,13 @@
|
||||
|
||||
- = : 等于
|
||||
- != : 不等于
|
||||
- ! : 非运算符
|
||||
- ! : 代表“非”的运算符
|
||||
|
||||
AND和OR在MySQL中被看作加入运算符
|
||||
AND和OR在MySQL中被看作连接运算符
|
||||
|
||||
### 4. IFNULL()语句在MySQL中有什么作用? ###
|
||||
### 4. IFNULL()当打在MySQL中有什么作用? ###
|
||||
|
||||
**Ans**: **IFNULL**语句的使用使得MySQL中的查询更加精确。IFNULL()语句先测试它的的一个参数,若不为空就返回该参数的值,否则返回第二个参数的值
|
||||
**答**:使用**IFNULL()**方法能使MySQL中的查询更加精确。IFNULL()方法将会测试它的第一个参数,若不为NULL则返回该参数的值,否则返回第二个参数的值
|
||||
|
||||
mysql> SELECT name, IFNULL(id,'Unknown') AS 'id' FROM taxpayer;
|
||||
|
||||
@ -90,9 +90,9 @@ AND和OR在MySQL中被看作加入运算符
|
||||
| bill | 475-83 |
|
||||
+---------+---------+
|
||||
|
||||
### 5. 如果你只想知道从一个结果集的开头或者结尾开始的特定条数的行记录改如何实现?
|
||||
### 5. 如果你只想知道从一个结果集的开头或者结尾开始的特定几条记录,该如何实现?
|
||||
|
||||
**Ans**: 我们可以用**LIMIT**和**ORDER BY**从句。
|
||||
**答**:我们需要把**LIMIT**语句接在**ORDER BY**语句后使用,以达到上述效果。
|
||||
|
||||
#### 显示一行记录 ####
|
||||
|
||||
@ -128,20 +128,20 @@ AND和OR在MySQL中被看作加入运算符
|
||||
| 9 | Dick | 1952-08-20 | green | lutefisk,fadge | 0 |
|
||||
+----+------+------------+-------+----------------+------+
|
||||
|
||||
### 6. Oracle 和 MySQL该如何选择? ###
|
||||
### 6. Oracle 和 MySQL该如何选择,为什么? ###
|
||||
|
||||
**Ans**: 它们都有各自的优点和缺点。
|
||||
**答**:它们都有各自的优点和缺点。考虑到时间因素,我倾向于MySQL。
|
||||
|
||||
#### 选择MySQL而不选orcale的原因 ####
|
||||
|
||||
- 开源
|
||||
- 轻便快捷
|
||||
- 有命令行和图形界面
|
||||
- 能通过查询器进行数据库的管理
|
||||
- MySQL开源
|
||||
- MySQL轻便快捷
|
||||
- MySQL对命令行和图形界面的支持都很好
|
||||
- MySQL支持通过Query Browser进行管理
|
||||
|
||||
### 7. MySQL中如何得到当前日期? ###
|
||||
|
||||
**Ans**: 使用CURRENT_DATE()函数
|
||||
**答**:在MySQL中获取当前日期就是如下的SELECT语句这么简单。
|
||||
|
||||
mysql> SELECT CURRENT_DATE();
|
||||
|
||||
@ -153,23 +153,23 @@ AND和OR在MySQL中被看作加入运算符
|
||||
|
||||
### 8. MySQL中如何将表导出为XML文件? ###
|
||||
|
||||
**Ans**: 使用'-e'(export)参数来把MySQL表或整个数据库导出到XML文件。当处理大型表的时候或许我们需要手动导出,但是只是导出小文件的话可以直接使用想phpMyAdmin这样的工具。
|
||||
**答**:我们可以使用'-e'(export)选项来把MySQL表或整个数据库导出到XML文件。当处理大型表的时候我们可能需要手动导出,不过对于小表的话可以直接使用想phpMyAdmin等这样的工具。
|
||||
|
||||
mysql -u USER_NAME –xml -e 'SELECT * FROM table_name' > table_name.xml
|
||||
mysql -u USER_NAME -xml -e 'SELECT * FROM table_name' > table_name.xml
|
||||
|
||||
上面的例子中USER_NAME是数据库的用户名,table_name是待导出为xml文件的表名,table_name.xml是存放数据的xml文件
|
||||
|
||||
### 9. MySQL_pconnect是什么? 它和MySQL_connect有什么区别? ###
|
||||
|
||||
**Ans**: MySQL_pconnect()打开一个永久的数据库连接,这意味着数据库不是在每次页面加载的时候被打开,因此我们不能使用MySQL_close()来关闭一个永久的连接
|
||||
**答**:MySQL_pconnect()打开一个持久的数据库连接,这意味着数据库不是在每次页面加载的时候被打开一个新连接,因此我们不能使用MySQL_close()来关闭一个持久的连接
|
||||
|
||||
MySQL_pconnect和MySQL_connect有一定的差别
|
||||
MySQL_pconnect和MySQL_connect最简要的区别是:
|
||||
|
||||
和MySQL_pconnect不同,MySQL_connect在每次页面被加载的时候打开,并且可以使用MySQL_close()语句来关闭连接
|
||||
与MySQL_pconnect不同,MySQL_connect在每次页面被加载的时候打开连接,这个连接可以使用MySQL_close()语句来关闭
|
||||
|
||||
### 10. 如何查看一个名为'mysql'的数据库中'user'表中的所有索引? ###
|
||||
### 10. 当你需要查看一个名为'mysql'的数据库中'user'表中的所有索引时,你会如何做? ###
|
||||
|
||||
**Ans**: 可以使用下面的语句
|
||||
**答**:下面的命令将会显示出‘user’表中所有的索引
|
||||
|
||||
mysql> show index from user;
|
||||
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
|
||||
@ -182,17 +182,17 @@ MySQL_pconnect和MySQL_connect有一定的差别
|
||||
|
||||
### 11. 什么是CSV表? ###
|
||||
|
||||
**Ans**: CSV是逗号分隔值的缩写,也称为字符分隔值。CSV表中存放纯文本和表格数据。
|
||||
**答**:CSV是逗号分隔值(Comma-Separated Values)或也被称为字符分隔值(Character-Separated Values)的缩写。CSV表以纯文本和表格形式来存储数据。
|
||||
|
||||
每一条记录使用具体的分隔符隔开(如逗号,分号,...),CSV表广泛的用来存放易于导入和导出的电话联系人,能够用来存放任何数量的纯文本。
|
||||
每一条记录都使用特定的分隔符隔开(如逗号,分号,...),并且每条记录都有着顺序相同的列。CSV表最广泛地被用来存储用于导入和导出的电话联系人,并能够用来存储任何类型的纯文本数据。
|
||||
|
||||
以上就是这次要将的内容。我还会带来其他的有趣的文章,向往你们喜欢。连接到Tecmint继续关注我们,不要忘了在评论栏中留下你们的宝贵意见。
|
||||
以上就是这次要讲的全部内容。我还会带来其他你们应该会喜欢的有趣的文章。到那时敬请关注并访问Tecmint,不要忘了在下方的评论栏中留下你们的宝贵意见。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/mysql-advance-interview-questions/
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[ReiNoir](https://github.com/reinoir)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
74
published/201408/20140624 Super Pi Brothers.md
Normal file
74
published/201408/20140624 Super Pi Brothers.md
Normal file
@ -0,0 +1,74 @@
|
||||
超级树莓派兄弟
|
||||
================================================================================
|
||||
我已经不象以前那样玩那么多游戏了。虽然之前我当然花费了生命里的无数时间在任天堂,SNES,或是之后在我电脑上的第一人称射击游戏(只在Linux下,谢谢),如今,我更愿意把空余时间花在我累积起来的许多其他非游戏爱好上。
|
||||
|
||||
但是最近,我发现自己又抹掉了Wii手柄上的灰尘,这样就可以玩一玩我重新购买的NES和SNES游戏了。不过问题是,这些游戏需要用到一些特别的控制器,而且我已经有一个修改过的SNES控制器可以通过USB连接。这已经有足够的理由让我去寻找一个更合适的方案。
|
||||
|
||||
当然,我也可以简单地接上三个甚至四个手柄,然后在客厅里面堆满游戏。但是我已经习惯于把我的CD和DVD都提取成文件,然后在中心媒体服务器上挑选着听或是看。所以如果每次我想换游戏的时候,不用起身去翻游戏卡带,那就完美了。
|
||||
|
||||
当然,这意味着得使用模拟器。尽管之前我在一个改动过的Xbox上成功过,不过可惜它已经不在我手上了。然后我觉得一定有什么人已经在树莓派上实现过这种平台,结果是肯定的,在简单地搜索和一些命令之后,我在一个剩下的树莓派上搭起来一个完美的怀旧游戏中心。
|
||||
|
||||
树莓派项目的一个优点是,有大量的用户在使用相同的硬件。对我来说,这意味着我不用完整地参考别人的指引再根据自己的需求做出必要的改动,而只需要简单地完全按照别人的指导做就行了。在我这件事情上,我找到了RetroPie项目,它把你安装时需要用到的所有命令都包到了一个单一的大脚本中。在执行完后,你就完整地安装并配置好了RetroArch,它集成了所有的主流模拟器以及一个统一的配置方式,再加上一个在树莓派上开机启动的EmulationStation图形界面,通过它可以只用手柄就能方便地定位到你想玩的游戏。
|
||||
|
||||
### 安装RetroPie ###
|
||||
|
||||
在安装RetroPie之前,你可能需要确认一下你的Raspbian版本(树莓派默认的Linux发行版,这也是这个项目假设你在用的)是不是最新的,包括有没有新的固件。这只需要几个通用的`apt`命令。虽然,在这一步里你可以接个键盘到树莓派上,不过我觉得用`ssh`登录到树莓派上更方便。之后直接复制和粘贴下面的命令:
|
||||
|
||||
$ sudo apt-get update
|
||||
$ sudo apt-get -y upgrade
|
||||
|
||||
现在树莓派已经更新到最新了,再确认一下是否安装了git和dialog,然后可以通过git来下载RetroPie:
|
||||
|
||||
$ sudo apt-get -y install git dialog
|
||||
$ cd
|
||||
$ git clone --depth=0 git://github.com/petrockblog/RetroPie-Setup.git
|
||||
|
||||
执行完上边的命令后会创建一个RetroPie-Setup目录,里面有主要的安装脚本。之后你只需要进去这个目录,并运行安装脚本:
|
||||
|
||||
$ cd RetroPie-Setup
|
||||
$ chmod +x retropie_setup.sh
|
||||
$ sudo ./retropie_setup.sh
|
||||
|
||||
这个脚本会在终端里显示一个菜单(图1),在里面你可以选择二进制安装或是源码安装,配置RetroPie,或是更新RetroPie安装脚本和执行文件。之后选择二进制安装或是源码安装,任选一个。二进制安装会快一些,不过有些软件版本可能不是最新的。源码安装需要编译软件,所以用的时间会比较长,但是完成之后,所有的一切都是最新版的。我个人会选择二进制安装,因为我知道在碰到任何问题之后,随时都可以重新执行这个脚本再选择源码安装。
|
||||
|
||||

|
||||
|
||||
*图1. RetroPie安装菜单*
|
||||
|
||||
在vanilla Raspbian固件版本中,这一步会需要很长时间,因为有大量不同的包需要下载和安装。在安装完成之后,返回在RetroPie安装主界面中,在主菜单里选择SETUP,在之后的二级菜单里,你可以调整设置,例如是否开机启动EmulationStation(推荐打开)以及是否允许欢迎界面。在我这里,我两个都允许了,因为我希望这个设备是一个独立的模拟游戏机。不过你需要了解的是,即便你打开了EmulationStation开机自动启动,你仍然可以ssh登录到机器上然后执行原始的RetroPie安装配置脚本来改变这个设置。
|
||||
|
||||
### 添加ROM ###
|
||||
|
||||
你也可以在RetroPie设置界面添加ROM。如果你在菜单里选择了Samba方式,就可以在网络上找一个Samba共享目录,然后从里面拷贝ROM。如果通过U盘的方式,RetroPie会在插到树莓派的U盘上创建一个目录结构,分别对应不同的模拟器。在这之后,你就可以把U盘插到其他电脑上,然后把ROM拷贝到合适的目录里,当再插回树莓派的时候,它会自动同步文件。最后(我就是这么做的),你还可以使用scp或者rsync来拷贝ROM到~/RetroPie/roms/的合适目录下。举个例子,NES游戏需要拷贝到~/RetroPie/roms/nes/目录里。
|
||||
|
||||
当你完成了配置并退出了RetroPie的设置脚本后,应该会想重启并进入EmulationStation,但是在那之前,你应该重新配置树莓派的内存空间,设为192或者128,运行命令:
|
||||
|
||||
|
||||
$ sudo raspi-config
|
||||
|
||||
然后选择高级设置,调整内存空间设定。之后就可以安全地重启了。
|
||||
|
||||
### EmulationStation ###
|
||||
|
||||
重启完之后,你会很高兴地看到EmulationStation界面,之后它会提示你设定控制杆,游戏手柄,或键盘按键,这样就可以控制EmulationStation菜单了。不过注意一下,这并不会影响手柄在游戏里的按键定义,只是用于控制EmulationStation菜单的。在设定完手柄后,你应该可以按下向右或向左方向键来切换不同的模拟器菜单了。在我这里,我将会在游戏里用到手柄上的所有按钮,所以我特别将另一个键盘上的键映射到菜单功能,这样在我玩完一个游戏后,不用重启树莓派就可以退出来。
|
||||
|
||||
EmulationStation只会显示已经侦测到ROM的模拟器,所以,如果你还没有拷贝ROM的话,得先做这件事情,然后可能还得重启一下才会有效果。而且,默认情况下,你的手柄没有为任何游戏做配置,但是,如果你在EmulationStation里一直按向右键足够多次以后,会弹出输入设定界面,你可以在里面映射手柄按键。有一个亮点是,当你设定好按键后,它会相应地应用到其他模拟器中。
|
||||
|
||||
就是这些了。在这之后,你可以浏览你收藏的各种游戏,然后按下绑定到“确定”的那个按键开始游戏。一开始我还担心树莓派可能不够强劲来玩我的游戏,但是直到现在,我试过地所有游戏都可以完美地运行。
|
||||
|
||||
### 资源 ###
|
||||
|
||||
RetroPie项目主页:[http://blog.petrockblock.com/retropie][1]
|
||||
|
||||
RetroPie安装文档:[https://github.com/petrockblog/RetroPie-Setup][2]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/super-pi-brothers
|
||||
|
||||
译者:[zpl1025](https://github.com/zpl1025) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://blog.petrockblock.com/retropie
|
||||
[2]:https://github.com/petrockblog/RetroPie-Setup
|
@ -0,0 +1,499 @@
|
||||
十步搭建 OpenVPN,享受你的隐私生活
|
||||
================================================================================
|
||||

|
||||
|
||||
> 我们支持保护隐私,不为我们有自己的秘密需要保护,只是我们认为保护隐私应该成为一项基本人权。所以我们坚信无论谁在什么时候行使这项权利,都应该不受拘束的获取必须的工具和服务。OpenVPN就是这样一种服务并且有多种工具(客户端) 来让我们利用并享受这种服务。
|
||||
|
||||
通过与一个[OpenVPN][1]服务器建立连接,我们基本上在我们的设备和远端运行OpenVPN的主机之间建立了一个安全的通信通道。尽管在两个端点之间的通信可能被截获,但是信息是经过高强度加密的所以实际上它对于攻击者没什么用。OpenVPN除了扮演加密通信通道的调解人,我们也可以通过设置使服务器扮演互联网网关的角色。通过这种方式,我们可以**连接任何不安全的Wifi**,然后迅速的链接到远程的OpenVPN服务器,然后在不需要考虑偷窥的人或者无聊的管理员的情况下运行需要上网的程序。(注意:OpenVPN服务器旁还是需要信任的管理员的。)
|
||||
|
||||
这篇文章将一步一步的教会你如何在[Ubuntu Server 14.04 LTS][2]上安装OpenVPN。OpenVPN所在的主机可能是云上的一台VPS,一台在我们家里某台电脑上运行的虚拟机,或者是一个老到你都快忘了的设备。
|
||||
|
||||
### 第一步 准备系统 ###
|
||||
|
||||
我们需要Ubuntu Server主机的一个命令行终端,比如通过SSH从远程访问它。首先需要更新它的本地仓库数据:
|
||||
|
||||
sub0@delta:~$ sudo apt-get update
|
||||
|
||||
进行操作系统和已安装的包的升级,输入:
|
||||
|
||||
sub0@delta:~$ sudo apt-get dist-upgrade
|
||||
|
||||
如果升级了新内核,那就需要重启。当更新完成后,就该安装OpenVPN了:
|
||||
|
||||
sub0@delta:~$ sudo apt-get -y install openvpn easy-rsa dnsmasq
|
||||
|
||||
注意,我们用apt-get安装了三个包:
|
||||
|
||||
- openvpn提供了OpenVPN的核心
|
||||
- easy-rsa包含了一些有用的密钥管理脚本
|
||||
- dnsmasq是当我们的OpenVPN所在的主机将扮演客户端的路由器时会用到的域名服务器
|
||||
|
||||
### 第二步 生成证书和私钥 ###
|
||||
|
||||
这是安装OpenVPN中最重要和最关键的一步,目的是建立公钥基础设施(PKI)。包括如下内容:
|
||||
|
||||
- 为OpenVPN服务器创建一个证书(公钥)和一个私钥
|
||||
- 为每个OpenVPN客户端创建证书和私钥
|
||||
- 建立一个证书颁发机构(CA)并创建证书和私钥。这个私钥用来给OpenVPN服务器和客户端的证书签名
|
||||
|
||||
从最后一个做起,我们先建立一个目录:
|
||||
|
||||
sub0@delta:~$ sudo mkdir /etc/openvpn/easy-rsa
|
||||
|
||||
然后把easy-rsa的文件拷过去:
|
||||
|
||||
sub0@delta:~$ sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa
|
||||
|
||||
在我们创建CA的私钥之前,我们先编辑/etc/openvpn/easy-rsa/vars(我们喜欢用nano编辑器,不过这只是我们的喜好,你爱用什么用什么):
|
||||
|
||||
sub0@delta:~$ sudo nano /etc/openvpn/easy-rsa/vars
|
||||
|
||||
在文件的尾部,我们设置主证书和密钥的信息:
|
||||
|
||||
export KEY_COUNTRY="GR"
|
||||
export KEY_PROVINCE="Central Macedonia"
|
||||
export KEY_CITY="Thessaloniki"
|
||||
export KEY_ORG="Parabing Creations"
|
||||
export KEY_EMAIL="nobody@parabing.com"
|
||||
export KEY_CN="VPNsRUS"
|
||||
export KEY_NAME="VPNsRUS"
|
||||
export KEY_OU="Parabing"
|
||||
export KEY_ALTNAMES="VPNsRUS"
|
||||
|
||||
你可以根据自己的情况设置不同的值。特别注意最后KEY_ALTNAMES这一行,尽管这不是原本vars文件中有的但是我们还是把它加到文件的尾部,不然build-ca脚本会运行失败。
|
||||
|
||||
保存更改,我们得按[CTRL+O]然后按[Enter]。想退出nano,请按[CTRL+X]。现在,我们要获得root访问权限,继续生成主证书和私钥(LCTT译注:请注意命令行账户发生了改变):
|
||||
|
||||
sub0@delta:~$ sudo su
|
||||
root@delta:/home/sub0# cd /etc/openvpn/easy-rsa
|
||||
root@delta:/etc/openvpn/easy-rsa# source vars
|
||||
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
|
||||
root@delta:/etc/openvpn/easy-rsa# sh clean-all
|
||||
root@delta:/etc/openvpn/easy-rsa# sh build-ca
|
||||
Generating a 1024 bit RSA private key
|
||||
...++++++
|
||||
................++++++
|
||||
writing new private key to 'ca.key'
|
||||
-----
|
||||
You are about to be asked to enter information that will be incorporated
|
||||
into your certificate request.
|
||||
What you are about to enter is what is called a Distinguished Name or a DN.
|
||||
There are quite a few fields but you can leave some blank
|
||||
For some fields there will be a default value,
|
||||
If you enter '.', the field will be left blank.
|
||||
-----
|
||||
Country Name (2 letter code) [GR]:
|
||||
State or Province Name (full name) [Central Macedonia]:
|
||||
Locality Name (eg, city) [Thessaloniki]:
|
||||
Organization Name (eg, company) [Parabing Creations]:
|
||||
Organizational Unit Name (eg, section) [Parabing]:
|
||||
Common Name (eg, your name or your server's hostname) [VPNsRUS]:
|
||||
Name [VPNsRUS]:
|
||||
Email Address [nobody@parabing.com]:
|
||||
root@delta:/etc/openvpn/easy-rsa#
|
||||
|
||||
在我们的例子中,所有问题的答案都选择了默认的。在运行了build-ca脚本后,我们就获得了主证书文件(keys/ca.crt)和对应的私钥(keys/ca.key)。私钥必须不计代价的保密。
|
||||
|
||||
### 第三步 生成OpenVPN服务器的证书和私钥 ###
|
||||
|
||||
在我们为OpenVPN服务器生成证书和密钥之前,我们得给他起个名。我决定把它叫"delta",然后运行build-key-server脚本来获取证书和密钥:
|
||||
|
||||
root@delta:/etc/openvpn/easy-rsa# sh build-key-server delta
|
||||
Generating a 1024 bit RSA private key
|
||||
....++++++
|
||||
...++++++
|
||||
writing new private key to 'delta.key'
|
||||
-----
|
||||
You are about to be asked to enter information that will be incorporated
|
||||
into your certificate request.
|
||||
What you are about to enter is what is called a Distinguished Name or a DN.
|
||||
There are quite a few fields but you can leave some blank
|
||||
For some fields there will be a default value,
|
||||
If you enter '.', the field will be left blank.
|
||||
-----
|
||||
Country Name (2 letter code) [GR]:
|
||||
State or Province Name (full name) [Central Macedonia]:
|
||||
Locality Name (eg, city) [Thessaloniki]:
|
||||
Organization Name (eg, company) [Parabing Creations]:
|
||||
Organizational Unit Name (eg, section) [Parabing]:
|
||||
Common Name (eg, your name or your server's hostname) [delta]:
|
||||
Name [VPNsRUS]:deltaVPN
|
||||
Email Address [nobody@parabing.com]:
|
||||
|
||||
Please enter the following 'extra' attributes
|
||||
to be sent with your certificate request
|
||||
A challenge password []:
|
||||
An optional company name []:
|
||||
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
|
||||
Check that the request matches the signature
|
||||
Signature ok
|
||||
The Subject's Distinguished Name is as follows
|
||||
countryName :PRINTABLE:'GR'
|
||||
stateOrProvinceName :PRINTABLE:'Central Macedonia'
|
||||
localityName :PRINTABLE:'Thessaloniki'
|
||||
organizationName :PRINTABLE:'Parabing Creations'
|
||||
organizationalUnitName:PRINTABLE:'Parabing'
|
||||
commonName :PRINTABLE:'delta'
|
||||
name :PRINTABLE:'deltaVPN'
|
||||
emailAddress :IA5STRING:'nobody@parabing.com'
|
||||
Certificate is to be certified until Apr 7 08:06:02 2024 GMT (3650 days)
|
||||
Sign the certificate? [y/n]:y
|
||||
|
||||
1 out of 1 certificate requests certified, commit? [y/n]y
|
||||
Write out database with 1 new entries
|
||||
Data Base Updated
|
||||
root@delta:/etc/openvpn/easy-rsa#
|
||||
|
||||
当脚本成功运行完的时候,我们就得到了服务器的证书(keys/delta.crt)和私钥(keys/delta.key)。注意服务器证书被CA的私钥签名了。
|
||||
|
||||
### 第四步 生成Diffie-Hellman参数 ###
|
||||
|
||||
幸亏有了Diffie-Hellman参数,我们才能在不安全的通信通道里安全的交换密钥。为了生成它我们需要键入:
|
||||
|
||||
root@delta:/etc/openvpn/easy-rsa# sh build-dh
|
||||
Generating DH parameters, 2048 bit long safe prime, generator 2
|
||||
This is going to take a long time
|
||||
.......................+.....................................+..
|
||||
...........................+..+.....................+...........
|
||||
..............................................+.................
|
||||
.......................+........................................
|
||||
................................................+...............
|
||||
.......................................++*++*++*
|
||||
root@delta:/etc/openvpn/easy-rsa#
|
||||
|
||||
证书,私钥和包含Diffie-Hellman参数的文件已生成,它们都储存在/etc/openvpn/easy-rsa/keys,所以我们到现在为止已经有如下五个文件了:
|
||||
|
||||
1. **ca.crt** – 证书颁发机构(CA)的证书
|
||||
2. **ca.key** – CA的私钥
|
||||
3. **delta.crt** – OpenVPN服务器的证书
|
||||
4. **delta.key** – OpenVPN服务器的私钥
|
||||
5. **dh2048.pem** – Diffie-Hellman参数文件
|
||||
|
||||
你自己的OpenVPN服务器命名可能和我们的不同。现在我们需要拷贝除了ca.key的文件到/etc/openvpn:
|
||||
|
||||
root@delta:/etc/openvpn/easy-rsa# cd keys
|
||||
root@delta:/etc/openvpn/easy-rsa/keys# cp ca.crt delta.crt delta.key dh2048.pem /etc/openvpn
|
||||
root@delta:/etc/openvpn/easy-rsa/keys# cd ..
|
||||
root@delta:/etc/openvpn/easy-rsa#
|
||||
|
||||
### 第五步 为OpenVPN客户端生成证书和私钥 ###
|
||||
|
||||
试想我们的笔记本要连接OpenVPN服务器。为了实现这个很常见的情况,我们首先需要为客户端(比如:我们的笔记本)生成证书和私钥,在/etc/openvpn/easy-rsa有一个脚本帮我们完成这项工作:
|
||||
|
||||
root@delta:/etc/openvpn/easy-rsa# source vars
|
||||
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
|
||||
root@delta:/etc/openvpn/easy-rsa# ./build-key laptop
|
||||
Generating a 1024 bit RSA private key
|
||||
.......................................++++++
|
||||
...................................................................................................++++++
|
||||
writing new private key to 'laptop.key'
|
||||
-----
|
||||
You are about to be asked to enter information that will be incorporated
|
||||
into your certificate request.
|
||||
What you are about to enter is what is called a Distinguished Name or a DN.
|
||||
There are quite a few fields but you can leave some blank
|
||||
For some fields there will be a default value,
|
||||
If you enter '.', the field will be left blank.
|
||||
-----
|
||||
Country Name (2 letter code) [GR]:
|
||||
State or Province Name (full name) [Central Macedonia]:
|
||||
Locality Name (eg, city) [Thessaloniki]:
|
||||
Organization Name (eg, company) [Parabing Creations]:
|
||||
Organizational Unit Name (eg, section) [Parabing]:
|
||||
Common Name (eg, your name or your server's hostname) [laptop]:
|
||||
Name [VPNsRUS]:
|
||||
Email Address [nobody@parabing.com]:
|
||||
|
||||
Please enter the following 'extra' attributes
|
||||
to be sent with your certificate request
|
||||
A challenge password []:
|
||||
An optional company name []:
|
||||
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
|
||||
Check that the request matches the signature
|
||||
Signature ok
|
||||
The Subject's Distinguished Name is as follows
|
||||
countryName :PRINTABLE:'GR'
|
||||
stateOrProvinceName :PRINTABLE:'Central Macedonia'
|
||||
localityName :PRINTABLE:'Thessaloniki'
|
||||
organizationName :PRINTABLE:'Parabing Creations'
|
||||
organizationalUnitName:PRINTABLE:'Parabing'
|
||||
commonName :PRINTABLE:'laptop'
|
||||
name :PRINTABLE:'VPNsRUS'
|
||||
emailAddress :IA5STRING:'nobody@parabing.com'
|
||||
Certificate is to be certified until Apr 7 18:00:51 2024 GMT (3650 days)
|
||||
Sign the certificate? [y/n]:y
|
||||
|
||||
1 out of 1 certificate requests certified, commit? [y/n]y
|
||||
Write out database with 1 new entries
|
||||
Data Base Updated
|
||||
root@delta:/etc/openvpn/easy-rsa#
|
||||
|
||||
我们为密钥选取的名字是"laptop",当build-key脚本运行完之后,我们就得到了在keys/laptop.crt的证书和在keys/laptop.key的私钥。有了这两个文件和CA的证书,我们得把这三个文件拷贝到用户有(比如用户sub0)权访问的地方。比如我们可以在用户的home目录中新建一个目录并把三个文件拷贝过去:
|
||||
|
||||
root@delta:/etc/openvpn/easy-rsa# mkdir /home/sub0/ovpn-client
|
||||
root@delta:/etc/openvpn/easy-rsa# cd keys
|
||||
root@delta:/etc/openvpn/easy-rsa/keys# cp ca.crt laptop.crt laptop.key /home/sub0/ovpn-client
|
||||
root@delta:/etc/openvpn/easy-rsa/keys# chown -R sub0:sub0 /home/sub0/ovpn-client
|
||||
root@delta:/etc/openvpn/easy-rsa/keys# cd ..
|
||||
root@delta:/etc/openvpn/easy-rsa#
|
||||
|
||||
ovpn-client文件夹必须安全的拷贝到我们的笔记本电脑上。我们可以给多个客户端分发这三个文件。当然了,等我们需要一个不一样的证书-私钥对的时候只要再次运行build-key脚本即可。
|
||||
|
||||
### 第六步 -- OpenVPN服务器设置 ###
|
||||
|
||||
等会我们的OpenVPN服务器就要启动并运行了。但是开始的时候,我们需要更改一些设置。在/usr/share/doc/openvpn/examples/sample-config-files中有一个示例配置文件,它很适合我们的教程,这个文件叫server.conf.gz:
|
||||
|
||||
root@delta:/etc/openvpn/easy-rsa# cd /etc/openvpn
|
||||
root@delta:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .
|
||||
root@delta:/etc/openvpn# gunzip -d server.conf.gz
|
||||
root@delta:/etc/openvpn# mv server.conf delta.conf
|
||||
root@delta:/etc/openvpn#
|
||||
|
||||
如你所见,我们把server.conf.gz拷贝到/etc/openvpn,解压并重命名到delta.conf。你可以按个人喜好给OpenVPN服务器配置文件取名字,但是它必须有".conf"扩展名。我们现在用nano打开配置文件:
|
||||
|
||||
root@delta:/etc/openvpn# nano delta.conf
|
||||
|
||||
下面是我们应该做出的更改。
|
||||
|
||||
- 首先,定位到这一行
|
||||
|
||||
cert server.crt
|
||||
key server.key
|
||||
|
||||
确认OpenVPN服务器证书和私钥的位置和名称,在我们的例子中,这两行要改成
|
||||
|
||||
cert delta.crt
|
||||
key delta.key
|
||||
|
||||
- 然后定位到这一行
|
||||
|
||||
dh dh1024.pem
|
||||
|
||||
用"2048"代替"1024":
|
||||
|
||||
dh dh2048.pem
|
||||
|
||||
- 在配置文件的末尾,我们添加下面这两行:
|
||||
|
||||
push "redirect-gateway def1"
|
||||
push "dhcp-option DNS 10.8.0.1"
|
||||
|
||||
最后这两行指示客户端用OpenVPN作为默认的网关,并用10.8.0.1作为DNS服务器。注意10.8.0.1是OpenVPN启动时自动创建的隧道接口的IP。如果客户用别的域名解析服务,那么我们就得提防不安全的DNS服务器。为了避免这种泄露,我们建议所有OpenVPN客户端使用10.8.0.1作为DNS服务器。
|
||||
|
||||
我们以这种方式来开始运行OpenVPN服务器:
|
||||
|
||||
root@delta:/etc/openvpn# service openvpn start
|
||||
|
||||
默认的,OpenVPN服务器监听1194/UDP端口。一种查看的方法是使用netstat工具:
|
||||
|
||||
root@delta:/etc/openvpn# netstat -anup
|
||||
Active Internet connections (servers and established)
|
||||
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
|
||||
udp 0 0 0.0.0.0:54149 0.0.0.0:* 555/dhclient
|
||||
udp 0 0 0.0.0.0:1194 0.0.0.0:* 3024/openvpn
|
||||
udp 0 0 0.0.0.0:53 0.0.0.0:* 2756/dnsmasq
|
||||
udp 0 0 0.0.0.0:68 0.0.0.0:* 555/dhclient
|
||||
udp6 0 0 :::60622 :::* 555/dhclient
|
||||
udp6 0 0 :::53 :::* 2756/dnsmasq
|
||||
|
||||
看起来一切运行的不错,但是我们还没设置DNS服务器呢。
|
||||
|
||||
### 第七步 为OpenVPN客户端搭建DNS ###
|
||||
|
||||
这就是为什么我们要安装dnsmasq的原因,打开它的配置文件。
|
||||
|
||||
root@delta:/etc/openvpn# nano /etc/dnsmasq.conf
|
||||
|
||||
定位到这行:
|
||||
|
||||
#listen-address=
|
||||
|
||||
把它换成下面这样:
|
||||
|
||||
listen-address=127.0.0.1, 10.8.0.1
|
||||
|
||||
然后定位到这行:
|
||||
|
||||
#bind-interfaces
|
||||
|
||||
把"#"删了:
|
||||
|
||||
bind-interfaces
|
||||
|
||||
为了让dnsmasq应用这些更改,我们重启它:
|
||||
|
||||
root@delta:/etc/openvpn# service dnsmasq restart
|
||||
* Restarting DNS forwarder and DHCP server dnsmasq [ OK ]
|
||||
root@delta:/etc/openvpn#
|
||||
|
||||
现在,dnamasq在本地回环(lo)和隧道(tun0)接口监听DNS请求。netstat的输出看起来是这个样子的:
|
||||
|
||||
root@delta:/etc/openvpn# netstat -anup
|
||||
Active Internet connections (servers and established)
|
||||
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
|
||||
udp 0 0 0.0.0.0:57219 0.0.0.0:* 638/dhclient
|
||||
udp 0 0 0.0.0.0:1194 0.0.0.0:* 911/openvpn
|
||||
udp 0 0 127.0.0.1:53 0.0.0.0:* 1385/dnsmasq
|
||||
udp 0 0 10.8.0.1:53 0.0.0.0:* 1385/dnsmasq
|
||||
udp 0 0 0.0.0.0:68 0.0.0.0:* 638/dhclient
|
||||
udp6 0 0 :::39148 :::* 638/dhclient
|
||||
|
||||
### 第八步 路由功能 ###
|
||||
|
||||
我们希望在一些机器或虚拟机上运行的OpneVPN有路由的功能,这意味着要开启IP转发。为了打开它,我们用root账户键入:
|
||||
|
||||
root@delta:/etc/openvpn# echo "1" > /proc/sys/net/ipv4/ip_forward
|
||||
|
||||
为了让这个设置重启也好用,我们编辑 /etc/sysctl.conf:
|
||||
|
||||
root@delta:/etc/openvpn# nano /etc/sysctl.conf
|
||||
|
||||
编辑这行:
|
||||
|
||||
#net.ipv4.ip_forward=1
|
||||
|
||||
把"#"删了:
|
||||
|
||||
net.ipv4.ip_forward=1
|
||||
|
||||
还需要激活一些iptables相关的规则:
|
||||
|
||||
root@delta:/etc/openvpn# iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
|
||||
root@delta:/etc/openvpn# iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
|
||||
root@delta:/etc/openvpn# iptables -A FORWARD -j REJECT
|
||||
root@delta:/etc/openvpn# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
|
||||
root@delta:/etc/openvpn#
|
||||
|
||||
当然了,我们希望每次Ubuntu启动的时候,这些规则都好用。所以我们得把它们加到/etc/rc.local里:
|
||||
|
||||
#!/bin/sh -e
|
||||
#
|
||||
# rc.local
|
||||
#
|
||||
# This script is executed at the end of each multiuser runlevel.
|
||||
# Make sure that the script will "exit 0" on success or any other
|
||||
# value on error.
|
||||
#
|
||||
# In order to enable or disable this script just change the execution
|
||||
# bits.
|
||||
#
|
||||
# By default this script does nothing.
|
||||
|
||||
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
|
||||
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
|
||||
iptables -A FORWARD -j REJECT
|
||||
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
|
||||
|
||||
service dnsmasq restart
|
||||
|
||||
exit 0
|
||||
|
||||
请注意倒数第二行:
|
||||
|
||||
service dnsmasq restart
|
||||
|
||||
> 这非常重要:在系统启动时,dnsmasq会尝试在OpenVPN之前启动。但是OpenVPN启动之前是没有隧道(tun0)接口的,所以dnsmasq自然就挂了。过了一阵,当/etc/rc.local读到隧道(tun0)接口出现时,它会在这时重启dnsmasq然后就一切如你所愿了。
|
||||
|
||||
### 第九步 客户端设置 ###
|
||||
|
||||
在第五步,我们在用户的home目录里我们建立了ovpn-client文件夹(在我们的例子里是/home/sub0)。在哪里有CA的证书和客户端证书和私钥。现在只缺客户端配置文件了,在/usr/share/doc/openvpn/examples/sample-config-files有一个示例配置文件:
|
||||
|
||||
root@delta:/etc/openvpn# exit
|
||||
exit
|
||||
sub0@delta:~$ cd ~/ovpn-client
|
||||
sub0@delta:~/ovpn-client$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf .
|
||||
sub0@delta:~/ovpn-client$
|
||||
|
||||
我们需要编辑client.conf,定位到这一行:
|
||||
|
||||
remote my-server-1 1194
|
||||
|
||||
"my-server-1"是一个占位符,现在我们要把它换成我们自己服务器的公网域名或IP。如果我们已经给服务器分配域名了,那只要把它填到my-server-1的位置。如果没有域名,那么得获取公网IP。如何获取呢?一种方式是键入下列命令:
|
||||
|
||||
sub0@delta:~/ovpn-client$ curl ipecho.net/plain ; echo
|
||||
|
||||
(如果不是一个数字的IP地址, 或是发生错误,那就等会再试。)所以我们现在知道我们的服务器公网IP了,但是它是动态的还是静态的呢?当我们把服务器架设在家或者办公室的时候,极有可能就是动态IP。如果是动态IP的话,可以用免费的动态域名服务(DDNS),比如[No-IP](http://www.noip.com)的服务。如果使用No-IP,假设我们选择了免费的域名dnsalias.net,那么这一行应该像这样填写:
|
||||
|
||||
remote ovpn.dnsalias.net 1194
|
||||
|
||||
"ovpn"是我们给服务器起的主机名。如果我们的服务器在云上,那么它可能有一个静态IP。如果有静态IP的话,那么这一行应该是这样的:
|
||||
|
||||
remote 1.2.3.4 1194
|
||||
|
||||
还要修改两行:
|
||||
|
||||
cert client.crt
|
||||
key client.key
|
||||
|
||||
在我们的例子里,客户端的证书和密钥的名字分别是laptop.crt和laptop.key所以我们的client.conf要包含下面这两行:
|
||||
|
||||
cert laptop.crt
|
||||
key laptop.key
|
||||
|
||||
在确认保存client.conf的修改之后,我们需要安全的把整个ovpn-client文件夹传输到客户端。一种方式是使用scp命令(安全拷贝或在SSH上拷贝)。另一种方式由优秀而免费的软件FileZilla提供,使用在SSH上运行的FTP(SFTP)。
|
||||
|
||||
### 第十步 连接并测试 ###
|
||||
|
||||

|
||||
|
||||
|
||||
所以我们到底怎么样才能链接到远程的OpenVPN服务器的呢?它完全取决于我们手中现有的设备类型,当然也取决于所运行的操作系统。我们将在四种不同类别的操作系统上运行,Linux, Windows, OS X和iOS/Android。注意,无论在什么设备和系统上,我们都得在OpenVPN服务器的本地网络外才能连接成功。此外,如果在服务器前有防火墙,我们需要增加一条这样的规则:
|
||||
|
||||
*把所有从1194/UDP端口收到的包转发到服务器公网接口的1194/UDP端口。*
|
||||
|
||||
这是一个简单的防火墙规则。事不宜迟,让我们与我们难以置信的OpenVPN服务器建立第一个连接吧。
|
||||
|
||||
**Linux**: 我们只需安装openvpn包。一种连接远程OpenVPN服务器的方式是新建一个终端,切换到ovpn-client文件夹并以root身份或使用sudo来键入下列命令:
|
||||
|
||||
/usr/sbin/openvpn --config client.conf
|
||||
|
||||
任何时候如果我们需要终止OpenVPN,按[CTRL+C]就行了。
|
||||
|
||||
**Windows**: 有一个免费的OpenVPN客户端软件叫做[OpenVPN Desktop Client][3]。 配置文件client.conf需要重命名成client.ovpn,这就是我们需要提供给OpenVPN Desktop Client的文件。程序会读取client.ovpn并给OpenVPN服务器生成一个新的连接配置。
|
||||
|
||||

|
||||
|
||||
**OS X**: [tunnelblick][4]是一款可以连接OpenVPN的免费开源OS X软件。[Viscosity][5]也可以但它是商业软件,不过我们喜欢。Viscosity会读取client.conf并给OpenVPN服务器生成一个新的连接配置。
|
||||
|
||||
**iOS/Android**: OpenVPN connect是绝佳的选择。它是免费的且可以从[App Store][6]和[Google Play store][7]获得
|
||||
|
||||
不管是什么平台,有时我们想检验我们是否真的使用OpenVPN连接了。一种检验方法是完成下面这简单的4步:
|
||||
|
||||
在连接到OpenVPN服务器前我们需要…
|
||||
|
||||
- 打开[whatip.com][8]记录我们的公网IP
|
||||
- 打开[dnsleaktest.com][10],运行标准测试(standard test),记录我们的域名解析服务器
|
||||
|
||||

|
||||
|
||||
在连接到OpenVPN服务器后重复这两部。如果我们获取到两个不同的公网IP,这意味着我们的网络出口已在远端OpenVPN服务器那。此外,如果获取了两个不同的域名解析服务器,那么就不存在DNS泄露的问题了。
|
||||
|
||||
### 感言 ###
|
||||
|
||||
我用了三个不同的OpenVPN服务器,都是定制的。 一个运行在希腊Thessaloniki的家庭办公室的pfSense路由。当我不在办公室时,我用这个服务器安全的连接到局域网。剩下的两个服务器在两个不同的VPS上,一个在冰岛雷克雅未克,另一个在美国纽泽西州。当我在外面且需要任意用一个WiFi热点的时候,我不必考虑安全问题:我只需简单的连接到雷克雅未克的服务器然后正常上网。有时我想看看那些限制用户地理位置在美国的服务。在这种不太常见的情况下,新泽西的服务器就派上用场了,当我连接时,我就获得了美国的一个公网IP,这样就可以访问有地理位置限制的服务了。值得注意的是,一些服务会把一些知名的VPN公司的IP列入黑名单。这是在你选的VPS提供商建立自己的OpenVPN*十分重要*的一个优点:这不大可能被列入黑名单。
|
||||
|
||||
无论你的物理位置在哪, OpenVPN确保客户端和服务器之间的数据流是高度加密的。没有OpenVPN的数据则是另一种情况。 取决于不同的应用层协议,它可能仍然是加密的,但它也可能是未加密的。所以除非你对OpenVPN服务器和它的本地网络有绝对的控制权,你不能完全相信另一端的管理员。这种精神是显而易见的:如果你真的在乎你自己的隐私,那么你需要注意你的行为可能在破坏它。
|
||||
|
||||
一个例子是我们希望点对点传输。我们有一个在云上配置好的OpenVPN服务器。当需要任意用一个WiFi热点的时候,你没有丝毫的担心,因为你连在OpenVPN服务器上。然后你打开你最喜欢的电子邮件客户端从一个依然使用SMTP的老服务器收信。你猜会发生什么?你的用户名和密码以未加密的纯文本格式离开OpenVPN服务器。与此同时一个在你OpenVPN服务器附近的鬼鬼祟祟的管理员很容易就嗅探出你的证书并记录到他们越来越长的名叫"random happy people.txt"的列表。
|
||||
|
||||
所以你该做什么?很简单。你应该继续使用OpenVPN服务器,但不要使用应用了旧的或不安全的协议的应用程序。
|
||||
|
||||
享受你的OpenVPN服务器吧!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://parabing.com/2014/06/openvpn-on-ubuntu/
|
||||
|
||||
译者:[2q1w2007](https://github.com/2q1w2007) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://zh.wikipedia.org/wiki/Openvpn
|
||||
[2]:http://www.ubuntu.com/server
|
||||
[3]:http://swupdate.openvpn.net/downloads/openvpn-client.msi
|
||||
[4]:https://code.google.com/p/tunnelblick
|
||||
[5]:https://www.sparklabs.com/viscosity
|
||||
[6]:https://itunes.apple.com/us/app/openvpn-connect/id590379981?mt=8
|
||||
[7]:https://play.google.com/store/apps/details?id=net.openvpn.openvpn
|
||||
[8]:http://www.whatip.com/
|
||||
[9]:https://dnsleaktest.com/
|
@ -0,0 +1,50 @@
|
||||
CoreOS Linux终结升级周期
|
||||
================================================================================
|
||||
> CoreOS发布了他的Linux发行版的商用支持版,并且宣称将废除手动更新。
|
||||
|
||||
国际数据集团新闻社消息——CoreOS发布了商用Linux发行版,以期能简化系统管理员的生活。这个Linux发行版可持续进行自动更新,不需要进行重大升级。
|
||||
|
||||
CoreOS提供其同名的Linux发行版做为商业服务,开始为一个月100美元。
|
||||
|
||||
“商家现在可以开始考虑将CoreOS作为他们系统团队的延伸,对于企业Linux客户,这将是他们会需要的最后一次迁移。”CoreOS的创始人和CEO在一份声明中这样说。
|
||||
|
||||
商业Linux订阅并不是什么新鲜事:[Red Hat][2]和[Suse][3]都在为他们各自的发行版提供商业订阅。
|
||||
|
||||
因为这些以Linux为基础的公司使用的应用程序和库都是开源和免费提供的,所以订阅的费用不包括软件本身,而收费来自更新、漏洞修复、集成以及发生问题时的技术支持。
|
||||
|
||||
CoreOS公司声称,CoreOS将会和这些发行版不同,它将不会有重大更新,而在那些发行版中这些更新通常需要一次更新所有的包。在CoreOS中,它的更新和新特征将会在就绪后自动安装入操作系统中。
|
||||
|
||||
服务中提供了一个叫做CoreUpdate的仪表盘,如果管理员不想自动更新所有包,它可用于标明选取哪些软件包获取更新。
|
||||
|
||||
CoreUpdate可以同时管理多个机器,而且提供了回滚功能——在更新引起问题可使用。
|
||||
|
||||
CoreOS于去年十二月发布,它的设计旨在[关注][4]开源操作系统内核的新兴使用——用于大量基于云计算的虚拟服务器。
|
||||
|
||||
CoreOS的设计使其平均消耗要少于其他Linux发行版通常消耗的一半。系统中所有的程序运行在Docker虚拟化容器中,所以它们几乎可以在瞬间就开始运行。
|
||||
|
||||
[由于CoreOS分为两部分的新用法][5]使其更新更为容易。一部分放置当前版本的系统,而另一部分系统来进行升级,平滑地进行升级包或者整个系统。
|
||||
|
||||
CoreOS服务可以运行在本地,或者在Amazon,Google和Rackspace云服务上。
|
||||
|
||||
CoreOS周一还宣布他们收到了来自Kleiner Perkins Caulfield and Byers风险投资公司的800万美元的支持。他们此前还收到了红杉资本和斐然资本的投资。
|
||||
|
||||
----------
|
||||
|
||||
作者Joab Jackson负责IDG新闻服务机构中企业软件和通用技术的新闻。Twitter上关注Joab[@Joab_Jackson][6]。Joab的电子邮箱地址是[Joab_Jackson@idg.com][7]
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.computerworld.com/s/article/9249460/CoreOS_Linux_ending_the_upgrade_cycle?taxonomyId=122
|
||||
|
||||
译者:[linuhap](https://github.com/linuhap) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:https://coreos.com/products/managed-linux/plans/
|
||||
[2]:http://www.redhat.com/about/subscription/
|
||||
[3]:https://www.suse.com/support/programs/subscriptions/
|
||||
[4]:http://www.networkworld.com/article/2177120/cloud-computing/coreos-linux-distro-lands-on-the-google-cloud-platform.html
|
||||
[5]:https://coreos.com/using-coreos/updates/
|
||||
[6]:http://twitter.com/Joab_Jackson
|
||||
[7]:Joab_Jackson@idg.com
|
@ -0,0 +1,109 @@
|
||||
如何安装树莓派摄像头模块
|
||||
==============================================================================
|
||||
[树莓派摄像头模块(Pi Cam)][1]发售于2013年5月。其第一个发布版本配备了500万像素的传感器,通过排线链接树莓派上的CSI接口。而Pi Cam的第二个发布版本——也被叫做[Pi NoIR][2]中,配备了相同的传感器,但没有红外线过滤装置。因此第二版的摄像头模块就像安全监控摄像机一样,可以观测到近红外线的波长(700 - 1000 nm),不过当然同时也就牺牲了一定的显色性。
|
||||
|
||||
本文将会展示**如何在[树莓派][3]上安装摄像头模块**。我们将使用第一版摄像头模块来演示。在安装完摄像头模块之后,你将会使用三个应用程序来访问这个模块:raspistill, raspiyuv 和raspivid。其中前两个应用用来捕捉图像,第三个应用来捕捉视频。raspistill 工具生成标准的图片文件,例如 .jpg 图像,而 raspiyuv 可以通过摄像头生成未处理的 raw 图像文件。
|
||||
|
||||
### 安装树莓派摄像头模块 ###
|
||||
|
||||
按照以下步骤来将树莓派摄像头模块连接搭配树莓派:
|
||||
|
||||
1. 找到 CSI 接口(CSI接口在以太网接口旁边),掀起深色胶带。
|
||||
|
||||
2. 拉起 CSI 接口挡板。
|
||||
|
||||
3. 拿起你的摄像头模块,将贴在镜头上的塑料保护膜撕掉。确保黄色部分的PCB(有字的一面)是安装完美的(可以轻轻按一下黄色的部分来保证安装完美)。
|
||||
|
||||
4. 将排线插入CSI接口。记住,有蓝色胶带的一面应该面向以太网接口方向。同样,这时也确认一下排线安装好了之后,将挡板拉下。
|
||||
|
||||

|
||||
|
||||
好了,现在你的 Pi Cam 已经准备就绪,可以拍摄照片或视频了。
|
||||
|
||||
### 在树莓派上启用摄像头模块 ###
|
||||
|
||||
在安装完摄像头模块之后,首先要确认你已经升级了树莓派系统并应用了最新的固件。可以输入以下命令来操作:
|
||||
|
||||
$ sudo apt-get update
|
||||
$ sudo apt-get upgrade
|
||||
|
||||
运行树莓派配置工具来激活摄像头模块:
|
||||
|
||||
$ sudo raspi-config
|
||||
|
||||
移动光标至菜单中的 "Enable Camera(启用摄像头)",将其设为Enable(启用状态)。完成之后重启树莓派。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
安装完摄像头模块后的完成照:
|
||||
|
||||

|
||||
|
||||
### 通过摄像头模块拍照 ###
|
||||
|
||||
在重启完树莓派后,我们就可以使用Pi Cam了。要用它来拍摄照片的话,可以从命令行运行raspistill:
|
||||
|
||||
$ raspistill -o keychain.jpg -t 2000
|
||||
|
||||
这句命令将在 2000ms 后拍摄一张照片,然后保存为 keychain.jpg。下面就是一张由 Pi Cam 拍摄的我的小熊公仔钥匙链。
|
||||
|
||||

|
||||
|
||||
raspiyuv 工具用法差不多,只不过拍摄得到的是一张未处理过的raw图像。
|
||||
|
||||
### 通过摄像头模块拍视频 ###
|
||||
|
||||
想要用摄像头模块拍一段视频的话,可以从命令行运行 raspivid 工具。下面这句命令会按照默认配置(长度5秒,分辨率1920x1080,比特率 17Mbps)拍摄一段视频。
|
||||
|
||||
$ raspivid -o mykeychain.h264
|
||||
|
||||
如果你想改变拍摄时长,只要通过 "-t" 选项来设置你想要的长度就行了(单位是毫秒)。
|
||||
|
||||
$ raspivid -o mykeychain.h264 -t 10000
|
||||
|
||||
使用 "-w" 和 "-h" 选项将分辨率降为 1280x720...
|
||||
|
||||
$ raspivid -o mykeychain.h264 -t 10000 -w 1280 -h 720
|
||||
|
||||
raspivid 的输出是一段未压缩的 H.264 视频流,而且这段视频不含声音。为了能被通常的视频播放器所播放,这个 raw 的 H.264 视频还需要转换。可以使用 gpac 包中所带有的 MP4Box 应用。
|
||||
|
||||
在 Raspbian 上安装 gpac,输入命令:
|
||||
|
||||
$ sudo apt-get install -y gpac
|
||||
|
||||
然后将这段 raw 的 H.264 格式的视频流转换为每秒30帧的 .mp4 格式视频:
|
||||
|
||||
$ MP4Box -fps 30 -add keychain.h264 keychain.mp4
|
||||
|
||||
视频长度为10秒,使用默认分辨率以及比特率。下面是一段通过 Pi Camera 拍摄的一段实例视频。
|
||||
|
||||
注:youtube视频地址
|
||||
|
||||
<iframe width="615" height="376" frameborder="0" src="http://www.youtube.com/embed/3uyR2AVVwAU?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1&wmode=transparent" type="text/html" class="youtube-player"></iframe>
|
||||
|
||||
如果想要获取 raspistill, raspiyuv 和 raspivid 的完整命令行选项,不加任何选项直接运行以上命令即可。
|
||||
|
||||
|
||||
----------------
|
||||
|
||||
### [Kristophorus Hadiono][a] ###
|
||||
|
||||
Kristophorus Hadiono是一名 Linux 爱好者,并且是印度尼西亚一所民办高等学府的教师。他在日常生活中使用 Linux,也在给学生们教学的时候使用。他现在仍靠着政府的奖学金,在泰国曼谷的一所民办大学继续着学业。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/2014/07/install-raspberry-pi-camera-board.html
|
||||
|
||||
译者:[ThomazL](https://github.com/ThomazL) 校对:[reinoir](https://github.com/reinoir)
|
||||
|
||||
本文由 [lctt](https://github.com/lctt/translateproject) 原创翻译,[linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://xmodulo.com/go/picam
|
||||
[2]:http://xmodulo.com/go/pinoir
|
||||
[3]:http://xmodulo.com/go/raspberrypi
|
||||
[a]:http://hadiono.org/blog
|
||||
|
@ -0,0 +1,75 @@
|
||||
在基于RedHat或Debian的系统上安装 Wine 1.7
|
||||
================================================================================
|
||||
Wine,Linux上最流行也是最有力的软件, 可以顺利地在Linux平台上运行Windows程序和游戏。
|
||||
|
||||

|
||||
|
||||
这篇文章教你怎么在像CentOS, Fedora, Ubuntu, Linux Mint一样基于**Red Hat**和**Debian**的系统上安装最新的**Wine 1.7**。
|
||||
|
||||
### 在Linux安装 Wine 1.7 ###
|
||||
|
||||
不幸的, 在基于**Red Hat**的系统上没有官方的 Wine 仓库,所以唯一的安装方式是从源码编译。你需要安装一些依赖的包比如gcc, flex, bison, libX11-devel freetype-devel 和 Development Tools,这些包用来从源码编译Wine。我们可以用**yum**命令安装他们。
|
||||
|
||||
#### 在 RedHat, Fedora 和 CentOS 上 ####
|
||||
|
||||
# yum -y groupinstall 'Development Tools'
|
||||
# yum -y install flex bison libX11-devel freetype-devel
|
||||
|
||||
接下来,下载最新的开发版本(如**1.7.21**)并用下面的命令解压。
|
||||
|
||||
$ cd /tmp
|
||||
$ wget http://citylan.dl.sourceforge.net/project/wine/Source/wine-1.7.21.tar.bz2
|
||||
$ tar -xvf wine-1.7.21.tar.bz2 -C /tmp/
|
||||
|
||||
现在,要以普通用户身份编译并搭建Wine的安装程序。(**注意**: 根据机器性能和网络速度的不同,安装过程需要 **15-20** 分钟,安装过程中会要求输入 **root** 密码。)
|
||||
|
||||
**32位系统上**
|
||||
|
||||
$ cd wine-1.7.21/
|
||||
$ ./tools/wineinstall
|
||||
|
||||
**64位系统上**
|
||||
|
||||
$ cd wine-1.7.21/
|
||||
$ ./configure --enable-win64
|
||||
$ make
|
||||
# make install
|
||||
|
||||
#### 在Ubuntu, Debian 和 Linux Mint 上 ####
|
||||
|
||||
在基于**Ubuntu** 的系统上, 你可以用官方的 **PPA**来轻松安装最新的Wine。打开一个新终端用sudo运行如下命令。
|
||||
|
||||
$ sudo add-apt-repository ppa:ubuntu-wine/ppa
|
||||
$ sudo apt-get update
|
||||
$ sudo apt-get install wine 1.7 winetricks
|
||||
|
||||
一旦装完了,你可以以如下方式运行基于Windows的软件和游戏。
|
||||
|
||||
$ wine notepad
|
||||
$ wine notepad.exe
|
||||
$ wine c:\\windows\\notepad.exe
|
||||
|
||||
**注意**: 请记住,如果是开发版本不要用在生产环境。 建议只用在测试用途
|
||||
|
||||
如果你想安装最近的稳定版Wine, 请看下面的文章, 在文章里介绍了在几乎所以Linux系统中安装Wine的方法
|
||||
|
||||
- [Install Wine 1.6.2 (Stable) in RHEL, CentOS and Fedora][2]
|
||||
- [Install Wine 1.6.2 (Stable) in Debian, Ubuntu and Mint][3]
|
||||
|
||||
### 参考链接 ###
|
||||
|
||||
- [WineHQ Homepage][4]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/install-wine-in-linux/
|
||||
|
||||
译者:[2q1w2007](https://github.com/2q1w2007) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.winehq.org/announce/1.7.21
|
||||
[2]:http://www.tecmint.com/install-wine-in-rhel-centos-and-fedora/
|
||||
[3]:http://www.tecmint.com/install-wine-on-ubuntu-and-linux-mint/
|
||||
[4]:http://www.winehq.org/
|
||||
[5]:http://www.tecmint.com/
|
@ -0,0 +1,168 @@
|
||||
如何为Linux系统中的SSH添加双重认证
|
||||
================================================================================
|
||||
近来很多知名企业都出现了密码泄露,业内对多重认证的呼声也越来越高。在这种多重认证的系统中,用户需要通过两种不同的认证程序:提供他们知道的信息(如 用户名/密码),再借助其他工具提供用户所不知道的信息(如 用手机生成的一次性密码)。这种组合方式常叫做双因子认证或者两阶段验证。
|
||||
|
||||
为了鼓励广泛采用双因子认证的方式,Google公司发布了[Google Authenticator][1],一款开源的,可基于开放规则(如 HMAP/基于时间)生成一次性密码的软件。这是一款跨平台软件,可运行在Linux, [Android][2], [iOS][3]。Google公司同时也支持插件式鉴别模块PAM(pluggable authentication module),使其能和其他也适用PAM进行验证的工具(如OpenSSH)协同工作。
|
||||
|
||||
在本教程中,我们将叙述集成OpenSSH和Google提供的认证器实现**如何为SSH服务设置双因子认证**。我将使用一款[Android][4]设备来生成一次性密码,本教程中需要两样武器:(1)一台运行着OpenSSH服务的Linux终端,(2)一台安卓设备。
|
||||
|
||||
### 在Linux系统中安装Google Authenticator ###
|
||||
|
||||
第一步需要在运行着OpenSSH服务的Linux主机上安装Google认证器。按照如下步骤安装Google认证器及其PAM模块。
|
||||
|
||||
#### 用安装包安装 Google Authenticator ####
|
||||
|
||||
如果你不想自己构建 Google Authenticator,在几个 Linux 发行版上有已经编译好的安装包。安装包里面包含 Google Authenticator 二进制程序和 PAM 模块。
|
||||
|
||||
在 Ubuntu 上安装 Google Authenticator:
|
||||
|
||||
$ sudo apt-get install libpam-google-authenticator
|
||||
|
||||
在 Fedora 上安装 Google Authenticator:
|
||||
|
||||
$ sudo yum install google-authenticator
|
||||
|
||||
在 CentOS 上安装 Google Authenticator ,需要首先启用 EPEL 软件库,然后运行如下命令:
|
||||
|
||||
$ sudo yum install google-authenticator
|
||||
|
||||
如果不想使用已经编译好的安装包,或者你的 Linux 发行版不在此列,可以自行编译:
|
||||
|
||||
#### 在 Linux 上 Google Authenticator ####
|
||||
|
||||
首先,安装构建 Google Authenticator 所需的软件包。
|
||||
|
||||
在 Debian、 Ubuntu 或 Linux Mint 上:
|
||||
|
||||
$ sudo apt-get install wget make gcc libpam0g-dev
|
||||
|
||||
在 CentOS、 Fedora 或 RHEL上:
|
||||
|
||||
$ sudo yum install wget make gcc pam-devel
|
||||
|
||||
然后下载 Google Authenticator 的源代码,并按如下命令编译。
|
||||
|
||||
$ wget https://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2
|
||||
$ tar xvfvj libpam-google-authenticator-1.0-source.tar.bz2
|
||||
$ cd libpam-google-authenticator-1.0
|
||||
$ make
|
||||
|
||||
如果构建成功,你会在目录中看到 pam_google_authenticator.so 和 google-authenticator 两个文件。
|
||||
|
||||
最后,将 Google Authenticator 安装到合适位置
|
||||
|
||||
$ sudo make install
|
||||
|
||||
|
||||
#### 排错 ####
|
||||
|
||||
当编译 Google Authenticator 时出现如下错误:
|
||||
|
||||
fatal error: security/pam_appl.h: No such file or directory
|
||||
|
||||
要修复这个问题,请安装如下依赖包。
|
||||
|
||||
在 Debian、 Ubuntu 或 Linux Mint 上:
|
||||
|
||||
$ sudo apt-get install libpam0g-dev
|
||||
|
||||
在 CentOS、 Fedora 或 RHEL 上:
|
||||
|
||||
$ sudo yum install pam-devel
|
||||
|
||||
|
||||
当Google认证器安装好后,你需要在Linux主机上创建验证密钥,并且在安卓设备上注册,注意这项配置操作是一次性的。我们将详细叙述如何完成这些操作:
|
||||
|
||||
### 生成验证密钥 ###
|
||||
|
||||
在Linux主机上运行Google认证器
|
||||
|
||||
$ google-authenticator
|
||||
|
||||
你将看到一个QR码,它使用如下图形表示我们数字形态的密钥。一会我们要用到它在安卓设备上完成配置。
|
||||
|
||||

|
||||

|
||||
|
||||
Google认证器会问一些问题,如果你不确定,就回答"Yes"。这个应急备用验证码(图中 emergency scratch codes)可以在你由于丢失了绑定的安卓设备的情况下(所以不能得到生成的一次性密码)恢复访问。最好将应急备用验证码妥善保存。
|
||||
|
||||
### 在安卓设备上运行Google认证器 ###
|
||||
|
||||
我们需要在安卓设备上安装[Google Authenticator app][6]才能完成双因子认证,到Google Play下载并安装一个。在安卓设备上运行Google认证器,找到下图所示中的配置菜单。
|
||||
|
||||

|
||||
|
||||
你可以选择"Scan a barcode" 或者"Enter provided key"选项。"Scan a barcode"允许你扫描QR码来完成密钥的输入,在此可能需要先安装扫描软件[Barcode Scanner app][7]。如果选择"Enter provided key"选项,你可以使用键盘输入验证密钥,如下图所示:
|
||||
|
||||

|
||||
|
||||
无论采用上述两种选项的任何方式,一旦成功,你将看到注册成功提示和一次性密码,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 为SSH服务器用Google认证器 ###
|
||||
|
||||
最终我们需要修改两个文件来完成集成Google认证器和OpenSSH服务这临门一脚。
|
||||
|
||||
首先,修改PAM配置文件,命令和需添加的内容如下:
|
||||
|
||||
$ sudo vi /etc/pam.d/sshd
|
||||
|
||||
----------
|
||||
|
||||
auth required pam_google_authenticator.so
|
||||
|
||||
然后打开SSH配置文件,找到参数ChallengeResponseAuthentication,并启用它。
|
||||
|
||||
$ sudo vi /etc/ssh/sshd_config
|
||||
|
||||
----------
|
||||
|
||||
ChallengeResponseAuthentication yes
|
||||
|
||||
|
||||
最后,重启SSH服务。
|
||||
|
||||
在 Ubuntu、 Debian 和 Linux Mint 上:
|
||||
|
||||
$ sudo service ssh restart
|
||||
|
||||
在Fedora (或 CentOS/RHEL 7)上:
|
||||
|
||||
$ sudo systemctl restart sshd
|
||||
|
||||
在CentOS 6.x或 RHEL 6.x上:
|
||||
|
||||
$ sudo service sshd restart
|
||||
|
||||
### 验证双因子认证 ###
|
||||
|
||||
在绑定的安卓设备上运行Google认证器,获得一个一次性验证码,该验证码30秒内有效,一旦过期,将重新生成一个新的验证码。
|
||||
|
||||

|
||||
|
||||
现在和往常一样,使用SSH登录终端
|
||||
|
||||
$ ssh user@ssh_server
|
||||
|
||||
当提示你输入验证码的时候,输入我们刚获得的验证码。验证成功后,再输入SSH的登录密码。
|
||||
|
||||

|
||||
|
||||
双因子认证通过在用户密码前新增一层来有效的保护我们脆弱的用户密码。你可以使用Google认证器来保护我们其他的密码,如Google账户, WordPress.com, Dropbox.com, Outlook.com等等。是否使用这项技术,取决于我们自己,但采用双因子认证已经是行业的大趋势了。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/2014/07/two-factor-authentication-ssh-login-linux.html
|
||||
|
||||
译者:[nd0104](https://github.com/nd0104) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://code.google.com/p/google-authenticator/
|
||||
[2]:https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2
|
||||
[3]:https://itunes.apple.com/us/app/google-authenticator/id388497605
|
||||
[4]:http://xmodulo.com/go/android_guide
|
||||
[5]:http://ask.xmodulo.com/install-google-authenticator-linux.html
|
||||
[6]:https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2
|
||||
[7]:https://play.google.com/store/apps/details?id=com.google.zxing.client.android
|
@ -0,0 +1,50 @@
|
||||
如何在Oh-My-Zsh中启用Heroku命令补全功能
|
||||
================================================================================
|
||||
**Heroku**客户端是创建和管理Heroku应用的命令行界面工具。
|
||||
|
||||
需求:
|
||||
|
||||
- Heroku toolbelt
|
||||
- Oh-My-Zsh ([如何安装][1])
|
||||
|
||||
本文不是讲关于heroku的知识,也不是讲关于heroku的使用细节,而是仅仅展示给用户他们怎样可以使用oh-my-zsh来方便地敲入heroku命令。此外你还应该安装[heroku toolbelt][2]来进行本文的相应的操作。对于Ubuntu和Debian发行版,你可以通过运行下面的命令来安装:
|
||||
|
||||
wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
|
||||
|
||||
打开终端,用你在[这里]创建的用户登陆heroku:
|
||||
|
||||
heroku login
|
||||
Enter your Heroku credentials.
|
||||
Email: enockseth@unixmen.com
|
||||
Password (输入是隐藏的):
|
||||
Authentication successful.
|
||||
|
||||
这显示heroku正在运行。
|
||||
|
||||
用你惯用的文本编辑器打开**.zshrc**:
|
||||
|
||||
vim .zshrc
|
||||
|
||||

|
||||
|
||||
这里,git是唯一默认启用的插件。
|
||||
|
||||
在下图显示的插件选择区添加**heroku**:
|
||||
|
||||

|
||||
|
||||
重启终端,输入**heroku**,按下tab键,到此就搞定啦:
|
||||
|
||||

|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.unixmen.com/enable-tab-complete-heroku-commands-oh-zsh/
|
||||
|
||||
译者:[JonathanKang](https://github.com/JonathanKang) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.unixmen.com/install-oh-zsh-ubuntu-arch-linux-fedora/
|
||||
[2]:https://toolbelt.heroku.com/
|
||||
[3]:https://www.heroku.com/
|
@ -0,0 +1,59 @@
|
||||
怎样在ubuntu 14.04上安装轻量级的Budgie桌面
|
||||
================================================================================
|
||||
|
||||
**如果你在推特上关注了我们,你可能看见了我们最近分享的一张截图,和这张截图一起的还有对它所展示的桌面进行命名的邀请。**
|
||||
|
||||
你猜对了吗? 答案就是[Budgie][1] —— 一种为基于openSUSE 的linux发行版Evolve OS所设计、但不仅仅只能用于 Evolve OS的简易桌面环境。
|
||||
|
||||

|
||||
|
||||
我们第一次提到Budgie是在三月份,当时我们被它的整洁、小巧的美感、灵活的架构,还有再次使用在当今大多数发行版中所使用的GNOME 3.10 成熟技术中的公共部分和标堆栈的决定所折服。
|
||||
|
||||
我对此项目的领导者Ikey Doherty所作出的开发选择非常佩服。无可否认另起炉灶有它的优点,但决定从上游的项目获取帮助将可以整个项目进展得更快,无论是在发展方面(更轻的技术负担)还是在用户可使用方面(更容易在其它发行版上运行)。
|
||||
|
||||
除了政治因素选择以外,这款桌面干净、小巧,向谷歌Chrome OS的Ash桌面致敬。如果你不介意有些许粗糙的边缘,那它值得你玩玩。那么怎样在Ubuntu安装Budgie呢?
|
||||
|
||||
###非官方的PPA是不正式的 ###
|
||||
|
||||
开源意味着如果你有一点终端使用知识的话,你就可以在获得Budgie桌面的源代码后进行编译,然后运行。
|
||||
|
||||
但如果你很懒,想不费周折就在Ubuntu 14.04 LTS(或者一个基于它的发行版)运行Budgie,那么你可以通过比较容易的途径来实现。
|
||||
|
||||
只要添加一个**非官方的PPA**,刷新你的软件源然后进行安装。几分钟后在这个家庭中你将有一位[名叫Bob][2]的新叔叔,并且有一个新的桌面可以玩耍。
|
||||
|
||||
###添加Budgie PPA ###
|
||||
|
||||
将以下命令复制进一个打开的终端窗口,在提示过后输入你的密码(如果需要的话):
|
||||
|
||||
sudo add-apt-repository ppa:sukso96100/budgie-desktop
|
||||
sudo apt-get update && sudo apt-get install budgie-desktop
|
||||
|
||||
### 登入Budgie会话 ###
|
||||
|
||||
安装完成后你就可以在Unity欢迎界面的会话选择器中选择“Budgie”了。(别忘了以后要把选择项改回到稳定的桌面环境)
|
||||
|
||||
### 注意 ###
|
||||
|
||||
**budgie是不稳定、不完善的,并且它在Ubuntu上也没有被正式支持。**它正在积极开发中,功能还仍然有些缺失,包括但不仅限于:不支持网络管理,没有音量控制小程序(键盘按键工作良好),没有通知系统,无法将应用程序“固定”在任务栏。
|
||||
|
||||
它对UBUNTU的叠加滚动条、一些GTK主题的支持也不是很好,而且在使用upstart的发行版(例如ubuntu,[即使它正在改变之中][3])中会话管理器(例如,注销,重启等等)将无法工作。
|
||||
|
||||
一个应变方法是:禁用叠加滚动条,设置一个默认主题,通过在终端中使用以下命名来退出会话:
|
||||
|
||||
gnome-session-quit
|
||||
|
||||
脑海中有了上述这些警告后,我得建议那些自己的理智倾向于使用稳定、可靠的系统的人现在暂时不要使用它。
|
||||
|
||||
**而剩下那些狂热的业余爱好者们呢?好吧,请在下面留言告诉我们你觉得它如何。我给Bob让路。**
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/07/install-budgie-evolve-os-desktop-ubuntu-14-04
|
||||
|
||||
译者:[Love-xuan](https://github.com/Love-xuan) 校对:[reinoir](https://github.com/reinoi)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.omgubuntu.co.uk/2014/03/budgie-desktop-chrome-os-like
|
||||
[2]:http://en.wikipedia.org/wiki/Bob
|
||||
[3]:http://www.omgubuntu.co.uk/2014/02/ubuntu-debian-switching-systemd
|
@ -0,0 +1,133 @@
|
||||
在Linux中模拟击键和鼠标移动
|
||||
================================================================================
|
||||
<pre><code>
|
||||
你是否曾经拥有一个梦
|
||||
——你的计算机`
|
||||
可以自动为你干活?
|
||||
或许,并非因为
|
||||
你刚看了终结者。
|
||||
然而,除此之外
|
||||
脚本和任务自动化
|
||||
是每个高级用户追寻的梦
|
||||
如果今天
|
||||
有许多的解决方案
|
||||
可以满足这个目标
|
||||
那么
|
||||
有时候
|
||||
就难以从那众多之中采撷那
|
||||
简洁、聪明而又高效的一个
|
||||
我
|
||||
不能假装
|
||||
是我自己发现了它
|
||||
而与此同时
|
||||
却偏爱着那个
|
||||
整洁的软体——xdotool
|
||||
其方法是如此直观
|
||||
正如它作为X11自动化工具的表露
|
||||
转换思想
|
||||
xdotool可以通过读取文本文件
|
||||
模拟击键的旋律
|
||||
以及鼠标的曼舞
|
||||
</code></pre>
|
||||
|
||||
### 让Xdotool在Linux定居 ###
|
||||
|
||||
对于Ubuntu,Debian或者Linux Mint,你能够只做:
|
||||
|
||||
$ sudo apt-get install xdotool
|
||||
|
||||
对于Fedora,请使用yum命令:
|
||||
|
||||
$ sudo yum install xdotool
|
||||
|
||||
对于CentOS用户,可以在[EPEL repo][1]中找到该包。在启用EPEL仓库后,只要使用上面的yum命令就可以达成你的愿望。
|
||||
|
||||
对于Arch用户,可在Community仓库中找到该包:
|
||||
|
||||
$ sudo pacman -S xdotool
|
||||
|
||||
如果你还是找不到你的发行版的对应xdotool,你可以从它的[官方站点][2]下载。
|
||||
|
||||
### Xdotool基本功 ###
|
||||
|
||||
虽然xdotool是那样的直观,但它仍然是个脚本程序。因此,为了要正确地使用它,你还是得了解它的语法。不过敬请放心,相对于程序的功能而言,语法还是比较简单易学的。
|
||||
|
||||
首先,模拟击键是很容易的。你可以从终端敲入下面的命令:
|
||||
|
||||
$ xdotool key [name of the key]
|
||||
|
||||
如果你想要连接两个键,可以在它们之间使用“+”操作符。它看起来像这样:
|
||||
|
||||
$ xdotool key alt+Tab
|
||||
|
||||
这两个组合键可以为你切换窗口。
|
||||
|
||||
要想让xdotool帮你输入,可以使用以下命令:
|
||||
|
||||
$ xdotool type ''
|
||||
|
||||
这些对于基本的击键而言已经足够了。但是,xdotool的众多长处之一,就是它可以获取特定窗口的焦点。它可以获取右边的窗口,然后在里面输入,所有你记录下的按键都不会人间蒸发,而是老老实实的如你所愿的出现在那里。要获得该功能,一个简单的命令可以搞定:
|
||||
|
||||
$ xdotool search --name [name of the window] key [keys to press]
|
||||
|
||||
该命令将在打开的窗口中搜索对应名称的窗口,并聚焦于该窗口,然后模拟击键。
|
||||
|
||||
来点更高级的,但很有用哦,xdotool可以模拟鼠标移动和点击,看这命令:
|
||||
|
||||
$ xdotool mousemove x y
|
||||
|
||||
你可以将光标定位到屏幕坐标(x,y)(像素)。你也可以使用“click”参数来组合:
|
||||
|
||||
$ xdotool mousemove x y click 1
|
||||
|
||||
这会让鼠标移动到(x,y),然后点击鼠标左键。“1”代表鼠标左键,“2”则是滚轮,“3”则是右键。
|
||||
|
||||
最后,一旦你这些命令根植于你脑海,你也许想要实际转储于文件来编辑并试着玩玩。鉴于此,就会有超过一个语句以上的内容了。你需要的就是写一个bash脚本了:
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
xdotool [command 1]
|
||||
xdotool [command 2]
|
||||
etc
|
||||
|
||||
或者你可以使用:
|
||||
|
||||
$ xdotool [filename]
|
||||
|
||||
这里你将命令写入到一个独立的文件中,然后通过将文件名作为xdotool命令的参数。
|
||||
|
||||
### 意外收获 ###
|
||||
|
||||
作为本文的一个意外收获,这里是xdotool的一个具体实例。你可能听说过,也可能没听说过Bing —— 微软的搜索引擎。在后面的实例中,你会看到你可能从没听过Bing奖励:一个程序,可以让你用Bing积分兑取亚马逊的礼物卡和其它的一些礼物卡。要赚取这些积分,你可以每天在Bing上搜索累计达30次,每次搜索你都会获得0.5个积分。换句话说,你必须把Bing设为默认搜索引擎,并每天使用它。
|
||||
|
||||
或者,你可以使用xdotool脚本,在这个脚本中,会自动聚焦到Firefox(你可以用你喜欢的浏览器来取代它),并使用fortune命令生成一些随机单词来实施搜索。大约30秒之内,你的日常搜索任务就完成了。
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
for i in {1..30}
|
||||
do
|
||||
WID=`xdotool search --title "Mozilla Firefox" | head -1`
|
||||
xdotool windowfocus $WID
|
||||
xdotool key ctrl+l
|
||||
xdotool key Tab
|
||||
SENTENCE="$(fortune | cut -d' ' -f1-3 | head -1)"
|
||||
xdotool type $SENTENCE
|
||||
xdotool key "Return"
|
||||
sleep 4
|
||||
done
|
||||
|
||||
|
||||
下面来个小结吧:我真的很喜欢xdotool,即便它的完整功能超越了本文涵盖的范围。这对于脚本和任务自动化而言,确实是种平易的方式。负面的问题是,它可能不是最有效率的一个。但我要再说一遍,它忠于职守了,而且学习起来也不是那么麻烦。
|
||||
|
||||
你对xdotool怎么看呢?你是否更喜欢另外一个自动化工具,而不是它呢?为什么呢?请在评论中告诉我们吧。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/2014/07/simulate-key-press-mouse-movement-linux.html
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[ wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html
|
||||
[2]:http://www.semicomplete.com/projects/xdotool/
|
@ -0,0 +1,140 @@
|
||||
Linux slabtop命令——显示内核片缓存信息
|
||||
================================================================================
|
||||
|
||||
Linux内核需要为临时对象如任务或者设备结构和节点分配内存,缓存分配器管理着这些类型对象的缓存。现代Linux内核部署了该缓存分配器以持有缓存,称之为片。不同类型的片缓存由片分配器维护。本文集中讨论slabtop命令,该命令显示了实时内核片缓存信息。
|
||||
|
||||
### 1. 命令用法: ###
|
||||
|
||||
该命令用起来很简单,默认执行时不要求任何参数。但是它要求root特权来读取内核片信息。以普通用户执行该命令会出现以下错误:
|
||||
|
||||

|
||||
|
||||
你可以在前面设置“sudo”来运行该命令,默认输出见下图:
|
||||
|
||||

|
||||
|
||||
要退出slabtop,只需敲‘q’,就像在top命令中那样。
|
||||
|
||||
### 2. Slabtop选项: ###
|
||||
|
||||
#### 2.1 显示间隔: ####
|
||||
|
||||
默认情况下,slabtop每隔3秒刷新一次。但是,如果你想要调整,可以使用-d或者--delay=N选项来调整刷新间隔,以秒为单位:
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 2.2 排序标准: ####
|
||||
|
||||
在slabtop输出中有很多字段,-s或--sort=S选项可以根据指定的排序标准对这些字段排序。该选项将在下一节中详细讲述。
|
||||
|
||||
#### 2.3 输出一次: ####
|
||||
|
||||
-o或--once选项不会刷新输出,它仅仅将一次输出结果丢给STDOUT,然后退出。
|
||||
|
||||

|
||||
|
||||
#### 2.4 版本信息: ####
|
||||
|
||||
-V或--version选项显示命令的版本并退出。
|
||||
|
||||

|
||||
|
||||
#### 2.5 帮助: ####
|
||||
|
||||
常见选项,-h或--help显示命令的使用帮助。
|
||||
|
||||

|
||||
|
||||
### 3. 排序标准: ###
|
||||
|
||||
排序标准确定了哪个片缓存显示在顶部,下面是slabtop的排序标准:
|
||||
|
||||
#### 3.1 活跃: ####
|
||||
|
||||
缓存可以通过‘a’来对活跃对象编号进行排序。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 3.2 对象/分片: ####
|
||||
|
||||
每分片对象数可以使用“b”来选择。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 3.3 缓存大小: ####
|
||||
|
||||
要选择缓存大小,你需要提供“c”选项。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 3.4 分片: ####
|
||||
|
||||
分片数量,使用“l”来选择。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 3.5 活跃分片: ####
|
||||
|
||||
活跃分片数量。(注意:这不同于上面讲得活跃对象数量。)使用“v”来根据该标准排序。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 3.6 名称: ####
|
||||
|
||||
缓存名称。相关字符是“n”。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 3.7 对象: ####
|
||||
|
||||
要根据对象数量排序,使用“o”。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 3.8 每分片页面数: ####
|
||||
|
||||
“p”将根据每分片页面数排序。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 3.9 对象大小: ####
|
||||
|
||||
对象大小排序由“s”来指定。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 3.10 使用: ####
|
||||
|
||||
“u”选项根据缓存使用量排序。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://linoxide.com/linux-command/kernel-slab-cache-information/
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -0,0 +1,29 @@
|
||||
[快速技巧]利用终端在 Debian/Ubuntu 中设置默认浏览器
|
||||
================================================================================
|
||||
|
||||

|
||||
|
||||
嘿,伙计们!
|
||||
|
||||
在这篇文章中,我们将使用终端设置默认浏览器。
|
||||
|
||||
虽然,使用浏览器主界面来设置默认浏览器很方便,但是有时,你需要远程来操作。
|
||||
|
||||
要做到这一点,你只需打开终端,然后执行下述命令:
|
||||
|
||||
sudo update-alternatives --config x-www-browser
|
||||
|
||||
之后输入你想设置为默认浏览器的号码,这样就搞定了!
|
||||
|
||||
截图如下:
|
||||
|
||||

|
||||
|
||||
成功了吗?
|
||||
|
||||
---
|
||||
via: http://www.unixmen.com/quick-tip-set-default-browser-debianubuntu-using-terminal/
|
||||
|
||||
译者:[su-kaiyao](https://github.com/su-kaiyao) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -0,0 +1,139 @@
|
||||
Linux系统中使用 DD 命令测试 USB 和 SSD 硬盘的读写速度
|
||||
================================================================================
|
||||
### 磁盘驱动器速度 ###
|
||||
|
||||
磁盘驱动器的速度是以一个单位时间内读写数据量的多少来衡量的。DD 命令是一个简单的命令行工具,它可用对磁盘进行任意数据块的读取和写入,同时可以度量读取写入的速度。
|
||||
|
||||
在这篇文章中,我们将会使用 DD 命令来测试 USB 和 SSD 磁盘的读取和写入速度。
|
||||
|
||||
数据传输速度不但取决于驱动盘本身,而且还与连接的接口有关。比如, USB 2.0 端口的最大传输速度是 35 兆字节/秒,所以如果您把一个支持高速传输的 USB 3.0 驱动盘插入 USB 2.0 端口的话,它实际的传输速度将是 2.0 端口的下限。
|
||||
|
||||
这对于 SSD 也是一样的。 SSD 连接的 SATA 端口有不同的类型。平均是 375 兆字节/秒的 SATA 2.0 端口理论上最大传输速度是 3 Gbit/秒,而 SATA 3.0 是这个速度的两倍。
|
||||
|
||||
### 测试方法 ###
|
||||
|
||||
挂载上驱动盘,从终端进入此盘目录下。然后使用 DD 命令,首先写入固定大小块的一个文件,接着读取这个文件。
|
||||
|
||||
DD 命令通用语法格式如下:
|
||||
|
||||
dd if=path/to/input_file of=/path/to/output_file bs=block_size count=number_of_blocks
|
||||
|
||||
当写入到驱动盘的时候,我们简单的从无穷无用字节的源 /dev/zero 读取,当从驱动盘读取的时候,我们读取的是刚才的文件,并把输出结果发送到无用的 /dev/null。在整个操作过程中, DD 命令会跟踪数据传输的速度并且报告出结果。
|
||||
|
||||
### 固态硬盘 ###
|
||||
|
||||
我们使用的是一块“三星 Evo 120G” 的固态硬盘。它性价比很高,很适合刚开始用固态硬盘的用户,也是我的第一块固态硬盘,并且也是市场上效果最好的固态硬盘之一。
|
||||
|
||||
这次实验中,我们把硬盘接在 SATA 2.0 端口上。
|
||||
|
||||
#### 写入速度 ####
|
||||
|
||||
首先让我们写入固态硬盘
|
||||
|
||||
$ dd if=/dev/zero of=./largefile bs=1M count=1024
|
||||
1024+0 records in
|
||||
1024+0 records out
|
||||
1073741824 bytes (1.1 GB) copied, 4.82364 s, 223 MB/s
|
||||
|
||||
的大小实际上是相当大的。你可以尝试用更小的尺寸如 64K 甚至是 4K 的。
|
||||
|
||||
#### 读取速度 ####
|
||||
|
||||
现在读回这个文件。但是,得首先清除内存的缓存,以确保这个文件确实是从驱动盘读取的。
|
||||
|
||||
运行下面的命令来清除内存缓存
|
||||
|
||||
$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
|
||||
|
||||
现在读取此文件
|
||||
|
||||
$ dd if=./largefile of=/dev/null bs=4k
|
||||
165118+0 records in
|
||||
165118+0 records out
|
||||
676323328 bytes (676 MB) copied, 3.0114 s, 225 MB/s
|
||||
|
||||
在 Arch Linux 的维基页上有一整页的关于不同的厂商,如英特尔、三星、Sandisk 等提供的各类固态硬盘 读/写速度的信息。点击如下的 url 可以查看相关信息。
|
||||
|
||||
[https://wiki.archlinux.org/index.php/SSD_Benchmarking][1]
|
||||
|
||||
### USB ###
|
||||
|
||||
此次实验我们会测量普通的 USB/随身笔的读写速度。驱动盘都是接入标准的 USB 2.0 端口的。首先用的是一个 4GB 大小的 sony USB 驱动盘,随后用的是一个 16GB 大小的 strontium 驱动盘。
|
||||
|
||||
首先把驱动盘插入端口,并挂载上,使其可读。然后从命令行下面进入挂载的文件目录下。
|
||||
|
||||
#### Sony 4GB - 写入 ####
|
||||
|
||||
这个实验中,用 DD 命令向驱动盘写入一个有 10000 块,每块 8K 字节的文件。
|
||||
|
||||
# dd if=/dev/zero of=./largefile bs=8k count=10000
|
||||
10000+0 records in
|
||||
10000+0 records out
|
||||
81920000 bytes (82 MB) copied, 11.0626 s, 7.4 MB/s
|
||||
|
||||
因此,写入速度约为7.5兆字节/秒。这是一个很低的数字。
|
||||
|
||||
#### Sony 4GB - 读取 ####
|
||||
|
||||
把相同的文件读取回来,测试速度。首先运行如下命令清除内存缓存。
|
||||
|
||||
$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
|
||||
|
||||
现在就可以使用 DD 命令来读取文件了。
|
||||
|
||||
# dd if=./largefile of=/dev/null bs=8k
|
||||
8000+0 records in
|
||||
8000+0 records out
|
||||
65536000 bytes (66 MB) copied, 2.65218 s, 24.7 MB/s
|
||||
|
||||
读取速度出来大约是25兆字节/秒,这大致跟廉价 USB 驱动盘的标准相匹配吧。
|
||||
|
||||
> USB2.0 理论上最大信号传输速率为480兆比特/秒,最小为60兆字节/秒。然而,由于各种限制实际传输速率大约280兆比特/秒和35兆字节/秒之间。除了这个,实际的速度还取决于驱动盘本身的质量好坏以及其他的因素。
|
||||
|
||||
上面实验中, USB 驱动盘插入USB 2.0 端口,读取的速度达到了 24.7兆字节/秒,这是很不错的读速度。但写入速度就不敢恭维了。
|
||||
|
||||
下面让我们用 16GB 的 Strontium 驱动盘来做相同的实验。虽然 Strontium 的 USB 驱动盘很稳定,但它也是一款很便宜的品牌。
|
||||
|
||||
#### Strontium 16gb 盘写入速度 ####
|
||||
|
||||
# dd if=/dev/zero of=./largefile bs=64k count=1000
|
||||
1000+0 records in
|
||||
1000+0 records out
|
||||
65536000 bytes (66 MB) copied, 8.3834 s, 7.8 MB/s
|
||||
|
||||
#### Strontium 16gb 盘读取速度 ####
|
||||
|
||||
# sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
|
||||
|
||||
# dd if=./largefile of=/dev/null bs=8k
|
||||
8000+0 records in
|
||||
8000+0 records out
|
||||
65536000 bytes (66 MB) copied, 2.90366 s, 22.6 MB/s
|
||||
|
||||
它的读取速度就要比 Sony 的低了。
|
||||
|
||||
### 参考资料 ###
|
||||
|
||||
- [http://en.wikipedia.org/wiki/USB][2]
|
||||
- [https://wiki.archlinux.org/index.php/SSD_Benchmarking][1]
|
||||
|
||||
----------
|
||||
|
||||

|
||||
|
||||
关于 Silver Moon
|
||||
|
||||
Php 开发者, 博主 和 Linux 爱好者. 通过 [m00n.silv3r@gmail.com][e] 或者 [Google+][g] 可联系到他。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.binarytides.com/linux-test-drive-speed/
|
||||
|
||||
译者:[runningwater](https://github.com/runningwater) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://wiki.archlinux.org/index.php/SSD_Benchmarking
|
||||
[2]:http://en.wikipedia.org/wiki/USB
|
||||
[e]:m00n.silv3r@gmail.com
|
||||
[g]:http://plus.google.com/117145272367995638274/posts
|
@ -0,0 +1,106 @@
|
||||
5个让Cinnamon桌面环境完美运行在ubuntu上的方法
|
||||
=======================================================================
|
||||

|
||||
|
||||
**Cinnamon桌面环境最新稳定版本发行了,[ubuntu用户可以去安装使用了][1]**
|
||||
|
||||
在已经安装好的基础上,我们可以做一些微调来拥有更棒的体验 。
|
||||
|
||||
你的Ubuntu如果没有安装Cinnamon,你可以参照我们[之前的文章进行安装][1]。
|
||||
|
||||
###更改Mint菜单图标###
|
||||
|
||||
Mint菜单图标是Cinnamon的特色之一,它给予用户一种简单、快速、熟悉的方式来搜索、打开、组织应用程序,默认情况下,菜单使用启动程序项中的Linux Mint Logo。既然你是在ubuntu系统下使用它,而不是Mint,为什么不使用ubuntu熟悉的橙色朋友圈logo来替换原有的菜单图标呢?
|
||||
|
||||
实现很简单:
|
||||
|
||||

|
||||
|
||||
想要将Cinnamon菜单图标改变为ubuntu风格的,只需点击applet,选择‘config‘,在设置窗口,就会出现‘Use
|
||||
a custom icon‘,然后你就输入下面的路径来使用ubuntu logo了:
|
||||
|
||||
/usr/share/icons/ubuntu-mono-dark/actions/24/package-supported.svg
|
||||
|
||||
你可以使用任何支持的图片类型,只需要在刚才的填写区域写入正确的图片路径,或者点击后面的方框来打开文件选择器,选择你要使用的图标。
|
||||
|
||||
###尝试Cinnamon主题###
|
||||
|
||||

|
||||
|
||||
和GNOME Shell一样,Cinnamon也支持自定义主题,我所说的主题并不只是应用程序的GTK主题和简单的窗口装饰,而是将面板,菜单,程序等等结合为一个整体的视觉风格。
|
||||
|
||||
不用离开桌面就可以浏览、下载Cinnamon主题。打开Cinnamon Settings tool中的Appearance
|
||||
pane,然后选择‘Online Themes‘。
|
||||
|
||||
下面是一些受欢迎的主题:
|
||||
|
||||
- [**Android Holo**][2] — Android 4.x style theme
|
||||
- [**Zukitwo**][3] — Sleek, stylish and light
|
||||
- [**Minty**][4] — Dark theme with bold green accents
|
||||
- [**Metro**][5] — Based on the visual style of Windows 8.
|
||||
|
||||
###找出你最喜欢的布局###
|
||||
|
||||
Unity认为应用程序启动器永远只应该固定地待在屏幕的一侧,但是Cinnamon并不这样认为,它可以让你重新设计最符合你的桌面布局。
|
||||
|
||||
手动面板可以增加,编辑和移动,或选择三种预设的布局。
|
||||
|
||||

|
||||
|
||||
打开`Settings > Panel > Layout Options > Panel Layout`,然后下面这几个中选择:
|
||||
|
||||
- Traditional — 这是默认的布局,控制面板在屏幕的顶部
|
||||
- Flipped ——和Traditional一样,控制面板在屏幕顶部
|
||||
- Classic ——两个控制面板,一个在顶部,一个在底部
|
||||
|
||||
你需要注销或者重启Cinnamon才能生效。
|
||||
|
||||
###添加面板小程序###
|
||||
|
||||

|
||||
|
||||
Cinnamon和GNOE Shell一样具有可扩展性,丰富的社区插件和扩展程序提供了额外的特性和功能,比如天气,系统监测,窗口管理工具等,这些都可以被浏览,安装并能从桌面直接启动。
|
||||
|
||||
选择控制面板,右键点击要添加小程序,选择 ‘…Add Appls to the Panel‘,一些著名的小程序如下:
|
||||
|
||||
- [**Weather**][6] - does what it forecasts (ho ho)
|
||||
- [**Stark Menu**][7] - Clone of the Windows 7 Start Menu
|
||||
- [**Screenshot**][8] — Easy way to grab screenshots with delay
|
||||
|
||||
###改变日期的显示格式###
|
||||
|
||||

|
||||
|
||||
Cinnamon的时间日期程序很方便,它可以让你很容易就记住日期
|
||||
|
||||
但是它显示时间的默认格式是24小时制,但是我们很容易就能调整时钟格式
|
||||
|
||||
右击然后选择‘Configure‘,在设置窗口中出现“Use a custom date
|
||||
format“的选择框上打勾,或者使用下面的几种格式(复制粘帖粗体字段)
|
||||
|
||||
- **%B %e, %I:%M %p** (July 13, 7:19 PM)
|
||||
- **%m/%d/%Y** (07/13/2014)
|
||||
- **%l:%M %p** (7:19 PM)
|
||||
|
||||
改变立马生效,如果中途发生了错误,你可以取消自定义时间格式选项恢复到默认状态
|
||||
|
||||
###更多###
|
||||
|
||||
在Cinnamon桌面环境中只有少部分定制选择供使用者使用,但是我们认为上述所讲的调整是不断探索的很好跳板,通过下面的评论栏让我们了解你最喜欢的调整是什么吧,你可以通过Facebook或者Google+
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
via: http://www.omgubuntu.co.uk/2014/07/5-things-installing-cinnamon-ubuntu
|
||||
|
||||
译者:[su-kaiyao](https://github.com/su-kaiyao) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.omgubuntu.co.uk/2014/07/new-cinnamon-ubuntu-14-04-ppa-stable
|
||||
[2]:http://cinnamon-spices.linuxmint.com/themes/view/122
|
||||
[3]:http://cinnamon-spices.linuxmint.com/themes/view/219
|
||||
[4]:http://cinnamon-spices.linuxmint.com/themes/view/25
|
||||
[5]:http://cinnamon-spices.linuxmint.com/themes/view/188
|
||||
[6]:http://cinnamon-spices.linuxmint.com/applets/view/17
|
||||
[7]:http://cinnamon-spices.linuxmint.com/applets/view/168
|
||||
[8]:http://cinnamon-spices.linuxmint.com/applets/view/35
|
@ -0,0 +1,200 @@
|
||||
Linux系统中‘dmesg’命令处理故障和收集系统信息的7种用法
|
||||
==========================================================
|
||||
|
||||
‘dmesg’命令显示linux内核的环形缓冲区信息,我们可以从中获得诸如系统架构、cpu、挂载的硬件,RAM等多个运行级别的大量的系统信息。当计算机启动时,系统内核(操作系统的核心部分)将会被加载到内存中。在加载的过程中会显示很多的信息,在这些信息中我们可以看到内核检测硬件设备。
|
||||
|
||||

|
||||
|
||||
dmesg 命令的使用范例
|
||||
|
||||
‘dmesg’命令设备故障的诊断是非常重要的。在‘dmesg’命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息。‘dmesg’命令在多数基于**Linux**和**Unix**的操作系统中都可以使用。
|
||||
|
||||
下面我们展示一些最负盛名的‘dmesg’命令工具以及其实际使用举例。‘dmesg’命令的使用语法如下。
|
||||
|
||||
# dmesg [options...]
|
||||
|
||||
### 1. 列出加载到内核中的所有驱动 ###
|
||||
|
||||
我们可以使用如‘**more**’。 ‘**tail**’, ‘**less** ’或者‘**grep**’文字处理工具来处理‘dmesg’命令的输出。由于dmesg日志的输出不适合在一页中完全显示,因此我们使用管道(pipe)将其输出送到more或者less命令单页显示。
|
||||
|
||||
[root@tecmint.com ~]# dmesg | more
|
||||
[root@tecmint.com ~]# dmesg | less
|
||||
|
||||
### 输出 ###
|
||||
|
||||
[ 0.000000] Initializing cgroup subsys cpuset
|
||||
[ 0.000000] Initializing cgroup subsys cpu
|
||||
[ 0.000000] Initializing cgroup subsys cpuacct
|
||||
[ 0.000000] Linux version 3.11.0-13-generic (buildd@aatxe) (gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu8) ) #20-Ubuntu SMP Wed Oct 23 17:26:33 UTC 2013
|
||||
(Ubuntu 3.11.0-13.20-generic 3.11.6)
|
||||
[ 0.000000] KERNEL supported cpus:
|
||||
[ 0.000000] Intel GenuineIntel
|
||||
[ 0.000000] AMD AuthenticAMD
|
||||
[ 0.000000] NSC Geode by NSC
|
||||
[ 0.000000] Cyrix CyrixInstead
|
||||
[ 0.000000] Centaur CentaurHauls
|
||||
[ 0.000000] Transmeta GenuineTMx86
|
||||
[ 0.000000] Transmeta TransmetaCPU
|
||||
[ 0.000000] UMC UMC UMC UMC
|
||||
[ 0.000000] e820: BIOS-provided physical RAM map:
|
||||
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
|
||||
[ 0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
|
||||
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007dc08bff] usable
|
||||
[ 0.000000] BIOS-e820: [mem 0x000000007dc08c00-0x000000007dc5cbff] ACPI NVS
|
||||
[ 0.000000] BIOS-e820: [mem 0x000000007dc5cc00-0x000000007dc5ebff] ACPI data
|
||||
[ 0.000000] BIOS-e820: [mem 0x000000007dc5ec00-0x000000007fffffff] reserved
|
||||
[ 0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
|
||||
[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fed003ff] reserved
|
||||
[ 0.000000] BIOS-e820: [mem 0x00000000fed20000-0x00000000fed9ffff] reserved
|
||||
[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000feefffff] reserved
|
||||
[ 0.000000] BIOS-e820: [mem 0x00000000ffb00000-0x00000000ffffffff] reserved
|
||||
[ 0.000000] NX (Execute Disable) protection: active
|
||||
.....
|
||||
|
||||
###2. 列出所有被检测到的硬件 ###
|
||||
|
||||
要显示所有被内核检测到的硬盘设备,你可以使用‘**grep**’命令搜索‘**sda**’关键词,如下:
|
||||
|
||||
[root@tecmint.com ~]# dmesg | grep sda
|
||||
|
||||
[ 1.280971] sd 2:0:0:0: [sda] 488281250 512-byte logical blocks: (250 GB/232 GiB)
|
||||
[ 1.281014] sd 2:0:0:0: [sda] Write Protect is off
|
||||
[ 1.281016] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
|
||||
[ 1.281039] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
|
||||
[ 1.359585] sda: sda1 sda2 < sda5 sda6 sda7 sda8 >
|
||||
[ 1.360052] sd 2:0:0:0: [sda] Attached SCSI disk
|
||||
[ 2.347887] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
|
||||
[ 22.928440] Adding 3905532k swap on /dev/sda6. Priority:-1 extents:1 across:3905532k FS
|
||||
[ 23.950543] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
|
||||
[ 24.134016] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null)
|
||||
[ 24.330762] EXT4-fs (sda7): mounted filesystem with ordered data mode. Opts: (null)
|
||||
[ 24.561015] EXT4-fs (sda8): mounted filesystem with ordered data mode. Opts: (null)
|
||||
|
||||
**注解** ‘sda’表示第一块 SATA硬盘,‘sdb’表示第二块SATA硬盘。若想查看IDE硬盘搜索‘hda’或‘hdb’关键词。
|
||||
|
||||
### 3. 只输出dmesg命令的前20行日志 ###
|
||||
|
||||
在‘dmesg’命令后跟随‘head’命令来显示开始几行,‘dmesg | head -20′命令将显示开始的前20行。
|
||||
|
||||
[root@tecmint.com ~]# dmesg | head -20
|
||||
|
||||
[ 0.000000] Initializing cgroup subsys cpuset
|
||||
[ 0.000000] Initializing cgroup subsys cpu
|
||||
[ 0.000000] Initializing cgroup subsys cpuacct
|
||||
[ 0.000000] Linux version 3.11.0-13-generic (buildd@aatxe) (gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu8) ) #20-Ubuntu SMP Wed Oct 23 17:26:33 UTC 2013 (Ubuntu 3.11.0-13.20-generic 3.11.6)
|
||||
[ 0.000000] KERNEL supported cpus:
|
||||
[ 0.000000] Intel GenuineIntel
|
||||
[ 0.000000] AMD AuthenticAMD
|
||||
[ 0.000000] NSC Geode by NSC
|
||||
[ 0.000000] Cyrix CyrixInstead
|
||||
[ 0.000000] Centaur CentaurHauls
|
||||
[ 0.000000] Transmeta GenuineTMx86
|
||||
[ 0.000000] Transmeta TransmetaCPU
|
||||
[ 0.000000] UMC UMC UMC UMC
|
||||
[ 0.000000] e820: BIOS-provided physical RAM map:
|
||||
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
|
||||
[ 0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
|
||||
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007dc08bff] usable
|
||||
[ 0.000000] BIOS-e820: [mem 0x000000007dc08c00-0x000000007dc5cbff] ACPI NVS
|
||||
[ 0.000000] BIOS-e820: [mem 0x000000007dc5cc00-0x000000007dc5ebff] ACPI data
|
||||
[ 0.000000] BIOS-e820: [mem 0x000000007dc5ec00-0x000000007fffffff] reserved
|
||||
|
||||
###4. 只输出dmesg命令最后20行日志 ###
|
||||
|
||||
在‘dmesg’命令后跟随‘tail’命令(‘ dmesg | tail -20’)来输出‘dmesg’命令的最后20行日志,当你插入可移动设备时它是非常有用的。
|
||||
|
||||
[root@tecmint.com ~]# dmesg | tail -20
|
||||
|
||||
parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
|
||||
ppdev: user-space parallel port driver
|
||||
EXT4-fs (sda1): mounted filesystem with ordered data mode
|
||||
Adding 2097144k swap on /dev/sda2. Priority:-1 extents:1 across:2097144k
|
||||
readahead-disable-service: delaying service auditd
|
||||
ip_tables: (C) 2000-2006 Netfilter Core Team
|
||||
nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
|
||||
NET: Registered protocol family 10
|
||||
lo: Disabled Privacy Extensions
|
||||
e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
|
||||
Slow work thread pool: Starting up
|
||||
Slow work thread pool: Ready
|
||||
FS-Cache: Loaded
|
||||
CacheFiles: Loaded
|
||||
CacheFiles: Security denies permission to nominate security context: error -95
|
||||
eth0: no IPv6 routers present
|
||||
type=1305 audit(1398268784.593:18630): audit_enabled=0 old=1 auid=4294967295 ses=4294967295 res=1
|
||||
readahead-collector: starting delayed service auditd
|
||||
readahead-collector: sorting
|
||||
readahead-collector: finished
|
||||
|
||||
### 5. 搜索包含特定字符串的被检测到的硬件 ###
|
||||
|
||||
由于‘dmesg’命令的输出实在太长了,在其中搜索某个特定的字符串是非常困难的。因此,有必要过滤出一些包含‘**usb**’ ‘**dma**’ ‘**tty**’ ‘**memory**’等字符串的日志行。[grep 命令][1] 的‘**-i**’选项表示忽略大小写。
|
||||
|
||||
[root@tecmint.com log]# dmesg | grep -i usb
|
||||
[root@tecmint.com log]# dmesg | grep -i dma
|
||||
[root@tecmint.com log]# dmesg | grep -i tty
|
||||
[root@tecmint.com log]# dmesg | grep -i memory
|
||||
|
||||
###输出###
|
||||
|
||||
[ 0.000000] Scanning 1 areas for low memory corruption
|
||||
[ 0.000000] initial memory mapped: [mem 0x00000000-0x01ffffff]
|
||||
[ 0.000000] Base memory trampoline at [c009b000] 9b000 size 16384
|
||||
[ 0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
|
||||
[ 0.000000] init_memory_mapping: [mem 0x37800000-0x379fffff]
|
||||
[ 0.000000] init_memory_mapping: [mem 0x34000000-0x377fffff]
|
||||
[ 0.000000] init_memory_mapping: [mem 0x00100000-0x33ffffff]
|
||||
[ 0.000000] init_memory_mapping: [mem 0x37a00000-0x37bfdfff]
|
||||
[ 0.000000] Early memory node ranges
|
||||
[ 0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x000effff]
|
||||
[ 0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
|
||||
[ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
|
||||
[ 0.000000] Memory: 2003288K/2059928K available (6352K kernel code, 607K rwdata, 2640K rodata, 880K init, 908K bss, 56640K reserved, 1146920K highmem)
|
||||
[ 0.000000] virtual kernel memory layout:
|
||||
[ 0.004291] Initializing cgroup subsys memory
|
||||
[ 0.004609] Freeing SMP alternatives memory: 28K (c1a3e000 - c1a45000)
|
||||
[ 0.899622] Freeing initrd memory: 23616K (f51d0000 - f68e0000)
|
||||
[ 0.899813] Scanning for low memory corruption every 60 seconds
|
||||
[ 0.946323] agpgart-intel 0000:00:00.0: detected 32768K stolen memory
|
||||
[ 1.360318] Freeing unused kernel memory: 880K (c1962000 - c1a3e000)
|
||||
[ 1.429066] [drm] Memory usable by graphics device = 2048M
|
||||
|
||||
### 6. 清空dmesg缓冲区日志 ###
|
||||
|
||||
我们可以使用如下命令来清空dmesg的日志。该命令会清空dmesg环形缓冲区中的日志。但是你依然可以查看存储在‘**/var/log/dmesg**’文件中的日志。你连接任何的设备都会产生dmesg日志输出。
|
||||
|
||||
[root@tecmint.com log]# dmesg -c
|
||||
|
||||
### 7. 实时监控dmesg日志输出 ###
|
||||
|
||||
在某些发行版中可以使用命令‘tail -f /var/log/dmesg’来实时监控dmesg的日志输出。
|
||||
|
||||
[root@tecmint.com log]# watch "dmesg | tail -20"
|
||||
|
||||
**结论**:dmesg命令在系统dmesg记录实时更改或产生的情况下是非常有用的。你可以使用man dmesg来获取更多关于dmesg的信息。
|
||||
|
||||
----------
|
||||
|
||||

|
||||
|
||||
Narad Shrestha
|
||||
|
||||
- [Twitter profile][t]
|
||||
- [Facebook profile][f]
|
||||
- [Google+ profile][g]
|
||||
|
||||
他在IT领域拥有超过10年的丰富经验,其中包括各种Linux发行版,开源软件和网络工作。 Narad始终坚持与他人分享IT知识和自如地运用新技术。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/dmesg-commands/
|
||||
|
||||
译者:[cvsher](https://github.com/cvsher) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.tecmint.com/12-practical-examples-of-linux-grep-command/
|
||||
[t]:http://twitter.com/@nrdshrestha
|
||||
[f]:http://facebook.com/narad.shrestha.9
|
||||
[g]:http://plus.google.com/104542109955805873615?rel=author
|
||||
|
@ -0,0 +1,118 @@
|
||||
如何用CentOS上的SARG日志分析器来分析Squid日志
|
||||
================================================================================
|
||||
|
||||
[上一节教程][1]中,我们展示了如何在CentOS上使用Squid配置透明代理。Squid提供了很多有用的特性,但是分析一个原始Squid日志文件并不直接。比如,你如何分析下面Squid日志中的时间戳和数字?
|
||||
|
||||
1404788984.429 1162 172.17.1.23 TCP_MISS/302 436 GET http://facebook.com/ - DIRECT/173.252.110.27 text/html
|
||||
1404788985.046 12416 172.17.1.23 TCP_MISS/200 4169 CONNECT stats.pusher.com:443 - DIRECT/173.255.223.127 -
|
||||
1404788986.124 174 172.17.1.23 TCP_MISS/200 955 POST http://ocsp.digicert.com/ - DIRECT/117.18.237.29 application/ocsp-response
|
||||
1404788989.738 342 172.17.1.23 TCP_MISS/200 3890 CONNECT www.google.com:443 - DIRECT/74.125.200.106 -
|
||||
1404788989.757 226 172.17.1.23 TCP_MISS/200 942 POST http://clients1.google.com/ocsp - DIRECT/74.125.200.113 application/ocsp-response
|
||||
1404788990.839 3939 172.17.1.23 TCP_MISS/200 78944 CONNECT fbstatic-a.akamaihd.net:443 - DIRECT/184.26.162.35 -
|
||||
1404788990.846 2148 172.17.1.23 TCP_MISS/200 118947 CONNECT fbstatic-a.akamaihd.net:443 - DIRECT/184.26.162.35 -
|
||||
1404788990.849 2151 172.17.1.23 TCP_MISS/200 76809 CONNECT fbstatic-a.akamaihd.net:443 - DIRECT/184.26.162.35 -
|
||||
1404788991.140 611 172.17.1.23 TCP_MISS/200 110073 CONNECT fbstatic-a.akamaihd.net:443 - DIRECT/184.26.162.35 –
|
||||
|
||||
SARG(或者说是Squid分析报告生成器)是一款基于web的工具,用于从Squid日志中生成报告。SARG提供了一个由Squid处理的网络流量视图,易于理解,并且它可以很容易地设置和维护。在下面的教程中,我们会展示**如何在CentOS平台上设置SARG**。
|
||||
|
||||
我们使用yum来安装安装必要的依赖。
|
||||
|
||||
# yum install gcc make wget httpd crond
|
||||
|
||||
在启动时加载必要的服务
|
||||
|
||||
# service httpd start; service crond start
|
||||
# chkconfig httpd on; chkconfig crond on
|
||||
|
||||
现在我们下载并解压SARG
|
||||
|
||||
# wget http://downloads.sourceforge.net/project/sarg/sarg/sarg-2.3.8/sarg-2.3.8.tar.gz?
|
||||
# tar zxvf sarg-2.3.8.tar.gz
|
||||
# cd sarg-2.3.8
|
||||
|
||||
**注意**: 对于64位的Linux,log.c的源代码需要用下面的文件打补丁。
|
||||
|
||||
1506c1506
|
||||
< if (fprintf(ufile->file, "%s\t%s\t%s\t%s\t%"PRIi64"\t%s\t%ld\t%s\n",dia,hora,ip,url,nbytes,code,elap_time,smartfilter)<=0) {
|
||||
---
|
||||
> if (fprintf(ufile->file, "%s\t%s\t%s\t%s\t%"PRIi64"\t%s\t%ld\t%s\n",dia,hora,ip,url,(int64_t)nbytes,code,elap_time,smartfilter)<=0) {
|
||||
1513c1513
|
||||
< fprintf(fp_log, "%s\t%s\t%s\t%s\t%s\t%"PRIi64"\t%s\t%ld\t%s\n",dia,hora,user,ip,url,nbytes,code,elap_time,smartfilter);
|
||||
---
|
||||
> fprintf(fp_log, "%s\t%s\t%s\t%s\t%s\t%"PRIi64"\t%s\t%ld\t%s\n",dia,hora,user,ip,url,(int64_t)nbytes,code,elap_time,smartfilter);
|
||||
1564c1564
|
||||
< printf("LEN=\t%"PRIi64"\n",nbytes);
|
||||
---
|
||||
> printf("LEN=\t%"PRIi64"\n",(int64_t)nbytes);
|
||||
|
||||
如下继续并编译/安装SARG
|
||||
|
||||
# ./configure
|
||||
# make
|
||||
# make install
|
||||
|
||||
SARG安装之后,配置文件可以按你的要求修改。下面是一个SARG配置的例子。
|
||||
|
||||
# vim /usr/local/etc/sarg.conf
|
||||
|
||||
----------
|
||||
|
||||
access_log /var/log/squid/access.log
|
||||
temporary_dir /tmp
|
||||
output_dir /var/www/html/squid-reports
|
||||
date_format e ## We use Europian DD-MM-YYYY format here ##
|
||||
## we don’t want multiple reports for single day/week/month ##
|
||||
overwrite_report yes
|
||||
|
||||
现在是时候测试运行了,我们用调试模式运行sarg来查看是否存在错误。
|
||||
|
||||
# sarg -x
|
||||
|
||||
如果i一切正常,sarg会根系Squid日志,并在/var/www/html/squid-reports下创建报告。报告也可以在浏览器中通过地址http://<服务器IP>/squid-reports/访问。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
、SARG可以用于创建日、周、月度报告。时间范围用“-d”参数来指定,值的形式很可能为day-n、 week-n 或者 month-n,n的值为向前推移的天/周/月的数量。比如,使用week-1,SARG会生成之前一星期的报告。使用day-2,SARG会生成之前两天的报告。
|
||||
|
||||
作为演示,我们会准备一个计划任务来每天运行SARG。
|
||||
|
||||
# vim /etc/cron.daily/sarg
|
||||
|
||||
----------
|
||||
|
||||
#!/bin/sh
|
||||
/usr/local/bin/sarg -d day-1
|
||||
|
||||
文件需要可执行权限。
|
||||
|
||||
# chmod 755 /usr/local/bin/sarg
|
||||
|
||||
现在SARG应该会每天准备关于Squid管理的流量报告。这些报告可以很容易地通过SARG网络接口访问。
|
||||
|
||||
总结一下,SARG一款基于网络的工具,它可以分析Squid日志,并以更详细的方式展示分析。系统管理员可以利用SARG来监视哪些网站被访问了,并跟踪访问量最大的网站和用户。本教程包含了SARG配置工作。你可以进一步自定义配置来满足自己的要求。
|
||||
|
||||
希望这篇教程对您有帮助。
|
||||
|
||||
----------
|
||||
|
||||
[Sarmed Rahman][w]
|
||||
|
||||
- [Twitter 地址][t]
|
||||
- [LinkedIn 地址][l]
|
||||
|
||||
Sarmed Rahman是一名孟加拉国的IT专业人士。他坚持时不时地写作技术文章,并坚信技术可以通过分享而提高。在空闲时间里,他喜欢打游戏,喜欢和朋友一起度过。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/2014/07/analyze-squid-logs-sarg-log-analyzer-centos.html
|
||||
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://xmodulo.com/2014/06/squid-transparent-web-proxy-centos-rhel.html
|
||||
[w]:http://amar-linux.blogspot.com/
|
||||
[t]:http://twitter.com/SarmedRahman
|
||||
[l]:http://www.linkedin.com/in/sarmedrahman
|
@ -0,0 +1,97 @@
|
||||
教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性
|
||||
================================================================================
|
||||
|
||||
我们都知道,在基于红帽的Linux系统中,一个RPM包,需要把先将它依赖的其他包安装好才能正常的工作。对于终端用户,RPM的安装、更新、删除中存在的依赖关系已经被工具透明化了(如 yum或 DNF等)。但如果你是系统管理员或者RPM包的管理员,你需要谙熟RPM包的依赖关系,以便及时更新、删除适当的包来保证系统的正常运行。
|
||||
|
||||
在本教程中,我将教大家**如何检查RPM包的依赖关系**。无论这个包是否已经安装进操作系统中,我们都有一些办法来检查它们的依赖性。
|
||||
|
||||
### 方法一 ###
|
||||
|
||||
使用RPM命令可以列出目标包所依赖的所有包,如下:
|
||||
$ rpm -qR <package-name>
|
||||
|
||||

|
||||
|
||||
注意,这种方法只适用于**已安装**的包。如果你需要检查一个**未安装**包的依赖关系,你首先需要把这个包先下载到本地来(不需要安装)。
|
||||
|
||||
要下载一个 RPM 包而不安装,可以使用叫做'yumdownloader'的工具,下面我们先安装yumdownloader:
|
||||
|
||||
$ sudo yum install yum-utils
|
||||
|
||||
现在我们来检查一个未安装的RPM包的依赖关系(本例使用 tcpdump)。首先,我们使用yumdownloader把tcpdump的RPM包下载下来
|
||||
|
||||
$ yumdownloader --destdir=. tcpdump
|
||||
|
||||
然后再使用 "-qpR"参数显示该包的依赖关系。
|
||||
|
||||
# rpm -qpR tcpdump-4.4.0-2.fc19.i686.rpm
|
||||
|
||||
### 方法二 ###
|
||||
|
||||
你可以使用repoquery工具来罗列包的依赖关系,它与包是否安装无关,这个工具包含在yum-utils中。
|
||||
|
||||
$ sudo yum install yum-utils
|
||||
|
||||
显示目标包所依赖的包:
|
||||
|
||||
$ repoquery --requires --resolve <package-name>
|
||||
|
||||

|
||||
|
||||
为让repoquery正常的工作,需要保持网络的畅通,应为repoquery需要在Yum库中查找信息。
|
||||
|
||||
### 方法三 ###
|
||||
|
||||
第三个方法是使用rpmreaper工具。这个工具本来是用作清理系统中无用以及它们所依赖的包,rpmreaper有很直观的ncurses界面来展示已安装的包和它们依赖关系的树形图。
|
||||
|
||||
安装rpmrepater,在CentOS中,你需要先[设置好EPEL库][1]
|
||||
|
||||
$ sudo yum install rpmreaper
|
||||
|
||||
只需运行rpmreaper就可以看到RPM包的依赖关系:
|
||||
|
||||
$ rpmreaper
|
||||
|
||||

|
||||
|
||||
rpmrepater会向用户显示已安装包的列表,你可以使用上/下箭头来滚动屏幕。
|
||||
|
||||
你可以在指定包上使用"r"键来显示其依赖关系,循环在指定包上按下"r"键可以展示出余下的信息。
|
||||
|
||||
"L"标志的意思是说这个包是一片“孤叶”,意思说说没有任何包依赖它。
|
||||
|
||||
"o"标志是说这个包是整个依赖链的中间部分。
|
||||
|
||||
按下"b"键会显示其他依赖于该包的其他包。
|
||||
|
||||
### 方法四 ###
|
||||
|
||||
还有一个办法是使用rpmdep工具,rpmdep是一个命令行工具,可以显示已安装包的完整包依赖关系图。该工具会分析RPM包的依赖性,从完整的排完序的拓扑图中摘取部分包的信息,形成列表展示给用户。该工具的输出结果可以直接使用到Dotty(可视化展示工具)中去。
|
||||
|
||||
在Fedora中安装rpmdep和dotty:
|
||||
|
||||
$ sudo yum install rpmorphan graphviz
|
||||
|
||||
在CentOs中安装:
|
||||
$ wget http://downloads.sourceforge.net/project/rpmorphan/rpmorphan/1.14/rpmorphan-1.14-1.noarch.rpm
|
||||
$ sudo rpm -ivh rpmorphan-1.14-1.noarch.rpm
|
||||
$ sudo yum install graphviz
|
||||
|
||||
生成包依赖的拓扑关系图(例如 gzip):
|
||||
|
||||
$ rpmdep.pl -dot gzip.dot gzip
|
||||
$ dot -Tpng -o output.png gzip.dot
|
||||
|
||||

|
||||
|
||||
教程到这个地方,我们用到了几种办法来检查包的依赖关系。如果您想知道如何在居于Debian的系统中检查.deb的包依赖关系,请阅读另外一篇[文档][2]
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/2014/07/check-rpm-package-dependencies-fedora-centos-rhel.html
|
||||
|
||||
译者:[nd0104](https://github.com/nd0104) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html
|
||||
[2]:http://xmodulo.com/2013/07/how-to-check-package-dependencies-on-ubuntu-or-debian.html
|
@ -0,0 +1,182 @@
|
||||
在Linux上安装Android 4.4 KitKat来玩玩喜爱的游戏和应用
|
||||
================================================================================
|
||||
**Android (x86)**项目致力于移植Android系统到X86处理器上,使用户可以更容易的在任何电脑上安装Android。他们通过使用android源码,增加补丁来使Android能够在X86处理器,笔记本电脑和平板电脑下工作。
|
||||
|
||||

|
||||
在Linux安装Android 4.4 KitKat
|
||||
|
||||
前一段时间,项目组发布了最新的“Android KitKat 4.4 RC2”,下面,我将说明如何在VirtualBox上安装,不过有一个小问题,安装完成Android后鼠标指针不工作了,我猜,如果你根据本教程将它安装成主系统,这个鼠标应该可以工作,否则我们只能使用键盘了。
|
||||
|
||||
### 第一步: 在linux上安装VirtualBox ###
|
||||
|
||||
**1.** 大多数的Linux发行版中,官方源都有VirtualBox,例如在Ubuntu中安装
|
||||
|
||||
$ sudo apt-get install virtualbox
|
||||
|
||||
其他的Linux发行版,像**RHEL, CentOS and Fedora**,请参考下面文章来安装VirtualBox
|
||||
|
||||
- [Install VirtualBox in RHEL, CentOS and Fedora][1]
|
||||
|
||||
### 第二步: 下载并在VirtualBox中安装Android 4.4 kitkat ###
|
||||
|
||||
**2.** 这步挺简单的,只是需要去[androud Sourceforge.net][2]项目下载 **Android 4.4 x86 Kit Kat**文件
|
||||
|
||||
**3.** 要想安装**Android 4.4 kitkat**,首先,你需要启动刚刚下载.iso文件,打开 **VirtualBox**,创建一个新的虚拟机,然后按照下面图片设置:
|
||||
|
||||

|
||||
创建新的虚拟机
|
||||
|
||||
**4.** 接下来,它会询问你新设备的内存大小,Android 4.4 kikat需要1G内存才能完美运行,但是由于我的电脑只有1G内存,我只能选择512MB。
|
||||
|
||||

|
||||
设置内存
|
||||
|
||||
**5.** 选择“现在创建虚拟硬盘”(“Create a virtual hard drive now”)来创建一个新的硬盘。
|
||||
|
||||

|
||||
创建虚拟硬盘
|
||||
|
||||
**6.** 它现在会询问你新虚拟硬盘的类型,选择**VDI**
|
||||
|
||||

|
||||
选择硬盘驱动类型
|
||||
|
||||

|
||||
选择存储方式
|
||||
|
||||
**7.** 现在设置虚拟硬盘大小,你可以按照你的所需来设置任何大小,但是除了将来安装Apps所用的空间,至少需要**4G**来保证系统正确安装。
|
||||
|
||||

|
||||
设置虚拟硬盘大小
|
||||
|
||||
**8.** 现在你的新虚拟设备创建好了,可以启动下载的**.iso**文件了,从左边的列表选择创建的虚拟机,点击**设置** -> **存储** ,如下图,选择**android 4.4 kitkat RC2**的镜像文件。
|
||||
|
||||

|
||||
选择Android KitKat ISO
|
||||
|
||||
**9.** 点击**OK**, 打开机器,启动.iso镜像, 选择 “**安装**” 开始在虚拟机上安装系统.
|
||||
|
||||

|
||||
选择安装Android Kit Kat
|
||||
|
||||
**10.** 请选择一个分区来安装Android-x86
|
||||
|
||||

|
||||
选择 Partition Drive
|
||||
|
||||
**11.** 如下图,你可以看见cfdisk界面,cfdisk是一个分区工具,我们将要使用它来创建一个新的硬盘分区,用来安装Android 4.4,现在,点击 “**New**”
|
||||
|
||||

|
||||
创建新分区
|
||||
|
||||
**12.** 选择“**Primary**”作为分区类型
|
||||
|
||||

|
||||
选择主分区
|
||||
|
||||
**13.** 接下来,设置分区大小
|
||||
|
||||

|
||||
设置分区大小
|
||||
|
||||
**14.** 现在我们必须给硬盘创建新的引导使其能够写入新的分区表,点击“**Bootable**”给引导标记新的分区,你不会注意到有任何变化,但是引导标记将会自己给选中分区。
|
||||
|
||||

|
||||
制作分区引导
|
||||
|
||||
**15.** 完成之后,点击“**Write**”对硬盘写入新的分区。
|
||||
|
||||

|
||||
应用新分区
|
||||
|
||||
**16.** 它会询问你是否确认,输入“**yes**”并点击**Enter**
|
||||
|
||||

|
||||
确认分区改变
|
||||
|
||||
**17.** 现在我们的新硬盘已经创建,点击 **Quit** 你就可以看来类似下图的显示,选中刚刚创建的用来安装Android 的分区,点击**Enter**
|
||||
|
||||

|
||||
选择分区来安装Android
|
||||
|
||||
**18.** 选择“**ext3**”作为硬盘文件系统并格式化
|
||||
|
||||

|
||||
选择Ext3分区类型
|
||||
|
||||

|
||||
格式化分区
|
||||
|
||||
**19.** 它将会询问你是否需要安装GRUB启动器,当然选择**Yes**,如果不这样,你将不能启动新系统,所以选择**Yes**并点击**Enter**
|
||||
|
||||

|
||||
安装启动加载器 GRUB
|
||||
|
||||
**20.** 最后,它会问你是否设置**/system**分区能写入,选择**yes**,它会在安装完系统后帮助你减少很多麻烦。
|
||||
|
||||

|
||||
使分区能写入
|
||||
|
||||
**21.** 安装将会开始它的任务,安装器结束工作后,选择重启,在我做测试的时候,“Run-Android x86”不起作用,所以你不得不重启。
|
||||
|
||||

|
||||
Android Kit kat 安装完成
|
||||
|
||||
**22.** 我们已经完成安装**Android 4.4 KitKat RC2**,问题是VirtualBox将会继续加载**.iso**镜像文件而不是从虚拟硬盘驱动启动,所以为了修正这个问题,选择**设置** -> **存储** ->移除iso文件
|
||||
|
||||

|
||||
移除Android Kit Kat 镜像
|
||||
|
||||
**23.** 你可以启动你的虚拟设备,运行你的Android系统了
|
||||
|
||||

|
||||
启动Android Kit Kat 系统
|
||||
|
||||

|
||||
Android标志界面
|
||||
|
||||
**24.** 使用**Android**之前,你需要完成一个向导来进行配置。你会看见如下屏幕,现在的问题是,鼠标不能在**android 4.4 kitkat**工作,这意味着我们需要展示我们高超的键盘试用技巧了。首先,选择语言,你需要使用键盘**上**键和**下**键,进行到下一步,敲击**右**键移动光标,选择**Enter**
|
||||
|
||||

|
||||
Android 欢迎界面
|
||||
|
||||

|
||||
选择WiFi网络
|
||||
|
||||

|
||||
创建Android Google账户
|
||||
|
||||

|
||||
注册Google账户
|
||||
|
||||

|
||||
设置日期和时间
|
||||
|
||||

|
||||
输入你的信息
|
||||
|
||||

|
||||
Android 4.4 Kit Kat 主界面
|
||||
|
||||
|
||||
如果你没有智能手机而又想轻松使用**Play Store**apps,那么安装 **Android x86**是个不错的选择。你曾经尝试过安装android x86吗?结果怎样呢?你有没有想过android可以成为一个目标指向桌面功能的**真正操作系统**?
|
||||
|
||||
----------
|
||||
|
||||

|
||||
|
||||
[Hanny Helal][3]
|
||||
|
||||
自2010年起,成为Linux和自由软件用户,致力于多个自由软件项目。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/install-android-kitkat-in-linux/
|
||||
|
||||
译者:[Vic___](http://www.vicyu.net) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.tecmint.com/install-virtualbox-on-redhat-centos-fedora/
|
||||
[2]:http://sourceforge.net/projects/android-x86/
|
||||
[3]:http://www.tecmint.com/
|
@ -0,0 +1,76 @@
|
||||
Linux 内核的测试和调试(1)
|
||||
================================================================================
|
||||
### Linux 内核测试哲学 ###
|
||||
|
||||
不管是开源还是闭源,所有软件的开发流程中,测试是一个重要的、不可或缺的环节,Linux 内核也不例外。开发人员自测、系统测试、回归测试、压力测试,都有各自不同的目的,但是从更高一个层次上看,这些测试的最终目的又是一样的:保证软件能一直运行下去,当有新功能加进去时,要保证新功能可以正常工作。
|
||||
|
||||
在软件释出 release 版之前,不用回归测试就能保证稳定性,并且尽量避免在软件发布后被用户发现 bug。调试被用户发现的 bug 是一项非常浪费时间和精力的工作。因此测试是一项非常重要的工作。不像闭源和专有的操作系统,Linux 内核的开发过程是完全开放的。这种处理方式即是它的优点,也是它的缺点。多个开发者持续增加新功能、修 bug、不断集成与测试 —— 当环境有新的硬件或功能时,这种开发方式能够保证内核能持续工作。在开源项目中,开发者与用户共享测试的结果,这也是开源项目与闭源项目之间的一个很重要的差别。
|
||||
|
||||
几乎所有 Linux 内核开发者都是活跃的 Linux 用户。内核测试人员不一定非得是内核开发者,相反,用户和开发者如果对新增的代码不是很熟悉,他们的测试效果会比代码开发人员自己测试的效果要好很多。也就是说,开发者的单元自测能验证软件的功能,但并不能保证在其他代码、其他功能、其他软件、硬件环境下面运行时会出现什么问题。开发者无法预料、也没有机会和资源来测试所有环境。因此,用户在 Linux 内核开发过程中起到非常重要的角色。
|
||||
|
||||
现在我们已经了解了持续集成测试的重要性,接下来我们会详细介绍测试的知识。但在此之前,我还是向你介绍一下开发的过程,以便让大家了解它是怎么工作的,以及如何把补丁打进内核主线。
|
||||
|
||||
全世界共有3000多个内核开发者为 Linux 内核贡献代码,每天都有新代码添加到内核,结果是大概2个月就能产生一个release ,包括几个稳定版和扩展稳定版。新功能的开发与已发布的稳定版集成测试流程在同时进行。
|
||||
|
||||
关于开发流程的详细描述,请参考[Greg Kroah-Hartman 的 Linux 内核开发的介绍][1]。
|
||||
|
||||
这份教程适合与初学者以及有经验的内核开发者,如果你想加入到内核开发者行列,那么它也适合你。有经验的开发人员可以跳过那些介绍基础测试和调试的章节。
|
||||
|
||||
这份教程介绍如何测试和调试 Linux 内核、工具、脚本以及在回归测试和集成测试中使用的调试机制。另外,本文还会介绍如何使用 git 把针对一个 bug 的补丁分离出来,再介绍把你的补丁提交到内核的邮件列表之前需要做些什么。我将会使用 Linux PM 作为测试它调试的对象。尽管本文讨论的是 Linux 内核,但是介绍的方法也适用于任何其他软件开发项目。
|
||||
|
||||
### 配置开发与测试的系统 ###
|
||||
|
||||
第一步,找一个满足你需求的开发环境,x86-64 是一个比较理想的选择,除非你必须用特别的架构。
|
||||
|
||||
第二步,安装 Linux 发行版,我推荐 Ubuntu,所以本教程会介绍基于 Ubuntu 的配置过程。你可以参考[如何使用 Ubuntu][2] 来安装一个 Ubuntu 系统。
|
||||
|
||||
在开发和测试环境,最好要保证你的 boot 分区有足够的空间来存放内核文件。你可以为 boot 分区留下 3GB 空间,或把 boot 分区直接放到根目录下,这样 boot 分区可以使用整个磁盘的空间。
|
||||
|
||||
安装好操作系统后,确保 root 用户可用,确保你的用户身份可以使用 sudo 命令。你的系统也许已经安装了 build-essential,它是编译内核必备的软件包,如果没安装,运行下面的命令:
|
||||
|
||||
sudo apt-get install build-essential
|
||||
|
||||
然后运行下面的命令,保证你的系统能够交叉编译内核。下面的 ncurses-dev 安装包是运行 make menuconfig 命令必须用到的。
|
||||
|
||||
sudo apt-get install binutils-multiarch
|
||||
|
||||
sudo apt-get install ncurses-dev
|
||||
|
||||
sudo apt-get install alien
|
||||
|
||||
然后安装一些每个内核开发者都会用到的工具包:
|
||||
|
||||
sudo apt-get install git
|
||||
|
||||
sudo apt-get install cscope
|
||||
|
||||
sudo apt-get install meld
|
||||
|
||||
sudo apt-get install gitk
|
||||
|
||||
如果你喜欢把内核通过交叉编译以支持非 x86_64 架构的环境,请参考[在 x86_64 上交叉编译 Linux 内核][3]。
|
||||
|
||||
### 稳定的内核 ###
|
||||
|
||||
使用 git 克隆一个稳定的内核,然后编译安装。你可以参考[Linux 内核结构][4]来找到最新的稳定版和开发主线。
|
||||
|
||||
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
|
||||
|
||||
上面的步骤将会创建一个新的目录,名为 linux-stable,并把源码下载到里面。
|
||||
|
||||
你也可以直接下载压缩包并解压出源码,无需使用 git:
|
||||
|
||||
tar xvf linux-3.x.y.tar.xz
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,0
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[wxy](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://events.linuxfoundation.org/images/stories/pdf/als2012_gregkh.pdf
|
||||
[2]:http://howtoubuntu.org/
|
||||
[3]:http://linuxdriverproject.org/mediawiki/index.php/Cross-compiling_Linux_kernel_on_x86_64
|
||||
[4]:https://www.kernel.org/
|
@ -0,0 +1,106 @@
|
||||
Linux 内核测试与调试(2)
|
||||
================================================================================
|
||||
### 编译安装稳定版内核 ###
|
||||
|
||||
如果你用 git 下载源码,就执行以下命令:
|
||||
|
||||
cd linux-stable
|
||||
|
||||
git checkout linux-3.x.y
|
||||
|
||||
如果是直接下载压缩文件,用以下命令进入源码目录:
|
||||
|
||||
cd linux-3.x.y
|
||||
|
||||
如果你想把内核安装到自己的系统上,最安全的方法是使用你安装好的发行版拥有的配置文件。你可以在 /boot 目录找到当前发行版的内核配置文件:
|
||||
|
||||
cp /boot/config-3.x.y-z-generic .config
|
||||
|
||||
运行下面的命令,可以在当前内核配置的基础上修改一些小地方,然后产生新的内核配置文件。比如说新的内核比你的 Ubuntu 发行版自带的内核多了些新功能,而你正好需要用到它们,这个时候你就要修改配置了。
|
||||
|
||||
make oldconfig
|
||||
|
||||
完成配置后,就可以编译了:
|
||||
|
||||
make all
|
||||
|
||||
完成编译后,安装这个新的内核:
|
||||
|
||||
sudo "make modules_install install"
|
||||
|
||||
上面的命令安装新内核,并把新内核作为启动项添加到 grub 文件(LCTT:就是你下次开机时会多出一个开机选项)。好了你可以重启电脑,然后选择新的内核启动系统。等等!先别冲动,在重启电脑之前,我们保存下编译内核产生的日志,用于比较和查找错误(如果有错误发生的话):
|
||||
|
||||
dmesg -t > dmesg_current
|
||||
|
||||
dmesg -t -k > dmesg_kernel
|
||||
|
||||
dmesg -t -l emerg > dmesg_current_emerg
|
||||
|
||||
dmesg -t -l alert > dmesg_current_alert
|
||||
|
||||
dmesg -t -l crit > dmesg_current_alert
|
||||
|
||||
dmesg -t -l err > dmesg_current_err
|
||||
|
||||
dmesg -t -l warn > dmesg_current_warn
|
||||
|
||||
正常的话,dmesg 不会输出 emerg, alert, crit 和 err 级别的信息。如果你不幸看到这些输出了,说明内核或者你的硬件环境有问题。
|
||||
|
||||
再介绍一些重启前的需要执行的操作。谁也不能保证新内核能够正常启动,所以请不要潇洒地把老内核删除,至少保留一个稳定可用的内核在系统上。修改一下 /etc/default/grub 文件:
|
||||
|
||||
使用 earlyprink=vga 作为内核启动选项,把系统早期启动的信息打印到显示屏上:
|
||||
|
||||
GRUB_CMDLINE_LINUX="earlyprink=vga"
|
||||
|
||||
将 GRUB_TIMEOUT 的值设置成10秒到15秒之间的值,保证在开机启动的时候你有足够的时间来选择启动哪个内核:
|
||||
|
||||
取消对 GRUB_TIMEOUT 的注释,并把它设置为10:GRUB_TIMEOUT=10
|
||||
注释掉 GRUB_HIDDEN_TIMEOUT 和 GRUB_HIDDEN_TIMEOUT_QUIET
|
||||
|
||||
运行 update-grub 命令,更新 /boot 目录下的 grub 配置文件:
|
||||
|
||||
sudo update-grub
|
||||
|
||||
现在可以重启系统了。新内核起来后,比较新老内核的 dmesg 信息,看看新的内核有没有编译错误。如果新内核启动失败,你需要通过老内核启动系统,然后分析下为什么失败。
|
||||
|
||||
### 跟上节奏,永不落后(编译最新版内核) ###
|
||||
|
||||
如果你想开上内核快车道,追求与时俱进,那就去下载 mainline 状态的内核或 linux-next 状态的内核(LCTT:读者可进入 kernel.org 获取代码,linux 代码被分为4种状态:mainline, stable, longterm, linux-next)。安装测试 mainline 状态或 linux-next 状态的内核,你就可以在正式发布之前帮助内核找到并修复里面的 bug。
|
||||
|
||||
mainline 状态的内核源码:
|
||||
|
||||
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
|
||||
|
||||
linux-next 状态的内核源码:
|
||||
|
||||
git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
|
||||
|
||||
编译安装这两种内核的步骤与编译安装稳定版内核一样。按之前讲过的步骤来就行了。
|
||||
|
||||
### 打补丁 ###
|
||||
|
||||
Linux 内核的补丁是一个文本文件,包含新源码与老源码之间的差异。每个补丁只包含自己所依赖的源码的改动,除非它被特意包含进一系列补丁之中。打补丁方法如下:
|
||||
|
||||
patch -p1 < file.patch
|
||||
|
||||
git apply --index file.patch
|
||||
|
||||
两种方法都可以打补丁。但是,如果你要打的补丁包含一个新文件,git 命令不能识别这个新增的文件,也就是说这个新文件在 git 里面属于 untracked 文件(LCTT:玩 git 的人对这个会比较熟悉,就是文件处于未被跟踪的状态,你需要使用 git add <file> 命令将文件放入暂存区)。git diff 命令不会将这个文件的增量显示出来,并且 git status 命令会显示这个文件处于 untracked 状态。
|
||||
|
||||
大多数情况下,有个没被跟踪的文件,对于编译安装内核来说没什么问题,但是 git 操作就会出现一些问题了: git reset --hard 命令不会删除这个新加的文件,并且接下来的 git pull 操作也会失败。你有多种选择来避免上面所说的状况:
|
||||
|
||||
选项1,不跟踪这个新文件:
|
||||
|
||||
> 如果打补丁后新添加了文件,在 git reset --hard 前使用 git clean 命令来删除没有被跟踪的文件。举个例子,git clean -dfx 命令会强制删除未被跟踪的目录和文件,忽略在 .gitigniore 文件内规定的文件。如果你不在乎哪些文件会被删除,你可以使用 -q 选项让 git clean 命令进入安静模式,不输出任何处理过程。
|
||||
|
||||
选项2,跟踪新文件:
|
||||
|
||||
> 你可以在使用 git apply --index file.patch 命令后让 git 跟踪打完补丁后新产生的文件(LCTT:使用 git add <new file> 命令),就是让 git 把文件放入 index 区域。做完这个后,git diff 命令会将新文件的增量打印出来,git status 也会显示者这是一个正常的新增文件。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,1
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -0,0 +1,125 @@
|
||||
Linux 内核测试与调试(3)
|
||||
================================================================================
|
||||
### 基本测试 ###
|
||||
|
||||
安装好内核后,试试能不能启动它。能启动的话,检查 dmesg 看看有没有隐藏的错误。试试下面的功能:
|
||||
|
||||
- 网络(Wifi 或者网线)是否可用?
|
||||
- ssh 是否可用?
|
||||
- 使用 ssh 远程传输文件。
|
||||
- 使用 git clone 和 git pull 命令。
|
||||
- 用用网络浏览器。
|
||||
- 查看 email。
|
||||
- 使用 ftp, wget 等软件下载文件。
|
||||
- 播放音频视频文件。
|
||||
- 连上 USB 鼠标等设备。
|
||||
|
||||
|
||||
### 检查内核日志 ###
|
||||
|
||||
使用 dmesg 查看隐藏的问题,对于定位新代码带来的 bug 是一个好方法。一般来说,dmesg 不会输出新的 crit, alert, emerg 级别的错误信息,也不应该出现新的 err 级别的信息。你要注意的是那些 warn 级别的日志信息。请注意 warn 这个级别的信息并不是坏消息,新代码带来新的警告信息,不会给内核带去严重的影响。
|
||||
|
||||
- dmesg -t -l emerg
|
||||
- dmesg -t -l crit
|
||||
- dmesg -t -l alert
|
||||
- dmesg -t -l err
|
||||
- dmesg -t -l warn
|
||||
- dmesg -t -k
|
||||
- dmesg -t
|
||||
|
||||
下面的脚本运行了上面的命令,并且将输出保存起来,以便与老的内核的 dmesg 输出作比较(LCTT:老内核的 dmesg 输出在本系列的[第二篇文章][3]中有介绍)。然后运行 diff 命令,查看新老内核 dmesg 日志之间的不同。这个脚本需要输入老内核版本号,如果不输入参数,它只会生成新内核的 dmesg 日志文件后直接退出,不再作比较(LCTT:话是这么说没错,但点开脚本一看,没输参数的话,这货会直接退出,连新内核的 dmesg 日志也不会保存的)。如果 dmesg 日志有新的警告信息,表示新发布的内核有漏网之“虫”,这些 bug 逃过了自测和系统测试。你要看看,那些警告信息后面有没有栈跟踪信息?也许这里有很多问题需要你进一步调查分析。
|
||||
|
||||
- [**dmesg 测试脚本**][1]
|
||||
|
||||
### 压力测试 ###
|
||||
|
||||
执行压力测试的一个好办法是同时跑三四个内核编译任务。下载各种版本的内核,同时编译它们,并记录时间。比较新内核跑压力测试和老内核跑压力测试所花的时间,然后可以定位新内核的性能。如果新内核跑压力测试的时间比老内核的更长,说明新内核的部分模块性能退步了。性能问题很难调试出来。第一步是找出哪里导致的性能退步。同时跑多个内核编译任务对检测内核整体性能来说是个好方法,但是这种方法涵盖了多个内核模块,比如内存管理、文件系统、DMA、驱动等(LCTT:也就是说,这种压力测试没办法定位到是哪个模块造成了性能的下降)。
|
||||
|
||||
time make all
|
||||
|
||||
### 内核测试工具 ###
|
||||
|
||||
我们可以在 Linux 内核本身找到多种测试方法。下面介绍一个很好用的功能测试工具集: ktest 套件
|
||||
|
||||
ktest 是一个自动测试套件,它可以提供编译安装启动内核一条龙测试服务,也可以跑交叉编译测试,前提是你的系统有安装交叉编译所需要的软件。ktest 依赖于 flex 和 bison。详细信息请参考放在 tools/testing/ktest 目录下的文档,你可以自学成材。另外还有一些参考资料教你怎么使用 ktest:
|
||||
|
||||
- [**ktest-eLinux.org**][2]
|
||||
|
||||
### tools/testing/selftests 套件 ###
|
||||
|
||||
我们来玩玩自测吧。内核源码的多个子系统都有自己的自测工具,到目前为止,断点、cpu热插拔、efivarfs、IPC、KCMP、内存热插拔、mqueue、网络、powerpc、ptrace、rcutorture、定时器和虚拟机子系统都有自测工具。另外,用户态内存的自测工具可以利用 test_user_copy 模块来测试用户态内存到内核态的拷贝过程。下面的命令演示了如何使用这些测试工具:
|
||||
|
||||
编译测试:
|
||||
|
||||
make -C tools/testing/selftests
|
||||
|
||||
测试全部:(有些测试需要 root 权限,你需要以 root 用户登入系统然后运行命令)
|
||||
|
||||
make -C tools/testing/selftests run_tests
|
||||
|
||||
只测试单个子系统:
|
||||
|
||||
make -C tools/testing/selftests TARGETS=vm run_tests
|
||||
|
||||
### tools/testing/fault-injection 套件 ###
|
||||
|
||||
在 tools/testing 目录下的另一个测试套件是 fault-injection。failcmd.sh 脚本用于检测 slab 和内存页分配器的错误。这些工具可以测试内核能否很好地从错误状态中恢复回来。这些测试需要用到 root 权限。下面简单介绍了一些当前能提供的错误检测方法。随着错误检测方法的增加,这份名单也会不断增长。最新的名单请参考 Documentation/fault-injection/fault-injection.txt 文档。
|
||||
|
||||
failslab (默认选项)
|
||||
|
||||
> 产生 slab 分配错误。作用于 kmalloc(), kmem_cache_alloc() 等函数(LCTT:产生的结果是调用这些函数就会返回失败,可以模拟程序分不到内存时是否还能稳定运行下去)。
|
||||
|
||||
fail\_page\_alloc
|
||||
|
||||
> 产生内存页分配的错误。作用于 alloc_pages(), get_free_pages() 等函数(LCTT:同上,调用这些函数,返回错误)。
|
||||
|
||||
fail\_make\_request
|
||||
|
||||
> 对满足条件(可以设置 /sys/block//make-it-fail 或 /sys/block///make-it-fail 文件)的磁盘产生 IO 错误,作用于 generic_make_request() 函数(LCTT:所有针对这块磁盘的读或写请求都会出错)。
|
||||
|
||||
fail\_mmc\_request
|
||||
|
||||
> 对满足条件(可以设置 /sys/kernel/debug/mmc0/fail\_mmc\_request 这个 debugfs 属性)的磁盘产生 MMC 数据错误。
|
||||
|
||||
你可以自己配置 fault-injection 套件的功能。fault-inject-debugfs 内核模块在系统运行时会在 debugfs 文件系统下面提供一些属性文件。你可以指定出错的概率,指定两个错误之间的时间间隔,当然本套件还能提供更多其他功能,具体请查看 Documentation/fault-injection/fault-injection.txt。 Boot 选项可以让你的系统在 debugfs 文件系统起来之前就可以产生错误,下面列出几个 boot 选项:
|
||||
|
||||
- failslab=
|
||||
- fail\_page_alloc=
|
||||
- fail\_make\_request=
|
||||
- mmc\_core.fail\_request=[interval],[probability],[space],[times]
|
||||
|
||||
fault-injection 套件提供接口,以便增加新的功能。下面简单介绍下增加新功能的步骤,详细信息请参考上面提到过的文档:
|
||||
|
||||
使用 DECLARE\_FAULT\_INJECTION(name) 定义默认属性;
|
||||
|
||||
> 详细信息可查看 fault-inject.h 中定义的 struct fault\_attr 结构体。
|
||||
|
||||
配置 fault 属性,新建一个 boot 选项;
|
||||
|
||||
> 这步可以使用 setup\_fault\_attr(attr, str) 函数完成,为了能在系统启动的早期产生错误,添加一个 boot 选项这一步是必须要有的。
|
||||
|
||||
添加 debugfs 属性;
|
||||
|
||||
> 使用 fault\_create\_debugfs\_attr(name, parent, attr) 函数,为新功能添加新的 debugfs 属性。
|
||||
|
||||
为模块设置参数;
|
||||
|
||||
> 为模块添加一些参数,对于配置错误属性来说是一个好主意,特别是当新功能的应用范围受限于单个内核模块的时候(LCTT:不同内核,你的新功能可能需要不同的测试参数,通过设置参数,你的功能可以不必为了迎合不同内核而每次都重新编译一遍)。
|
||||
|
||||
添加一个钩子函数到错误测试的代码中。
|
||||
|
||||
> should\_fail(attr, size) —— 当这个钩子函数返回 true 时,用户的代码就应该产生一个错误。
|
||||
|
||||
应用程序使用这个 fault-injection 套件可以指定某个具体的内核模块产生 slab 和内存页分配的错误,这样就可以缩小性能测试的范围。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,2
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://linuxdriverproject.org/mediawiki/index.php/Dmesg_regression_check_script
|
||||
[2]:http://elinux.org/Ktest#Git_Bisect_type
|
||||
[3]:http://linux.cn/article-3629-1.html
|
@ -0,0 +1,145 @@
|
||||
Linux 内核测试和调试(4)
|
||||
================================================================================
|
||||
### 自动测试工具 ###
|
||||
|
||||
这里列出一些能满足不同需求的测试工具供你选择。本小节只是简单介绍个大概,并不提供详细操作指南。
|
||||
|
||||
#### [AuToTest][1] ####
|
||||
|
||||
> AuToTest 是一个全自动测试框架,存在的主要目的就是测试 Linux 内核,当然也可以用来测试其他东西,比如测试一块新硬件是否能稳定工作。AuToTest 是开源软件,以 GPL 方式授权,运行于 server-client 架构(即 C/S 架构)。你可以通过配置 server 端来对运行了 client 端的系统执行初始化、运行与监测工作,也可以自己在目标系统上让 client 运行起来。另外你可以为这个测试框架添加测试用例,详情请参考[AuToTest 白皮书][2]。
|
||||
|
||||
#### Linaro Automated Validation Architecture ####
|
||||
|
||||
> LAVA 自动测试框架用于自动安装于运行测试。举个例子:你在 LAVA 里面只需运行几个命令就可以跑 LTP(LCTT:Linux Test Project,中文是 Linux 测试计划,SGI发起并由IBM负责维护,目的是为开源社区提供测试套件来验证Linux的可靠性、健壮性和稳定性)。通过 LAVA 命令可以自动为你安装 LTP 所需要的所有依赖包,下载源码、编译编码、将 LTP 安装到某个独立的地方,方便卸载 LTP 时能移除所有二进制文件。安装好 LTP 后,运行 LAVA 命令时添加 'ltp' 选项就可以运行 LTP 测试任务了,它会将测试结果以文件方式保存下来,文件名包含测试名称、时间戳。这些测试结果可以留着供以后参考。这是个发现软件退化(如果软件退化了的话)的好方法。下面列出 LAVA 配合 LTP 使用的一些命令:
|
||||
|
||||
显示 LAVA 支持的测试列表:
|
||||
|
||||
lava-test list-tests
|
||||
|
||||
安装测试套件:
|
||||
|
||||
lava-test install ltp
|
||||
|
||||
运行测试:
|
||||
|
||||
lava-test run ltp
|
||||
|
||||
查看结果:
|
||||
|
||||
lava-test results show ltp-timestamp.0
|
||||
|
||||
卸载测试套件:
|
||||
|
||||
lava-test uninstall ltp
|
||||
|
||||
### 内核调试功能 ###
|
||||
|
||||
Linux 内核本身包含很多调试功能,比如 kmemcheck 和 kmemleak。
|
||||
|
||||
#### kmemcheck ####
|
||||
|
||||
> kmemcheck 是一个动态检查工具,可以检测出一些未被初始化的内存(LCTT:内核态使用这些内存可能会造成系统崩溃)并发出警告。它的功能与 Valgrind 类似,只是 Valgrind 运行在用户态,而 kmemchecke 运行在内核态。编译内核时加上 `CONFIG_KMEMCHECK` 选项打开 kmemcheck 调试功能。你可以阅读 Documentation/kmemcheck.txt 来学习如何配置使用这个功能,以及如何看懂调试结果。
|
||||
|
||||
#### kmemleak ####
|
||||
|
||||
> kmemleak 通过类似于垃圾收集器的功能来检测内核是否有内存泄漏问题。而 kmemleak 与垃圾收集器的不同之处在于前者不会释放孤儿目标(LCTT:不会再被使用的、应该被释放而没被释放的内存区域),而是将它们打印到 /sys/kernel/debug/kmemleak 文件中。用户态的 Valgrind 也有一个类似的功能,使用 --leak-check 选项可以检测并报错内存泄漏问题,但并不释放这个孤儿内存。编译内核时使用 `CONFIG_DEBUG_KMEMLEAK` 选项打开 kmemcleak 调试功能。阅读 Documentation/kmemleak.txt 来学习怎么使用这个工具并读懂调试结果。
|
||||
|
||||
### 内核调试接口 ###
|
||||
|
||||
Linux 内核通过配置选项、调试用的 API、接口和框架来支持动态或静态的调试。我们现在就好好学习学习这些牛逼的功能,从静态编译选项开始讲。
|
||||
|
||||
### 调试配置选项:静态编译 ###
|
||||
|
||||
大部分 Linux 内核以及内核模块都包含调试选项,你只要在编译内核或内核模块的时候添加这个静态调试选项,程序运行时后就会产生调试信息,并记录在 dmesg 缓存中。
|
||||
|
||||
### 调试的 API ###
|
||||
|
||||
调试 API 的一个很好的例子是 DMA-debug,用来调试驱动是否错误使用了 DMA 提供的 API。它会跟踪每个设备的映射关系,检测程序有没有试图为一些根本不存在的映射执行“取消映射”操作,检测代码建立 DMA 映射后可能产生的“映射丢失”的错误。内核配置选项 `CONFIG_HAVE_DMA_APT_DEBUG` 和 `CONFIG_DMA_API_DEBUG` 可以为内核提供这个功能。其中,`CONFIG_DMA_API_DEBUG` 选项启用后,内核调用 DMA 的 API 的同时也会调用 Debug-dma 接口。举例来说,当一个驱动调用 `dma_map_page()` 函数来映射一个 DMA 缓存时,`dma_map_page()` 会调用`debug_dma_map_page()` 函数来跟踪这个缓存,直到驱动调用 `dma_unmap_page()` 来取消映射。详细内容请参考[使用 DMA 调试 API 检测潜在的数据污染和内存泄漏问题][3]。
|
||||
|
||||
### 动态调试 ###
|
||||
|
||||
动态调试功能就是你可以决定在程序运行过程中是否要 `pr_debug()`, `dev_dbg()`, `print_hex_dump_debug()`, `print_hex_dump_bytes()` 这些函数正常运行起来。什么意思?当程序运行过程中出现错误时,你可以指定程序打印有针对性的、详细的调试信息。这功能牛逼极了,我们不再需要为了添加调试代码定位一个问题,而重新编译安装内核。你可以指定 `CONDIF_DYNAMIC_DEBUG` 选项打开动态调试功能,然后通过 `/sys/kernel/debug/dynamic_debug/control` 接口指定要打印哪些调试日志。下面分别列出代码级别和模块级别打印日志的操作方法:
|
||||
|
||||
让 kernel/power/suspend.c 源码第340行的 `pr_debug()` 函数打印日志:
|
||||
|
||||
echo 'file suspend.c line 340 +p' > /sys/kernel/debug/dynamic_debug/control
|
||||
|
||||
让内核模块在加载过程中打开动态调试功能:
|
||||
|
||||
> 使用 modprobe 命令加在模块时加上 dyndbg='plmft' 选项。
|
||||
|
||||
让内核模块的动态调试功能在重启后依然有效:
|
||||
|
||||
> 编辑 /etc/modprobe.d/modname.conf 文件(没有这个文件就创建一个),添加 dyndbg='plmft' 选项。然而对于哪些通过 initramfs 加载的驱动来说,这个配置基本无效(LCTT:免费奉送点比较高级的知识哈。系统启动时,需要先让 initramfs 挂载一个虚拟的文件系统,然后再挂载启动盘上的真实文件系统。这个虚拟文件系统里面的文件是 initramfs 自己提供的,也就是说你在真实的文件系统下面配置了 /etc/modprobe.d/modname.conf 这个文件,initramfs 是压根不去理会的。站在内核驱动的角度看:如果内核驱动在 initramfs 过程中被加载到内核,这个驱动读取到的 /etc/modprobe.d/modname.conf 是 initramfs 提供的,而不是你编辑的那个。所以会有上述“写了配置文件后重启依然无效”的结论)。对于这种刁民,呃,刁驱动,我们需要修改 grub 配置文件,在 kernel 那一行添加 module.dyndbg='plmft' 参数,这样你的驱动就可以开机启动动态调试功能了。
|
||||
|
||||
想打印更详细的调试信息,可以使用 `dynamic_debug.verbose=1` 选项。参考 Documentation/dynamic-debug-howto.txt 文件获取更多信息。
|
||||
|
||||
### 设置追踪点 ###
|
||||
|
||||
到目前为止,我们介绍了多种动态和静态调试方法。静态调试选项和静态调试钩子函数(比如 DMA Debug API)需要的编译过程打开或关闭,导致了一个难过的事实:需要重新编译安装内核。而动态编译功能省去了“重新编译”这件麻烦事,但是也有不足的地方,就是调试代码引入了条件变量,用于判断是否打印调试信息。这种方法可以让你在程序运行时决定是否打印日志,但需要执行额外的判断过程。“追踪点”代码只会在程序运行过程中使用“追踪点”功能才会被触发。也就是说,“追踪点”代码与上述说的两种方法都不一样。当用不到它时,它不会运行(LCTT:动态调试的话,代码每次都需要查看下变量,然后判断是否需要打印日志;而“追踪点”貌似利用某种触发机制,不需要每次都去查看变量)。当你需要用到它时,程序的代码会把“追踪点”代码包含进去。它不会添加任何条件变量来增加系统的运行负担。
|
||||
|
||||
详细信息请参考[布置追踪代码的小技巧][4]。
|
||||
|
||||
### “追踪点”的原理 ###
|
||||
|
||||
追踪点使用“跳跃标签”,这是一种使用分支跳转的编码修正(code modification)技术。
|
||||
|
||||
当关闭追踪点的时候,其伪代码看起来时这样的:
|
||||
|
||||
[ code1 ]
|
||||
nop
|
||||
back:
|
||||
[ code2 ]
|
||||
return;
|
||||
tracepoint:
|
||||
[ tracepoint code ]
|
||||
jmp back;
|
||||
|
||||
当打开追踪点的时候,其伪代码看起来时这样的:(注意追踪点代码出现的位置)
|
||||
|
||||
[ code1 ]
|
||||
jmp tracepoint
|
||||
back:
|
||||
[ code2 ]
|
||||
return;
|
||||
tracepoint:
|
||||
[ tracepoint code ]
|
||||
jmp back;
|
||||
|
||||
(LCTT:咳咳,解释解释上面两段伪代码吧,能看懂的大神请忽略这段注释。不使用追踪点时,代码运行过程是:code1->code2->return结束;使用追踪点时,代码运行过程是:code1->跳到tracepoint code执行调试代码->跳回code2->return结束。两段代码的唯一区别就是第二行,前者为 nop(不做任何操作),后者为 jmp tracepoint (跳到调试代码)。)
|
||||
|
||||
### Linux 电源管理子系统的测试 ###
|
||||
|
||||
使用静态调试、动态调试和追踪调试技术,我们来跑一下磁盘的电源管理测试。当系统被挂起时,内核会为磁盘创建一个休眠镜像,使磁盘进入休眠模式,当系统重新被唤醒时,内核又利用这个休眠镜像重新唤醒磁盘。
|
||||
|
||||
设置挂起设备与唤醒设备需要的时间:
|
||||
|
||||
echo 1 > /sys/power/pm_print_times
|
||||
|
||||
以 reboot 模式挂起磁盘:
|
||||
|
||||
echo reboot > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
以 shutdown 模式挂起磁盘 —— 与 reboot 模式一样,只是重新唤醒磁盘的话还需要电源提供。
|
||||
|
||||
echo shutdown > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
以 platform 模式挂起磁盘 —— 能测试更多内容,比如 BIOS 挂起和唤醒,会涉及到 ACPI 功能。我们推荐你使用这种方式,把 BIOS 也拉下水陪你玩挂起和唤醒游戏。
|
||||
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via:http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,3
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://autotest.github.io/
|
||||
[2]:https://github.com/autotest/autotest/wiki/WhitePaper
|
||||
[3]:http://events.linuxfoundation.org/sites/events/files/slides/Shuah_Khan_dma_map_error.pdf
|
||||
[4]:http://www.linuxjournal.com/content/july-2013-linux-kernel-news
|
@ -0,0 +1,90 @@
|
||||
Linux 内核测试和调试(5)
|
||||
================================================================================
|
||||
### 仿真环境下进行 Linux 电源管理子系统测试 ###
|
||||
|
||||
Linux 电源管理子系统在仿真环境下提供5种测试方式。这些方式仅仅在内核各层之间运行休眠的代码而不是真正的让系统进入休眠状态。有些平台不能挂起系统,比如说我们需要模拟飞机的飞行环境,这时候使用这种仿真环境就非常有用处了。
|
||||
|
||||
freezer - 测试停掉处理器:
|
||||
|
||||
echo freezer > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
devices - 测试停掉处理器以及挂起设备:
|
||||
|
||||
echo devices > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
platform - 测试停掉处理器、挂起设备以及平台全局控制方法(*)
|
||||
|
||||
echo platform > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
processors - 测试停掉处理器、挂起设备和平台全局控制方法(*),以及关闭未启动的 CPU。
|
||||
|
||||
echo processors > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
core - 测试停掉处理器、挂起设备和平台全局控制方法(*),关闭未启动的 CPU,以及挂起平台或系统的设备。注意:这个测试模式运行在 ACPI 系统。
|
||||
|
||||
echo core > /sys/power/pm_test
|
||||
echo platform > /sys/power/disk
|
||||
echo disk > /sys/power/state
|
||||
|
||||
### Linux 电源管理子系统追踪事件 ###
|
||||
|
||||
电源管理子系统在运行过程中支持多种追踪点和追踪事件。我将对如何使用这些追踪时间以及如何找到追踪信息作一个简单的介绍:
|
||||
|
||||
在运行时开启电源管理事件:
|
||||
|
||||
cd /sys/kernel/debug/tracing/events/power
|
||||
echo 1 > cpu_frequency/enable
|
||||
cat /sys/kernel/debug/tracing/set_event
|
||||
less /sys/kernel/debug/tracing/trace
|
||||
|
||||
为内核启动的命令添加一个参数:
|
||||
|
||||
trace_event=cpu_frequency
|
||||
|
||||
更多信息查看 Documentation/power/basic-pm-debugging.txt 以及同目录下其他的文档。
|
||||
|
||||
### git bisect 命令 ###
|
||||
|
||||
git bisect 是一个非常有用非常强大的工具,用于将 git 上的一个 commit 分离出来。我简单过一遍它的用法。
|
||||
|
||||
下面是 git bisect 的用法:
|
||||
|
||||
git bisect start
|
||||
git bisect bad # 当前版本是坏的
|
||||
git bisect good v3.14-rc6 # 上个版本是好的
|
||||
|
||||
一旦指定好好的版本和坏的版本,git bisect 就会开始把好坏两个版本之间的所有 commit 对半分,并将其中的一半提交 pull 下来。然后重新编译安装测试内核,并标记这个内核是好是坏。重复这个过程,知道某个你选好的 commit 被标记被好或者坏。我们可能需要测试多个内核版本,测到最后一个版本时,git bisect 会将一个 commit 标记为坏。下面的命令可以在 git bisect 分析过程中起到帮助作用:
|
||||
|
||||
查看 bisect 操作的过程:
|
||||
|
||||
git bisect log
|
||||
|
||||
重置 git bisect,标记错误时可以用到,保存 git log 的输出,重新操作上一次 bisect 的步骤:
|
||||
|
||||
git bisect reset
|
||||
|
||||
重放 git bisect 操作过程:
|
||||
|
||||
git bisect replay git_log_output
|
||||
|
||||
如果一个问题很清楚是在某个区域内,git bisect 命令可以定位到一个具体的内核源码树枝干上。举个例子,在调试一个镭龙显卡驱动的问题时,为 git bisect 指定 drivers/drm/radeon 参数,可以让 git bisect 只检索对 drivers/drm/radeon 里面的文件有修改的 commit。
|
||||
|
||||
让 git bisect 只检索内核树的某个枝干:
|
||||
|
||||
git bisect start drivers/drm/radeon
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,4
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -0,0 +1,136 @@
|
||||
Linux 内核的测试和调试(6)
|
||||
================================================================================
|
||||
### Linux 内核补丁测试 ###
|
||||
|
||||
你试过自己写内核补丁吗?本节介绍在把你的补丁包提交到 Linux 邮箱列表之前,需要做哪些操作。另外我们还会介绍如何把它发送出去。
|
||||
|
||||
写好代码后,编译它。把 make 过程产生的输出保存到文档中,查看新代码有没有警告信息。找到所有的警告信息,处理掉。当你的代码编译过程没有任何不正常的输出,安装这个内核,然后启动测试。如果启动正常,查看 dmesg 里面有没于错误,与老内核生成的 dmesg 日志做个比较。运行一些压力测试,请参考我们以前讲过的测试内容。如果这个补丁用于修复某个 bug,请确保真的已经修复了。如果真的修复了,请确保能通过系统测试。找出打你补丁的模块下面的回归测试工具,运行一下。如果补丁涉及到其他架构,你需要交叉编译然后测试一下。请通过下面的目录查找测试工具:
|
||||
|
||||
- linux_git/Documentation
|
||||
- linux_git/tools/testing
|
||||
- 交叉编译参考:[在 x86_64 架构上交叉编译 Linux 内核:初学者教程][1]
|
||||
|
||||
如果你对你的补丁测试结果感到很满意,你就可以提交补丁了。请确保提交 commit 的信息要描述得非常清楚。要让内核维护者和其他开发者看懂补丁所修改的内容,这一点非常重要。生成补丁后,执行 scripts/checkpatch.pl 脚本,找到 checkpatch 是产生的错误或警告(如果有的话),修复它们。重新生成补丁,直到补丁通过这个脚本的测试。重新测试这个补丁。将本补丁用于其他的内核源码上,保证不会有冲突产生。
|
||||
|
||||
现在你做好提交补丁的准备了。先运行 `scriptst/get_maintainer.pl` 来确认你应该把补丁发给哪个内核维护者。注意不要以附件形式发送补丁,而是以纯文本形式粘贴在邮件里面。确保你的邮件客户端可以发送纯文本信息,你可以试试给自己发送一份补丁邮件来测试你的邮件客户端的功能。收到自己的邮件后,运行 checkpatch 命令并给自己的内核源码打上你的补丁。如果这两部都能通过,你就可以给 Linux 邮箱列表发送补丁了。使用 git send-email 命令是提交补丁最安全的方式,可以避免你的邮箱的兼容性问题。你的 .gitconfig 文件里面需要配置好有效的 smtp 服务器,详细操作参考 git 的帮助文档。
|
||||
|
||||
更多提交补丁的规矩,请参考下面的资料:
|
||||
|
||||
- linux_git/Documentation/applying-patches.txt
|
||||
- linux_git/Documentation/SubmitChecklist
|
||||
- linux_git/Documentation/SubmittingDrivers
|
||||
- linux_git/Documentation/SubmittingPatches
|
||||
- linux_git/Documentation/stable_kernel_rules.txt
|
||||
- linux_git/Documentation/stable_api_nonsense.txt
|
||||
|
||||
下面是一些内核测试教程的资料:
|
||||
|
||||
- [USB Testing on Linux][2]
|
||||
- [Linux Kernel Tester's Guide Chapter2][3]
|
||||
- [Linux Kernel Tester's Guide][4]
|
||||
- [Testing resources at eLinux.org][5]
|
||||
- [eLinux Debugging Portal][6]
|
||||
|
||||
### 内核测试套件和项目 ###
|
||||
|
||||
除我们讨论过的测试资源之外,这里还有很多测试项目值得介绍,包括开源的和厂家自己提供的。这些项目每一个都是针对特定领域的,比如嵌入式或者企业自己使用。我们简单过一下。
|
||||
|
||||
[Linux 测试项目][7](LTP)测试套件是一系列工具的集合,用于测试内核的可靠性、健壮性和稳定性。你可以为这个项目添加自己的测试代码,并且 LTP 项目欢迎你贡献自己的代码。runltp 脚本默认情况下会测试下面的子系统:
|
||||
|
||||
- 文件系统压力测试
|
||||
- 磁盘 IO 测试
|
||||
- 内存管理压力测试
|
||||
- IPC(进程间通信)测试
|
||||
- 调度器测试
|
||||
- 命令的功能性验证测试
|
||||
- 系统调用功能验证测试
|
||||
|
||||
[**LTP-DDT**][8] 是一个基于 LTP 的测试应用(LCTT:就是 LTP 的阉割版么),专注于测试嵌入式设备驱动。
|
||||
|
||||
[**Linux Driver Verification**][9] 这个项目的目标是提高 Linux 设备驱动的质量,它为设备驱动验证开发了集成环境平台,并且利用与时俱进的研究来增强验证工具的质量。
|
||||
|
||||
### 一致性测试 ###
|
||||
|
||||
如果你有将某个 Unix 平台下的应用一直到另一个平台的经验,你就能理解 [Linux Standard Base (LSB)][10] 和 LSB 一致性测试套件的重要性了。LSB 是 Linux Foundation 工作组创建的用于降低支持不同 Linux 平台所需要的开销,方法就是通过降低不同 Linux 发行版之间的差别,保证应用在不同发行版之间的可移植性。前事不忘后事之师,Unix 世界的分歧在 Linux 世界一定要避免。这就是为什么你可以把一个 rpm 包转化成 deb 包后还能安装并正常运行的秘密。
|
||||
|
||||
### 静态分析工具 ###
|
||||
|
||||
静态分析之所以会被称为“静态分析”,是因为这些工具只分析代码,并不执行它们。分析 Linux 内核代码的静态分析工具有很多,Sparse 是 Linus Torvalds 写的专门用于检查内核静态类型的工具。它是一个语义检查器,会为 C 语言的语义建立语义检析树,执行惰性类型评估。内核编译系统支持 sparse,并且为编译内核的命令提供开启 sparse 的选项。
|
||||
|
||||
为内核所有需要重新编译的 C 文件执行 sparse 语义检查:
|
||||
|
||||
make C=1 allmodconfig
|
||||
|
||||
为内核所有 C 文件(即使不需要重新编译)执行 sparse 语义检查:
|
||||
|
||||
make C=2 allmodconfig
|
||||
|
||||
Sparse 的资源:
|
||||
|
||||
- [Sparse Archive][11]
|
||||
- [Sparse How To][12]
|
||||
|
||||
Smatch 分析程序代码的逻辑错误。它可以检测到诸如“为一个没锁上的 spinlock 执行解锁”的逻辑错误。内核源码支持 smatch:
|
||||
|
||||
在 Linux 内核中运行 smatch:
|
||||
|
||||
make CHECK="~/path/to/smatch/smatch -p=kernel" C=1 bzImage modules | tee warns.txt
|
||||
|
||||
请参考下面的资料来获取和编译 smatch。需要注意的是 smatch 是个正在发展的项目,架构会不断变化。
|
||||
|
||||
- [**Smatch**][12]
|
||||
|
||||
那么我们该怎么处理 Sparse 和 Smatch 所发现的语义和逻辑上的错误呢?一些错误可以被分离为日常问题或模块问题,可以轻易被解决。但是有些语义错误涉及到全局,因为剪切粘贴了一些代码。在一些环境中,当一些接口函数被废弃不再使用,或者仅仅做了写微小的修改,你就需要大规模更新源码。这时候你需要 Coccinelle 来帮忙。,Coccinelle 使用 SmPL 语言(语义包语言)来为 C 代码提供匹配和转换代码的功能。Coccinelle 的从一开始就作为 Linux 的附属产品持续发展的。
|
||||
|
||||
举个例子:foo(int) 函数突然变成 foo(int, char \*) 函数,多出了一个输入参数(可以把第二个参数置为 null)。所有调用 foo() 函数的代码都需要更新了,这可能是个悲摧的体力活。但是使用 Coccinelle 的话,这项工作瞬间变得轻松,脚本会帮你找到调用 foo(parameter1) 的代码,然后替换成 foo(parameter1, NULL)。做完这些后,所有调用这个函数的代码都可以运行一遍,验证下第二个参数为 NULL 是否能正常工作。关于 Coccinelle 的更多信息,以及在不同项目中(当然,也包括 Linux 内核这个项目)的使用方法,请参考项目主页:[**Cocinelle**][13]。
|
||||
|
||||
### 参考文献 ###
|
||||
|
||||
本文涵盖了很多方面,这里列出一些参考文档供读者做进一步研究。
|
||||
|
||||
- [KernelHacking][14]
|
||||
- [kernel Documentation][15]
|
||||
- [Linux Device Drivers, Third Edition][16]
|
||||
- [Dynamic Event Tracing in Linux Kernel][17]
|
||||
- [Kernel Testing: Tool and Techniques][18]
|
||||
|
||||
### 鸣谢 ###
|
||||
|
||||
感谢来自 Oracle 的 Khalid Aziz,审查校对并提供许多非常有价值的建议。感谢来自三星的 Mauro Chehab 和 Guy Martin,他们给了我多次反馈。感谢来自 Linux Foundation 的 Grey Kroah-Hartman 对本文的审阅。感谢来自三星的 Ibrahim Haddad,没有他的支持和鼓励,我可能还不会坐下来写出这篇文章。
|
||||
|
||||
----------
|
||||
|
||||

|
||||
|
||||
作者:[Shuah Khan][a]
|
||||
|
||||
Shuah Khan 是三星公司开源组的高级 Linux 内核开发工程师。
|
||||
她为 Linux 内核中的 IOMMU、DMA、电源管理、PCIe 贡献代码,同时维护内核,为内核提供补丁包。Shuah 有多年 Unix 内核开发经验。她也为 OpenHPI 和 LLDP 项目作贡献。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,5
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://events.linuxfoundation.org/sites/events/files/slides/Shuah_Khan_cross_compile_linux.pdf
|
||||
[2]:http://www.linux-usb.org/usbtest/
|
||||
[3]:http://kernelnewbies.org/Linux_Kernel_Tester%27s_Guide_Chapter2
|
||||
[4]:http://www.kerneltravel.net/downloads/tester_guide.pdf
|
||||
[5]:http://elinux.org/Test_Systems
|
||||
[6]:http://elinux.org/Debugging_Portal
|
||||
[7]:http://ltp.sourceforge.net/documentation/how-to/ltp.php
|
||||
[8]:http://processors.wiki.ti.com/index.php/LTP-DDT
|
||||
[9]:http://linuxtesting.org/project/ldv
|
||||
[10]:http://www.linuxfoundation.org/collaborate/workgroups/lsb
|
||||
[11]:http://codemonkey.org.uk/projects/git-snapshots/sparse/
|
||||
[12]:http://smatch.sourceforge.net/
|
||||
[13]:http://coccinelle.lip6.fr/
|
||||
[14]:http://kernelnewbies.org/KernelHacking
|
||||
[15]:http://kernelnewbies.org/Documents
|
||||
[16]:http://lwn.net/Kernel/LDD3/
|
||||
[17]:http://events.linuxfoundation.org/slides/lfcs2010_hiramatsu.pdf
|
||||
[18]:http://events.linuxfoundation.org/images/stories/slides/elc2013_porter.pdf
|
||||
[a]:http://www.linuxjournal.com/users/shuah-khan
|
@ -0,0 +1,68 @@
|
||||
10个有用的Linux命令面试问题及答案
|
||||
==================================================================================================================================================
|
||||
Linux命令行,以及用户使用Linux命令进行Linux shell交互,是Linux最吸引人的地方,也是面试中最普遍的话题之一。在这篇文章中,我们将提出10个面试中很重要问题,这肯定能拓宽你的知识面。
|
||||
|
||||
 Linux Command Questions
|
||||
|
||||
### 1. 如何暂停一个正在运行的进程,让其在后台运行? ###
|
||||
|
||||
**答案**:为了停止正在运行的进程,让其在后台运行,我们可以使用组合键 Ctrl+Z。
|
||||
|
||||
### 2. 什么是安装Linux所需的最小分区数量,以及如何查看系统启动信息? ###
|
||||
|
||||
**答案**:单独一个/root分区足以执行所有的系统任务,但是强烈建议安装Linux时,需要至少三个分区:/root,/boot,/swap。一个IDE硬盘驱动器支持高达63个分区,SCSI硬盘驱动器支持超过15个分区。
|
||||
|
||||
为了检查启动信息,我们可以使用cat或者dmesg命令,如下所示:
|
||||
|
||||
#cat /var/log/messages
|
||||
|
||||
OR
|
||||
|
||||
#dmesg
|
||||
|
||||
### 3. 在你的Linux机器上跟踪系统事件的守护进程名是什么?###
|
||||
|
||||
**答案**:'syslogd',它负责跟踪系统信息,并将跟踪日志存储在特定的日志文件里。
|
||||
|
||||
### 4. 在/root分区运行'fsck'命令的最低要求是什么?###
|
||||
|
||||
**答案**:/root分区必须挂载为只读模式,而不是读写模式
|
||||
|
||||
### 5. 如何分层复制/home目录到另一个目录?###
|
||||
|
||||
**答案**:Linux的'cpio'命令起到了效果。'cpio'可以分层地复制文件和目录层次结构到另一个位置。
|
||||
|
||||
### 6. 在Linux中,怎样实现日志文件的自动替换?###
|
||||
|
||||
**答案**:'logrotate'提供日志自动替换功能。
|
||||
|
||||
### 7. 怎样知道Linux中是谁在安排工作?###
|
||||
|
||||
**答案**:使用'at'命令加上'-l'选项,就可以查出。
|
||||
|
||||
### 8. 如何在不解压tar包的前提下,查看包里的内容? ###
|
||||
|
||||
**答案**:使用'tar -tvf'。选项‘t’(显示内容),‘v’(详细报告tar处理的文件信息),‘f’(使用档案文件或者设备)
|
||||
|
||||
### 9. 什么是页面错误,它是怎么发生的?###
|
||||
|
||||
**答案**:当一个程序请求内存中不存在的数据时,就会产生页面错误,导致的结果就是程序停止。
|
||||
|
||||
### 10. 什么是在程序中返回代码?###
|
||||
|
||||
**答案**:返回代码是shell的特性。返回代码显示了程序的状态,一个成功的程序执行后返回‘0’,&&可以用来决定那个应用程序先执行。
|
||||
|
||||
好了,文章要结束了。不久以后,我还会在这分享其余有趣文章的,记得和我们保持联系。还有,别忘了在评论栏里面向我们提供您的宝贵意见。
|
||||
|
||||
-----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/10-useful-interview-questions-and-answers-on-linux-commands/
|
||||
|
||||
原文作者:[Avishek Kumar][a]
|
||||
|
||||
译者:[su-kaiyao](https://github.com/su-kaiyao) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/avishek/
|
||||
|
@ -0,0 +1,42 @@
|
||||
Budgie桌面5.1 :给保守用户的超好桌面环境
|
||||
================================================================================
|
||||

|
||||
|
||||
**Evolve OS的开发者Ikey Doherty,制作了这款叫做Budgie Desktop的新桌面环境并且发布了它的新版本。**
|
||||
|
||||
Evolve OS还没有发布,但开发者正积极地进行关于它的工作。系统中并没有采用任何现有的桌面环境,他们决定最好还是制作一个自己的。这个桌面基于GNOME并用了不少GNOME的包,但它看起来却截然不同。事实上,它使用了与MATE和Cinnamon桌面相同的模式,尽管Budgie似乎更有现代感更优美一些。
|
||||
|
||||
有趣的是,桌面这个关键的技术部分却先于其将要服务的操作系统发布了,但是对此感兴趣的用户完全不必惊讶。由此也出现了可用于Ubuntu 14.04 LTS 和Ubuntu 14.10的[PPA][1],但这不是官方的。Arch Linux用户也将还会在AUR库中发现新的桌面环境。
|
||||
|
||||
“从V4版本以来,几乎所有的改变都与面板有关。它已被使用Vala语言重写,这降低了维护开销也大大降低了新贡献者进入的门槛。所以,如果你使用OBS的话,当你(希望是)今天在OBS上获取到更新,或者对Evolve OS用户,你已经安装了更新,你将只能感觉到很小的视觉差异。我的想法是不去改变外观,而是重写代码来使它更好些。”
|
||||
|
||||
“将它重写成Vala语言的程序付出了很多努力,但马上就会见到成效。将来桌面整个都将会用Vala重写,成为‘第二次写’——第二次我们会做的更好”Ikey Doherty在发布[公告][2]中这样说。
|
||||
|
||||
虽然这个桌面环境看起来已经很好了,但从版本号码可以看出,还是有很多的提升空间。开发者承诺,下一个版本6.x系列,将允许用户使用任何libpeas支持的语言编写插件,其中语言包括C,Vala,JavaScript和Python。
|
||||
|
||||
用户还会注意到,Budgie桌面的一些主要元素仍然保持原样,像菜单的位置以及图标的大小。将来,有可能可以去改变它们,但现在,用户需要关心的是哪些是可用的。
|
||||
|
||||
即使在这个初期阶段,Budgie桌面5.1看起来也要比那些可以在其他操作系统上找到的很多可选的桌面要好。
|
||||
|
||||
立即下载支持Ubuntu和Arch Linux的源代码包
|
||||
|
||||
- [GIT 源代码][3][sources] [0 KB]
|
||||
- [Ubuntu 14.04 PPA 库][4][ubuntu_deb] [0 KB]
|
||||
- [Arch Linux 二进制包][5][binary] [0 KB]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://news.softpedia.com/news/Budgie-Desktop-5-1-Is-a-Superb-New-Desktop-Environment-For-Conservative-Users-451477.shtml
|
||||
|
||||
原文作者:[Silviu Stahie][a]
|
||||
|
||||
译者:[linuhap](https://github.com/linuhap) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://news.softpedia.com/editors/browse/silviu-stahie
|
||||
[1]:https://launchpad.net/~sukso96100/+archive/ubuntu/budgie-desktop
|
||||
[2]:https://evolve-os.com/2014/07/20/budgie-desktop-v5-1-released/
|
||||
[3]:https://github.com/evolve-os/budgie-desktop/
|
||||
[4]:https://launchpad.net/~sukso96100/+archive/ubuntu/budgie-desktop?field.series_filter=trusty
|
||||
[5]:https://aur.archlinux.org/packages/budgie-desktop-git
|
614
published/201408/20140723 110 Fun Open Source Games and Apps.md
Normal file
614
published/201408/20140723 110 Fun Open Source Games and Apps.md
Normal file
@ -0,0 +1,614 @@
|
||||
translating by disylee 20140701
|
||||
110 Fun Open Source Games and Apps
|
||||
110款有趣的开源游戏和应用
|
||||
================================================================================
|
||||
|
||||
让我们再次庆祝,这个夏天伴随着一系列最好的开源游戏到来。我们已经更新了[去年的列表][1],把新开发的添加进来,与此同时把一些不再处于积极开发之中的旧游戏从列表中剔除。你能从其中找到街机、棋盘、休闲、拼图、益智、第一人称射击游戏、音乐、竞速、角色扮演、冒险、模拟和战略游戏等,也有少量其实并非真正的游戏的应用程序,但它们同样非常有趣。
|
||||
|
||||
今年,有比以往有更多的开源游戏可用于移动设备上,主要是安卓设备。这种趋势,很有希望在未来几年一直保存下去。
|
||||
|
||||
请注意,这个列表并不是排行榜。这些应用程序被分别归类,并在每个类别中按照字母顺序排列。
|
||||
|
||||
如果你想给明年的游戏列表推荐一个游戏,请随时在下面的评论区中留言。
|
||||
|
||||
### 街机游戏 ###
|
||||
|
||||
#### 1. [安迪的超级大公园][2] ####
|
||||
|
||||
你乘坐在过山车上躲避着障碍物,同时去抓取气球。其中有25个基础关卡,加上18个你可以通过获得高分来解锁的额外关卡。可使用操作系统:Windows,Linux或者安卓。
|
||||
|
||||
#### 2. [Armagetron Advanced][3] ####
|
||||
|
||||
一个3D复刻电影《创(Tron)》的游戏,这个游戏的挑战是让你操控你的轻型摩托,让对手们比你自己更早地撞上墙。它支持单机模式和最多可16人参与的网络模式。适用操作系统:Windows,Linux,OS X或者安卓。
|
||||
|
||||
#### 3. [BZFlag][4] ####
|
||||
|
||||
也就是众所周知的“战场夺旗”,BZflag是一个热门的在线坦克游戏。它自1992年开始开发,现在具备了3D画面、多种游戏模式和多人竞争比赛等特性。适用操作系统:Windows,Linux,OS X或者安卓。
|
||||
|
||||
#### 4. [Chromium B.S.U.] [5] ####
|
||||
|
||||
别被这个名字骗过了,它和Chromium浏览器没有任何关系。这是一款快节奏的纵向卷轴射击游戏,它的难点在于如何进行合理的设置,以让游戏中的战斗能在15分钟内结束。适用操作系统:Windows,Linux。
|
||||
|
||||
#### 5. [埃德加的传说][6] ####
|
||||
|
||||
埃德加的传说是一个老式平台的游戏,主角必须通过克服障碍、打倒敌人来完成他的任务。它包含了许多不同的武器和大量的关卡。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
#### 6. [JVGS][7] ####
|
||||
|
||||
|
||||
比起非常精细的画面,JVGS选择了采用最抽象的方式,用简笔画风格贯穿全部画面,看起来就像使用铅笔手工绘制而成。在这个不寻常的游戏中,主角是一个失去记忆的诗人。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
#### 7. [失重][8] ####
|
||||
|
||||
这个以太空为背景的街机射击游戏,带领玩家前往8002年的未来,在未来世界中他们必须完成各种各样的任务。可以一提的是,这个游戏也可以在安卓和IOS中使用,但并不是免费的。适用操作系统有:Windows,Linux和OS X。
|
||||
|
||||
#### 8. [开源索尼克][9] ####
|
||||
|
||||
在刺猬索尼克游戏的基础上,开源索尼克新增了协作的玩法,即玩家用户可以同时控制3个角色。原始的游戏版本只有两个关卡,但是很多游戏粉丝们已经创建了不少可玩的额外模组。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 9. [Powermanga][10] ####
|
||||
|
||||
类似于老式街机游戏《小蜜蜂》,Powermanga是一款2D的、纵向卷轴的太空射击游戏。它拥有超过41个关卡,并能够在更旧的硬件环境上运行。适用操作系统:Linux。
|
||||
|
||||
#### 10. [焦土战争3D][11] ####
|
||||
|
||||
焦土战争3D是DOS游戏《焦土战争》的一个现代重制版,最引人瞩目的是它出色的画面。你可以玩单机模式,或者连接到它的许多网络服务器之一,来进行多玩家联机模式。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 11. [索尼克机器大战 2][12] ####
|
||||
|
||||
另一款基于刺猬索尼克的平台游戏,SRB2是一款采用了Doom引擎创建的3D平台游戏。它包括了3个不同的可操控角色和超过20个关卡。适用操作系统:Linux。
|
||||
|
||||
#### 12. [超级Tux][13] ####
|
||||
|
||||
超级Tux很像经典的马里奥兄弟游戏,不过是以Linux的小企鹅Tux作为主人公。这是一个2D横向卷轴的平台游戏,其中有9种不同的敌人和26个关卡可以玩。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 13. [Those Funny Funguloids][14] ####
|
||||
|
||||
这个独一无二的游戏让玩家挑战在太空中收集蘑菇。该网站称:“此前从未有收集蘑菇的游戏能如此有趣。至少不是在外太空。它比起游戏更像是一种生活方式,相信我。”适用操作系统:Windows和Linux.
|
||||
|
||||
|
||||
#### 14. [Teeworlds][15] ####
|
||||
|
||||
这个在线游戏将自己描述成一个“怀旧多人射击游戏”。它是一个横向卷轴的2D游戏,可支持多达16名玩家和许多不同的游戏模式。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 15. [X摩托][16] ####
|
||||
|
||||
在这个游戏中,你要骑着一辆摩托车闯过一个横向卷轴地图,同时收集草莓并躲开凶残的“肇事者”。它玩起来比看起来要难!适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 16. [鼯鼠弗兰基!][17] ####
|
||||
|
||||
使用Blender开源3D动画工具开发,鼯鼠弗兰基的特色是角色来源于开源电影Peach。玩家必须操控弗兰基——一只蜜袋鼯鼠,或者Momo——一只猴子,在非常精美的3D环境中跳过、绕过或者穿过各种障碍物。适用操作系统: Windows, Linux和 OS X.
|
||||
|
||||
### 棋盘游戏 ###
|
||||
|
||||
#### 17. [统治][18] ####
|
||||
|
||||
基于Java的《统治》为你的PC或安卓设备带来了棋盘游戏《Risk》。最新版本中通过谷歌游戏服务的支持,让你能与你的Google+好友们进行实时的多人游戏。适用操作系统:Windows, Linux, OS X和 Android.
|
||||
|
||||
#### 18. [GNU 西洋双陆棋][19] ####
|
||||
|
||||
|
||||
这个“世界级”的西洋双陆棋引擎,当你每次挑战它的时候,它都会变得更强,并且它能够分析你的战术来帮助你玩得更好。它的界面很棒,并且还支持个性化定制。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
#### 19. [3D 拼字游戏][20] ####
|
||||
|
||||
在这个拼字游戏的变体版本中,你可以选择自己的图板——经典版、超级拼字版、3D拼字版或者你自定义的图板。玩家可以与AI对战,或者连接到在线服务器上进行多人游戏。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 20. [PokerTH][21] ####
|
||||
|
||||
这个高品质的德州扑克应用程序拥有优秀的、可定制的界面。想要在线玩并看看你相对于其他玩家的排名,可以前往[Poker-Heroes.com][112]在线注册。适用操作系统:Windows,Linux和OS X,Android系统。
|
||||
|
||||
#### 21. [PySolFC][22] ####
|
||||
|
||||
你知道单人纸牌游戏有超过1000种玩法吗?这个大合辑包含“使用52张纸牌的国际标准纸牌游戏、使用78张纸牌的塔罗纸牌游戏、8张或10张一套的印度双骰游戏、花札游戏、矩阵游戏、麻将游戏和一种原创的基于十六进制的纸牌游戏”。适用操作系统: Windows, Linux和 OS X.
|
||||
|
||||
|
||||
### 休闲解谜游戏 ###
|
||||
|
||||
#### 22. [2048][23] ####
|
||||
|
||||
在这个简单却容易上瘾的益智游戏中,玩家需要来回挪动方块来合并数字等。当你将数字累加到2048时,你就赢了。适用操作系统:在线,IOS或者安卓。
|
||||
|
||||
|
||||
#### 23. [台球][24] ####
|
||||
|
||||
《台球》这个游戏的目标是希望做到足够真实,让你在没有一张可用的台球桌时也够能进行台球杆的运动练习。它拥有一个好看的3D界面,同时也可以在没有良好图形处理能力的系统中以2D形式运行。适用操作系统:Linux。
|
||||
|
||||
|
||||
#### 24. [立方体列车][25] ####
|
||||
|
||||
铺设铁轨来连接隧道和桥梁,同时采取各种策略绕过障碍物。你可以挑战其中大量的内置关卡,或者自己创建一个。适用操作系统:Windows,Linux或者OS X。
|
||||
|
||||
#### 25. [Enigma][26] ####
|
||||
|
||||
类似于以前《Oxyd and Rock'n'Roll》系列游戏,《Enigma》让玩家挑战从迷宫、陷阱、激光束和其它障碍之间找出配对的石头。这个游戏拥有1000多个关卡,这是一款能让你沉迷很长很长时间的解密游戏。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
|
||||
#### 26. [Fish Fillets NG][27] ####
|
||||
|
||||
在这个解谜游戏中,玩家必须尝试在70个关卡中分别找到一条安全的通关路径。一路上,鱼类和其它水下居民会对玩家的操作提出幽默的解说。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 27. [冰冻泡泡][28] ####
|
||||
|
||||
作为最古老的泡泡射击游戏之一,冰冻泡沫以Linux小企鹅Tux和超过100个单人游戏关卡为特色。你也可以通过局域网或者互联网对阵2~5个玩家。适用操作系统:Windows和Linux。
|
||||
|
||||
#### 28. [GnomeGames][29] ####
|
||||
|
||||
这个合辑包含了15个不同的休闲游戏,这些游戏你都可以只花五分钟或更少的时间来玩。它包括了数独、一个扫雷游戏、麻将和一个版本的黑白棋等等。适用操作系统:Linux。
|
||||
|
||||
#### 29. [番茄炸弹超人][30] ####
|
||||
|
||||
10分钟内,你能够粉碎多少个西红柿?这个“特别闲的时候玩的东西”和《Those Funny Funguloids》由同一个的团队打造。适用操作系统: Windows和 Linux.
|
||||
|
||||
#### 30. [KDE 游戏][31] ####
|
||||
|
||||
这是一个KDE桌面上的休闲游戏合辑。它包含了一个变体纸牌游戏、一个版本的打砖块、一个高尔夫游戏、一个版本的Risk、一个扫雷,还有数独等等。适用操作系统:Windows和Linux。
|
||||
|
||||
#### 31. [Neverball][32] ####
|
||||
|
||||
在这个游戏中,玩家必须倾斜地板去引导球通过障碍场地。这个游戏包括许多关卡,并且你可以设计自己的关卡。适用操作系统:Windows, Linux和 OS X。
|
||||
|
||||
#### 32. [疯狂小企鹅][33] ####
|
||||
|
||||
在90年代时,你是否曾经花费数个小时去玩《疯狂小旅鼠》?如果是这样的话,《疯狂小企鹅》就是为你而设计的。它是《疯狂小旅鼠》的一个复刻版(使用企鹅替代了旅鼠),有77个关卡。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 33. [推倒][34] ####
|
||||
|
||||
这个解谜游戏的特色是,让蚂蚁来推倒具有各种不同图案的多米诺骨牌。玩家必须让所有多米诺骨牌倒下,并将一个特殊的触发信号发送至出口,这样才能进入下一关。适用操作系统:Windows。
|
||||
|
||||
#### 34. [Zaz][35] ####
|
||||
|
||||
这是另一款泡泡射击游戏,《Zaz》让你挑战射击一些沿着预定路线前进的小球。其独到之处是你的发射器也是沿着一条预定路径移动着的,这样就让各种操作变得更难一些了。适用操作系统:Windows和Linux。
|
||||
|
||||
### 益智游戏 ###
|
||||
|
||||
#### 35. [ChildsPlay][36] ####
|
||||
|
||||
《ChildsPlay》专为5岁及以下的儿童设计,能够帮助指导他们发音、字母、数字和基础的键盘技巧。它也包括了一些游戏,例如记忆游戏、打砖块和吃豆豆。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
#### 36. [GBrainy][37] ####
|
||||
|
||||
通过《GBrainy》中的逻辑、词汇、数学和记忆游戏,来锻炼你的思维。它对于所有年龄段的玩家来说,都会十分有趣并且有益头脑。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 37. [GCompris][38] ####
|
||||
|
||||
专为2~10岁的儿童设计,《GCompris》包含了超过100种不同的游戏,其中大多数是教育性质的。它包括数学、地理、科学、阅读、敲键盘和艺术游戏,再加上国际象棋、数独、记忆游戏等等。适用操作系统:Wwindows和Linux。
|
||||
|
||||
#### 38. [TuxMath][39] ####
|
||||
|
||||
在即将到来的彗星杀死企鹅之前迅速地解决数学问题。这个简单的游戏能够强化小学年龄段学生们的数学能力。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
### 第一人称射击游戏 ###
|
||||
|
||||
#### 39. [外星人竞技场][40] ####
|
||||
|
||||
被设计为“以弹药对抗弹药”的《外星人竞技场》是有着复古科幻主题的一场紧张的死亡竞争射击枪战。许多不同的网站为联机游戏提供了托管服务器,也有很多记录了各种游戏技巧等等的粉丝网站。适用操作系统:Linux, Windows和 OS X.
|
||||
|
||||
#### 40. [AssaultCube][41] ####
|
||||
|
||||
因其轻量级,即使拥有非常不错的真实感画面,AssaultCube仍然能在更旧的硬件设备上运行。它支持单人和多人游戏,包括了26张不同的地图和12种不同的游戏模式。适用操作系统:Linux,Wwindows和OS X。
|
||||
|
||||
#### 41. [经典 Nexuiz][42] ####
|
||||
|
||||
下载量超过600万次,《Nexuiz》是最热门的开源射击游戏之一。几年前,该游戏发布了一个新的闭源版本,不过你仍然可以通过上面的链接从SourceForge下载经典版本。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 42. [OpenArena][43] ####
|
||||
|
||||
这个多人游戏是雷神之锤3竞技场的复刻,特色是拥有13种不同的武器、51个竞技场、18个玩家角色和12种游戏类型。该项目的拥有者发出警告,“由于暴力和偶尔的不健康内容,它不适合17岁以下的孩子玩”。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 43. [红食][44] ####
|
||||
|
||||
这个休闲的第一人称射击游戏获得了极高的评价。其特色是包含跑酷、冲撞、冲刺要素,拥有多种游戏模式和一个内置的关卡编辑器。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 44. [Tremulous][45] ####
|
||||
|
||||
这个屡获殊荣的游戏是将即时战略游戏元素和第一视角射击游戏混合而成。玩家可以选择扮演外星人或者人类,目标则始终是消灭其它队的对手。适用操作系统:Windows, Linux, OS X和 XBox.
|
||||
|
||||
#### 45. [TrueCombat][46] ####
|
||||
|
||||
《TrueCombat》宣称要成为“也许永远是最好的免费写实系战术射击游戏”。这是一个敌对双方进行对抗战的现代背景战斗模拟器。请注意,为了使用它,你还需要安装《重返德军总部:深入敌后(见下)》。操作系统:Windows, Linux和 OS X。
|
||||
|
||||
#### 46. [Unvanquished][47] ####
|
||||
|
||||
从《Tremulous》分支出来,《Unvanquished》专注于“科技高度发展的人类对抗适应能力超强的外星人群体”。它正处于积极开发中,每个月都会发布新版本。适用操作系统:Windows, Linux和 OS X。
|
||||
|
||||
#### 47. [Warsow][48] ####
|
||||
|
||||
这款自称在“Web上节奏最快的运动游戏”,Warsow是一个卡通风格的射击游戏,它的特色是”手持火箭炮的猪和扛着激光器赛博朋克风人物”。于大多数射击游戏的不同之处是,它并未充斥着血和内脏,并将游戏重心放在了移动上。适用操作系统:Windows,Linux和OS x.
|
||||
|
||||
#### 48. [重返德军总部:深入敌后][49]
|
||||
|
||||
虽然已经有不少专攻德军总部的游戏,不过这一个是开源的。这是一个背景为第二次世界大战时代的游戏,当时轴心国正与盟军对抗。适用操作系统:Windows,Linux,OS X。
|
||||
|
||||
#### 49. [扁蝠侠的世界][50] ####
|
||||
|
||||
基于Quake引擎开发,这个射击游戏充满了有棱角的卡通风格。可用的网络服务器相当少,不过您也可以离线玩。(LCTT译注:游戏译名中的“扁蝠侠”并不是打错字,而是这个游戏的原名“Padman”就是故意取自蝙蝠侠“Batman”的梗)适用操作系统:Windows和Linux。
|
||||
|
||||
#### 50. [Xonotic][51] ####
|
||||
|
||||
Xonotic是源于经典版《Nexuiz》的分支。它拥有超过22种不同的地图,16种武器和大量不同的游戏模式。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 51. [零弹道][52] ####
|
||||
|
||||
一部分是第一人称射击,一部分是坦克大战,零弹道的游戏背景设计在一个风景如画的山区环境中,并已经拥有超过81个坦克体系可用。可以进行死亡竞赛、团队死亡竞赛或独特的beaconstrike模式。适用操作系统:Windows、Linux 和 OS X。
|
||||
|
||||
### 音乐游戏 ###
|
||||
|
||||
#### 52. [Frets on Fire][53] ####
|
||||
|
||||
Frets on Fire这个游戏很像《吉它英雄》,它甚至能够使用《吉它英雄》的歌曲来玩(当然其它歌曲也同样可用)。不必为自己没有一个吉它控制器而担心——你也可以用键盘来玩。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 53. [StepMania][54] ####
|
||||
|
||||
这是一个免费版的《Dance Dance Revolution》,它让玩家尝试挑战跟上乐曲的节拍。你既可以使用跳舞毯(如果你有的话)来跳,也可以只用键盘来玩。适用操作系统:Windows, Linux/Unix, OS X或者 XBox.
|
||||
|
||||
#### 54. [Ultrastar Deluxe][55] ####
|
||||
|
||||
如果卡拉OK是你的菜,那么你也应该会喜欢《Ultrastar Deluxe》。在这个游戏中,你必须以准确的调子和正确的节拍独立去唱歌。它包含了超过10000歌曲。适用操作系统: Windows, Linux和OS X.
|
||||
|
||||
### 竞速游戏 ###
|
||||
|
||||
#### 55. [Extreme Tux Racer][56] ####
|
||||
|
||||
《[Tux Racer][113]》是一款早年广受欢迎的游戏,其特色是Linux的小企鹅Tux用肚皮从山坡上滑下。《Extreme Tux Racer》为如今的游戏玩家升级了这款经典游戏。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 56. [竞速梦想][57] ####
|
||||
|
||||
这个自动赛车游戏《TORCS》(见下文)分支版本的特色,是拥有更好的UI界面以及许多新车和赛道。与《TORCS》同样,其视觉效果非常出色。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 57. [SuperTuxKart][58] ####
|
||||
|
||||
这款卡通风格赛车游戏的特点是让Linux小企鹅Tux与它的小伙伴们来驾驶卡丁车。引导它们沿着赛道前进,同时避开一堆障碍物的撞击吧。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 58. [TORCS][59] ####
|
||||
|
||||
TROCS是"The Open Racing Care Simulator”的缩写,它是一款已有大量粉丝基础的杰出的写实系赛车游戏。单独赛车或与众多赛道之一上的朋友们竞赛都是可选的。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
|
||||
#### 59. [无限特技飞车][60] ####
|
||||
|
||||
由经典DOS游戏《特技飞车》启发,《无限特技飞车》要求玩家超控车辆越过毁坏的桥梁、跳台、圆环、螺旋及其它障碍。它提供了设计你独有赛道的选项,允许你来创造需要更加疯狂特技的赛道。操作系统:Windows,Linux和OS X。
|
||||
|
||||
|
||||
#### 60. [VDrift][61] ####
|
||||
|
||||
作为一款竞速赛车的模拟所能做到的极致,VDrift以一个真实的物理引擎带领玩家们来到了漂移赛车的世界。它包含了超过45种车辆,超过45条赛道,并且对大量种类的游戏控制器提供了支持。适用操作系统Windows,Linux,OS X。
|
||||
|
||||
### 角色扮演和冒险游戏 ###
|
||||
|
||||
#### 61. [穿越火线][62] ####
|
||||
|
||||
有时被形容为《NetHack》和《Gauntlet》的结合,《穿越火线》是一款画面十分旧派的街机冒险游戏。它拥有超过3000张不同的地图和超过150种不同的怪物。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 62. [Epic Inventor][63] ####
|
||||
|
||||
Epic Inventor将自己描述为一款"横向卷轴动作RPG"。它在简约、像素风格的画面和开放性上类似于Minecraft。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 63[Excalibur: Morganna's Revenge] [64] ####
|
||||
|
||||
这部穿越时空的史诗级大作,让你扮演一位未来世界的太空陆战队员,必须穿越回到亚瑟王和卡梅洛特城的年代。它的画面表现并没什么特别出彩之处(想想 Minecraft),但是故事情节和游戏性都很赞。适用操作系统: Windows, Linux和OS X.
|
||||
|
||||
#### 64. [Flare][65] ####
|
||||
|
||||
灵感来源于《暗黑破坏神》,这个角色扮演游戏将重心放在了战斗上。它目前还只发布了alpha版本,不过已经可以玩。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 65. [Lips of Suna][66] ####
|
||||
|
||||
仅供成年人玩的这款"半开玩笑的动作RPG"充满了“暴力、黄段子、裸体以及其它你大概再也不会在别的游戏中看到的主题”。它提供了大量的操作和不断变化的场景。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 66. [The Mana World][67] ####
|
||||
|
||||
这是一款大型的多人网络角色扮演游戏(MMORPG),但其实没有想象中那么大规模。(在我写下这段文字的时候有31个人正在玩这个游戏。)不过,它仍然是一个很好的尝试,去创造了一个充满怪物、任务和小游戏并不断扩大的世界。适用操作系统:Windows,Linux和OS X。
|
||||
|
||||
#### 67. [NetHack][68] ####
|
||||
(LCTT译注:此处原文链接有误,和上个游戏的链接地址一样了)
|
||||
|
||||
游戏史上经典之一,NetHack是一款画面十分简约的复杂地图探索游戏。它被称为有史以来最好的100个视频游戏之一。适用操作系统: Windows, Linux, 和经典Mac.
|
||||
|
||||
#### 68. [PlaneShift][69] ####
|
||||
|
||||
游戏背景设在一个名为Yliakum的奇幻世界,这个独特的在线角色扮演游戏的特色,是有10个不同的种族和一个拥有自己经济、政府、宗教和法律的发达世界。虽然已经可玩,不过这款游戏还处在开发早期阶段。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
|
||||
#### 69. [Ryzom][70] ####
|
||||
|
||||
作为较好的开源MMORPG之一,已获赞誉的《Ryzom》将世界观设在名为Atys的树状星球上,其上有许多不同种族生存交流,并且有时会发生冲突。你可以免费来玩,不过那些选择了捐赠款项的玩家会得到一些额外的特别福利。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 70. [Stendhal][71] ####
|
||||
|
||||
这款在线角色扮演游戏旨在做得比大多数同类游戏更加友好。其网站称,"你也许会被请求去协助保护土地、拯救穷人、治愈病人、让某人开心
|
||||
解决难题,或只是简单地伸出援手"。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 71. [Summoning Wars][72] ####
|
||||
|
||||
可允许最多8人一起玩的奇幻角色扮演游戏。在Youtube上有一个该作的[预告片][114],让你能够看到它的运行效果。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
### 模拟游戏 ###
|
||||
|
||||
#### 72. [FlightGear][73] ####
|
||||
|
||||
极其写实的《FlightGear》,是一款顶尖的飞行模拟器,甚至能匹敌专业软件。它包含了整个世界的精确地形,以及20,000多个机场和众多飞机的逼真模型。适用操作系统:Windows, Linux, OS X和其它。
|
||||
|
||||
#### 73. [Golems][74] ####
|
||||
|
||||
有了这个物理模拟器,你可以创建任何你想创建的东西,并观察它在真实世界中将会有何表现。它在帮助学习基础机械、制造机器人、以及发明各种玩意上真是太棒了。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 74. [LinCity NG][75] ####
|
||||
|
||||
在原本的《模拟城市》基础上,《LinCity NG》让玩家挑战去建造一个拥有繁荣经济的可持续发展大都市。需要注意的是,由于这个游戏是基于早年的代码,他的画面更接近早期的DOS游戏。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
|
||||
#### 75. [Micropolis/OLPC SimCity][76] ####
|
||||
|
||||
另一款《模拟城市》的模仿作,Micropolis是一个基于Java开发的城市模拟器。它同样也是以相当老派的画面为特性,而不是像较新的城市模拟游戏那样采用3D画面。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 76. [Minetest][77] ####
|
||||
|
||||
与《Minecraft》极其相似,《Minetest》的游戏背景被设置一个拥有各种基础搭建模块的无垠世界中。玩家可以探索、挖掘或加工一些自己需要的新物件。适用操作系统: Windows, Linux和 OS X.
|
||||
|
||||
#### 77. [Pioneer][78] ####
|
||||
|
||||
《Pioneer》将自己描述为“一个孤独的太空冒险游戏”。它将玩家传送到一个开放的世界中,在这个世界里他们可以决定他们想做什么以及去哪里。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 78. [Oolite][79] ####
|
||||
|
||||
基于《Elite》的《Oolite》是一个太空模拟器,在其中你可以与其他航天员进行进行交易或卷入一场战斗。这个游戏已经存在了相当长的时间,有许多扩展包可以使用。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 79. [OpenCity][80] ####
|
||||
|
||||
这款3D城市模拟游戏并不打算成为《模拟城市》的复刻版,不过还是提供了一种类似的玩法。它还相当基础,不过已经可玩。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 80. [OpenTTD][81] ####
|
||||
|
||||
基于《运输大亨Deluxe》,OpenTTD邀请玩家去建立一个运输帝国。它可同时支持多达255个玩家,并且在原本的TTD基础上以许多方式进行了改善。适用操作系统: Windows, Linux和 OS X.
|
||||
|
||||
#### 81. [Rigs of Rods][82] ####
|
||||
|
||||
这款拥有独有的“软体”物理引擎的交通工具模拟游戏,享有十分活跃而热情的粉丝基础。使用它来创造海陆空的交通工具,并驾驶他们前往或飞往全国各地吧。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 82. [模拟交通][83] ####
|
||||
|
||||
这款交通模拟游戏支持连接到遍布世界的游戏服务器进行联网游戏。使用大巴、卡车、火车、电车、船只、飞机、单轨铁车、磁悬浮列车或者其它交通工具将人们或者货物运送到他们想抵达的地方去。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 83. [Vega Strike][84] ####
|
||||
|
||||
这是另一款可以让你在跨越星系进行交易或战斗的太空模拟游戏。你既可以选择沿贸易路线飞行、接受赏金猎人任务、转行当海盗,也可以仅仅只是探索浩瀚的太空。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
### 战略游戏 ###
|
||||
|
||||
#### 84. [0 A.D.][85] ####
|
||||
|
||||
在当前的第16个alpha发布版中,0 A.D.是一个优秀的致力于还原历史的文明建设类游戏。玩家可以选择迦太基人、凯尔特人、希腊人、伊比利亚人、孔雀王朝时代的古印度人、波斯人或罗马人进行游戏。适用操作系统:Linux, Windows 和 OS X.
|
||||
|
||||
#### 85. [Advanced Strategic Command][86] ####
|
||||
|
||||
这款回合制战略游戏基于《战岛》系列游戏。玩家们在格子型的地图上战斗,可选单机游戏模式或者多人游戏模式。适用操作系统:Windows 和 Linux.
|
||||
|
||||
#### 86. [韦诺之战][87] ####
|
||||
|
||||
这款回合制战术策略游戏让玩家置身于神话世界,并在其中为争夺王位而战。兽人、精灵、巫师以及上百种其他类似的奇幻角色共同居住于这一巨大的环境之中。支持单人游戏和多人游戏。适用操作系统:Linux,Windows,OS X,IOS。
|
||||
|
||||
#### 87. [BosWars][88] ####
|
||||
|
||||
这款未来风的实时战略游戏需要玩家去建设能源存储设施和经济体系,来支持其军事战斗。玩家可以与电脑对战,或通过局域网来进行多人游戏。适用操作系统:Windows,Linux,BSD,OS X。
|
||||
|
||||
#### 88. [CommanderStalin][89] ####
|
||||
|
||||
这个《BosWars》的变体版本将背景设置在斯大林时期的苏联。为了迎击不可避免的纳粹袭击而进行准备吧!适用操作系统:Windows和Linux。
|
||||
|
||||
#### 89. [FreeCol][90] ####
|
||||
|
||||
受到《Colonization》和《文明》这两款游戏的启发,《FreeCol》是一款回合制文明建设战略游戏。你将从1492年的新大陆开始游戏,最终依靠自由宣言建立一个独立的国家获得胜利。适用操作系统:Windows, Linux和OS X.
|
||||
|
||||
#### 90. [FreeCiv][91] ####
|
||||
|
||||
同样也是受到《文明》的启发,这款回合制战略游戏将从石器时代开始,并结束于太空时代。它包含50种可操控单位和541个国家,并附带了许多各种可玩的剧本。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 91. [FreeOrion][92] ####
|
||||
|
||||
虽然它并不是复刻或重制,《FreeOrion》大体上还是基于《银河霸主》系列游戏的。它是一款以太空为背景的回合制战略游戏。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 92. [Glest][93] ####
|
||||
|
||||
这款实时战略游戏中,科技的力量与魔法的力量进行着大战。虽然它仍然提供下载,但是现在大多数的Linux发行版本包含的是它的分支版本《Megaglest》(见下文),而不是这个更旧点儿的项目。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 93. [Globulation 2][94] ####
|
||||
|
||||
这个实时文明建设战略游戏旨在减少微观管理、允许玩家将精力集中于战略上。支持单机或多人游戏,并且还有关卡编辑器。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 94. [刺猬大作战][95] ####
|
||||
|
||||
比较轻松的战略游戏之一,《刺猬大作战》的特色是以“模样滑稽的粉色刺猬们拥有着能从地狱一路战斗至太空般的气势”,支持31种环境,48套既有地图,可无限随机生成的地图,55种武器,280种服装,并且能支持多达8个玩家。适用操作系统:Linux, OS X和iOS.
|
||||
|
||||
#### 95. [Kernel Panic][96] ####
|
||||
|
||||
以数码空间为背景的《Kernel Panic》是一款有着与《创》相似画面风格的实时战略游戏。所有资源都是免费的,因此玩家不必在经济建设上耗费心思——只需专注与其他骇客在网络中战斗。适用操作系统:Linux和 Windows。
|
||||
|
||||
#### 96. [Liquid War][97] ####
|
||||
|
||||
追溯至2002年时,《Liquid War》被评为最“最新颖的Linux游戏”,并且如今仍然值得一玩。为了吞噬敌人而操控一支你的液体大军吧。适用操作系统: Windows, Linux和 OS X.
|
||||
|
||||
|
||||
#### 97. [MegaGlest][98] ####
|
||||
|
||||
这个《Glest》的分支版本在原来的科技与魔法之外增加了5个新的队伍:埃及,印度,挪威,波斯和罗马。它提供了17种不同的地图类型,有单机和多人游戏模式,并为新手提供了教程。适用操作系统:Windows和 Linux.
|
||||
|
||||
#### 98. [不列颠治下和平][99] ####
|
||||
|
||||
(LCTT译注:原文游戏名称中的“Brittanica”为笔误,实际是“Britanica”)
|
||||
这款潜艇战略游戏最多可支持4名玩家适用同一块键盘同时战斗。操作非常简单易学(你只需使用一个按钮),不过游戏过程可以玩得非常激烈。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 99. [Spring: 1944][100] ####
|
||||
|
||||
这款二战战略游戏提供了十分逼真的单位和强度。可选择美国、德国、苏联和英国来进行游戏。适用操作系统:Linux。
|
||||
|
||||
#### 100. [不明飞行物:异形入侵][101] ####
|
||||
|
||||
在未来的70年中,一个秘密组织为了从凶恶外星人的侵略之中保护地球而战。玩家可在单机或多人战斗中扮演人类或者外星人。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 101. [Unknown Horizons][102] ####
|
||||
|
||||
在这个文明建设战略游戏中,核心是建立一个强大的经济体制。刚开始游戏时,你身在一个孤岛之上,只有屈指可数的移民和资源,需要去努力建造一个欣欣向荣的城市。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
|
||||
#### 102. [战争地带2100][103] ####
|
||||
|
||||
你能在核破坏后重建地球吗?这个游戏提供了一棵非常庞大的科技树,并支持单人模式或者多人模式。适用操作系统:Windows, Linux,和OS X.
|
||||
|
||||
#### 103. [Widelands][104] ####
|
||||
|
||||
受《工人物语2》启发,《Widelands》又是一款让玩家挑战去建立文明的实时战略游戏。它的特色是具有3种部落——野蛮人、帝国人和亚特兰蒂斯人,并且与大多数文明游戏不同,玩家不需要告知每个单位去做什么,而是下达命令、指派代表,更接近一个现实中的统治者。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 104. [Zero-K][105] ####
|
||||
|
||||
在这个快速移动的实时战略游戏中,机器人军队进行着一场永无休止的战斗。主要特性是包含超过100种不同的单位、现代化的经济体系、逼真的物理引擎、地球化等等。适用操作系统: Windows和 Linux.
|
||||
|
||||
#### 105. [Zombies][106] ####
|
||||
|
||||
你能够在在僵尸杀了你之前杀死所有僵尸吗?这款回合制的游戏拥有令人上瘾的游戏过程,以及允许玩家决定血腥程度的设置。适用操作系统:OS X、
|
||||
|
||||
### 有趣的非游戏类 ###
|
||||
|
||||
#### 106. [Celestia][107] ####
|
||||
|
||||
对于天文学爱好者和以宇航员为目标的人来说,这款软件无疑是至臻完美的,《Celestia》能够让你看到在已知的宇宙中任何时间、任何地点上看到的星空。用它进行一场前往木星的快速旅行,或为你夜晚的观测画出星图吧。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 107. [Electric Sheep][108] ####
|
||||
|
||||
受到Philip K. Dick的小说《机器人会梦见电子羊吗?》的启发,这个屏保将你的系统与数以千计的其它系统连接,来创建抽象的图案和花纹。投票支持你喜欢的图案,它们便会出现得更频繁一些。适用操作系统:Windows, Linux, OS X, 安卓和 iOS.
|
||||
|
||||
#### 108. [LCARS 24][109] ####
|
||||
|
||||
如果你家里有一台旧的PC(谁没有呢),何不把它变成一个《星际迷航》主题的交互工具。有了这个应用,你就能得到一个看起来就像是从进取号上拆下来的闹钟和文件管理器。适用操作系统:Windows和 DOS.
|
||||
|
||||
#### 109. [Stellarium][110] ####
|
||||
|
||||
把你的PC变成一个天文馆。《Stellarium》能够展示地球上任何时间任何地点看到的夜空,并且它也被许多天文馆采用来增强他们的展示。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
#### 110. [Tux Paint][111] ####
|
||||
|
||||
《Tux Paint》让学龄前儿童在电脑上创作自己的“图画”变得更加容易。它的特色是拥有一个有大按钮、有趣音效和友好角色的用户界面。适用操作系统:Windows, Linux和 OS X.
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.datamation.com/open-source/110-fun-open-source-games-and-apps-1.html
|
||||
|
||||
译者:[disylee](https://github.com/译者ID) 校对:[ReiNoir](https://github.com/reinoir)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.datamation.com/open-source/101-most-fun-open-source-games-and-apps-1.html
|
||||
[2]:http://www.stuff-o-matic.com/asgp/
|
||||
[3]:http://armagetronad.org/index.php
|
||||
[4]:http://bzflag.org/
|
||||
[5]:http://chromium-bsu.sourceforge.net/
|
||||
[6]:http://www.parallelrealities.co.uk/p/legend-of-edgar.html
|
||||
[7]:http://www.penguspy.com/jvgs/
|
||||
[8]:http://www.nogravitythegame.com/classic/
|
||||
[9]:http://opensnc.sourceforge.net/home/index.php
|
||||
[10]:http://linux.tlk.fr/games/Powermanga/
|
||||
[11]:http://www.scorched3d.co.uk/
|
||||
[12]:http://www.srb2.org/
|
||||
[13]:http://supertux.lethargik.org/
|
||||
[14]:http://funguloids.sourceforge.net/
|
||||
[15]:http://www.teeworlds.com/
|
||||
[16]:http://xmoto.tuxfamily.org/
|
||||
[17]:http://www.yofrankie.org/
|
||||
[18]:http://domination.sourceforge.net/
|
||||
[19]:http://sourceforge.net/apps/mediawiki/scrabble/index.php?title=Main_Page
|
||||
[20]:http://sourceforge.net/apps/mediawiki/scrabble/index.php?title=Main_Page
|
||||
[21]:http://www.pokerth.net/
|
||||
[22]:http://pysolfc.sourceforge.net/
|
||||
[23]:http://gabrielecirulli.github.io/2048/
|
||||
[24]:http://www.nongnu.org/billiards/
|
||||
[25]:http://cubetrains.com/
|
||||
[26]:http://www.nongnu.org/enigma/
|
||||
[27]:http://fillets.sourceforge.net/
|
||||
[28]:http://www.frozen-bubble.org/
|
||||
[29]:http://live.gnome.org/GnomeGames
|
||||
[30]:http://tomatoes.sourceforge.net/about.html
|
||||
[31]:http://games.kde.org/
|
||||
[32]:http://neverball.org/
|
||||
[33]:http://pingus.seul.org/welcome.html
|
||||
[34]:http://pushover.sourceforge.net/
|
||||
[35]:http://zaz.sourceforge.net/
|
||||
[36]:http://www.schoolsplay.org/
|
||||
[37]:https://live.gnome.org/gbrainy
|
||||
[38]:http://gcompris.net/index-en.html
|
||||
[39]:http://tux4kids.alioth.debian.org/tuxmath/index.php
|
||||
[40]:http://icculus.org/alienarena/rpa/
|
||||
[41]:http://assault.cubers.net/
|
||||
[42]:http://www.alientrap.org/games/nexuiz
|
||||
[43]:http://openarena.ws/smfnews.php
|
||||
[44]:http://www.redeclipse.net/
|
||||
[45]:http://tremulous.net/
|
||||
[46]:http://www.truecombatelite.com/
|
||||
[47]:http://www.unvanquished.net/
|
||||
[48]:http://www.warsow.net/
|
||||
[49]:http://www.splashdamage.com/wolfet
|
||||
[50]:http://worldofpadman.net/website/news
|
||||
[51]:http://www.xonotic.org/
|
||||
[52]:http://www.zeroballistics.com/
|
||||
[53]:http://www.stepmania.com/
|
||||
[54]:http://www.stepmania.com/
|
||||
[55]:http://www.ultrastardeluxe.org/
|
||||
[56]:http://sourceforge.net/projects/extremetuxracer/
|
||||
[57]:http://www.speed-dreams.org/
|
||||
[58]:http://supertuxkart.sourceforge.net/
|
||||
[59]:http://torcs.sourceforge.net/
|
||||
[60]:http://www.ultimatestunts.nl/
|
||||
[61]:http://vdrift.net/
|
||||
[62]:http://crossfire.real-time.com/intro/index.html
|
||||
[63]:http://www.epicinventor.com/
|
||||
[64]:http://excaliburworld.com/emr/emr3/index.html
|
||||
[65]:http://flarerpg.org/media/
|
||||
[66]:http://lipsofsuna.org/
|
||||
[67]:http://themanaworld.org/
|
||||
[68]:http://themanaworld.org/
|
||||
[69]:http://www.planeshift.it/about.html
|
||||
[70]:http://www.ryzom.com/en/
|
||||
[71]:http://stendhalgame.org/
|
||||
[72]:http://sumwars.org/wiki/Main_Page
|
||||
[73]:http://www.flightgear.org/
|
||||
[74]:http://www.golemgame.com/
|
||||
[75]:http://lincity.sourceforge.net/
|
||||
[76]:https://code.google.com/p/micropolis/
|
||||
[77]:http://minetest.net/
|
||||
[78]:http://pioneerspacesim.net/
|
||||
[79]:http://www.oolite.org/
|
||||
[80]:http://www.opencity.info/
|
||||
[81]:http://www.openttd.org/en/
|
||||
[82]:http://www.rigsofrods.com/content/
|
||||
[83]:http://www.simutrans.com/
|
||||
[84]:http://vegastrike.sourceforge.net/
|
||||
[85]:http://play0ad.com/
|
||||
[86]:http://www.asc-hq.org/
|
||||
[87]:http://www.wesnoth.org/
|
||||
[88]:http://www.boswars.org/
|
||||
[89]:http://commanderstalin.sourceforge.net/
|
||||
[90]:http://www.freecol.org/
|
||||
[91]:http://freeciv.wikia.com/wiki/Main_Page
|
||||
[92]:http://freeorion.org/index.php/Main_Page
|
||||
[93]:http://glest.org/en/index.php
|
||||
[94]:http://globulation2.org/wiki/Main_Page
|
||||
[95]:http://www.hedgewars.org/
|
||||
[96]:http://springrts.com/wiki/Kernel_Panic
|
||||
[97]:http://www.ufoot.org/liquidwar/v5
|
||||
[98]:http://glest.org/en/index.php
|
||||
[99]:http://paxbritannica.henk.ca/
|
||||
[100]:http://spring1944.net/
|
||||
[101]:http://ufoai.org/wiki/News
|
||||
[102]:http://www.unknown-horizons.org/
|
||||
[103]:http://wz2100.net/
|
||||
[104]:http://wl.widelands.org/
|
||||
[105]:http://zero-k.info/
|
||||
[106]:http://codenautics.com/zombies/
|
||||
[107]:http://www.shatters.net/celestia/index.html
|
||||
[108]:http://community.electricsheep.org/
|
||||
[109]:http://lcars24.com/
|
||||
[110]:http://stellarium.org/
|
||||
[111]:http://tuxpaint.org/
|
||||
[112]:http://www.poker-heroes.com/register.html
|
||||
[113]:http://tuxracer.sourceforge.net/
|
||||
[114]:https://www.youtube.com/watch?v=fPXatVmAS7E
|
@ -0,0 +1,37 @@
|
||||
[小技巧]修复Moka图标主题丢失的扬声器图标
|
||||
================================================================================
|
||||
|
||||
[Moka][1]是一个漂亮的图标主题,它在[Ubuntu可用的最佳图标主题][2]中扮演着重要的角色。但在Ubuntu 14.04中,Moka有那么点小缺憾。如果你在Ubuntu 14.04的Unity中使用摩卡,你会发现用于调节声音的扬声器图标不见了:
|
||||
|
||||

|
||||
|
||||
### 使用Moka图标主题时修复丢失的声音图标 ###
|
||||
|
||||
虽然你可能已经添加的官方Moka PPA源,但为了检查起见,再次添加它吧:
|
||||
|
||||
sudo add-apt-repository ppa:moka/stable
|
||||
sudo apt-get update
|
||||
|
||||
现在,接下来要做的是安装单色面板图标。使用下面的命令来安装:
|
||||
|
||||
sudo apt-get install faba-mono-icons
|
||||
|
||||
一旦你安装完Faba单色图标后,将你的图标主题从Moka修改为Faba。这会给你Unity中的Moka图标主题的顶部面板配上漂亮的单色图标:
|
||||
|
||||

|
||||
|
||||
我希望这会帮助你修复丢失的声音图标。享受Moka带来的点点滴滴吧。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://itsfoss.com/fix-missing-speaker-icon-from-moka/
|
||||
|
||||
原文作者:[Abhishek][a]
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://itsfoss.com/author/Abhishek/
|
||||
[1]:http://mokaproject.com/
|
||||
[2]:http://itsfoss.com/best-icon-themes-ubuntu-1404/
|
@ -0,0 +1,89 @@
|
||||
在 Linux 中为非 SSH 用户配置 SFTP 环境
|
||||
================================================================================
|
||||
在**某些环境**中,系统管理员想要允许极少数用户在可以传输文件到Linux机器中,但是不允许使用 SSH。要实现这一目的,我们可以使用**SFTP**,并为其构建chroot环境。
|
||||
|
||||
### SFTP & chroot背景: ###
|
||||
|
||||
**SFTP**是指**SSH文件传输协议(SSH File Transfer protocol)或安全文件传输协议(Secure File Transfer Protocol)**,它提供了可信数据流下的文件访问、文件传输以及文件管理功能。当我们为SFTP配置chroot环境后,只有被许可的用户可以访问,并被限制到他们的**家目录**中,换言之:被许可的用户将处于牢笼环境中,在此环境中它们甚至不能切换它们的目录。
|
||||
|
||||
在本文中,我们将配置**RHEL 6.X** 和 **CentOS 6.X中的SFTP Chroot环境**。我们开启一个用户帐号‘**Jack**’,该用户将被允许在Linux机器上传输文件,但没有ssh访问权限。
|
||||
|
||||
### 步骤:1 创建组 ###
|
||||
|
||||
[root@localhost ~]# groupadd sftp_users
|
||||
|
||||
### 步骤:2 分配附属组(sftp_users)给用户 ###
|
||||
|
||||
如果用户在系统上不存在,使用以下命令创建( LCTT 译注:这里给用户指定了一个不能登录的 shell,以防止通过 ssh 登录):
|
||||
|
||||
[root@localhost ~]# useradd -G sftp_users -s /sbin/nologin jack
|
||||
[root@localhost ~]# passwd jack
|
||||
|
||||
对于**已经存在的用户**,使用以下usermod命令进行修改:
|
||||
|
||||
[root@localhost ~]# usermod –G sftp_users -s /sbin/nologin jack
|
||||
|
||||
**注意**:如果你想要修改用户的**默认家目录**,那么可以在useradd和usermod命令中使用‘**-d**’选项,并设置**合适的权限**。
|
||||
|
||||
### 步骤:3 现在编辑配置文件 “/etc/ssh/sshd_config” ###
|
||||
|
||||
# vi /etc/ssh/sshd_config
|
||||
#comment out the below line and add a line like below
|
||||
#Subsystem sftp /usr/libexec/openssh/sftp-server
|
||||
Subsystem sftp internal-sftp
|
||||
|
||||
# add Below lines at the end of file
|
||||
Match Group sftp_users
|
||||
X11Forwarding no
|
||||
AllowTcpForwarding no
|
||||
ChrootDirectory %h
|
||||
ForceCommand internal-sftp
|
||||
|
||||
#### 此处: ####
|
||||
|
||||
- **Match Group sftp_users** – 该参数指定以下的行将仅仅匹配sftp_users组中的用户
|
||||
- **ChrootDirectory %h** – 该参数指定用户验证后用于chroot环境的路径(默认的用户家目录)。对于用户 Jack,该路径就是/home/jack。
|
||||
- **ForceCommand internal-sftp** – 该参数强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令。
|
||||
|
||||
重启ssh服务
|
||||
|
||||
# service sshd restart
|
||||
|
||||
### 步骤:4 设置权限: ###
|
||||
|
||||
[root@localhost ~]# chmod 755 /home/jack
|
||||
[root@localhost ~]# chown root /home/jack
|
||||
[root@localhost ~]# chgrp -R sftp_users /home/jack
|
||||
|
||||
如果你想要允许jack用户上传文件,那么创建一个上传文件夹,设置权限如下:
|
||||
|
||||
[root@localhost jack]# mkdir /home/jack/upload
|
||||
[root@localhost jack]# chown jack. /home/jack upload/
|
||||
|
||||
### 步骤:5 现在尝试访问系统并进行测试 ###
|
||||
|
||||
尝试通过ssh访问系统
|
||||
|
||||

|
||||
|
||||
正如下图所示,用户jack通过SFTP登录,而且因为chroot环境不能切换目录。
|
||||
|
||||

|
||||
|
||||
现在进行**上传和下载**测试,如下图:
|
||||
|
||||

|
||||
|
||||
正如上图所示,jack用户的上传下载功能都工作得很好。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxtechi.com/configure-chroot-sftp-in-linux/
|
||||
|
||||
原文作者:[Pradeep Kumar][a]
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.linuxtechi.com/author/pradeep/
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user