mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-02-28 01:01:09 +08:00
Merge branch 'master' of https://github.com/LCTT/TranslateProject
This commit is contained in:
commit
5ca7cb4840
@ -0,0 +1,94 @@
|
||||
GNU/Linux,爱憎由之
|
||||
==================
|
||||
|
||||
首先,我能确定本文提及的内容一定会造成激烈的辩论,从之前那篇 [我讨厌 GNU/Linux 的五个理由 – 你呢,爱还是恨?][1] 的页底评论区就可见一斑。
|
||||
|
||||
也因此,我在此没有使用恨 (hate) 这个词,那会让我感觉很不舒服,所以我觉得用不喜欢 (dislike) 来代替更合适。
|
||||
|
||||
[][2]
|
||||
|
||||
*关于 Linux,我所不喜欢的 5 件事。*
|
||||
|
||||
也就是说,请读者记住,文中的观点完完全全出于我个人和自身的经历,而这些想法和经历可能会和他人的相似,也可能相去甚远。
|
||||
|
||||
此外,我也意识到,这些所谓的不喜欢(dislike)是与经验相关的,Linux 就是这个样子。然而,但正是这些事实阻碍了新用户做出迁移系统的决定。
|
||||
|
||||
像从前一样,随时留下评论并展开讨论,或者提出任何其他符合本文主题的观点。
|
||||
|
||||
### 不喜欢理由之一:从 Windows 迁移到 Linux 对用户来说是个陡峭的学习曲线
|
||||
|
||||
如果说使用 Windows 已经成为了你生活中不可缺少的一个部分,那么你在 Linux 电脑上安装一个新软件之前,还必须要习惯和理解诸如远程仓库(repository)、依赖关系(dependency)、包(package)和包管理器(package manager)等概念。
|
||||
|
||||
不久你也会发现,仅仅使用鼠标点击一个可执行程序是很难完成某个程序的安装的。或者由于一些原因,你没有可用的网络,那么安装一个你想要的软件会是一件非常累人的任务。
|
||||
|
||||
### 不喜欢理由之二:独立学习使用仍存在困难
|
||||
|
||||
类似理由一,事实上,最开始独立学习 Linux 知识的时候,很多人都会觉得那是一个巨大挑战。尽管网上有数以千万计的教程和 [大量的好书][3],但初学者也会因此烦了选择困难症,不知从何开始学习。
|
||||
|
||||
此外,数不清的社区 (比如:[linuxsay.com][4]) 论坛中都有大量的有经验用户为大家无偿提供(通常都是这样的)解答,但不幸的是,这些问题的解答并不完全可信、或者与新用户的经验和知识层面不匹配,导致用户无法理解。
|
||||
|
||||
事实上,因为有太多的发行版系列及其衍生版本可以获取,这使得我们有必要向第三方机构付费,让他们指引我们走向 Linux 世界的第一步、了解这些发行版系列之间的相同点以及区别。
|
||||
|
||||
### 不喜欢理由之三:新老系统/软件迁移问题
|
||||
|
||||
一旦你下定决心开始使用 Linux,那么无论是在家里或是办公室,也无论是个人版或者企业级,你都要完全从旧系统向新系统迁移,然后要考虑这些年来你所使用的软件在 Linux 平台上的替代产品。
|
||||
|
||||
而这确实令人矛盾不已,特别是要面对相同类型(比如文本处理器、关系型数据库系统、图形套件等) 的多个不同程序,而又没有受过专业指导和训练,那么很多人都下定不了决心要使用哪个好。
|
||||
|
||||
除非有可敬的有经验用户或者教学视频进行指导,否则存在太多的软件实例给用户进行选择,真的会让人走进误区。
|
||||
|
||||
### 不喜欢理由之四:缺乏硬件厂商的驱动支持
|
||||
|
||||
恐怕没有人能否认这样的事实,Linux 走过了漫长的历史,它的第一个内核版本公布已经有 20 多年了(LCTT 译注:准确说是将近 26 年了,1991.10.05 - 2017.02,相信现今很多我们这些 Linux 用户在第一个内核版本公布的时候都还没出生,包括译者在内)。随着越来越多的设备驱动编译进每次发布的稳定内核中、越来越多的厂商开始支持研究和开发兼容 Linux 的设备驱动,Linux 用户们不再会经常遇到设备运行不正常的情况了,但还是会偶尔遭遇的。
|
||||
|
||||
并且,如果你的个人计算或者公司业务需要一个特殊设备,但恰巧又没有现成的 Linux 驱动,你还得困在 Windows 或者其他有驱动支持的其他系统。
|
||||
|
||||
尽管你经常这样提醒自己:“闭源软件真他妈邪恶!”,但事实上的确有闭源软件,并且不幸的是,出于商业需求我们多数情况还是被迫使用它。
|
||||
|
||||
### 不喜欢理由之五:Linux 的主要力量仍在于服务器
|
||||
|
||||
这么说吧,我加入 Linux 阵营的主要原因是多年前它将一台老电脑生机焕发并能够正常使用让我看到了它的前景。花费了一段时间来解决不喜欢理由之一、之二中遇到的那些问题,并且成功使用一台 566 MHz 赛扬处理器、10 GB IDE 硬盘以及仅有 256 MB 内存的机器搭载 Debian Squeeze 建立起一个家庭文件/打印/ Web 服务于一体的服务器之后,我非常开心。
|
||||
|
||||
当我发现即便是处于高负载的情况,[htop 显示][5] 系统资源消耗才勉强到达一半,这令非常我惊喜。
|
||||
|
||||
你可能已经不停在再问自己,文中明明说的是不喜欢 Linux,为什么还提这些事呢?答案很简单,我是需要一个比较好的 Linux 桌面发行版来运行在一台相对老旧的电脑上。当然我并不指望能够有那么一个发行版可以运行上述提到那种硬件特征的电脑上,但我的确没有发现有任何一款外观漂亮的可定制桌面系统能运行在 1 GB 内存以下的电脑中,如果可以,其速度大概比鼻涕虫还慢吧。
|
||||
|
||||
我想在此重申一下:我是说“我没发现”,而非“不存在”。可能某天我会发现一个较好的 Linux 桌面发行版能够用在我房间里那台寿终正寝的笔记本上。如果那天真的到来,我将首先删除这篇文章,并向它竖起大拇指。
|
||||
|
||||
### 总而言之
|
||||
|
||||
在本文中,我也尝试了提及 Linux 在某些地方仍需不断改进。我是一名幸福的 Linux 用户,并由衷地感谢那些杰出的社区不断为 Linux 系统、组件和其他功能做出贡献。我想重复一下我在本文开头说的 —— 这些明显的不足点,如果从适当的角度去看也是一种优势,或者也快了吧。
|
||||
|
||||
在那到来之前,让我们相互支持,一起学习并帮助 Linux 成长和传播。随时在下方留下你的评论和问题 —— 我们期待你不同的观点。
|
||||
|
||||
-------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
Gabriel Cánepa —— 一位来自阿根廷圣路易斯梅塞德斯镇 (Villa Mercedes, San Luis, Argentina) 的 GNU/Linux 系统管理员,Web 开发者。就职于一家世界领先级的消费品公司,乐于在每天的工作中能使用 FOSS 工具来提高生产力。
|
||||
|
||||
-------------------------------
|
||||
|
||||
译者简介:
|
||||
|
||||
[GHLandy](http://GHLandy.com) —— 生活中所有欢乐与苦闷都应藏在心中,有些事儿注定无人知晓,自己也无从说起。
|
||||
|
||||
-------------------------------
|
||||
|
||||
via: http://www.tecmint.com/things-i-dislike-and-love-about-gnu-linux/
|
||||
|
||||
作者:[Gabriel Cánepa][a]
|
||||
译者:[GHLandy](https://github.com/GHLandy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/gacanepa/
|
||||
[1]:https://linux.cn/article-3855-1.html
|
||||
[2]:http://www.tecmint.com/wp-content/uploads/2015/11/Things-I-Dislike-About-Linux.png
|
||||
[3]:http://www.tecmint.com/10-useful-free-linux-ebooks-for-newbies-and-administrators/
|
||||
[4]:http://linuxsay.com/
|
||||
[5]:http://www.tecmint.com/install-htop-linux-process-monitoring-for-rhel-centos-fedora/
|
||||
[6]:http://www.tecmint.com/author/gacanepa/
|
||||
[7]:http://www.tecmint.com/10-useful-free-linux-ebooks-for-newbies-and-administrators/
|
||||
[8]:http://www.tecmint.com/free-linux-shell-scripting-books/
|
91
published/20160425 What is SRE.md
Normal file
91
published/20160425 What is SRE.md
Normal file
@ -0,0 +1,91 @@
|
||||
什么是 SRE(网站可靠性工程)?
|
||||
============================================================
|
||||
|
||||
网站可靠性工程师(Site Reliability Engineer)是近来越来越多看到的一个职位。它是什么意思?它来自哪里?让我们从 Google SRE 团队来学习。
|
||||
|
||||

|
||||
|
||||
本文为 Niall Richard Murphy、Jennifer Petoff、Chris Jones、Betsy Beyer 编辑的 [<ruby>《网站可靠性工程》<rt>Site Reliability Engineering</rt></ruby>][9] 一书的摘录。
|
||||
|
||||
SRE 网站可靠性工程(Site Reliability Engineering)在[ 11 月 7-10 日在阿姆斯特丹举办的 O'Reilly Velocity 会议][10]上也有提到。
|
||||
|
||||
### 介绍
|
||||
|
||||
> 希望不是一种策略。
|
||||
>
|
||||
> —— 传统的 SRE 如是说
|
||||
|
||||
一个公认的事实是系统不会自己运行。 那么,一个系统 — 尤其是复杂大规模系统 — _应该_怎么运行呢?
|
||||
|
||||
### 系统管理员的服务管理方法
|
||||
|
||||
以前,公司雇用系统管理员来运行复杂的计算系统。
|
||||
|
||||
系统管理员(或者称为 sysadmin)这种方式包括整合现有软件组件,使之互相协作来完成一个服务。系统管理员的任务是运行服务,响应事件,并在事件发生时进行更新。随着系统复杂度的增长和流量的增长,事件和更新也相应增长,导致管理员团队也越来越庞大才能完成更多的工作。由于系统管理员的角色需要的技能与产品开发人员有很大不同,开发和系统管理员被分为不同的团队:“开发”和“运维”。
|
||||
|
||||
系统管理员模式的服务管理有几个优点。对于决定该如何运行和服务的公司而言,这种方法相对容易实现:它作为一个已被人们所熟悉的行业范例,有很多例子可以从中学习和效仿。相关人才库已经广泛普及。有一系列现有的工具,软件组件(现成的或其他)和集成公司可用于帮助运行这些组装的系统,所以新手系统管理团队不必重新发明轮子以及从头设计系统。
|
||||
|
||||
此方式将公司开发和运维分离,也有一些缺点和困难。主要有两类:直接代价和间接代价。
|
||||
|
||||
直接代价很显而易见了。利用依靠手工干预来进行变更管理和事件处理的团队进行服务管理,当服务和/或流量增长时,成本是很昂贵的,因为团队随着系统负载的增长也在相应增长。
|
||||
|
||||
开发/运维分离的间接代价可能不那么明显,但常常比直接代价还要昂贵。代价来自于两个团队背景,技术,激励都非常不同。他们使用不同的词汇来描述所面临的情境;对技术方案的风险和可能性他们持不同的假设;对产品稳定性的目标级别也会有不同的争议。团队的分离很容易导致不只是激励的不同,还有沟通、目标的不同,以及最终,信任和尊重的分离。这是一种恶性循环。
|
||||
|
||||
因此,传统运营团队及其在产品开发中的同行往往会发生冲突,最突出的是如何将软件发布到生产环境。在开发团队的核心上,他们希望推出新功能,并看到它们被用户采纳。在运维团队的核心上, 他们希望确保服务在运行中不会中断。因为大多数中断是由某种变化引起的 - 新的配置、新的功能发布或者新的用户流量类型 - 这两个团队的目标基本上处于紧张状态。
|
||||
|
||||
两个团队都明白,以最想要的条款(“我们可以没有阻碍地在任何时间发布任何东西”以及“我们不想在系统工作后改变任何东西”)来表达他们的利益是不可接受的。因为他们的词汇和风险假设都不同,两个团体经常采用常见的斗争形式来提高他们的利益。 运维团队试图通过提高发布和变更门槛来保护运行中的系统免受更改的风险。例如,发布审查可能包含对_每个_问题的显式审查,这些问题过去都_曾经_引起过服务中断 - 它可能是一个任意长度的列表,并且不是所有检查元素都一样重要。开发团队很快学会了如何回应。他们通过较少的“发布”和更多的“功能切换”、“增量更新”或 “选择性失明”来规避。他们采取诸如分割产品功能的策略,以便更少的功能受到发布审查。
|
||||
|
||||
### Google 的服务管理方法:网站可靠性工程
|
||||
|
||||
冲突不是提供软件服务的必然部分。Google 选择以不同的方式运行自己的系统:我们的网站可靠性工程团队专注于雇佣软件工程师来运行我们的产品,并创建系统来完成那些本来由系统工程师手动完成的工作。
|
||||
|
||||
什么是网站可靠性工程(Site Reliability Engineering),是如它在谷歌定义的那样么?我的解释很简单:SRE 是当你要求一位软件工程师设计一个运维团队时所发生的结果。当我在 2003 年加入 Google 并负责运行一个由 7 名工程师组成的“生产团队”时,那时我工作的全部都是软件工程。所以我以自己是一名 SRE 的方式,设计和管理了一个_我_想要的团队的样子。这个团队已经成为了 Google 的目前的 SRE 团队,它仍如最初一名终生软件工程师所想象的那个样子。
|
||||
|
||||
Google 服务管理方法的主要构成部分是由每个 SRE 团队组成的。作为一个整体,SRE 可以分为两大类。
|
||||
|
||||
50-60% 的人是 Google 软件工程师,或者更确切地说,是通过 Google 软件工程师的标准程序招聘的人。其他 40-50% 的候选人非常接近 Google 软件工程师资格(即拥有所需技能集的 85-99%),以及一些具有大多数软件工程师没有的一些 SRE 技术技能的人。到目前为止,UNIX 系统底层和网络(第 1 层到第 3 层)的专业知识是我们寻求的两种最常见的替代技术技能。
|
||||
|
||||
所有的 SRE 的共同点是有开发软件系统以解决复杂问题的信念和能力。在 SRE 中,我们密切跟踪两个团队的职业发展,并且迄今为止发现在两种工程师之间的表现没有实际差异。事实上,SRE 团队的多样性背景经常产生聪明、高质量的系统,这显然是几个技能集合成的产物。
|
||||
|
||||
我们这样招聘 SRE 的结果是,我们有了这样一个团队:(a)手动执行任务很快会变得无聊。(b)他们有必要的技能集来写出软件以取代以前的手动操作,即使解决方案很复杂。SRE 还会与其他开发部门分享学术以及知识背景。因此,SRE 从根本上做了一个运维团队历来做的工作,但它使用具有软件专业知识的工程师,并期望这些内在倾向于使用软件并且有能力用软件的人用软件设计并实现自动化来代替人力劳动。
|
||||
|
||||
按照设计,至关重要的是 SRE 团队专注于工程。没有恒定的工程,运维工作增加,团队将需要更多的人来上工作量。最终,传统的以运维为中心的团队与服务规模呈线性关系:如果服务支持的产品成功,运维工作将随着流量而增长。这意味着雇用更多的人一遍又一遍地完成相同的任务。
|
||||
|
||||
为了避免这种命运,负责管理服务的团队需要写代码,否则就会被工作淹没。因此,Google 为 SRE 们_设置了一个 “运维” 工作的上限,如任务单、紧急呼叫、手动任务最多只占 50% 工作量_。此上限确保 SRE 团队在其计划中有足够的时间使服务稳定及可操作。50% 是上限;随着时间的推移,除了自己的设备,SRE 团队应该只有很少的运维工作,他们几乎可以完全从事开发任务,因为服务基本上可以运行和维修自己:我们想要的系统是_自动的_,而不只是_自动化_。在实践中,规模和新功能始终是 SRE 要考虑的。
|
||||
|
||||
Google 的经验法则是,SRE 团队必须花费剩余的 50% 的时间来进行实际开发。那么我们该如何执行这个阈值呢?首先,我们必须测量 SRE 如何花费时间。通过测量,我们确保团队不断花费不到 50% 的时间用于开发改变他们实践的工作上。通常这意味着会将一些运维负担转移回开发团队,或者给团队添加新的员工,而不指派该团队额外的运维责任。意识到在运维和开发工作之间保持这种平衡使我们能保证 SRE 具有参与创造性的自主工程的空间,同时仍然保留从运维那学来的智慧。
|
||||
|
||||
我们发现 Google SRE 的运行大规模系统的方法有很多优点。由于 SRE 是直接修改代码以使 Google 的系统可以运行自己,SRE 团队的特点是快速创新以及大量接受变革。这样的团队能相对价廉地支持相同的服务,面向运维的团队需要大量的人。相反,运行、维护和改进系统所需的 SRE 的数量随系统的大小而线性收敛。最后,SRE 不仅规避了开发/运维分裂的障碍,而且这种结构也改善了我们的产品开发团队:产品开发和 SRE 团队之间的轻松转移交叉训练了整个团队,并且提高了那些在学习构建百万级别分布式系统上有困难的开发人员的技能。
|
||||
|
||||
尽管有这些好处,SRE 模型的特点是其自身独特的挑战。 Google 面临的一个持续挑战是招聘 SRE:SRE 不仅与产品开发招聘流程竞争相同的候选人,而且我们将招聘人员的编码和系统工程技能都设置得如此之高,这意味着我们的招聘池必然很小。由于我们的学科相对新颖独特,在如何建立和管理 SRE 团队方面没有太多的行业信息(不过希望这本书能朝着这个方向迈进!)。一旦 SRE 团队到位,他们潜在的非正统的服务管理方法需要强有力的管理支持。例如,一旦错误预估耗尽,除非是管理层的强制要求, 否则在季度剩余的时间里决定停止发布可能不会被产品开发团队所接受。
|
||||
|
||||
> **DevOps 或者 SRE?**
|
||||
|
||||
> “DevOps” 这个术语在 2008 年末出现,并在写这篇文章时(2016 年早期)仍在发生变动。 其核心原则:IT 部门在系统设计和开发的每个阶段的参与、严重依赖自动化与人力投入、工程实践和工具在操作任务中的应用,与许多 SRE 的原则和实践一致。 人们可以将 DevOps 视为几种核心 SRE原则向更广泛的组织,管理结构和人员的推广。 可以等价地将 SRE 视为具有某些特殊扩展的 DevOps 的特定实现。
|
||||
|
||||
------------------------
|
||||
|
||||
作者简介:Benjamin Treynor Sloss 创造了“网站可靠性工程(Site Reliability Engineering)”一词,他自 2003 年以来一直负责 Google 的全球运营、网络和生产工程。截至 2016 年,他管理着全球范围内一个大约 4000 名软硬件和网络工程师团队。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.oreilly.com/ideas/what-is-sre-site-reliability-engineering
|
||||
|
||||
作者:[Benjamin Treynor][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.oreilly.com/people/benjamin-treynor-sloss
|
||||
[1]:https://shop.oreilly.com/product/0636920053385.do
|
||||
[2]:https://shop.oreilly.com/product/0636920053385.do
|
||||
[3]:https://www.oreilly.com/ideas/what-is-sre-site-reliability-engineering
|
||||
[4]:https://shop.oreilly.com/product/0636920053385.do
|
||||
[5]:https://shop.oreilly.com/product/0636920053385.do
|
||||
[6]:https://www.oreilly.com/people/benjamin-treynor-sloss
|
||||
[7]:https://pixabay.com/
|
||||
[8]:https://www.oreilly.com/people/benjamin-treynor-sloss
|
||||
[9]:http://shop.oreilly.com/product/0636920041528.do?intcmp=il-webops-books-videos-update-na_new_site_site_reliability_engineering_text_cta
|
||||
[10]:http://conferences.oreilly.com/velocity/devops-web-performance-eu?intcmp=il-webops-confreg-update-vleu16_new_site_what_is_sre_text_cta
|
||||
[11]:https://pixabay.com/
|
@ -3,31 +3,31 @@ Docker 是什么?
|
||||
|
||||

|
||||
|
||||
这是一段摘录,取自于 Karl Matthias 和 Sean P. Kane 撰写的书籍 [Docker: Up and Running][3]。其中或许包含一些其他资源的引用,您可以点击其中的链接。
|
||||
> 这是一篇摘录,取自于 Karl Matthias 和 Sean P. Kane 撰写的 [Docker 即学即用][3]。其中或许包含一些引用到本文中没有的内容,因为那些是整本书中的一部分。
|
||||
|
||||
2013 年 3 月 15 日,在加利福尼亚州圣克拉拉召开的 Python 开发者大会上,dotCloud 的创始人兼首席执行官 Solomon Hvkes 在一场仅五分钟的[微型演讲][4]中,首次提出了 Docker 这一概念。当时,仅约 40 人(除 dotCloud 内部人员)获得了使用 Docker 的机会。
|
||||
|
||||
这在之后的几周内,有关 Docker 的新闻铺天盖地。随后这个项目很快在 [Github][5] 上开源,任何人都可以下载它并为其做出贡献。在之后的几个月中,越来越多的业界人士开始听说 Docker 以及它是如何彻底地改变了软件开发,交付和运行的方式。一年之内,Docker 的名字几乎无人不知无人不晓,但还是有很多人不太明白 Docker 究竟是什么,人们为何如此兴奋。
|
||||
这在之后的几周内,有关 Docker 的新闻铺天盖地。随后这个项目很快在 [Github][5] 上开源,任何人都可以下载它并为其做出贡献。在之后的几个月中,越来越多的业界人士开始听说 Docker 以及它是如何彻底地改变了软件的开发、交付和运行的方式。一年之内,Docker 的名字几乎无人不知无人不晓,但还是有很多人不太明白 Docker 究竟是什么,人们为何如此兴奋。
|
||||
|
||||
Docker 是一个工具,它致力于为任何应用程序创建易于分发的构建产物,将其部署到任何环境中,并简化敏捷软件组织的工作流程,降低响应速度。
|
||||
Docker 是一个工具,它致力于为任何应用程序创建分发版本而简化封装流程,将其部署到各种规模的环境中,并将敏捷软件组织的工作流程和响应流水化。
|
||||
|
||||
### Docker 带来的希望
|
||||
|
||||
虽然表面上被视为一个虚拟化平台,但 Docker 远远不止如此。Docker 涉及的领域横跨了业界多个方面,包括 KVM, Xen, OpenStack, Mesos, Capistrano, Fabric, Ansible, Chef, Puppet, SaltStack 等技术。或许你已经发现了,在 Docker 的竞争产品列表中有一个值得一提的事儿。例如,大多数工程师不会说,虚拟化产品会和配置管理工具是竞争关系,但 Docker 和这两种技术都有点关系。前面列举的一些技术常常因其提高了工作效率而获得称赞,这就导致了大量的探讨。而现在 Docker 正处在这些过去十年间最广泛使用的技术之中。
|
||||
虽然表面上被视为一个虚拟化平台,但 Docker 远远不止如此。Docker 涉及的领域横跨了业界多个方面,包括 KVM、 Xen、 OpenStack、 Mesos、 Capistrano、 Fabric、 Ansible、 Chef、 Puppet、 SaltStack 等技术。或许你已经发现了,在 Docker 的竞争产品列表中有一些很值得关注。例如,大多数工程师都不会认为,虚拟化产品和配置管理工具是竞争关系,但 Docker 和这两种技术都有点关系。前面列举的一些技术常常因其提高了工作效率而获得称赞,这就导致了大量的探讨。而现在 Docker 正是这些过去十年间最广泛使用的技术之一。
|
||||
|
||||
如果你要拿 Docker 分别与这些领域的卫冕冠军按照功能逐项比较,那么 Docker 看上去可能只是个一般的竞争对手。Docker 在某些领域表现的更好,但它带来的是一个跨越广泛的解决工作流程中众多挑战的功能集合。通过结合应用程序部署工具(如 Capistrano, Fabric)的易用性和易于管理的虚拟化系统,提供使工作流程自动化和业务流程易于实施的钩子,Docker 提供了一个非常强大的功能集合。
|
||||
如果你要拿 Docker 分别与这些领域的卫冕冠军按照功能逐项比较,那么 Docker 看上去可能只是个一般的竞争对手。Docker 在某些领域表现的更好,但它带来的是一个跨越广泛的解决工作流程中众多挑战的功能集合。通过将应用程序部署工具(如 Capistrano、 Fabric)的易用性和虚拟化系统管理的易于性结合,使工作流程自动化,以及易于实施<ruby>编排<rt>orchestration</rt></ruby>,Docker 提供了一个非常强大的功能集合。
|
||||
|
||||
大量的新技术来来去去,因此对这些新事物保持一定的怀疑总是好的。如果不深入研究,人们很容易误以为 Docker 只是另一种为开发者和运营团队解决一些具体问题的技术。如果只是把 Docker 看作一种虚拟化技术或者部署技术,这似乎并不能令人信服。不过 Docker 可比表面上看起来的强大得多。
|
||||
大量的新技术来来去去,因此对这些新事物保持一定的怀疑总是好的。如果不深入研究,人们很容易误以为 Docker 只是另一种为开发者和运营团队解决一些具体问题的技术。如果把 Docker 单独看作一种虚拟化技术或者部署技术,它看起来并不引人注目。不过 Docker 可比表面上看起来的强大得多。
|
||||
|
||||
即使在小型团队中,团队内部的沟通和相处也往往是困难的。然而在我们生活的这个世界里,团队内部对于细节的沟通是迈向成功越来越不可或缺的因素。而一个能够降低沟通复杂性,协助开发更为强健软件的工具,无疑是一个巨大的成功。这正是 Docker 值得我们深入了解的原因。当然 Docker 也不是什么灵丹妙药,它的正确使用还需深思熟虑,不过 Docker 确实能够解决一些组织层面的现实问题,还能够帮助公司更好更快地发布软件。使用精心设计的 Docker 工作流程能够让技术团队更加和谐,为组织创造实实在在的收益。
|
||||
|
||||
那么,最让公司感到头疼的问题是什么呢?现如今,很难按照预期的速度发布软件,而随着公司从只有一两个开发人员成长到拥有若干开发团队的时候,发布新版本时的沟通负担将越来越重,难以管理。开发者不能不去了解软件所处环境的复杂性,生产运营团队也需要不断地理解所发布软件的内部细节。通常这些都是不错的工作技能,因为它们有利于更好地从整体上理解发布环境,从而促进软件的鲁棒性设计。但是随着团队的壮大,需要掌握的技能也越来越多。
|
||||
那么,最让公司感到头疼的问题是什么呢?现如今,很难按照预期的速度发布软件,而随着公司从只有一两个开发人员成长到拥有若干开发团队的时候,发布新版本时的沟通负担将越来越重,难以管理。开发者不得不去了解软件所处环境的复杂性,生产运营团队也需要不断地理解所发布软件的内部细节。这些通常都是不错的工作技能,因为它们有利于更好地从整体上理解发布环境,从而促进软件的鲁棒性设计。但是随着组织成长的加速,这些技能的拓展很困难。
|
||||
|
||||
充分了解所用的环境细节往往需要团队之间大量的沟通,而这并不能直接为团队创造值。例如,为了发布版本1.2.1, 开发人员要求运维团队升级特定的库,这个过程就降低了开发效率,也没有为公司创造价值。如果开发人员能够直接升级他们所使的库,然后编写代码,测试新版本,最后发布软件,那么整个交付过程所用的时间将会明显缩短。如果运维人员无需与多个应用开发团队相协调,就能够在宿主系统上升级软件,那么效率将大大提高。Docker 有助于在软件层面建立一层隔离,从而减轻团队的沟通负担。
|
||||
充分了解所用的环境细节往往需要团队之间大量的沟通,而这并不能直接为团队创造值。例如,为了发布版本 1.2.1、开发人员要求运维团队升级特定的库,这个过程就降低了开发效率,也没有为公司创造价值。如果开发人员能够直接升级他们所使的库,然后编写代码,测试新版本,最后发布软件,那么整个交付过程所用的时间将会明显缩短。如果运维人员无需与多个应用开发团队相协调,就能够在宿主系统上升级软件,那么效率将大大提高。Docker 有助于在软件层面建立一层隔离,从而减轻团队的沟通负担。
|
||||
|
||||
除了有助于解决沟通问题,在某种程度上 Docker 的软件架构还鼓励开发出更多精致的应用程序。这种架构哲学的核心是一次性的小型容器。在新版本部署的时候,会将旧版本应用的整个运行环境全部丢弃。在应用所处的环境中,任何东西的存在时间都不会超过应用程序本身。这是一个简单却影响深远的想法。这就意味着,应用程序不会意外地依赖于之前版本的遗留产物; 对应用的短暂调试和修改也不会存在于未来的版本中; 应用程序具有高度的可移植性,因为应用的所有状态要么直接包含于用于部署的构建产物中,且不可修改,要么存储于数据库、缓存或文件服务器等外部依赖中。
|
||||
除了有助于解决沟通问题,在某种程度上 Docker 的软件架构还鼓励开发出更多健壮的应用程序。这种架构哲学的核心是一次性的小型容器。在新版本部署的时候,会将旧版本应用的整个运行环境全部丢弃。在应用所处的环境中,任何东西的存在时间都不会超过应用程序本身。这是一个简单却影响深远的想法。这就意味着,应用程序不会意外地依赖于之前版本的遗留产物;对应用的短暂调试和修改也不会存在于未来的版本中;应用程序具有高度的可移植性,因为应用的所有状态要么直接包含于部署物中,且不可修改,要么存储于数据库、缓存或文件服务器等外部依赖中。
|
||||
|
||||
因此,应用程序不仅具有更好的可扩展性,而且更加可靠。存储应用的容器实例数量的增减,对于前端网站的影响很小。事实证明,这种架构对于非 Docker 化的应用程序已然成功,但是 Docker 自身包含了这种架构方式,使得 Docker 化的应用程序始终遵循这些最佳实践,这也是一件好事。
|
||||
因此,应用程序不仅具有更好的可扩展性,而且更加可靠。存储应用的容器实例数量的增减,对于前端网站的影响很小。事实证明,这种架构对于非 Docker 化的应用程序已然成功,但是 Docker 自身包含了这种架构方式,使得 Docker 化的应用程序始终遵循这些最佳实践,这也是一件好事。
|
||||
|
||||
### Docker 工作流程的好处
|
||||
|
||||
@ -35,60 +35,60 @@ Docker 是一个工具,它致力于为任何应用程序创建易于分发的
|
||||
|
||||
**使用开发人员已经掌握的技能打包软件**
|
||||
|
||||
> 许多公司为了管理各种工具来为它们的平台构建软件包,不得不提供一些软件发布和构建工程师的岗位。像 rpm, mock, dpkg 和 pbuilder 等工具使用起来并不容易,每一种工具都需要单独学习。而 Docker 则把你所有需要的东西全部打包起来,定义为一个文件。
|
||||
> 许多公司为了管理各种工具来为它们支持的平台生成软件包,不得不提供一些软件发布和构建工程师的岗位。像 rpm、mock、 dpkg 和 pbuilder 等工具使用起来并不容易,每一种工具都需要单独学习。而 Docker 则把你所有需要的东西全部打包起来,定义为一个文件。
|
||||
|
||||
**使用标准化的镜像格式打包应用软件及其所需的文件系统**
|
||||
|
||||
> 过去,不仅需要打包应用程序,还需要包含一些依赖库和守护进程等。然而,我们永远不能百分之百地保证,软件运行的环境是完全一致的。这就使得软件的打包很难掌握,许多公司也不能可靠地完成这项工作。使用 Scientific Linux 的用户经常会试图部署一个来自社区的,仅在 Red Hat Linux 上经过测试的软件包,希望这个软件包足够接近他们的需求。如果使用 Dokcer, 只需将应用程序和其所依赖的每个文件一起部署即可。Docker 的分层镜像使得这个过程更加高效,确保应用程序运行在预期的环境中。
|
||||
> 过去,不仅需要打包应用程序,还需要包含一些依赖库和守护进程等。然而,我们永远不能百分之百地保证,软件运行的环境是完全一致的。这就使得软件的打包很难掌握,许多公司也不能可靠地完成这项工作。常有类似的事发生,使用 Scientific Linux 的用户试图部署一个来自社区的、仅在 Red Hat Linux 上经过测试的软件包,希望这个软件包足够接近他们的需求。如果使用 Dokcer、只需将应用程序和其所依赖的每个文件一起部署即可。Docker 的分层镜像使得这个过程更加高效,确保应用程序运行在预期的环境中。
|
||||
|
||||
**测试打包好的构建产物并将其部署到运行任意系统的生产环境**
|
||||
|
||||
> 当开发者将更改提交到版本控制系统的时候,可以构建一个新的 Docker,然后通过测试,部署到生产环境,整个过程中无需任何的重新编译和重新打包。
|
||||
> 当开发者将更改提交到版本控制系统的时候,可以构建一个新的 Docker 镜像,然后通过测试,部署到生产环境,整个过程中无需任何的重新编译和重新打包。
|
||||
|
||||
**将应用软件从硬件中抽象出来,无需牺牲资源**
|
||||
|
||||
> 传统的企业级虚拟化解决方案,例如 VMware,以消耗资源为代价在物理硬件和运行其上的应用软件之间建立抽象层。虚拟机管理程序和每一个虚拟机中运行的内核都要占用一定的硬件系统资源,而这部分资源将不能够被宿主系统的应用程序使用。而容器仅仅是一个能够与 Linux 内核直接通信的进程,因此它可以使用更多的资源,直到系统资源耗尽或者配额达到上限为止。
|
||||
|
||||
Docker 出现之前,Linux 容器技术已经存在了很多年,Docker 使用的技术也不是全新的。但是这个独一无二的集强大架构和工作流程于一身的 Docker 要比各个技术加在一起还要强大的多。Docker 终于让已经存在了十余年的 Linux 容器走进了普通技术人员的生活中。Docker 让容器更加轻易地融入到公司现有的工作流程中。以上讨论到的问题是被很多人所关注的,以至于 Docker 项目的快速发展超出了所有人的合理预期。
|
||||
Docker 出现之前,Linux 容器技术已经存在了很多年,Docker 使用的技术也不是全新的。但是这个独一无二的集强大架构和工作流程于一身的 Docker 要比各个技术加在一起还要强大的多。Docker 终于让已经存在了十余年的 Linux 容器走进了普通技术人员的生活中。Docker 让容器更加轻易地融入到公司现有的工作流程中。以上讨论到的问题已被很多人认可,以至于 Docker 项目的快速发展超出了所有人的合理预期。
|
||||
|
||||
Docker 发布的第一年,许多刚接触的新人惊讶地发现,尽管 Docker 还不能在生产环境中使用,但是来自 Docker 开源社区源源不断的提交,飞速推动着这个项目向前发展。随着时间的推移,这一速度似乎越来越快。现在 Docker 进入了 1.x 发布周期,稳定性好了,可以在生产环境中使用。因此,许多公司使用 Docker 来解决它们在应用程序交付过程中面对的棘手问题。
|
||||
|
||||
### Docker 不是什么
|
||||
|
||||
Docker 可以解决很多问题,这些问题是其他类型的传统工具专门解决的。那么 Docker 在功能上的广度就意味着它在特定的功能上缺乏深度。例如,一些组织认为,使用 Docker 之后可以完全摈弃配置管理工具,但 Docker 真正强大之处在于,它虽然能够取代某些传统的工具,但通常与它们是兼容的,甚至与它们结合使用还能增强更加自身的功能。下面将列举一些 Docker 还未能完全取代的工具,如果与它们结合起来使用,往往能取得更好的效果。
|
||||
Docker 可以解决很多问题,这些问题是其他类型的传统工具专门解决的。那么 Docker 在功能上的广度就意味着它在特定的功能上缺乏深度。例如,一些组织认为,使用 Docker 之后可以完全摈弃配置管理工具,但 Docker 真正强大之处在于,它虽然能够取代某些传统的工具,但通常与它们是兼容的,甚至与它们结合使用还能增强自身的功能。下面将列举一些 Docker 还未能完全取代的工具,如果与它们结合起来使用,往往能取得更好的效果。
|
||||
|
||||
**企业级虚拟化平台(VMware, KVM 等)**
|
||||
**企业级虚拟化平台(VMware、KVM 等)**
|
||||
|
||||
> 容器并不是传统意义上的虚拟机。虚拟机包含完整的操作系统,运行在宿主操作系统之上。虚拟化平台最大的优点是,一台宿主机上可以使用虚拟机运行多个完全不同的操作系统。而容器是和主机共用同一个内核,这就意味着容器使用更少的系统资源,但必须基于同一个底层操作系统(如 Linux)。
|
||||
|
||||
**云平台(Openstack, CloudStack 等)**
|
||||
**云平台(Openstack、CloudStack 等)**
|
||||
|
||||
> 与企业级虚拟化平台一样,容器和云平台的工作流程表面上有大量的相似之处。从传统意义上看,二者都可以按需横向扩展。但是,Docker 并不是云平台,它只能在预先安装 Docker 的宿主机中部署,运行和管理容器,并能创建新的宿主系统(实例),对象存储,数据块存储以及其他与云平台相关的资源。
|
||||
|
||||
**配置管理工具(Puppet,Chef 等)**
|
||||
**配置管理工具(Puppet、Chef 等)**
|
||||
|
||||
> 尽管 Docker 能够显著提高一个组织管理应用程序及其依赖的能力,但不能完全取代传统的配置管理工具。Dockerfile 文件用于定义一个容器构建时内容,但不能持续管理容器运行时的状态和 Docker 的宿主系统。
|
||||
|
||||
**部署框架(Capistrano,Fabric等)**
|
||||
**部署框架(Capistrano、Fabric等)**
|
||||
|
||||
> Docker 通过创建自成一体的容器镜像,简化了应用程序在所有环境上的部署过程。这些用于部署的容器镜像封装了应用程序的全部依赖。然而 Docker 本身不无法执行复杂的自动化部署任务。我们通常使用其他工具一起实现较大的工作流程自动化。
|
||||
> Docker 通过创建自成一体的容器镜像,简化了应用程序在所有环境上的部署过程。这些用于部署的容器镜像封装了应用程序的全部依赖。然而 Docker 本身无法执行复杂的自动化部署任务。我们通常使用其他工具一起实现较大的工作流程自动化。
|
||||
|
||||
**工作负载管理工具(Mesos,Fleet等)**
|
||||
**工作负载管理工具(Mesos、Fleet等)**
|
||||
|
||||
> Docker 服务器没有集群的概念。我们必须使用其他的业务流程工具(如 Docker 自己开发的 Swarm)智能地协调多个 Docker 主机的任务,跟踪所有主机的状态及其资源使用情况,确保运行着足够的容器。
|
||||
|
||||
**虚拟化开发环境(Vagrant等)**
|
||||
**虚拟化开发环境(Vagrant 等)**
|
||||
|
||||
> 对开发者来说,Vagrant 是一个虚拟机管理工具,经常用来模拟与实际生产环境尽量一致的服务器软件栈。此外,Vagrant 可以很容易地让 Mac OS X 和基于 Windows 的工作站运行 Linux 软件。由于 Docker 服务器只能运行在 Linux 上,于是它提供了一个名为 Boot2Docker 的工具允许开发人员在不同的平台上快速运行基于 Linux 的 Docker 容器。Boot2Docker 足以满足很多标准的 Docker 工作流程,但仍然无法支持 Docker Machine 和 Vagrant 的所有功能。
|
||||
|
||||
如果没有参考标准,很难理解 Docker 的作用。下一章我们将简要介绍,什么是 Docker,它的目标使用场景,以及 它的优势。
|
||||
如果没有强有力的参考标准,很难理解 Docker 的作用。下一章我们将概览 Docker,它是什么,它的目标使用场景,以及它的优势。
|
||||
|
||||
-----------------
|
||||
作者简介:
|
||||
|
||||
#### [Karl Matthias][1]
|
||||
|
||||
Karl Matthias 曾先在创业公司和世界 500 强企业中担任过开发人员,系统管理员和网络工程师。在德国和英国的初创公司工作了若干年后,他和家人回到了美国俄勒冈州波特兰,在 New Relic 公司担任首席网站可靠性工程师。业余时间,他会和他的两个女儿玩,用他那老式相机摄摄影,或者骑骑自行车。
|
||||
Karl Matthias 曾在创业公司和世界 500 强企业中担任过开发人员,系统管理员和网络工程师。在德国和英国的初创公司工作了若干年后,他和家人回到了美国俄勒冈州波特兰,在 New Relic 公司担任首席网站可靠性工程师。业余时间,他会和他的两个女儿玩,用他那老式相机摄摄影,或者骑骑自行车。
|
||||
|
||||
#### [Sean Kane][2]
|
||||
|
||||
@ -98,9 +98,9 @@ Sean Kane 目前在 New Relic 公司的共享基础设施团队中担任首席
|
||||
|
||||
via: https://www.oreilly.com/learning/what-is-docker
|
||||
|
||||
作者:[Karl Matthias ][a],[Sean Kane][b]
|
||||
译者:[译者ID](https://github.com/Cathon)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
作者:[Karl Matthias][a],[Sean Kane][b]
|
||||
译者:[Cathon](https://github.com/Cathon)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,85 @@
|
||||
如何重置 RHEL7/CentOS7 系统的密码
|
||||
=================
|
||||
|
||||
### 介绍
|
||||
|
||||
**目的**
|
||||
|
||||
在 RHEL7/CentOS7/Scientific Linux 7 中重设 root 密码。
|
||||
|
||||
**要求**
|
||||
|
||||
RHEL7 / CentOS7 / Scientific Linux 7
|
||||
|
||||
**困难程度**
|
||||
|
||||
中等
|
||||
|
||||
### 指导
|
||||
|
||||
RHEL7 的世界发生了变化,重置 root 密码的方式也一样。虽然中断引导过程的旧方法(init=/bin/bash)仍然有效,但它不再是推荐的。“Systemd” 使用 “rd.break” 来中断引导。让我们快速浏览下整个过程。
|
||||
|
||||
**启动进入最小模式**
|
||||
|
||||
重启系统并在内核列表页面在系统启动之前按下 `e`。你会进入编辑模式。
|
||||
|
||||
**中断启动进程**
|
||||
|
||||
在内核字符串中 - 在以 `linux 16 /vmlinuz- ect` 结尾的行中输入 `rd.break`。接着 `Ctrl+X` 重启。系统启动进入初始化内存磁盘,并挂载在 `/sysroot`。在此模式中你不需要输入密码。
|
||||
|
||||
**重新挂载文件系统以便读写**
|
||||
|
||||
```
|
||||
switch_root:/# mount -o remount,rw /sysroot/
|
||||
```
|
||||
|
||||
**使 /sysroot 成为根目录**
|
||||
|
||||
```
|
||||
switch_root:/# chroot /sysroot
|
||||
```
|
||||
|
||||
命令行提示符会稍微改变。
|
||||
|
||||
**修改 root 密码**
|
||||
|
||||
```
|
||||
sh-4.2# passwd
|
||||
```
|
||||
|
||||
**加载 SELinux 策略**
|
||||
|
||||
```
|
||||
sh-4.2# load_policy -i
|
||||
```
|
||||
|
||||
**在 /etc/shadow 中设置上下文类型**
|
||||
|
||||
```
|
||||
sh-4.2# chcon -t shadow_t /etc/shadow
|
||||
```
|
||||
|
||||
注意:你可以通过如下创建 `autorelabel` 文件的方式来略过最后两步,但自动重建卷标会花费很长时间。
|
||||
|
||||
```
|
||||
sh-4.2# touch /.autorelabel
|
||||
```
|
||||
|
||||
因为这个原因,尽管它更简单,它应该作为“懒人选择”,而不是建议。
|
||||
|
||||
**退出并重启**
|
||||
|
||||
退出并重启并用新的 root 密码登录。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://linuxconfig.org/how-to-reset-the-root-password-in-rhel7-centos7-scientific-linux-7-based-systems
|
||||
|
||||
作者:[Rado Folwarczny][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://linuxconfig.org/how-to-reset-the-root-password-in-rhel7-centos7-scientific-linux-7-based-systems
|
||||
|
90
published/20161103 Perl and the birth of the dynamic web.md
Normal file
90
published/20161103 Perl and the birth of the dynamic web.md
Normal file
@ -0,0 +1,90 @@
|
||||
Perl 与动态网站的诞生
|
||||
==================
|
||||
|
||||
> 在新闻组和邮件列表里、在计算机科学实验室里、在各大陆之间,流传着一个神秘的故事,那是关于 Perl 与动态网站之间的不得不说的往事。
|
||||
|
||||

|
||||
|
||||
>图片来源 : [Internet Archive Book Images][30], 由 Opensource.com 修改. [CC BY-SA 4.0][29].
|
||||
|
||||
早期互联网历史中,有一些脍炙人口的开创性事件:如 蒂姆·伯纳斯·李(Tim Berners-Lee)在邮件组上[宣布][28] WWW-project 的那天,该文档随同 [CERN][27] 发布的项目代码进入到了公共域,以及 1993 年 1 月的[第一版 NCSA Mosaic 浏览器][26]。虽然这些独立的事件是相当重要的,但是当时的技术的开发已经更为丰富,不再是由一组的孤立事件组成,而更像是一系列有内在联系的故事。
|
||||
|
||||
这其中的一个故事描述的是网站是如何变成_动态的_,通俗说来就是我们如何使服务器除了提供静态 HTML 文档之外做更多的事。这是个流传在[新闻组][25]和邮件列表间、计算机科学实验室里、各个大陆之间的故事,重点不是一个人,而是一种编程语言:Perl。
|
||||
|
||||
### CGI 脚本和信息软件
|
||||
|
||||
在上世纪 90 年代中后期,Perl 几乎和动态网站是同义词。Perl 是一种相对来说容易学习的解释型语言,并且有强大的文本处理特性,使得它能够很容易的编写脚本来把一个网站关联到数据库、处理由用户发送的表单数据,当然,还要创造那些上世纪 90 年代的网站的经典形象——计数器和留言簿。
|
||||
|
||||
类似的网站特性渐渐的变成了 CGI 脚本的形式,其全称为通用网关接口(Common Gateway Interface),[首个实现][24]由 Rob McCool 于 1993 年 11 月在 NCSA HTTPD 上完成。CGI 是目的是直面功能,并且在短短几年间,任何人都可以很容易的找到一些由 Perl 写的预制的脚本存档。有一个声名狼籍的案例就是 [Matt's Scripts Archive][23],这是一种流行却包含各种安全缺陷的源代码库,它甚至使得 Perl 社区成员创建了一种被称为 [Not Matt‘s Scripts][22] 的更为专业的替换选择。
|
||||
|
||||
在当时,无论是业余爱好者,还是职业程序员都采用 Perl 来制作动态网站和应用,Tim O’Reilly [创造了词汇“信息软件(infoware)”][21] 来描述网站和 Perl 怎样成为变化中的计算机工业的一部分。考虑到 Yahoo!和 Amazon 带来的创新,O‘Reilly 写道:“传统软件在大量的软件中仅仅包含了少量的信息;而信息软件则在少量的软件中包含了大量的信息。” Perl 是一种像瑞士军刀一样的完美的小而强大的工具,它支撑了信息媒体从巨大的网站目录向早期的用户生成内容(UGC)平台的转变。
|
||||
|
||||
### 题外话
|
||||
|
||||
尽管使用 Perl 来制作 CGI 简直是上佳之选,但是编程语言和不断提升中的动态网站之间的关系变得更加的密切与深入。从[第一个网站][20](在 1990 年的圣诞节前)出现到 1993 年 McCool 实现 CGI 的短暂时期内,Web 上的各种东西,比如表单、图片以及表格,就这么逐渐出现在上世纪 90 年代乃至后来。尽管伯纳斯·李也对这些早期的岁月产生了影响,但是不同的人看到的是 Web 不同的潜在作用,并将它推向各自不同的方向。一方面,这样的结果来自一些著名的辩论,例如 [HTML 应该和 SGML 保持多近的关系][19]、[是否应该实现一个图像标签][18]等等。在另一方面,在没有直接因素影响的情况下改变是极其缓慢的。后者已经很好的描述了动态网站是如何发展的。
|
||||
|
||||
从某种意义上说,第一个“网关”的诞生可以追溯到 1991 至 1992 年之间(LCTT 译注:此处所谓“网关”的意义请参照 CGI 的定义),当时伯纳斯·李和一些计算机科学家与超文本爱好者[编写服务程序][17]使得一些特定的资源能够连接到一起,例如 CERN 的内部应用程序、通用的应用程序如 Oracle 数据库、[广域信息查询系统(WAIS)][16] 等等。(WAIS 是 Web 的前身,上世纪 80 年代后期开发,其中,开发者之一 [Brewster Kahle][15],是一个数字化图书管理员和 [Internet Archive][14] 的创始人。)可以这样理解,“网关”就是一个被设计用来连接其它 Web、数据库或者应用程序的定制的 Web 服务器。任何的动态功能就意味着在不同的端口上运行另外一个守护进程(参考阅读,例如伯纳斯·李对于在网站上[如何添加一个搜索功能][13] 的描述)。伯纳斯·李期望 Web 可以成为不同信息系统之间的通用接口,并且鼓励建立单一用途服务。他也提到 Perl 是一种强大的(甚至是不可思议)、可以将各种东西组合起来的语言。
|
||||
|
||||
然而,另一种对“网关”的理解指出它不一定是一个定制设备,可能只是一个脚本,一个并不需要额外服务器的低吞吐量的附加脚本。这种形式的首次出现是有争议性的 Jim Davis 的 [Gateway to the U Mich Geography server][11],于 1992 年的 11 月发布在了 WWW-talk 邮件列表中。Davis 的脚本是使用 Perl 编写的,是一种 Web API 的原型,基于格式化的用户查询从另外的服务器拉取数据。我们来说明一下这两种对于网关的理解的不同之处,伯纳斯·李[回复了][10] Davis 的邮件,期望他和 Michigan 服务器的作者“能够达成某种共识”,“从网络的角度来看的话”仅使用一台服务器来提供这样的信息可能会更有意义。伯纳斯·李,可能是期待着 Web 的发明者可以提出一种有秩序的信息资源访问方式。这样从不同服务器上拉取数据的网关和脚本意味着一种潜在的 Web 的质的变化,虽然不断增多,但也可能有点偏离了伯纳斯·李的原始观点。
|
||||
|
||||
### 回到 Perl HTTPD
|
||||
|
||||
在 Davis 的地理服务器上的网关向标准化的、低吞吐量的、通过 CGI 方式实现的脚本化网关迈进的一步中,[Perl HTTPD][9] 的出现是很重要的事件,它是 1993 年初由印地安纳大学的研究生 Marc Van Heyningen 在布卢明顿(Bloomington)完全使用 Perl 语言实现的一个 Web 服务器程序。从 Van Heyningen 给出的[设计原则][8]来看,基于使用 Perl 就不需要任何的编译过程这样一种事实,使得它能够成为一种极易扩展的服务器程序,这个服务器包含了“一个向代码中增加新特性时只要简单的重启一下就可以,而不会有任何的宕机时间的特性”,使得这个服务器程序可以频繁的加入新功能。
|
||||
|
||||
Perl HTTPD 代表了那种服务器程序应该是单一、特定目的的观点。相应的,这种模式似乎暗示了在 Web 开发中像这样渐进式的、持续测试的软件产品可能会最终变成一种共识。Van Heyningen 在后来[提到过][7]他从头编写这样一个服务器程序的初衷是当时没有一种简便的方式使用 CERN 服务器程序来生成“虚拟文档”(例如,动态生成的页面),他打趣说使用 Perl 这样的“神之语言”来写可能是最简单的方式了。在他初期编写的众多脚本中有一个 Sun 操作系统的用户手册的 Web 界面,以及 [Finger 网关][6](这是一种早期用来共享计算机系统信息或者是用户信息的协议)。
|
||||
|
||||
虽然 Van Heyningen 将印地安纳大学的服务器主要用来连接现存的信息资源,他和研究生们同时也看见了作为个人发布形式的潜在可能。其中一件广为人知事件是在 1993-1994 年之间围绕着一个著名的加拿大案件而[公布][5]的一系列的文件、照片和新闻故事,与此形成鲜明对比的是,所有的全国性媒体都保持了沉默。
|
||||
|
||||
Perl HTTPD 没有坚持到现在的需要。今天,Van Heyningen 回忆起这个程序的时候认为这个程序只是当时的一个原型产品。它的原始目的只是向那些已经选择了 Gopher 作为大学的网络界面的资深教员们展示了网络的另一种利用方式。Van Heyningen 以[一种基于 Web 的、可搜索的出版物索引][4]的方式,用代码回应了他的导师们的虚荣。就是说,在服务器程序技术方面关键创新是为了赢得争论的胜利而诞生的,在这个角度上来看代码做到了所有要求它所做的事。
|
||||
|
||||
不管该服务器程序的生命是否短暂,伴随者 Perl HTTPD 一起出现的理念已经传播到了各个角落。Van Heyningen 开始收到了获取该代码的请求,而后将它分享到了网上,并提示说,需要了解一些 Perl 就可以将它移植到其它操作系统(或者找到一个这样的人也行)。不久之后,居住在奥斯汀(Austin)的程序员 Tony Sanders 开发了一个被称为 [Plexus][3] 的轻便版本。Sander 的服务器程序是一款全功能的产品,并且同样包含了 Perl HTTPD 所建议的易扩展性,而且添加一些新的特性如图片解码等。Plexus [直接影响了][2] Rob McCool 给 NCSA HTTPD 服务器上的脚本开发的“htbin”,并且同样影响到了不久之后诞生的通用网关接口(CGI)。
|
||||
|
||||
在这些历史遗产之外,感谢妙不可言的 Internet Archive(互联网时光机)使得 Perl HTTPD 在今天依然保留在一种我们依然可以获取的形式,你可以从[这里下载 tarball][1]。
|
||||
|
||||
### 历史展望
|
||||
|
||||
对于技术世界的颠覆来说,技术的改变总是在一个相互对立的过程中。现有的技术是思考新技术的基础与起点。过时的编程形式启迪了今天人们做事的新方式。网络世界的创新可能看起来更像是对于旧技术的扩展,不仅仅是 Perl。
|
||||
|
||||
在萌芽事件的简单的时间轴之外,Web 历史学者也许可以从 Perl 获取更多的线索。其中一部份的挑战在于材料的获取。更多需要做的事情包括从可获取的大量杂乱的数据中梳理出它的结构,将分散在邮件列表、归档网站,书本和杂志中的信息内容组合在一起。还有一部分的挑战是需要认识到 Web 的历史不仅仅是新技术发布的日子,它同时包括了个人记忆、人类情感与社会进程等,并且这不仅仅是单一的历史线而是有许许多多条相似的历史线组合而成的。就如 Perl 的信条一样“殊途同归。(There's More Than One Way To Do It.)”
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/life/16/11/perl-and-birth-dynamic-web
|
||||
|
||||
作者:[Michael Stevenson][a]
|
||||
译者:[wcnnbdk1](https://github.com/wcnnbdk1)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/mstevenson
|
||||
[1]:https://web.archive.org/web/20011126190051/http://www.cs.indiana.edu/perl-server/httpd.pl.tar.Z
|
||||
[2]:http://1997.webhistory.org/www.lists/www-talk.1993q4/0516.html
|
||||
[3]:https://web.archive.org/web/19990421192342/http://www.earth.com/server/doc/plexus.html
|
||||
[4]:https://web.archive.org/web/19990428030253/http://www.cs.indiana.edu:800/cstr/search
|
||||
[5]:https://web.archive.org/web/19970720205155/http://www.cs.indiana.edu/canada/karla.html
|
||||
[6]:https://web.archive.org/web/19990429014629/http://www.cs.indiana.edu:800/finger/gateway
|
||||
[7]:https://web.archive.org/web/19980122184328/http://www.cs.indiana.edu/perl-server/history.html
|
||||
[8]:https://web.archive.org/web/19970720025822/http://www.cs.indiana.edu/perl-server/intro.html
|
||||
[9]:https://web.archive.org/web/19970720025822/http://www.cs.indiana.edu/perl-server/code.html
|
||||
[10]:https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0069.html
|
||||
[11]:https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0060.html
|
||||
[12]:http://info.cern.ch/hypertext/WWW/Provider/ShellScript.html
|
||||
[13]:http://1997.webhistory.org/www.lists/www-talk.1993q1/0109.html
|
||||
[14]:https://archive.org/index.php
|
||||
[15]:http://brewster.kahle.org/about/
|
||||
[16]:https://en.wikipedia.org/wiki/Wide_area_information_server
|
||||
[17]:http://info.cern.ch/hypertext/WWW/Daemon/Overview.html
|
||||
[18]:http://1997.webhistory.org/www.lists/www-talk.1993q1/0182.html
|
||||
[19]:http://1997.webhistory.org/www.lists/www-talk.1993q1/0096.html
|
||||
[20]:http://info.cern.ch/hypertext/WWW/TheProject.html
|
||||
[21]:https://web.archive.org/web/20000815230603/http://www.edventure.com/release1/1198.html
|
||||
[22]:http://nms-cgi.sourceforge.net/
|
||||
[23]:https://web.archive.org/web/19980709151514/http://scriptarchive.com/
|
||||
[24]:http://1997.webhistory.org/www.lists/www-talk.1993q4/0518.html
|
||||
[25]:https://en.wikipedia.org/wiki/Usenet_newsgroup
|
||||
[26]:http://1997.webhistory.org/www.lists/www-talk.1993q1/0099.html
|
||||
[27]:https://tenyears-www.web.cern.ch/tenyears-www/
|
||||
[28]:https://groups.google.com/forum/#!msg/alt.hypertext/eCTkkOoWTAY/bJGhZyooXzkJ
|
||||
[29]:https://creativecommons.org/licenses/by-sa/4.0/
|
||||
[30]:https://www.flickr.com/photos/internetarchivebookimages/14591826409/in/photolist-oeqVBX-xezHCD-otJDtG-whb6Qz-tohe9q-tCxH8y-xq4VfN-otJFfh-xEmn3b-tERUdv-oucUgd-wKDyLy-owgebW-xd6Wew-xGEvuT-toqHkP-oegBCj-xtDdzN-tF19ip-xGFbWP-xcQMJq-wxrrkN-tEYczi-tEYvCn-tohQuy-tEzFwN-xHikPT-oetG8V-toiGvh-wKEgAu-xut1qp-toh7PG-xezovR-oegRMa-wKN2eg-oegSRp-sJ29GF-oeqXLV-oeJTBY-ovLF3X-oeh2iJ-xcQBWs-oepQoy-ow4xoo-xknjyD-ovunVZ-togQaj-tEytff-xEkSLS-xtD8G1
|
85
published/20161128 Mir is not only about Unity8.md
Normal file
85
published/20161128 Mir is not only about Unity8.md
Normal file
@ -0,0 +1,85 @@
|
||||
Mir 并不只是 Unity 8
|
||||
============================================================
|
||||
|
||||

|
||||
|
||||
_这是一篇来自 Canonical 的软件工程师 Alan Griffiths 的一篇游客文章。如果你也想投稿,请联系 ubuntu-devices@canonical.com_
|
||||
|
||||
Mir 是一个计算机显示的管理应用的支持项目。它可以与当前 Ubuntu 桌面(及很多其他桌面)上使用的、我们更熟悉的 X-Window 相比较。我下面会讨论 Mir 的一些动机,但本篇的目的是澄清 Mir 和 Unity 8 之间的关系。
|
||||
|
||||
大多数时候你听说 Mir 时都会提到 Unity 8。这并不奇怪,因为 Unity 8 是 Canonical 新的用户界面 shell,用户会一直与它交互。 Mir “只”使这成为可能。Unity 8 目前用于手机和平板电脑,也可以在 Ubuntu 16.10 桌面上“预览”它。
|
||||
|
||||
在这里我想解释一下,可以不用 Unity 8 也可以使用 Mir。要么作为替代 shell,要么作为嵌入式环境的更简单的界面:信息亭,电子标牌等。Mir “抽象层”证明了这一点,它提供了三个重要的元素:
|
||||
|
||||
1. libmiral.so - Mir 的稳定接口,提供基本的窗口管理;
|
||||
2. miral-shell - 一个提供“传统”和“平铺”窗口管理的示例 shell;
|
||||
3. miral-kiosk - 一个仅提供基本窗口管理的示例“信息亭”。
|
||||
|
||||
miral-shell 和 miral-kiosk 示例服务器可从 zesty 的归档文件中获得,Kevin Gunn 已经在“Voices”上写了一篇基于 miral-kiosk 的“信息亭”的概览的[博文][1]。我将在下面给出更多关于使用这些例子的细节,但在[我的“voices”博客][2]上有更多(包括“如何”开发自己的替代 Mir 服务器)。
|
||||
|
||||
### 使用 MIR
|
||||
|
||||
Mir 是一套编程库,而不是独立的程序。这意味着这需要程序去调用它实现相应的功能。有两种方式去使用 Mir 库:编写程序的时候作为“客户端”,或者在实现 shell 时作为“服务端”。客户端(和 X11 一起)典型是使用工具库,而不是直接使用 Mir(或者 X11)。
|
||||
|
||||
GTK、Qt 和 SDL2 中有对 Mir 的支持。当在那些工具库中启用对它的支持时(默认在 Ubuntu 中启用支持),意味着使用这些工具的程序应该“可以工作”于 Mir 中。除此之外还有一个 Xmir:一个运行于 Mir 的 X11 服务器,这允许基于 X 的服务运行在 Mir 服务端上。
|
||||
|
||||
但是开始之前 Mir 客户端需要一个相匹配的 Mir 服务端。在最后一个开发周期中,Mir 团队在演示中将 MirAL 作为编写 Mir 服务端的推荐方法,并推出了一个“miral-examples”包。在 Ubuntu 的开发版本 zesty 中,你可以从归档中安装它:
|
||||
|
||||
```
|
||||
$ sudo apt install miral-examples mir-graphics-drivers-desktop qtubuntu-desktop
|
||||
```
|
||||
|
||||
_对于其他平台,你需要自己构建 MirAL(有关详细信息,请参阅 Mir 桌面环境示例)。_
|
||||
|
||||
miral-examples 安装后你可以在 Unity 7 中以窗口的方式运行一个 Mir 服务端,然后在里面运行一个客户端(比如 gedit):
|
||||
|
||||
```
|
||||
$ miral-shell&
|
||||
$ miral-run gedit
|
||||
```
|
||||
|
||||
这会给你一个(非常基础的)“传统” 的桌面窗口管理。另外你可以试下“平铺”窗口管理器:
|
||||
|
||||
```
|
||||
$ miral-shell --window-manager tiling&
|
||||
$ miral-run qterminal
|
||||
```
|
||||
|
||||
或者(甚至更基础的)信息亭界面:
|
||||
|
||||
```
|
||||
$ miral-kiosk&
|
||||
$ miral-run 7kaa
|
||||
```
|
||||
|
||||
这些 Mir 服务端都不会提供带有“启动器”、通知等的完整“桌面”。但是它们演示了不使用 Unity 8 使用 Mir 的可能。
|
||||
|
||||
### MIR 解决的问题
|
||||
|
||||
X-Window 系统已经是,并且仍然是,提供了一种与计算机的交互的非常成功的方式。它提供了广泛的硬件和驱动程序一致的抽象。它支持许多桌面环境和图形用户界面工具包,并可以让它们在大量计算机上一起工作。
|
||||
|
||||
但它来自一个与当前电脑使用方式非常不同的时代,现在有一些问题是很难满足的,因为它需要支持老旧的系统。
|
||||
|
||||
在 1980 年,大多数计算机是由专家管理的大型事物,将它们连接在一起“是非常困难的”。在那个时代,开发软件的成本是这样的,一个程序“监听”另一个程序获得的好处是可以忽略不计的:此时几乎没有计算机,同时它们是独立的,它们所有的工作和金融无关。
|
||||
|
||||
X-Window 开发于这种环境下,通过一系列扩展,它已经适应了许多变化。但它本质上是不安全的:任何应用程序可以知道显示了什么(并影响它)。你可以编写像 Xeyes(用“眼睛”跟踪光标)或“Tickeys”(通过键盘来生成打字机噪声)等应用程序。现实是,任何应用程序可以跟踪和操纵几乎所有的事情。这就是基于 X 的桌面如 Unity 7、Gnome、KDE及其它桌面工作的方式。
|
||||
|
||||
X-Window 中的窗口管理的开放性质不适合用于具有数百万计算机连接到因特网的世界,它们用于信用卡交易和网上银行,且由非专家管理,并自愿安装来自陌生人的程序。人们越来越意识到让 X-Window 适应新的安全性和图形性能的要求是不可行的。
|
||||
|
||||
现在至少有两个开源项目旨在提供一个替代品:Mir 和 Wayland。虽然有些人认为两者是竞争关系,但在很多领域,它们有共同的利益:它们都需要与那些之前假定使用 X11 的其它软件交互,并且许多引入支持的工作对两者都有益。
|
||||
|
||||
Canonical 的 X-Window 替换品 Mir,它只将信息暴露给它需要的应用程序(因此没有按键监听或光标跟踪)。它可以满足当前时代的需求,并可以利用现代硬件,如图形处理器。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://insights.ubuntu.com/2016/11/28/mir-is-not-only-about-unity8/
|
||||
|
||||
作者:[Guest][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://insights.ubuntu.com/author/guest/
|
||||
[1]:http://voices.canonical.com/kevin.gunn/
|
||||
[2]:http://voices.canonical.com/alan.griffiths/
|
183
published/20161226 Top 10 open source projects of 2016.md
Normal file
183
published/20161226 Top 10 open source projects of 2016.md
Normal file
@ -0,0 +1,183 @@
|
||||
2016 年十大顶级开源项目
|
||||
============================================================
|
||||
|
||||
> 在我们今年的年度顶级开源项目列表中,让我们回顾一下作者们提到的几个 2016 年受欢迎的项目,以及社区管理员选出的钟爱项目。
|
||||
|
||||

|
||||
|
||||
图片来自:[George Eastman House][1] 和 [Internet Archive Book Images][2] 。修改自 Opensource.com. CC BY-SA 4.0
|
||||
|
||||
我们持续关注每年新出现的、成长、改变和发展的优秀开源项目。挑选 10 个开源项目到我们的年度顶级项目列表中并不太容易,而且,也没有哪个如此短的列表能够包含每一个应该包含在内的项目。
|
||||
|
||||
为了挑选 10 个顶级开源项目,我们回顾了作者们 2016 年涉及到的流行的开源项目,同时也从社区管理员收集了一些意见。经过管理员的一番推荐和投票之后,我们的编辑团队选定了最终的列表。
|
||||
|
||||
它们就在这儿, 2016 年 10 个顶级开源项目:
|
||||
|
||||
### Atom
|
||||
|
||||
[Atom][3] 是一个来自 GitHub 的可魔改的(hackable)文本编辑器。Jono Bacon 在今年的早些时候为它的“简单核心”[写了一篇文章][4],对该开源项目所给用户带来的选择而大加赞赏。
|
||||
|
||||
“[Atom][3] 带来了大多数用户想要的主要核心特性和设置,但是缺失了一些用户可能想要的更加高级或独特的特性。……Atom 提供了一个强大的框架,从而允许它的许多部分都可以被改变或扩展。”
|
||||
|
||||
如果打算开始使用 Atom, 请先阅读[这篇指南][5]。如果想加入到用户社区,你可以在 [GitHub][6]、[Discuss][7] 和 [Slack][8] 上找到 Atom 。
|
||||
|
||||
Atom 是 [MIT][9] 许可的,它的[源代码][10]托管在 GitHub 上。
|
||||
|
||||
### Eclipse Che
|
||||
|
||||
[Eclipse Che][11] 是下一代在线集成开发环境(IDE)和开发者工作区。Joshua Allen Holm 在 2016 年 11 月为我们[点评][12]了 Eclipse Che,使我们可以一窥项目背后的开发者社区,Eclipse Che 创新性地使用了容器技术,并且开箱即用就支持多种流行语言。
|
||||
|
||||
“Eclipse Che 集成了就绪即用( ready-to-go)的软件环境(stack)覆盖了绝大多数现代流行语言。这包括 C++、Java、Go、PHP、Python、.NET、Node.js、Ruby on Rails 和 Android 开发的软件环境。软件环境仓库(Stack Library )如果不够的话,甚至还提供了更多的选择,你可以创建一个能够提供特殊环境的定制软件环境。”
|
||||
|
||||
你可以通过网上的[托管账户][13]、[本地安装][14],或者在你常用的[云供应商][15]上测试 Eclipse Che。你也可以在 GitHub 上找到它的[源代码][16],发布于 [Eclipse 公开许可证][17]之下。
|
||||
|
||||
### FreeCAD
|
||||
|
||||
[FreeCAD][18] 是用 Python 写的,是一款电脑辅助设计工具(或叫电脑辅助起草工具),可以用它来为实际物体创建设计模型。 Jason Baker 在 [3 款可供选择的 AutoCAD 的开源替代品][19]一文中写到关于 FreeCAD :
|
||||
|
||||
“FreeCAD 可以从各种常见格式中导入和导出 3D 对象,其模块化结构使得它易于通过各种插件扩展基本功能。该程序有许多内置的界面选项,这包括从草稿到渲染器,甚至还有一个机器人仿真能力。”
|
||||
|
||||
FreeCAD 是 [LGPL][20] 许可的,它的[源代码][21]托管在 GitHub 上。
|
||||
|
||||
### GnuCash
|
||||
|
||||
[GnuCash][22] 是一个跨平台的开源桌面应用,它可以用来管理个人和小型商业账户。 Jason Baker 把 GnuCash 列入了我们针对个人金融的 Mint 和 Quicken 的开源替代品的[综述列表][23]中:
|
||||
|
||||
GnuCash “具有多项记账的特性,能从多种格式导入数据,处理多重汇率,为你创建预算,打印支票,创建定制计划报告,并且能够直接从网上银行导入和拉取股票行情。”
|
||||
|
||||
其发布于 GPL [版本 2 或版本 3 许可证][25]下,你可以在 GitHub 上找到 GnuCash 的[源代码][24]。
|
||||
|
||||
一个值得一提的 GnuCash 可选替代品是 [KMyMoney][26],它也得到了该列表的提名,是另一个在 Linux 上管理财务的好选择。
|
||||
|
||||
### Kodi
|
||||
|
||||
[Kodi][27] 是一个开源媒体中心应用,之前叫做 XBMC,它能够在多种设备上工作,是一个用来 DIY 播放电影、TV、音乐的机顶盒的工具。 Kodi 高度可定制化,它支持多种皮肤、插件和许多遥控设备(包括它自己定制的 Android remote 应用)。
|
||||
|
||||
尽管今年我们没有深入地报道 Kodi, 但依旧出现在许多关于创建一个家用 Linux [音乐服务器][28]、媒体[管理工具][29]的文章中,还出现在之前的一个关于最喜爱的开源[视频播放器][30]的投票中(如果你在家中使用 Kodi,想要写一些自己的体验,[请让我们知道][31])。
|
||||
|
||||
其发布于 [GPLv2][33] 许可证下,你可以在 GitHub 上找到 Kodi 的[源代码][32]。
|
||||
|
||||
### MyCollab
|
||||
|
||||
[MyCollab][34] 是一套针对顾客关系管理(CRM)、文档管理和项目管理的工具。社区管理员 Robin Muilwijk 在他的综述 [2016 年 11 个顶级的项目管理工具][35]一文中详细阐述了 MyCollab-Project 的细节:
|
||||
|
||||
“MyCollab-Project 包含许多特性,比如甘特图、里程碑、时间跟踪和事件管理。它有 Kanban 板功能,因而支持敏捷开发模式。 MyCollab-Project 有三个不同的版本,其中[社区版][36]是自由且开源的。”
|
||||
|
||||
安装 MyCollab 需要 Java 运行环境和 MySQL 环境的支持。请访问 [MyCollab 网站][37]来了解如何对项目做贡献。
|
||||
|
||||
MyCollab 是 AGPLv3 许可的,它的[源代码][38]托管在 GitHub 上。
|
||||
|
||||
### OpenAPS
|
||||
|
||||
[OpenAPS][39] 是社区管理员在 2016 年发现的另一个有趣的项目,我们也深入报道过它。 OpenAPS,即 Open Artificial Pancreas System 项目,是一个致力于提高 1 型糖尿病患者生活质量的开源项目。
|
||||
|
||||
该项目包含“[一个专注安全的典范(reference)设计][40]、一个[工具箱][41]和一个开源的[典范(reference)实现][42],它们是为设备制造商或者任何能够构造人工胰腺设备的个人设计的,从而能够根据胰岛素水平安全地调节血液中葡萄糖水平。尽管潜在用户在尝试亲自构建或使用该系统前应该小心地测试该项目并和他们的健康护理医生讨论,但该项目的创建者希望开放技术能够加速医疗设备行业的研究和开发步伐,从而发现新的治疗方案并更快的投入市场。”
|
||||
|
||||
### OpenHAB
|
||||
|
||||
[OpenHAB][43] 是一个具有可插拔体系结构的家用自动化平台。社区管理员 D Ruth Bavousett 今年购买该平台并尝试使用以后为 OpenHAB [写到][44]:
|
||||
|
||||
“我所发现的其中一个有趣的模块是蓝牙绑定;它能够发现特定的已启用蓝牙的设备(比如你的智能手机、你孩子的那些设备)并且在这些设备到达或离开的时候采取行动-关门或开门、开灯、调节恒温器和关闭安全模式等等”
|
||||
|
||||
查看这个能够与社交网络、即时消息和云 IoT 平台进行集成和通讯的[绑定和捆绑设备的完整列表][45]。
|
||||
|
||||
OpenHAB 是 EPL 许可的,它的[源代码][46]托管在 GitHub 上。
|
||||
|
||||
### OpenToonz
|
||||
|
||||
[OpenToonz][47] 是一个 2D 动画生产软件。社区管理员 Joshua Allen 在 2016 年 3 月[报道][48]了它的开源版本,在 Opensource.com 网站的其他动画相关的文章中它也有被提及,但是我们并没有深入介绍,敬请期待。
|
||||
|
||||
现在,我们可以告诉你的是, OpenToonz 有许多独一无二的特性,包括 GTS,它是吉卜力工作室(Studio Ghibli )开发的一个生成工具,还有一个用于图像处理的[效果插件 SDK][49]。
|
||||
|
||||
如果想讨论开发和视频研究的话题,请查看 GitHub 上的[论坛][50]。 OpenToonz 的[源代码][51]托管在 GitHub 上,该项目是以 BSD 许可证发布。
|
||||
|
||||
### Roundcube
|
||||
|
||||
[Roundcube][52] 是一个现代化、基于浏览器的邮件客户端,它提供了邮箱用户使用桌面客户端时可能用到的许多(如果不是全部)功能。它有许多特性,包括支持超过 70 种语言、集成拼写检查、拖放界面、功能丰富的通讯簿、 HTML 电子邮件撰写、多条件搜索、 PGP 加密支持、会话线索等。 Roundcube 可以作为许多用户的邮件客户端的偶尔的替代品工作。
|
||||
|
||||
在我们的 [Gmail的开源替代品][53] 综述中, Roundcube 和另外四个邮件客户端均被包含在内。
|
||||
|
||||
其以 [GPLv3][55] 许可证发布,你可以在 GitHub 上找到 Roundcube 的[源代码][54]。除了直接[下载][56]、安装该项目,你也可以在许多完整的邮箱服务器软件中找到它,如 [Groupware][57]、[iRedMail][58]、[Mail-in-a-Box][59] 和 [mailcow][60]。
|
||||
|
||||
|
||||
这就是我们的列表了。在 2016 年,你有什么喜爱的开源项目吗?喜爱的原因呢?请在下面的评论框发表。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||

|
||||
|
||||
Jen Wike Huger - Jen Wike Huger 是 Opensource.com 网站的内容管理员。她负责日期发布、协调编辑团队并指导新作者和已有作者。请在 Twitter 上关注她 @jenwike, 并在 Jen.io 上查看她的更多个人简介。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/16/12/yearbook-top-10-open-source-projects
|
||||
|
||||
作者:[Jen Wike Huger][a]
|
||||
译者:[ucasFL](https://github.com/ucasFL)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/jen-wike
|
||||
[1]:https://www.flickr.com/photos/george_eastman_house/
|
||||
[2]:https://www.flickr.com/photos/internetarchivebookimages/14784547612/in/photolist-owsEVj-odcHUi-osAjiE-x91Jr9-obHow3-owt68v-owu56t-ouySJt-odaPbp-owajfC-ouBSeL-oeTzy4-ox1okT-odZmpW-ouXBnc-ot2Du4-ocakCh-obZ8Pp-oeTNDK-ouiMZZ-ie12mP-oeVPhH-of2dD4-obXM65-owkSzg-odBEbi-oqYadd-ouiNiK-icoz2G-ie4G4G-ocALsB-ouHTJC-wGocbd-osUxcE-oeYNdc-of1ymF-idPbwn-odoerh-oeSekw-ovaayH-otn9x3-ouoPm7-od8KVS-oduYZL-obYkk3-hXWops-ocUu6k-dTeHx6-ot6Fs5-ouXK46
|
||||
[3]:https://atom.io/
|
||||
[4]:https://opensource.com/life/16/2/culture-pluggable-open-source
|
||||
[5]:https://github.com/atom/atom/blob/master/CONTRIBUTING.md
|
||||
[6]:https://github.com/atom/atom
|
||||
[7]:http://discuss.atom.io/
|
||||
[8]:http://atom-slack.herokuapp.com/
|
||||
[9]:https://raw.githubusercontent.com/atom/atom/master/LICENSE.md
|
||||
[10]:https://github.com/atom/atom
|
||||
[11]:http://www.eclipse.org/che/
|
||||
[12]:https://linux.cn/article-8018-1.html
|
||||
[13]:https://www.eclipse.org/che/getting-started/cloud/
|
||||
[14]:https://www.eclipse.org/che/getting-started/download/
|
||||
[15]:https://bitnami.com/stack/eclipse-che
|
||||
[16]:https://github.com/eclipse/che/
|
||||
[17]:https://github.com/eclipse/che/blob/master/LICENSE
|
||||
[18]:http://www.freecadweb.org/
|
||||
[19]:https://opensource.com/alternatives/autocad
|
||||
[20]:https://github.com/FreeCAD/FreeCAD/blob/master/COPYING
|
||||
[21]:https://github.com/FreeCAD/FreeCAD
|
||||
[22]:https://www.gnucash.org/
|
||||
[23]:https://opensource.com/life/16/1/3-open-source-personal-finance-tools-linux
|
||||
[24]:https://github.com/Gnucash/
|
||||
[25]:https://github.com/Gnucash/gnucash/blob/master/LICENSE
|
||||
[26]:https://kmymoney.org/
|
||||
[27]:https://kodi.tv/
|
||||
[28]:https://opensource.com/life/16/1/how-set-linux-based-music-server-home
|
||||
[29]:https://opensource.com/life/16/6/tinymediamanager-catalogs-your-movie-and-tv-files
|
||||
[30]:https://opensource.com/life/15/11/favorite-open-source-video-player
|
||||
[31]:https://opensource.com/how-submit-article
|
||||
[32]:https://github.com/xbmc/xbmc
|
||||
[33]:https://github.com/xbmc/xbmc/blob/master/LICENSE.GPL
|
||||
[34]:https://community.mycollab.com/
|
||||
[35]:https://opensource.com/business/16/3/top-project-management-tools-2016
|
||||
[36]:https://github.com/MyCollab/mycollab
|
||||
[37]:https://community.mycollab.com/docs/developing-mycollab/how-can-i-contribute-to-mycollab/
|
||||
[38]:https://github.com/MyCollab/mycollab
|
||||
[39]:https://openaps.org/
|
||||
[40]:https://openaps.org/reference-design
|
||||
[41]:https://github.com/openaps/openaps
|
||||
[42]:https://github.com/openaps/oref0/
|
||||
[43]:http://www.openhab.org/
|
||||
[44]:https://opensource.com/life/16/4/automating-your-home-openhab
|
||||
[45]:http://www.openhab.org/features/supported-technologies.html
|
||||
[46]:https://github.com/openhab/openhab
|
||||
[47]:https://opentoonz.github.io/e/index.html
|
||||
[48]:https://opensource.com/life/16/3/weekly-news-march-26
|
||||
[49]:https://github.com/opentoonz/plugin_sdk
|
||||
[50]:https://github.com/opentoonz/opentoonz/issues
|
||||
[51]:https://github.com/opentoonz/opentoonz
|
||||
[52]:https://roundcube.net/
|
||||
[53]:https://opensource.com/alternatives/gmail
|
||||
[54]:https://github.com/roundcube/roundcubemail
|
||||
[55]:https://github.com/roundcube/roundcubemail/blob/master/LICENSE
|
||||
[56]:https://roundcube.net/download/
|
||||
[57]:http://kolab.org/
|
||||
[58]:http://www.iredmail.org/
|
||||
[59]:https://mailinabox.email/
|
||||
[60]:https://mailcow.email/
|
@ -1,87 +1,87 @@
|
||||
2017年:前端开发者都应该回顾并掌握的基础
|
||||
前端开发者,2017 年你应该学习什么
|
||||
======================
|
||||
|
||||

|
||||

|
||||
|
||||
在当今的快节奏生态中,我们都倾向于将时间花在尝试那些最新的创意软件中,然后在网络进行激烈的辩论。
|
||||
在当今的快节奏生态中,我们都倾向于花时间尝试最新的发明,然后在网络上进行激烈的辩论。
|
||||
|
||||
这里,我并不是说我们不能这样做。但我们的确应该把脚步放慢一些,并认真了解那些变化不太大的事情。这样不仅会提高工作质量和我们创造的价值 —— 这还讲循序渐进的帮助我们更快理解这些行的工具。
|
||||
这里,我并不是说我们不能这样做。但我们的确应该把脚步放慢一些,并认真了解那些不会有很大变化的事情。这样不仅会提升我们的工作质量和我们所创造的价值 —— 还将切实地帮助我们更快理解这些新的工具。
|
||||
|
||||
本文融合了我的个人经历以及对新一年的希冀。正如我想热切表达自己想法一样,我也期待能在评论区看到你的建议。
|
||||
本文融合了我的个人经历以及对新一年的希冀。正如我想热切表达自己想法一样,我也期待能在下方的评论表单中看到你的建议。
|
||||
|
||||
### 学习如何写出易读的代码
|
||||
### 学习如何写出可读性高的代码
|
||||
|
||||
我们多数的工作并不是编写新代码,而是维护已有代码。这意味着你最终阅读代码的时间要比编写它所花费的时间要长,所以你需要为 _之后需要阅读你代码的程序员_ 精简代码,而非让代码区适应解释器。
|
||||
我们多数的工作并不是编写新代码,而是维护已有代码。这意味着你最终阅读代码的时间要比编写它所花费的时间要长,所以你需要为_之后需要阅读你代码的程序员_优化代码,而不是为了解释器。
|
||||
|
||||
这里我推荐你按以下顺序 — 由浅入深 — 阅读下面三本书:
|
||||
这里我建议你按以下顺序 — 由浅入深 — 阅读下面三本书:
|
||||
|
||||
* Dustin Boswell 的 《[编写可读代码的艺术 (The Art of Readable Code)][1]》
|
||||
* Robert C. Martin 的 《[代码整洁之道 (Clean Code: A Handbook of Agile Software Craftsmanship)][2]》
|
||||
* Steve McConnell 的 《[代码大全 (Code Complete: A Practical Handbook of Software Construction)][3]》
|
||||
|
||||

|
||||

|
||||
|
||||
### 深入学习 JavaScript
|
||||
|
||||
现如今,每周都会出现一个新的 JavaScript 框架,并标榜自己比其他的任何旧框架都要好用。这样的情况下,我们很多人更倾向于花费时间来学习框架,而且这样也要比学习 JavaScript 本身要容易的多。如果说你正在使用框架,但并不了解该框架的工作方式,_立刻停止,并学习 JavaScript,直到你能够理解这些工具的工作方式为止_ 。
|
||||
现如今,每周都会出现一个新的 JavaScript 框架,并标榜自己比其他的任何旧框架都要好用。这样的情况下,我们很多人更倾向于花费时间来学习框架,而且这样也要比学习 JavaScript 本身要容易的多。如果说你正在使用框架,但并不了解该框架的工作方式,_立刻停止使用它,并去学习 JavaScript,直到你能够理解这些工具的工作方式为止_ 。
|
||||
|
||||
* 可以从 [Kyle Simpson][4] 的 [你所不知道的 JavaScript][5] 系列开始,这个可以在线免费阅读。
|
||||
* [Eric Elliott][6] 列出的 [2017 年:JavaScript 的学习目标][7].
|
||||
* [Henrique Alves][8] 列出的 [进行响应式开发之前必须了解的事情][9](实际上就是一个知识框架)。
|
||||
* 可以从 [Kyle Simpson][4] 的 [你所不知道的 JavaScript][5] 系列开始,这个系列可以在线免费阅读。
|
||||
* [Eric Elliott][6] 列出的一个长长的 [2017 年:JavaScript 的学习目标][7]。
|
||||
* [Henrique Alves][8] 列出的 [进行响应式开发之前必须了解的事情][9](实际上就是一个知识框架)。
|
||||
* Mike Pennisi 的 [JavaScript 开发者:注意你的语言][10] — 了解 ECMAScript 新特性的中 TC-39 发展过程。
|
||||
|
||||
### 学习函数式编程
|
||||
|
||||
多年以来,我们一直期待着 JavaScript 引入类,但真正有类之后,我们却不想在 JavaScript 中使用类了,我们只想使用函数。即使是编写 HTML,我们也是使用函数 (JSX)。
|
||||
多年以来,我们一直期待着 JavaScript 引入类,但真正引入类之后,我们却不想在 JavaScript 中使用类了,我们只想使用函数。我们甚至使用函数编写 HTML (JSX)。
|
||||
|
||||
* Kyle Simpson 的 [轻量级函数式 JavaScript][11]。
|
||||
* Professor Frisby 的 [函数式编程完全指南][12] 和 [在线免费课程][13]。
|
||||
* Frisby 教授的 [函数式编程完全指南][12] 和 [在线免费课程][13]。
|
||||
|
||||

|
||||

|
||||
|
||||
### 学习设计基础知识
|
||||
|
||||
作为一个前端开发者,我们比这个生态中的任何人 —— 可能甚至是设计人员 —— 都要更加接近用户。如果设计人员要指定你呈现在屏幕上的每一个像素,你可能会遇到各种莫名其妙的错误。
|
||||
作为一个前端开发者,我们比这个生态中的任何人 —— 甚至可能是设计人员 —— 都要更加接近用户。如果设计者必须去确认你还原在屏幕上的每一个像素,你或许做错了某些事。
|
||||
|
||||
* [David Kadavy][16] 的《[黑客设计][14]》或对应的 [免费课程][15]。
|
||||
* [David Kadavy][16] 的《[黑客设计(Design for Hackers)][14]》或对应的 [免费课程][15]。
|
||||
* [Tracy Osborn][18] 的讲座:[为非设计人员的设计知识][17]。
|
||||
* [Nathan Barry][20] 的 [Web 应用设计][19]。
|
||||
* [Jason Santa Maria][22] 的 [Web 页面设计][21]。
|
||||
* Alan Cooper 的 [The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity][23]。
|
||||
* [Nathan Barry][20] 的 《[Web 应用设计(Design of Web Applications)][19]》。
|
||||
* [Jason Santa Maria][22] 的 《[Web 页面设计(On Web Typography)][21]》。
|
||||
* Alan Cooper 的 《[ 交互设计之路:让高科技产品回归人性(The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity )][23]》。
|
||||
* 两篇关于 UI 动画的文章:[如何使用动画来提高 UX][24]、[过渡界面][25]。
|
||||
|
||||
### 学习如何与人协作
|
||||
|
||||
有些人很喜欢通过编程来与电脑而非与人进行交互。不幸的是,这样的结果并不是很好。
|
||||
有些人很喜欢通过编程来与电脑进行交互,而非与人进行交互。不幸的是,这样的结果并不是很好。
|
||||
|
||||
我们基本上不可能完全脱离群体来工作:我们总是需要和其他开发者、设计师以及项目经理 —— 有时候甚至要和用户 —— 交换意见。这是比较难的任务,但如果你想要真正理解你在做什么以及为什么要这么做的话,这一步是非常重要的,因为这正是我们工作的价值所在。
|
||||
基本上我们不可能完全脱离群体来工作:我们总是需要和其他开发者、设计师以及项目经理 —— 有时候甚至要和用户 —— 交换意见。这是比较难的任务,但如果你想要真正理解你在做什么以及为什么要这么做的话,这一步是非常重要的,因为这正是我们工作的价值所在。
|
||||
|
||||
* [John Sonmez][27] 的《[软技能:代码之外的生存指南][26]》。
|
||||
* Robert C. Martin 的《[代码整洁之道:程序员的职业素养][28]》。
|
||||
* Jim Camp 的 《[从零开始:专业人士不想让你了解的谈判工具][29]》。
|
||||
* [John Sonmez][27] 的《[软技能:代码之外的生存指南(Soft Skills: The software developer’s life manual)][26]》。
|
||||
* Robert C. Martin 的《[代码整洁之道:程序员的职业素养(The Clean Coder: A Code of Conduct for Professional Programmers)][28]》。
|
||||
* Jim Camp 的 《[从零开始:专业人士不想让你了解的谈判工具(Start with No: The Negotiating Tools that the Pros Don’t Want You to Know)][29]》。
|
||||
|
||||

|
||||

|
||||
|
||||
### 学习如何为用户编写代码
|
||||
|
||||
与同事或其他人的交流大部分是以文本的形式进行的:目标描述和评论、代码注释、Git commit、即时聊天消息、电子邮件、推文、博客等。
|
||||
与同事或其他人的交流大部分是以文本的形式进行的:目标描述和评论、代码注释、Git 提交、即时聊天消息、电子邮件、推文、博客等。
|
||||
|
||||
想象一下,人们要花费多少时间来理解所有以上提到的这些。你过你能够书写的更加明确和简洁,这个时间便会大大减少,然后世界将是一个更好工作的地方。
|
||||
想象一下,人们要花费多少时间来阅读和理解所有以上提到的这一切。如果你可以通过写得更清楚、简洁来减少这个时间,世界将变成一个更好的工作场所。
|
||||
|
||||
* William Zinsserd 的《[On Writing Well: The Classic Guide to Writing Nonfiction][30]》。
|
||||
* William Zinsserd 的《[写作法宝 : 非虚构写作指南(On Writing Well: The Classic Guide to Writing Nonfiction)][30]》。
|
||||
* William Strunk 和 E. B. White 的《[英文写作指南 (The Elements of Style)][31]》。
|
||||
* [奥威尔写作规则][32]。
|
||||
* 俄国:很好的 [Glavred course][33]。
|
||||
* 俄文:很好的 [Glavred 课程][33]。
|
||||
|
||||
### 学习计算机科学智慧
|
||||
### 学习以前的计算机科学智慧
|
||||
|
||||
前端开发已经不仅仅简单的下拉菜单了,它比以前要复杂的多了。随着我们所需解决问题的复杂度越来越高,声名狼藉的“JavaScript 疲乏症”也随之出现了。
|
||||
前端开发已经不仅仅简单的下拉菜单了,它前所未有的更复杂了。随着我们所需解决问题的复杂度越来越高,声名狼藉的“JavaScript 疲乏症”也随之出现了。
|
||||
|
||||
这意味着现在需要学习非前端开发人员近十年所积累形成的知识精华。而这也是我最想听到你向我推荐的内容了。
|
||||
这意味着现在需要学习非前端开发人员过去几十年所积累形成的知识精华。而这也是我最想听到你向我推荐的内容了。
|
||||
|
||||
以下是我个人给大家的推荐:
|
||||
|
||||
* Coursera 的 [学习想计算机科学家的思考方式][34]。
|
||||
* Coursera 的 《[学习像计算机科学家那样思考方式(Learn To Think Like A Computer Scientist )][34]》。
|
||||
* [DHH][36] 的 [对我意义非凡的五本书][35]。
|
||||
|
||||
|
||||
@ -93,14 +93,11 @@
|
||||
|
||||
作者简介:
|
||||
|
||||

|
||||
|
||||
Web 开发者,充满激情的摄影者,疯狗的主人 (owner of crazy dogs ?)。
|
||||
Web 开发者,充满激情的摄影者,crazy dogs 的主人
|
||||
|
||||
译者简介:
|
||||
|
||||

|
||||
|
||||
[GHLandy](http://GHLandy.com) —— 欲得之,则为之奋斗 (If you want it, work for it.)。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
@ -109,7 +106,7 @@ via: https://medium.freecodecamp.com/what-to-learn-in-2017-if-youre-a-frontend-d
|
||||
|
||||
作者:[Artem Sapegin][a]
|
||||
译者:[GHLandy](https://github.com/GHLandy)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[bestony](https://github.com/bestony)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,14 +1,14 @@
|
||||
编写 android 测试单元该做的和不该做的事
|
||||
============================================================
|
||||
|
||||
在本文中, 我将根据我的实际经验,为大家阐述一个编写测试用例的最佳实践。在本文中我将使用 Espresso 编码, 但是它们可以用到单元和 instrumentation 测试当中。基于以上目的, 我们来研究一个新闻程序.
|
||||
在本文中, 我将根据我的实际经验,为大家阐述一个编写测试用例的最佳实践。在本文中我将使用 Espresso 编码, 但是它们可以用到单元测试和仪器测试(instrumentation test)当中。基于以上目的,我们来研究一个新闻程序。
|
||||
|
||||
> 以下内容纯属虚构,如有雷同纯属巧合:P
|
||||
> 以下内容纯属虚构,如有雷同纯属巧合 :P
|
||||
|
||||
一个新闻 APP 应该会有以下这些 <ruby>活动<rt>activities</rt></ruby>。
|
||||
一个新闻 APP 应该会有以下这些 activity。
|
||||
|
||||
* 语言选择 - 当用户第一次打开软件, 他必须至少选择一种语言。选择后,选项保存在共享偏好中,用户跳转到新闻列表 activity。
|
||||
* 新闻列表 - 当用户来到新闻列表 activity,将发送一个包含语言参数的请求到服务器,并将服务器返回的内容显示在 recycler view 上(包含有新闻列表的 id _news_list_)。 如果共享偏好中未存语言参数,或者服务器没有返回一个成功消息, 就会弹出一个错误对话框并且 recycler view 将不可见。如果用户只选择了一种语言,新闻列表 activity 有个 “Change your Language” 的按钮,或者如果用户选择多种语言,则按钮为 “Change your Languages” 。 ( 我对天发誓这是一个虚构的 APP 软件)
|
||||
* 新闻列表 - 当用户来到新闻列表 activity,将发送一个包含语言参数的请求到服务器,并将服务器返回的内容显示在 recycler view 上(包含有新闻列表的 id, _news_list_)。 如果共享偏好中未存语言参数,或者服务器没有返回一个成功消息, 就会弹出一个错误对话框并且 recycler view 将不可见。如果用户只选择了一种语言,新闻列表 activity 有个 “Change your Language” 的按钮,或者如果用户选择多种语言,则按钮为 “Change your Languages” 。 (我对天发誓这是一个虚构的 APP 软件)
|
||||
* 新闻细节 - 如同名字所述, 当用户点选新闻列表项时将启动这个 activity。
|
||||
|
||||
这个 APP 功能已经足够,,让我们深入研究下为新闻列表 activity 编写的测试用例。 这是我第一次写的代码。
|
||||
@ -40,9 +40,9 @@
|
||||
?}
|
||||
```
|
||||
|
||||
#### 仔细想想测试什么。
|
||||
#### 仔细想想测试什么
|
||||
|
||||
在第一个测试用例 _testClickOnAnyNewsItem()_, 如果服务器没有返回成功信息,测试用例将会返回失败,因为 recycler view 是不可见的。但是这个测试用例的目的并非如此。 **不管该用例为 PASS 还是 FAIL,它的最低要求是 recycler view 总是可见的,** 如果因某种原因,recycler view 不可见,那么测试用例不应视为 FAILED。正确的测试代码应该像下面这个样子。
|
||||
在第一个测试用例 `testClickOnAnyNewsItem()`, 如果服务器没有返回成功信息,测试用例将会返回失败,因为 recycler view 是不可见的。但是这个测试用例的目的并非如此。 **不管该用例为 PASS 还是 FAIL,它的最低要求是 recycler view 总是可见的,** 如果因某种原因,recycler view 不可见,那么测试用例不应视为 FAILED。正确的测试代码应该像下面这个样子。
|
||||
|
||||
```
|
||||
/*
|
||||
@ -74,15 +74,13 @@
|
||||
```
|
||||
#### 一个测试用例本身应该是完整的
|
||||
|
||||
当我开始测试, 我通常按如下顺序测试 activities:
|
||||
|
||||
* 语音选择
|
||||
当我开始测试, 我通常按如下顺序测试 activity:
|
||||
|
||||
* 语言选择
|
||||
* 新闻列表
|
||||
|
||||
* 新闻细节
|
||||
|
||||
因为我首先测试语音选择 activity,在测试 NewsList activity 之前,总有一种语音已经是选择好了的。但是当我先测试新闻列表 activity 时,测试用例开始返回错误信息。原因很简单 - 没有选择语言,recycler view 不会显示。**注意, 测试用例的执行顺序不能影响测试结果。** 因此在运行测试用例之前, 语言选项必须是保存在共享偏好中的。在本例中,测试用例独立于语言选择 activity 的测试。
|
||||
因为我首先测试语言选择 activity,在测试 NewsList activity 之前,总有一种语言已经是选择好了的。但是当我先测试新闻列表 activity 时,测试用例开始返回错误信息。原因很简单 - 没有选择语言,recycler view 不会显示。**注意, 测试用例的执行顺序不能影响测试结果。** 因此在运行测试用例之前, 语言选项必须是保存在共享偏好中的。在本例中,测试用例独立于语言选择 activity 的测试。
|
||||
|
||||
```
|
||||
@Rule
|
||||
@ -111,9 +109,9 @@
|
||||
intended(hasComponent(NewsDetailsActivity.class.getName()));
|
||||
?}
|
||||
```
|
||||
#### 在测试用例中避免使用条件代码。
|
||||
#### 在测试用例中避免使用条件代码
|
||||
|
||||
现在在第二个测试用例 _testChangeLanguageFeature()_中,我们获取到用户选择语言的个数, 基于这个数目,我们写了 if-else 条件来进行测试。 但是 if-else 条件应该写在你的代码当中,而不是测试代码里。每一个条件应该单独测试。 因此, 在本例中, 不是只写一条测试用例,而是要写如下两个测试用例。
|
||||
现在在第二个测试用例 `testChangeLanguageFeature()` 中,我们获取到用户选择语言的个数,基于这个数目,我们写了 if-else 条件来进行测试。 但是 if-else 条件应该写在你的代码当中,而不是测试代码里。每一个条件应该单独测试。 因此,在本例中,不是只写一条测试用例,而是要写如下两个测试用例。
|
||||
|
||||
```
|
||||
/**
|
||||
@ -145,14 +143,13 @@
|
||||
|
||||
在大多数应用中,我们与外部网络或者数据库进行交互。一个测试用例运行时可以向服务器发送一个请求,并获取成功或失败的返回信息。但是不能因从服务器获取到失败信息,就认为测试用例没有通过。这样想这个问题 - 如果测试用例失败,然后我们修改客户端代码,以便测试用例通过。 但是在本例中, 我们要在客户端进行任何更改吗?- **NO**。
|
||||
|
||||
但是你应该也无法完全避免要测试网络请求和响应。由于服务器是一个外部代理,我们可以设想一个场景,发送一些可能导致程序崩溃的错误响应。因此, 你写的测试用例应该覆盖所有可能来自服务器的响应,甚至包括服务器决不会发出的响应。这样可以覆盖所有代码,并能保证应用可以处理所有响应,而不会崩溃。
|
||||
|
||||
但是你应该也无法完全避免要测试网络请求和响应。由于服务器是一个外部代理,我们可以设想一个场景,发送一些可能导致程序崩溃的错误响应。因此,你写的测试用例应该覆盖所有可能来自服务器的响应,甚至包括服务器决不会发出的响应。这样可以覆盖所有代码,并能保证应用可以处理所有响应,而不会崩溃。
|
||||
|
||||
> 正确的编写测试用例与编写这些测试代码同等重要。
|
||||
|
||||
感谢你阅读此文章。希望对测试用例写的更好有所帮助。你可以在 [LinkedIn][1] 上联系我。还可以[在这里][2]阅读我的其他文章。
|
||||
|
||||
获取更多资讯请关注_[Mindorks][3]_, 我们发新文章时您将获得通知。
|
||||
获取更多资讯请关注我们, 我们发新文章时您将获得通知。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
如果你经常光顾 [Distrowatch][1] 网站,你会发现每一年的 Linux 系统流行度排行榜几乎都没啥变化。
|
||||
|
||||
排在前十名的一直都是那几个发行版,其它一些发行版也许现在还在排行榜中,到下一年年底就有可能不在了。
|
||||
排在前十名的一直都是那几个发行版,而其它一些发行版也许现在还在排行榜中,到下一年年底就有可能不在了。
|
||||
|
||||
关于 Distrowatch 的一个大家很不了解的功能叫做[候选列表][2],它包括以下类型的发行版:
|
||||
|
||||
@ -12,15 +12,15 @@
|
||||
- 相关的英文资料不够丰富
|
||||
- 该项目好像都没人进行维护
|
||||
|
||||
其它一些非常具有潜力,但是还未被评审的 Linux 系统发行版也是值得大家去关注的。注意,由于 Distrowatch 网站暂时没时间或人力去评审这些新的发行版,因此它们可能永远无法进入网站首页排名。
|
||||
一些非常具有潜力,但是还未被评审的 Linux 系统发行版也是值得大家去关注的。但是注意,由于 Distrowatch 网站暂时没时间或人力去评审这些新的发行版,因此它们可能永远无法进入网站首页排名。
|
||||
|
||||
因此,我们将会跟大家分享下 **2017** 年最具潜力的 **5** 个新的 Linux 发行版系统,并且会对它们做一些简单的介绍。
|
||||
|
||||
由于 Linux 系统的生态圈都非常活跃,你可以期待着这篇文章后续的不断更新,或许在下一年中它将完全大变样了。
|
||||
|
||||
尽管如此,咱们还是来看下这些新系统吧!
|
||||
不管怎么说,咱们还是来看下这些新系统吧!
|
||||
|
||||
### 1\. SemicodeOS 操作系统
|
||||
### 1、 SemicodeOS 操作系统
|
||||
|
||||
[SemicodeOS 操作系统][3] 是一个专为程序员和 Web 开发人员设计的 Linux 发行版。它包括所有的开箱即用的代码编译器,[各种文本编辑器][4],[最流行的编程语言的 IDE 环境][5],以及团队协作编程工具。
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
|
||||
*Semicode Linux 操作系统*
|
||||
|
||||
### 2\. EnchantmentOS 操作系统
|
||||
### 2、 EnchantmentOS 操作系统
|
||||
|
||||
[EnchantmentOS][7] 操作系统是一个基于 Xubuntu 16.04 的发行版,它包括一些经过特别挑选的对内存要求较低的应用程序。这无论对新老设备来说都是一个不错的选择。
|
||||
|
||||
@ -48,9 +48,9 @@
|
||||
|
||||
*EnchantmentOS 操作系统*
|
||||
|
||||
### 3\. Escuelas Linux 操作系统
|
||||
### 3、 Escuelas Linux 操作系统
|
||||
|
||||
[Escuelas Linux 操作系统][9](在西班牙语中是 ”Linux 学校“ 的意思)是一个基于 Bodhi 的 Linux 发行版,它主要是为中小学教育而设计的,它包括各种各样的与教育相关的应用软件。请忽略其西班牙语名字,它也提供全英语支持。
|
||||
[Escuelas Linux 操作系统][9](在西班牙语中是 “Linux 学校” 的意思)是一个基于 Bodhi 的 Linux 发行版,它主要是为中小学教育而设计的,它包括各种各样的与教育相关的应用软件。请忽略其西班牙语名字,它也提供全英语支持。
|
||||
|
||||
Escuelas Linux 系统其它方面的特性就是它使用的是轻量级桌面环境,低内存和低存储空间要求。其官网宣称,该系统只需要 300 MB 的内存和 20 GB 的硬盘存储空间就可以完美运行。
|
||||
|
||||
@ -60,11 +60,11 @@ Escuelas Linux 系统其它方面的特性就是它使用的是轻量级桌面
|
||||
|
||||
*Escuelas Linux 操作系统*
|
||||
|
||||
### 4\. OviOS 操作系统
|
||||
### 4、 OviOS 操作系统
|
||||
|
||||
与前面几个 Linux 发行版截然不同的是,[OviOS 操作系统][11] 并不是一个多用途的操作系统。相反,它被描述为企业级存储操作系统,虽然它不基于任何发行版,但是完全与 Linux 标准库(LSB)相兼容。
|
||||
|
||||
你可以把 OviOS 系统作为一种功能强大的存储设备,它能够处理 iSCSI,NFS,SMB 或者是 FTP 服务,除此之外,最新版的 OviOs 系统还能实现复制及高可用性。因此,你还在等什么呢?赶紧去试用一下吧。
|
||||
你可以把 OviOS 系统作为一种功能强大的存储设备,它能够处理 iSCSI、NFS、SMB 或者是 FTP 服务,除此之外,最新版的 OviOS 系统还能实现复制及高可用性。因此,你还在等什么呢?赶紧去试用一下吧。
|
||||
|
||||
[
|
||||

|
||||
@ -72,9 +72,9 @@ Escuelas Linux 系统其它方面的特性就是它使用的是轻量级桌面
|
||||
|
||||
*OviOS 操作系统*
|
||||
|
||||
### 5\. <ruby>开放式网络 Linux 操作系统<rt>Open Network Linux</rt></ruby>
|
||||
### 5、 Open Network Linux
|
||||
|
||||
[ONL][13] 操作系统(简称)是一个基于 Debian 的发行版,而且(就像 OviOs 操作系统一样),它也不是一个多用途的操作系统。
|
||||
[ONL][13] 操作系统(简称)是一个基于 Debian 的发行版,而且(就像 OviOS 操作系统一样),它也不是一个多用途的操作系统。
|
||||
|
||||
如果你是一名网络管理员,你应该为找到这个操作系统而感到庆幸(如果你之前不知道的话),你可以把 ONL 系统应用于裸交换机设备上,替换原有的昂贵且需要授权的操作系统。
|
||||
|
@ -0,0 +1,72 @@
|
||||
在 Linux 中无人看守批量创建用户的方法
|
||||
=============
|
||||
|
||||
### 介绍
|
||||
|
||||
作为一名 Linux 系统管理员,你有时必须向系统添加新的用户帐户。为此,经常使用 `adduser` 命令。当涉及到多个用户的创建时,`adduser` 命令可能会变得相当无聊和耗时。这篇短文旨在为 Linux 系统管理员提供一种简单而无人值守的方式来批量创建用户。`newusers` 命令将帮助你通过从预填文件中获取信息来创建多个用户。
|
||||
|
||||
**要求**
|
||||
|
||||
访问 Linux 计算机的特权。
|
||||
|
||||
**约定**
|
||||
|
||||
- `#` - 给定命令需要以 root 用户权限运行或者使用 `sudo` 命令
|
||||
- `$` - 给定命令以常规权限用户运行
|
||||
|
||||
### 如何进行
|
||||
|
||||
**创建一个包含用户名的文件**
|
||||
|
||||
首先,你需要创建一个包含用户名列表的文件。
|
||||
|
||||
```
|
||||
$ vi users-list.txt
|
||||
```
|
||||
|
||||
在文件中,一个用户一行,下面是样式:
|
||||
|
||||
```
|
||||
Username:Password:User ID:Group ID:User Info:Home Directory:Default Shell
|
||||
Username:Password:User ID:Group ID:User Info:Home Directory:Default Shell
|
||||
Username:Password:User ID:Group ID:User Info:Home Directory:Default Shell
|
||||
...
|
||||
```
|
||||
|
||||
**创建用户**
|
||||
|
||||
在创建了包含用户信息的文件后,使用 `newusers` 命令创建用户。
|
||||
|
||||
```
|
||||
# newusers users-list.txt
|
||||
```
|
||||
|
||||
**检查用户账户**
|
||||
|
||||
最后你可以确认用户已经正确创建了,在 `/etc/passwd` 文件中查看它们:
|
||||
|
||||
```
|
||||
# tail /etc/passwd
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://linuxconfig.org/simple-way-for-unattended-bulk-user-creation-in-linux
|
||||
|
||||
作者:[Essodjolo Kahanam][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://linuxconfig.org/simple-way-for-unattended-bulk-user-creation-in-linux
|
||||
[1]:https://linuxconfig.org/simple-way-for-unattended-bulk-user-creation-in-linux#h4-1-create-a-file-containing-the-usernames
|
||||
[2]:https://linuxconfig.org/simple-way-for-unattended-bulk-user-creation-in-linux#h4-2-create-users
|
||||
[3]:https://linuxconfig.org/simple-way-for-unattended-bulk-user-creation-in-linux#h4-3-check-user-accounts
|
||||
[4]:https://linuxconfig.org/simple-way-for-unattended-bulk-user-creation-in-linux#h1-introduction
|
||||
[5]:https://linuxconfig.org/simple-way-for-unattended-bulk-user-creation-in-linux#h2-requirements
|
||||
[6]:https://linuxconfig.org/simple-way-for-unattended-bulk-user-creation-in-linux#h3-conventions
|
||||
[7]:https://linuxconfig.org/simple-way-for-unattended-bulk-user-creation-in-linux#h4-how-to-proceed
|
@ -0,0 +1,126 @@
|
||||
Vim 初学者入门指南
|
||||
============================================================
|
||||

|
||||
|
||||
|
||||
这篇文章是 [VIM 用户指南][12] 系列文章中的一篇:
|
||||
|
||||
* Vim 初学者入门指南
|
||||
* [Vim 快捷键速查表][3]
|
||||
* [5 个针对有经验用户的 Vim 技巧][4]
|
||||
* [3 个针对高级用户的 Vim 编辑器有用技巧][5]
|
||||
|
||||
对一个程序员来说,选择一个文本编辑器是一件非常重要的事。因为不同编辑器之间有着不少的差异:图形界面或者非图形界面、不同的快捷键、不同的编程语言支持、不同的插件以及自定义设置等等。我建议不是去搜索最棒的编辑器,而是去选择最适合你的习惯且最适应你的任务的那一个。假如你打算在一个团体中工作,那么最好和你的共事者选择一样的编辑器。这样的话,一旦你在使用中遇到问题,你就可以去向他们寻求帮助。
|
||||
|
||||
这正是我在几年之前开始使用 Vim 的原因。通常来说,Vim 会被置于传说中的 Emacs 的对立面。我承认我对 Emacs 知之甚少,但是对于它俩,你需要知道的是它们都可以被深度定制,并且在初学时也都非常令人困惑。这个教程并不会介绍有关 Vim 的所有内容,而是将介绍一些基础以使你在最初就能正确使用它,随后还会展示一些小技巧,借此(希望能)让你有能力自己去探索学习。
|
||||
|
||||
Vim 一词来源于 “VI iMproved”。Vi 是一个被广泛安装于 Unix 系统的非图形界面文本编辑器,并且它也被默认安装在了 Linux 系统中。Vim 是这个原始编辑器的增强版,但是不同于 Vi,并不是每个发行版都默认安装了它。
|
||||
|
||||
### 安装
|
||||
|
||||
在 Ubuntu 中可以使用如下命令来安装 Vim:
|
||||
|
||||
```
|
||||
sudo apt-get install vim
|
||||
```
|
||||
|
||||
如果你已经对某些插件有了兴趣,使用以下命令:
|
||||
|
||||
```
|
||||
sudo apt-cache search vim
|
||||
```
|
||||
|
||||
这命令将给你输出一个很长的和 Vim 有关的包列表。在这之中,有针对不同编程语言的工具,有插件管理器,等等。
|
||||
|
||||
在这系列教程中,我将会在 Ubuntu 上使用最新版的 Vim(7.3.154,LCTT 译注:现在最新版为 8.0)。当然你也可以使用其它任何版本。
|
||||
|
||||
### 热身
|
||||
|
||||
在终端输入 `vim` 命令,你将会看到一个非常棒的欢迎界面。
|
||||
|
||||

|
||||
|
||||
(LCTT 译注:看到了欢迎界面中那行“Help poor children in Uganda!” 了吗?)
|
||||
|
||||
如果你之前从未使用过 Vi 或者 Vim,那么你很可能甚至不知道该怎么退出它... 是的,这是事实。**任何你常用的快捷键在 Vim 中都将失去原有的效果**。(LCTT 译注:网上有个流传的笑话——“如何制造乱码”,“让新手退出 vi”)
|
||||
|
||||
首先,要使用任何命令式的功能,像保存(save)或者退出(exit),你都先得输入一个冒号(`:`)。保存是 `:w` 而退出是 `:q`。如果你想不保存文件就退出,那么就要使用强制退出命令 `:q!`。Vim 中非常棒的一点是你不需要分开输入各个命令,换言之,如果你想保存然后退出,你就可以直接使用 `:wq`。
|
||||
|
||||
现在,我们退出 Vim 再打开一个文本文件。为此,你只需把想要编辑的文件名加在命令后面即可:
|
||||
|
||||
```
|
||||
vim [文本文件名]
|
||||
```
|
||||
|
||||

|
||||
|
||||
一般而言,当你打开一个文本文件,你将会处在查看模式。这使得 Vim 与众不同并且最初会让人感到困惑。Vim 主要由两种模式构成:查看模式和编辑模式。查看模式用于查看内容并且使用一些命令。想要进入编辑模式,只需按 `i` 键进行插入(insert)或者 `a` 键进行添加(add)。想要返回到查看模式或者进行命令式功能的操作,按 `Escape` 键即可。插入(insert)和添加(add)的差异仅仅在于你是想在光标位置之前还是在光标之后进入编辑模式并进行文字输入。要想彻底地明白,你应该亲自去尝试一下。我的建议是:仅在行尾使用添加(add),而在其它时候使用插入(insert)。
|
||||
|
||||
(LCTT 译注:此段落中“查看模式”原文是 “visual mode”,疑为“view mode”,在此模式下可以查看文本,但是不能进行编辑;而“visual mode” 是编辑模式的一种,可以按 `v` 键进入,然后就可以用方向键从当前光标位置开始进行选择,并以反白的视觉效果显示,通常选择后可以按 `y` 进行复制、按 `d` 进行剪切等操作。)
|
||||
|
||||
要想在文本之中移动光标,你通常可以使用键盘上的方向键,它们无论是在查看模式还是在编辑模式都可以生效。不过,一个真正的纯粹主义者将会告诉你使用按键 `h` 向左,`j` 向下,`k` 向上,`l` 向右来(在查看模式)进行移动。
|
||||
|
||||
现在你已经明白了如何和简单地控制 Vim,我们再来更加深入一些。
|
||||
|
||||
### 一些简单命令
|
||||
|
||||
现在你已经熟悉了在正常模式和插入模式之间进行切换,下面是一些可以在正常模式中使用的命令:
|
||||
|
||||
* `x`:删除一个字符
|
||||
* `u`:撤销一个操作(相当与 `Ctrl+z`)
|
||||
* `dd`:删除一行内容
|
||||
* `dw`:删除一个单词
|
||||
* `yy`:复制一行内容
|
||||
* `yw`:复制一个单词
|
||||
* `p`:粘贴一个之前删除或复制的行或者单词
|
||||
* `e`:跳到下个单词(LCTT 译注:词尾)(比单纯用方向键更快)
|
||||
* `r`:替换一个字母(按 `r`,松开,然后再按新字母)
|
||||
|
||||
当然不止这些,不过这些对现在来说已经足够了。如果你掌握了上面的全部,你将能你很顺溜地使用 Vim 了。
|
||||
|
||||
对于那些还想知道更多的人,我再多提一下。你可以在任何这些命令之前加上一个数值,那么这个命令将被重复执行相应的次数。例如,`5x` 将在当前行连续删除 5 个字母,而 `3p` 将会粘贴 3 次。
|
||||
|
||||
### 高级命令
|
||||
|
||||
最后,作为对你自己继续探索的鼓励和示例,这里给出几个高级且常用的命令:
|
||||
|
||||
* `/所搜索的内容`:在文中搜索特定内容
|
||||
* `:sp 文本文件名`:将屏幕水平分割成上下两半,新文件展示在另一半。想要在两侧切换焦点,可以使用 `Ctrl+w` 快捷键。
|
||||
|
||||

|
||||
* `:vsp 文本文件名`:同上,但是是垂直分割屏幕
|
||||
* `Ctrl+Shift+C` 和 `Ctrl+Shift+V`:在终端中复制和粘贴文本
|
||||
* `:! 命令名`:在 Vim 中运行 Vim 外的终端命令,直接发送给 shell。例如,`:! ls` 将在不退出编辑器的同时,显示你当前目录内的文件。
|
||||
|
||||

|
||||
|
||||
### 结论
|
||||
|
||||
我觉得你现在应该已经有了足够的准备来开始使用 Vim。你还可以通过安装各种插件,编辑 `~.vimrc` 文件,或者在 shell 中输入 `vimtutor` 命令来使用交互式教程以学到更多。
|
||||
|
||||
如果你有任何你想分享的关于 Vim 的其它命令,请在评论中告知我们。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.maketecheasier.com/start-with-vim-linux/
|
||||
|
||||
作者:[Himanshu Arora][a]
|
||||
译者:[Yinr](https://github.com/Yinr)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.maketecheasier.com/author/himanshu/
|
||||
[1]:https://www.maketecheasier.com/author/adrienbrochard/
|
||||
[2]:https://www.maketecheasier.com/start-with-vim-linux/#comments
|
||||
[3]:https://www.maketecheasier.com/vim-keyboard-shortcuts-cheatsheet/
|
||||
[4]:https://www.maketecheasier.com/vim-tips-tricks-for-experienced-users/
|
||||
[5]:https://www.maketecheasier.com/vim-tips-tricks-advanced-users/
|
||||
[6]:https://www.maketecheasier.com/category/linux-tips/
|
||||
[7]:http://www.facebook.com/sharer.php?u=https%3A%2F%2Fwww.maketecheasier.com%2Fstart-with-vim-linux%2F
|
||||
[8]:http://twitter.com/share?url=https%3A%2F%2Fwww.maketecheasier.com%2Fstart-with-vim-linux%2F&text=The+Beginner%26%238217%3Bs+Guide+to+Start+Using+Vim
|
||||
[9]:mailto:?subject=The%20Beginner%E2%80%99s%20Guide%20to%20Start%20Using%20Vim&body=https%3A%2F%2Fwww.maketecheasier.com%2Fstart-with-vim-linux%2F
|
||||
[10]:https://www.maketecheasier.com/turn-dropbox-into-a-blogging-tool-with-scriptogram/
|
||||
[11]:https://www.maketecheasier.com/4-sms-back-up-applications-to-keep-your-messages-safe-android/
|
||||
[12]:https://www.maketecheasier.com/series/vim-user-guide/
|
||||
[13]:https://support.google.com/adsense/troubleshooter/1631343
|
@ -0,0 +1,211 @@
|
||||
Vim 快捷键速查表
|
||||
============================================================
|
||||
|
||||
|
||||

|
||||
|
||||
本文是 [Vim 用户指南][12] 系列的其中一篇:
|
||||
|
||||
* [Vim 初学者入门指南][3]
|
||||
* Vim 快捷键速查表
|
||||
* [5 个针对有经验用户的 Vim 技巧][4]
|
||||
* [3 个针对高级用户的 Vim 编辑器实用技巧][5]
|
||||
|
||||
Vim 编辑器是一个基于命令行的工具,是传奇编辑器 vi 的增强版。尽管图形界面的富文本编辑有很多,但是熟悉 Vim 对于每一位 Linux 的使用者都能有所帮助——无论你是经验丰富的系统管理员,还是刚上手树莓派的新手用户。
|
||||
|
||||
这个轻量级的编辑器是个非常强大的工具。在有经验的使用者手中,它能完成不可思议的任务。除了常规的文本编辑功能以外,它还支持一些进阶特性。例如,基于正则表达式的搜索和替换、编码转换,以及语法高亮、代码折叠等的编程特性。
|
||||
|
||||
使用 Vim 时有一个非常重要的一点需要注意,那就是按键的功能取决于编辑器当前的“模式”。例如,在“普通模式”输入字母`j`时,光标会向下移动一行。而当你在“插入模式”下输入字符,则只是正常的文字录入。
|
||||
|
||||
下面就是速查表,以便于你充分利用 Vim。
|
||||
|
||||
### 基本操作
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `Esc` | 从当前模式转换到“普通模式”。所有的键对应到命令。 |
|
||||
| `i` | “插入模式”用于插入文字。回归按键的本职工作。 |
|
||||
| `:` | “命令行模式” Vim 希望你输入类似于保存该文档命令的地方。 |
|
||||
|
||||
|
||||
### 方向键
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `h` | 光标向左移动一个字符 |
|
||||
| `j` 或 `Ctrl + J` | 光标向下移动一行 |
|
||||
| `k` 或 `Ctrl + P` | 光标向上移动一行 |
|
||||
| `l` | 光标向右移动一个字符 |
|
||||
| `0` | (数字 0)移动光标至本行开头 |
|
||||
| `$` | 移动光标至本行末尾 |
|
||||
| `^` | 移动光标至本行第一个非空字符处 |
|
||||
| `w` | 向前移动一个词 (上一个字母和数字组成的词之后) |
|
||||
| `W` | 向前移动一个词 (以空格分隔的词) |
|
||||
| `5w` | 向前移动五个词 |
|
||||
| `b` | 向后移动一个词 (下一个字母和数字组成的词之前) |
|
||||
| `B` | 向后移动一个词 (以空格分隔的词) |
|
||||
| `5b` | 向后移动五个词 |
|
||||
| `G` | 移动至文件末尾 |
|
||||
| `gg` | 移动至文件开头 |
|
||||
|
||||
|
||||
### 浏览文档
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `(` | 跳转到上一句 |
|
||||
| `)` | 跳转到下一句 |
|
||||
| `{` | 跳转到上一段 |
|
||||
| `}` | 跳转到下一段 |
|
||||
| `[[` | 跳转到上一部分 |
|
||||
| `]]` | 跳转到下一部分 |
|
||||
| `[]` | 跳转到上一部分的末尾 |
|
||||
| `][` | 跳转到上一部分的开头 |
|
||||
|
||||
|
||||
### 插入文本
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `a` | 在光标后插入文本 |
|
||||
| `A` | 在行末插入文本 |
|
||||
| `i` | 在光标前插入文本 |
|
||||
| `o` | (小写字母 o)在光标下方新开一行 |
|
||||
| `O` | (大写字母 O)在光标上方新开一行 |
|
||||
|
||||
|
||||
|
||||
### 特殊插入
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `:r [filename]` | 在光标下方插入文件 [filename] 的内容 |
|
||||
| `:r ![command]` | 执行命令 [command] ,并将输出插入至光标下方 |
|
||||
|
||||
|
||||
|
||||
### 删除文本
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `x` | 删除光标处字符 |
|
||||
| `dw` | 删除一个词 |
|
||||
| `d0` | 删至行首 |
|
||||
| `d$` | 删至行末 |
|
||||
| `d)` | 删至句末 |
|
||||
| `dgg` | 删至文件开头 |
|
||||
| `dG` | 删至文件末尾 |
|
||||
| `dd` | 删除该行 |
|
||||
| `3dd` | 删除三行 |
|
||||
|
||||
### 简单替换文本
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `r{text}` | 将光标处的字符替换成 {text} |
|
||||
| `R` | 进入覆写模式,输入的字符将替换原有的字符 |
|
||||
|
||||
### 复制/粘贴文本
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `yy` | 复制当前行至存储缓冲区 |
|
||||
| `["x]yy` | 复制当前行至寄存器 x |
|
||||
| `p` | 在当前行之后粘贴存储缓冲区中的内容 |
|
||||
| `P` | 在当前行之前粘贴存储缓冲区中的内容 |
|
||||
| `["x]p` | 在当前行之后粘贴寄存器 x 中的内容 |
|
||||
| `["x]P` | 在当前行之前粘贴寄存器 x 中的内容 |
|
||||
|
||||
### 撤销/重做操作
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `u` | 撤销最后的操作 |
|
||||
| `Ctrl+r` | 重做最后撤销的操作 |
|
||||
|
||||
### 搜索和替换
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `/search_text` | 检索文档,在文档后面的部分搜索 search_text |
|
||||
| `?search_text` | 检索文档,在文档前面的部分搜索 search_text |
|
||||
| `n` | 移动到后一个检索结果 |
|
||||
| `N` | 移动到前一个检索结果 |
|
||||
| `:%s/original/replacement` | 检索第一个 “original” 字符串并将其替换成 “replacement” |
|
||||
| `:%s/original/replacement/g` | 检索并将所有的 “original” 替换为 “replacement” |
|
||||
| `:%s/original/replacement/gc` | 检索出所有的 “original” 字符串,但在替换成 “replacement” 前,先询问是否替换 |
|
||||
|
||||
### 书签
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `m {a-zA-Z}` | 在当前光标位置设置书签,书签名可用一个大小写字母({a-zA-Z}) |
|
||||
| `:marks` | 列出所有书签 |
|
||||
| `{a-zA-Z}` | 跳转到书签 {a-zA-Z} |
|
||||
|
||||
|
||||
### 选择文本
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `v` | 进入逐字可视模式 |
|
||||
| `V` | 进入逐行可视模式 |
|
||||
| `Esc` | 退出可视模式 |
|
||||
|
||||
|
||||
### 改动选中文本
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `~` | 切换大小写 |
|
||||
| `d` | 删除一个词 |
|
||||
| `c` | 变更 |
|
||||
| `y` | 复制 |
|
||||
| `>` | 右移 |
|
||||
| `<` | 左移 |
|
||||
| `!` | 通过外部命令进行过滤 |
|
||||
|
||||
|
||||
### 保存并退出
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
| --- | --- |
|
||||
| `:q` | 退出 Vim,如果文件已被修改,将退出失败 |
|
||||
| `:w` | 保存文件 |
|
||||
| `:w new_name` | 用 new_name 作为文件名保存文件 |
|
||||
| `:wq` | 保存文件并退出 Vim |
|
||||
| `:q!` | 退出 Vim,不保存文件改动 |
|
||||
| `ZZ` | 退出 Vim,如果文件被改动过,保存改动内容 |
|
||||
| `ZQ` | 与 :q! 相同,退出 Vim,不保存文件改动 |
|
||||
|
||||
### 下载 Vim 快捷键速查表
|
||||
|
||||
仅仅是这样是否还不足以满足你?别担心,我们已经为你整理好了一份下载版的速查表,以备不时之需。
|
||||
|
||||
[点此下载(英文)][14]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.maketecheasier.com/vim-keyboard-shortcuts-cheatsheet/
|
||||
|
||||
作者:[Himanshu Arora][a]
|
||||
译者:[martin2011qi](https://github.com/martin2011qi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.maketecheasier.com/author/himanshu/
|
||||
[1]:https://www.maketecheasier.com/author/mayank/
|
||||
[2]:https://www.maketecheasier.com/vim-keyboard-shortcuts-cheatsheet/#comments
|
||||
[3]:https://linux.cn/article-8143-1.html
|
||||
[4]:https://www.maketecheasier.com/vim-tips-tricks-for-experienced-users/
|
||||
[5]:https://www.maketecheasier.com/vim-tips-tricks-advanced-users/
|
||||
[6]:https://www.maketecheasier.com/category/linux-tips/
|
||||
[7]:http://www.facebook.com/sharer.php?u=https%3A%2F%2Fwww.maketecheasier.com%2Fvim-keyboard-shortcuts-cheatsheet%2F
|
||||
[8]:http://twitter.com/share?url=https%3A%2F%2Fwww.maketecheasier.com%2Fvim-keyboard-shortcuts-cheatsheet%2F&text=Vim+Keyboard+Shortcuts+Cheatsheet
|
||||
[9]:mailto:?subject=Vim%20Keyboard%20Shortcuts%20Cheatsheet&body=https%3A%2F%2Fwww.maketecheasier.com%2Fvim-keyboard-shortcuts-cheatsheet%2F
|
||||
[10]:https://www.maketecheasier.com/locate-system-image-tool-in-windows-81/
|
||||
[11]:https://www.maketecheasier.com/create-system-image-in-windows8/
|
||||
[12]:https://www.maketecheasier.com/series/vim-user-guide/
|
||||
[13]:https://support.google.com/adsense/troubleshooter/1631343
|
||||
[14]:http://www.maketecheasier.com/cheatsheet/vim-keyboard-shortcuts-cheatsheet/
|
@ -6,14 +6,15 @@
|
||||
|
||||
* [Vim 初学者入门指南][3]
|
||||
* [Vim 快捷键速查表][4]
|
||||
* 5 个针对有经验用户的 Vim 实用技巧
|
||||
* [3 个针对高级用户的 Vim 编辑器实用技巧][5]
|
||||
|
||||
Vim 编辑器提供了很多的特性,要想全部掌握它们很困难。然而,花费更多的时间在命令行编辑器上总是有帮助的。毫无疑问,和 Vim 用户们进行交流能够让你更快地学习新颖有创造性的东西。
|
||||
|
||||
|
||||
**注** - 本文中用到的例子,使用的 Vim 版本是 7.4.52 。
|
||||
**注:** 本文中用到的例子,使用的 Vim 版本是 7.4.52 。
|
||||
|
||||
### 1\. 同时编辑多个文件
|
||||
### 1、 同时编辑多个文件
|
||||
|
||||
如果你是一名软件开发者或者把 Vim 作为主要的编辑器,那么可能很多时候你需要同时编辑多个文件。“紧跟(following)”是在同时编辑多个文件时可用的实用技巧。
|
||||
|
||||
@ -25,24 +26,25 @@ vim 文件1 文件2 文件3
|
||||
|
||||
第一个文件(例子中的文件1)将成为当前文件并被读入缓冲区。
|
||||
|
||||
在编辑器中,使用 ‘:next’ 或 ’:n’ 命令来移动到下一个文件,使用 ‘:prev’ 或 ‘:N’ 命令返回上一个文件。如果想直接切换到第一个文件或最后一个文件,使用 ‘:bf’ 和 ‘:bl’ 命令。特别地,如果想打开另外的文件并编辑,使用 ‘:e’ 命令并把文件名作为参数(如果该文件不在当前目录中则需要完整路径做为参数)。
|
||||
在编辑器中,使用 `:next` 或 `:n` 命令来移动到下一个文件,使用 `:prev` 或 `:N` 命令返回上一个文件。如果想直接切换到第一个文件或最后一个文件,使用 `:bf` 和 `:bl` 命令。特别地,如果想打开另外的文件并编辑,使用 `:e` 命令并把文件名作为参数(如果该文件不在当前目录中则需要完整路径做为参数)。
|
||||
|
||||
任何时候如果需要列出当前打开的所有文件,使用 ‘:ls’ 命令。看下面展示的屏幕截图。
|
||||
任何时候如果需要列出当前打开的所有文件,使用 `:ls` 命令。看下面展示的屏幕截图。
|
||||
|
||||

|
||||
|
||||
注意 ”%a” 表示文件在当前活动窗口,而 “#” 表示文件在上一个活动窗口。
|
||||
注意 ”%a” 表示文件在当前活动窗口,而 “#” 表示上一个活动窗口的文件。
|
||||
|
||||
### 2\. 通过自动补全节约时间
|
||||
### 2、 通过自动补全节约时间
|
||||
|
||||
想节约时间并提高效率吗?使用缩写吧。使用它们能够快速写出文件中多次出现、复杂冗长的词。在 Vim 中缩写命令写就是 `ab` 。
|
||||
|
||||
想节约时间并提高效率吗?使用 ‘abbreviations(缩写)’吧。使用它们能够快速写出文件中多次出现、复杂冗长的词。在 Vim 命令中 ‘abbreviations(缩写)’的缩写就是 ‘ab’ 。
|
||||
比如,当你运行下面的命令以后:
|
||||
|
||||
```
|
||||
:ab asap as soon as possible
|
||||
```
|
||||
|
||||
文件中出现的每一个 "asap" 都会被自动替换为 “as soon as possible” ,就像你自己输入的一样。
|
||||
文件中出现的每一个 `asap` 都会被自动替换为 `as soon as possible` ,就像你自己输入的一样。
|
||||
|
||||
类似地,你可以使用缩写来更正常见的输入错误。比如,下面的命令
|
||||
|
||||
@ -50,16 +52,16 @@ vim 文件1 文件2 文件3
|
||||
:ab recieve receive
|
||||
```
|
||||
|
||||
将会自动更正拼写错误,就像你自己输入的一样。如果在一次特殊情况下你想阻止扩展/更正发生,那么你只需要在输入一个单词的最后一个字母以后按 “Ctrl + V” ,然后按空格键。
|
||||
将会自动更正拼写错误,就像你自己输入的一样。如果在一次特殊情况下你想阻止缩写展开或更正发生,那么你只需要在输入一个单词的最后一个字母以后按 `Ctrl + V` ,然后按空格键。
|
||||
|
||||
如果你想把刚才使用的缩写保存下来,从而当你下次使用 Vim 编辑器的时候可以再次使用,那么只需将完整的 ‘ab’ 命令(没有起始的冒号)添加到 ”/etc/vim/vimrc“ 文件中。如果想删除某个缩写,你可以使用 “una” 命令。比如: ‘una asap’ 。
|
||||
如果你想把刚才使用的缩写保存下来,从而当你下次使用 Vim 编辑器的时候可以再次使用,那么只需将完整的 `ab` 命令(没有起始的冒号)添加到 `/etc/vim/vimrc` 文件中。如果想删除某个缩写,你可以使用 `una` 命令。比如: `una asap` 。
|
||||
|
||||
|
||||
### 3\. 分离窗口来进行‘复制/粘贴’
|
||||
### 3、 切分窗口便于复制/粘贴
|
||||
|
||||
有时,你需要将一段代码或文本的一部分从一个文件复制到另一个。当使用 GUI(图形界面)编辑器的时候,这很容易实现,但是当使用一个命令行编辑器的时候,这就变得比较困难并且很费时间。幸运的是, Vim 提供了一种高效、节约时间的方式来完成这件事。
|
||||
有时,你需要从一个文件将一段代码或文本的一部分复制到另一个。当使用 GUI(图形界面)编辑器的时候,这很容易实现,但是当使用一个命令行编辑器的时候,这就变得比较困难并且很费时间。幸运的是, Vim 提供了一种高效、节约时间的方式来完成这件事。
|
||||
|
||||
打开两个文件中的一个然后分离 Vim 窗口来打开另一个文件。可以通过使用 ‘split’ 命令并以文件名作为参数来完成这件事。比如:
|
||||
打开两个文件中的一个然后切分 Vim 窗口来打开另一个文件。可以通过使用 `split` 命令并以文件名作为参数来完成这件事。比如:
|
||||
|
||||
```
|
||||
:split test.c
|
||||
@ -69,11 +71,11 @@ vim 文件1 文件2 文件3
|
||||
|
||||

|
||||
|
||||
注意到 ‘split’ 命令水平分离 Vim 窗口。如果你想垂直分离窗口,那么你可以使用 ‘vsplit’ 命令。当同时打开了两个文件并从一个文件中复制好内容以后,按 “Ctrl + W” 切换到另一个文件,然后’粘贴’。
|
||||
注意到 `split` 命令水平分离 Vim 窗口。如果你想垂直分离窗口,那么你可以使用 `vsplit` 命令。当同时打开了两个文件并从一个文件中复制好内容以后,按 `Ctrl + W` 切换到另一个文件,然后粘贴。
|
||||
|
||||
### 4\. 保存一个没有权限的已编辑文件
|
||||
### 4、 保存一个没有权限的已编辑文件
|
||||
|
||||
有时候当你对一个文件做了大量更改以后才会意识到该文件仅有 ‘只读’ 权限。
|
||||
有时候当你对一个文件做了大量更改以后才会意识到你对该文件仅有 `只读` 权限。
|
||||
|
||||

|
||||
|
||||
@ -83,24 +85,23 @@ vim 文件1 文件2 文件3
|
||||
:w !sudo tee %
|
||||
```
|
||||
|
||||
这个命令将会向你询问密码,就像在命令行中使用 ‘sudo’ 一样,然后就能保存更改。
|
||||
这个命令将会向你询问密码,就像在命令行中使用 `sudo` 一样,然后就能保存更改。
|
||||
|
||||
**一个相关的技巧**:在 Vim 中编辑一个文件的时候,如果想快速进入命令行提示符,可以在编辑器中运行 ‘:sh’ 命令,从而你将进入一个交互的 shell 中。完成以后,运行 ‘exit’ 命令可以快速回到 Vim 模式中。
|
||||
**一个相关的技巧**:在 Vim 中编辑一个文件的时候,如果想快速进入命令行提示符,可以在编辑器中运行 `:sh` 命令,从而你将进入一个交互的 shell 中。完成以后,运行 `exit` 命令可以快速回到 Vim 模式中。
|
||||
|
||||
### 5\. 在复制/粘贴过程中保持缩进
|
||||
### 5、 在复制/粘贴过程中保持缩进
|
||||
|
||||
大多数有经验的程序员在 Vim 上工作时都会启用自动缩进。虽然这是一个节约时间的做法,但是在粘贴一段已经缩进了的代码的时候会产生新的问题。比如,下图是我把一段已缩进代码粘贴到一个在自动缩进的 Vim 编辑器中打开的文件中时遇到的问题:
|
||||
|
||||

|
||||
|
||||
这个问题的解决方法是 ‘pastetoggle’ 选项。
|
||||
在 ‘/etc/vim/vimrc’ 文件中加入下面这行内容:
|
||||
这个问题的解决方法是 `pastetoggle` 选项。在 `/etc/vim/vimrc` 文件中加入下面这行内容:
|
||||
|
||||
```
|
||||
set pastetoggle=<F2>
|
||||
```
|
||||
|
||||
然后当你在 ‘插入’ 模式中准备粘贴代码前先按 ‘F2’ 键,就不会再出现上图中的问题,这样会保留原始的缩进。注意,你可以用其他的任何键来代替 ‘F2’ 如果它已经映射到了别的功能上。
|
||||
然后当你在 `插入` 模式中准备粘贴代码前先按 `F2` 键,就不会再出现上图中的问题,这样会保留原始的缩进。注意,你可以用其他的任何键来代替 `F2`,如果它已经映射到了别的功能上。
|
||||
|
||||
### 结论
|
||||
|
||||
@ -112,7 +113,7 @@ via: https://www.maketecheasier.com/vim-tips-tricks-for-experienced-users/
|
||||
|
||||
作者:[Himanshu Arora][a]
|
||||
译者:[ucasFL](https://github.com/ucasFL)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,73 @@
|
||||
aria2 与 wget :选择你的下载管理器
|
||||
============================================================
|
||||
|
||||
任何没有下载管理器的 Linux 操作系统是不完整的。多年来,基于 Linux 的发行版使用 wget 作为默认下载管理器。它是一个很棒的小程序,可以在命令行下工作,如果你需要安装东西、下载东西、运行 shell 脚本等,某种程度上都可以在 wget 中完成任务。在过去的很多年里,我们发现 wget 缺乏一些高级的功能,而它的替代品 ** aria2** ,由于满足了高级 Linux 用户的渴望而受到了许多用户的关注。我们将在本文中回顾 **aria2** 的安装过程以及 wget 和 aria2 之间的区别,因此你可以决定哪个下载管理器最符合你的需要。
|
||||
|
||||
### 安装 aria2
|
||||
|
||||
**在 Ubuntu/Debian 中安装 aria2:**
|
||||
|
||||
只要在 Ubuntu 中运行下面的命令安装:
|
||||
|
||||
```
|
||||
sudo apt-get install aria2
|
||||
```
|
||||
|
||||
[
|
||||

|
||||
][1]
|
||||
|
||||
**在 Fedora/RHEL/Centos 中安装 aria2:**
|
||||
|
||||
运行下面的命令在 Fedora/RHEL 和基于 Centos 的系统中安装:
|
||||
|
||||
```
|
||||
sudo yum install aria2
|
||||
```
|
||||
|
||||
**在 Arch Linux 中安装 aria2:**
|
||||
|
||||
运行下面的命令在基于 Arch Linux 的系统中安装。
|
||||
|
||||
```
|
||||
sudo pacman -Sy aria2
|
||||
```
|
||||
|
||||
### aria2 的重要功能
|
||||
|
||||
让我们来讨论 aria2 中使它如此受欢迎的重要功能:
|
||||
|
||||
* 通过使用多个连接下载文件,最大限度地利用可用带宽。
|
||||
* 同时下载多个文件和同时下载的能力。
|
||||
* torrent 客户端提供的所有功能都可以在这个小程序中找到。
|
||||
* 它提供 meta 链接下载。
|
||||
* 支持使用 JSON-RPC 和 XML-RPC 协议的远程过程调用。
|
||||
* 无需等待当前下载完成,轻松批量下载文件。
|
||||
|
||||
### aria2 的一些副作用:
|
||||
|
||||
aria2 的多线程机制可能会使目标服务器过载。相比下来 wget 就轻量级多了,wget 比 aria2 消耗资源少 20%。aria2 尚未经受 wget 那样巨大的使用规模的测试,因此可能完全准备好成为默认下载管理器。
|
||||
|
||||
### wget 的重要特性
|
||||
|
||||
* 当然它是最广泛使用和测试的下载管理器。
|
||||
* 它是一个简单的程序,具有较少的功能,但稳定工作了几十年。
|
||||
* 默认所有 Linux 发行版上都有,不需要繁重的安装。
|
||||
* 与 aria2 相比更轻量级。
|
||||
|
||||
### 总结
|
||||
|
||||
虽然 wget 没有丰富的功能,但仍然工作得相当不错,然而,高级用户肯定会喜欢 aria2,因为它满足更快和并发下载的需要。aria2 可能需要很长时间来取代 wget 成为默认下载管理器,而目前 wget 用在几乎所有 linux 发行版的安装程序脚本中。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://linuxpitstop.com/aria-2-vs-wget/
|
||||
|
||||
作者:[Aun][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://linuxpitstop.com/author/aun/
|
||||
[1]:http://linuxpitstop.com/wp-content/uploads/2015/06/aria2.png
|
220
published/201701/20160610 Setting Up Real-Time Monitoring with Ganglia.md
Executable file
220
published/201701/20160610 Setting Up Real-Time Monitoring with Ganglia.md
Executable file
@ -0,0 +1,220 @@
|
||||
使用 Ganglia 对 linux 网格和集群服务器进行实时监控
|
||||
===========
|
||||
|
||||
从系统管理员接手服务器和主机管理以来,像应用监控这样的工具就成了他们的好帮手。其中比较有名的有 [Nagios][11]、 [Zabbix][10]、 [Icinga][9] 和 Centreon。以上这些是重量级的监控工具,让一个新手管理员来设置,并使用其中的高级特性是有些困难的。
|
||||
|
||||
本文将向你介绍 Ganglia,它是一个易于扩展的监控系统。使用它可以实时查看 Linux 服务器和集群(图形化展示)中的各项性能指标。
|
||||
|
||||

|
||||
|
||||
*在 Linux 上安装 Ganglia*
|
||||
|
||||
**Ganglia** 能够让你以**集群**(按服务器组)和**网格**(按地理位置)的方式更好地组织服务器。
|
||||
|
||||
这样,我们可以创建一个包含所有远程主机的网格,然后将那些机器按照其它标准分组成小的集合。
|
||||
|
||||
此外, Ganglia 的 web 页面对移动设备进行过优化,也允许你导出 `csv` 和 `.json` 格式的数据。
|
||||
|
||||
我们的测试环境包括一个安装 Ganglia 的主节点服务器 CentOS 7 (IP 地址 192.168.0.29),和一个作为被监控端的 Ubuntu 14.04 主机(192.168.0.32)。我们将通过 Ganglia 的 Web 页面来监控这台 Ubuntu 主机。
|
||||
|
||||
下面的例子可以给大家提供参考,CentOS7 作为主节点,Ubuntu 作为被监控对象。
|
||||
|
||||
### 安装和配置 Ganglia
|
||||
|
||||
请遵循以下步骤,在主节点服务器安装监控工具。
|
||||
|
||||
1、 启用 [EPEL 仓库][7] ,然后安装 Ganglia 和相关工具:
|
||||
|
||||
```
|
||||
# yum update && yum install epel-release
|
||||
# yum install ganglia rrdtool ganglia-gmetad ganglia-gmond ganglia-web
|
||||
```
|
||||
|
||||
在上面这步随 Ganglia 将安装一些应用,它们的功能如下:
|
||||
|
||||
- `rrdtool`,Round-Robin 数据库,它是一个储存并图形化显示随着时间变化的数据的工具;
|
||||
- `ganglia-gmetad` 一个守护进程,用来收集被监控主机的数据。被监控主机与主节点主机都要安装 Ganglia-gmond(监控守护进程本身);
|
||||
- `ganglia-web` 提供 Web 前端,用于显示监控系统的历史数据和图形。
|
||||
|
||||
2、 使用 Apache 提供的基本认证功能,为 Ganglia Web 界面(`/usr/share/ganglia`)配置身份认证。
|
||||
|
||||
如果你想了解更多高级安全机制,请参阅 Apache 文档的 [授权与认证][6]部分。
|
||||
|
||||
为完成这个目标,我们需要创建一个用户名并设定一个密码,以访问被 Apache 保护的资源。在本例中,我们先来创建一个叫 `adminganglia` 的用户名,然后给它分配一个密码,它将被储存在 `/etc/httpd/auth.basic`(可以随意选择另一个目录 和/或 文件名, 只要 Apache 对此有读取权限就可以。)
|
||||
|
||||
```
|
||||
# htpasswd -c /etc/httpd/auth.basic adminganglia
|
||||
```
|
||||
|
||||
给 adminganglia 输入两次密码完成密码设置。
|
||||
|
||||
3、 修改配置文件 `/etc/httpd/conf.d/ganglia.conf`:
|
||||
|
||||
```
|
||||
Alias /ganglia /usr/share/ganglia
|
||||
<Location /ganglia>
|
||||
AuthType basic
|
||||
AuthName "Ganglia web UI"
|
||||
AuthBasicProvider file
|
||||
AuthUserFile "/etc/httpd/auth.basic"
|
||||
Require user adminganglia
|
||||
</Location>
|
||||
```
|
||||
|
||||
4、 编辑 `/etc/ganglia/gmetad.conf`:
|
||||
|
||||
首先,使用 `gridname` 指令来为网格设置一个描述性名称。
|
||||
|
||||
```
|
||||
gridname "Home office"
|
||||
```
|
||||
|
||||
然后,使用 `data_source` 指令,后面跟集群名(服务器组)、轮询时间间隔(秒)、主节点主机和被监控节点的 IP 地址:
|
||||
|
||||
```
|
||||
data_source "Labs" 60 192.168.0.29:8649 # 主节点
|
||||
data_source "Labs" 60 192.168.0.32 # 被监控节点
|
||||
```
|
||||
|
||||
5、 编辑 `/etc/ganglia/gmond.conf`。
|
||||
|
||||
a) 确保集群的配置类似下面。
|
||||
|
||||
```
|
||||
cluster {
|
||||
name = "Labs" # gmetad.conf 中的 data_source 指令的名字
|
||||
owner = "unspecified"
|
||||
latlong = "unspecified"
|
||||
url = "unspecified"
|
||||
}
|
||||
```
|
||||
|
||||
b) 在 `udp_send_chanel` 中,注释掉 `mcast_join`:
|
||||
|
||||
```
|
||||
udp_send_channel {
|
||||
# mcast_join = 239.2.11.71
|
||||
host = localhost
|
||||
port = 8649
|
||||
ttl = 1
|
||||
}
|
||||
```
|
||||
|
||||
c) 在 `udp_recv_channel` 中,注释掉 `mcast_join` 和 `bind` 部分:
|
||||
|
||||
```
|
||||
udp_recv_channel {
|
||||
# mcast_join = 239.2.11.71 ## comment out
|
||||
port = 8649
|
||||
# bind = 239.2.11.71 ## comment out
|
||||
}
|
||||
```
|
||||
|
||||
保存并退出。
|
||||
|
||||
6、打开 8649/udp 端口,使用 SELinux 确保 php 脚本(通过 Apache 运行)能够连接到网络:
|
||||
|
||||
```
|
||||
# firewall-cmd --add-port=8649/udp
|
||||
# firewall-cmd --add-port=8649/udp --permanent
|
||||
# setsebool -P httpd_can_network_connect 1
|
||||
```
|
||||
|
||||
7、重启 Apache、gmetad、gmond,并确保它们启用了“开机启动”。
|
||||
|
||||
```
|
||||
# systemctl restart httpd gmetad gmond
|
||||
# systemctl enable httpd gmetad httpd
|
||||
```
|
||||
|
||||
至此,我们现在能够打开 Ganglia 的 Web 页面 `http://192.168.0.29/ganglia` 并用步骤 2 中设置的凭证登录。
|
||||
|
||||
[][5]
|
||||
|
||||
*Gangila Web 页面*
|
||||
|
||||
8、 在 **Ubuntu** 主机上,只需安装 Ganglia-monitor,等同于 CentOS 上的 ganglia-gmond:
|
||||
|
||||
```
|
||||
$ sudo aptitude update && aptitude install ganglia-monitor
|
||||
|
||||
```
|
||||
|
||||
9、 编辑被监控主机的 `/etc/ganglia/gmond.conf` 文件。与主节点主机上是相同的文件,除了被注释掉的 `cluster`, `udp_send_channel` , `udp_recv_channel` 这里不应被注释:
|
||||
|
||||
```
|
||||
cluster {
|
||||
name = "Labs" # The name in the data_source directive in gmetad.conf
|
||||
owner = "unspecified"
|
||||
latlong = "unspecified"
|
||||
url = "unspecified"
|
||||
}
|
||||
udp_send_channel {
|
||||
mcast_join = 239.2.11.71
|
||||
host = localhost
|
||||
port = 8649
|
||||
ttl = 1
|
||||
}
|
||||
udp_recv_channel {
|
||||
mcast_join = 239.2.11.71 ## comment out
|
||||
port = 8649
|
||||
bind = 239.2.11.71 ## comment out
|
||||
}
|
||||
```
|
||||
|
||||
之后重启服务。
|
||||
|
||||
```
|
||||
$ sudo service ganglia-monitor restart
|
||||
```
|
||||
|
||||
10、 刷新页面,你将在 Home office grid / Labs cluster 中看到两台主机的各种统计及图形化的展示(用下拉菜单选择集群,本例中为 Labs):
|
||||
|
||||
[][4]
|
||||
|
||||
*Ganglia 中 Home office 网格报告*
|
||||
|
||||
使用菜单按钮(如上指出的),你可以获取到每台服务器和集群的信息。还可以使用 <ruby>对比主机</ruby>Compare Hosts<rt></rt>选项卡来比较集群中所有服务器的状态。
|
||||
|
||||
可以使用正则表达式选择一组服务器,立刻就可以看到它们性能的对比:
|
||||
|
||||
[][3]
|
||||
|
||||
*Ganglia 服务器信息*
|
||||
|
||||
我最喜欢的一个特点是对移动端有友好的总结界面,可以通过 Mobile 选项来访问。选择你感兴趣的集群,然后选中一个主机。
|
||||
|
||||
[][2]
|
||||
|
||||
*Ganglia 移动端总结截图*
|
||||
|
||||
### 总结
|
||||
|
||||
本篇文章向大家介绍了 Ganglia,它是一个功能强大、扩展性很好的监控工具,主要用来监控集群和网格。它可以随意安装,便捷的组合各种功能(你甚至可以尝试一下[官方网站][1] 提供的 Demo)。
|
||||
|
||||
此时,你可能会发现许多知名的 IT 或非 IT 的企业在使用 Ganglia。除了我们在文章中提及的之外,还有很多理由这样做,其中易用性,统计的图形化(在名字旁附上脸部照片更清晰,不是吗)可能是最重要的原因。
|
||||
|
||||
但是请不要拘泥于本篇文章,尝试一下自己去做。如果你有任何问题,欢迎给我留言。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/install-configure-ganglia-monitoring-centos-linux/
|
||||
|
||||
作者:[Gabriel Cánepa][a]
|
||||
译者:[ivo-wang](https://github.com/ivo-wang)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: http://www.tecmint.com/author/gacanepa/
|
||||
[1]:http://ganglia.info/
|
||||
[2]:http://www.tecmint.com/wp-content/uploads/2016/06/Ganglia-Mobile-View.png
|
||||
[3]:http://www.tecmint.com/wp-content/uploads/2016/06/Ganglia-Server-Information.png
|
||||
[4]:http://www.tecmint.com/wp-content/uploads/2016/06/Ganglia-Home-Office-Grid-Report.png
|
||||
[5]:http://www.tecmint.co m/wp-content/uploads/2016/06/Gangila-Web-Interface.png
|
||||
[6]:http://httpd.apache.org/docs/current/howto/auth.html
|
||||
[7]:https://linux.cn/article-2324-1.html
|
||||
[8]:http://www.tecmint.com/wp-content/uploads/2016/06/ Install-Gangila-Monitoring-in-Linux.png
|
||||
[9]:http://www.tecmint.com/install-icinga-in-centos-7/
|
||||
[10]:http://www.tecmint.com/install-and-configure-zabbix-monitoring-on-debian-centos-rhel/
|
||||
[11]:http://www.tecmint.com/install-nagios-in-linux/
|
@ -0,0 +1,66 @@
|
||||
保持 Linux 容器的安全和稳定
|
||||
============
|
||||
|
||||

|
||||
|
||||
> 图片来源: [Lucarelli](http://commons.wikimedia.org/wiki/User:Lucarelli) 基于 [Wikimedia Commons](http://commons.wikimedia.org/wiki/File:Containers_Livorno.jpg). CC-BY-SA 3.0
|
||||
|
||||
Linux 容器正在改变 IT 从业者的工作方式。相比于庞大、沉重的虚拟机,一些组织发现把他们的应用部署在容器中更有效,可以提供更快的速度,更加密集,提升他们操作的敏捷性。
|
||||
|
||||
从安全的角度看,容器带来了一些优势,但是也面临着它们自己的一些安全挑战。和传统的基础设施一样,为了避免安全缺陷,确保运行在一个容器内的组件和系统库的定期更新是至关重要的。但是你如何知道什么东西运行在你的容器内?为了帮助你应对这些的安全挑战,一个名为 [Anchore](https://anchore.com)的初创公司正在开发一个[同名的开源项目](https://github.com/anchore/anchore),它用来帮助展示 Linux 容器中的内容。
|
||||
|
||||
为了了解更多关于 Anchore,我找到了 Anchore 的市场和产品的发言人 Andrew Cathrow,来了解更多关于这个开源项目背后的公司。
|
||||
|
||||

|
||||
|
||||
### 简而言之 Anchore 是什么? 它如何工作?
|
||||
|
||||
Anchore 的目标是提供一套工具,允许开发人员、运营团队、安全团队在容器的整个开发周期中保持对“监管链(Chain of Custody)”的全程可见,并提供生产部署所需的可见性、可预测性和控制性。Anchore 的引擎通过插件可以进行分析(通过提取镜像数据和元数据)、查询(允许对容器进行分析)、以及策略评估(这里的策略指可以被指定的管理的图像)。
|
||||
|
||||
虽然市场上有很多扫描工具,但是大部分不开源。我们认为安全合规的产品应该是开源的,否则你怎么才能信任他们。
|
||||
|
||||
Anchore 除了开源以外,还有两大优势,使它可以区别于市场中的商业产品。
|
||||
|
||||
首先,我们看的不止是操作系统的镜像。如今的扫描工具专注于操作系统的软件包,比如“你的 RPM 或 DEB 包中有CVE(安全漏洞)么?”这虽然是很重要的,你不希望你的镜像中有不安全的包,但是操作系统包只是镜像的基础。其他的层次都需要进行验证,包括配置文件、语言模块、中间件等等。你可以用的全是最新的软件包,但是可能一个配置文件配置出现错误,不安全就出现在里面。第二个不同就是允许用户添加自己的数据、查询或策略来扩展这个引擎。
|
||||
|
||||
### 什么推动了容器的校验和分析工具的需求出现?这个工具可以解决运营面临的什么问题呢?
|
||||
|
||||
企业使用 Docker 首要关注的就是安全,特别是他们正在部署的容器的分配和合规性。在生产环境中,从公共镜像库拉取一个镜像,运行它,并在几秒钟部署,是非常简单的,甚至不知道下面可能发生什么。终端用户在部署应用时,必须信任他们所部署的是安全、高效和易于维护的。
|
||||
|
||||
容器是不透明的,它们是一个包含应用程序的可部署的“黑盒”。虽然非常容易把这些镜像看作“打包的应用程序”,但是它们包括了系统的镜像和多达数百个包和成千上万个文件。如同所有在物理服务器、虚拟机或者云上的操作系统一样,镜像也需要维护。镜像或许包含了未补丁的安全缺陷、带有 bug 和错误配置的过期软件。
|
||||
|
||||
要对您的容器部署有信心,你需要知道底层是什么,并基于容器镜像的内容来做出决定。
|
||||
|
||||
### 如今容器的创新基本上都是开源的,你认为是为什么呢?是什么促使了它们开源呢?
|
||||
|
||||
在过去的 20 年中,各个组织已经经历了开源带来的优势,节省成本,减少锁定,提高了安全性和更快的创新。容器,特别是 Docker,都是非常好的例子。Docker 公司的团队不能在专有系统上创建一个新的软件部署模式,他们不能要求在修改专有系统的代码,而是与行业领导者比如谷歌、IBM、英特尔、红帽合作,朝着一个共同的目标。开源和 Linux 总是开启创新和激励产业困境。在过去,实现一个大的想法需要一个大的团队和很多资源。在开源世界,一个有着很大的创意的小公司可以工作在一个更大的社区中,通过知识共享的力量来协作,提供真正的企业创新。
|
||||
|
||||
为了深入的说明开源的使用,Anchroe 团队最近刚从多伦多的 LinuxCon 回来,在哪里,令人难以相信的是,微软作为钻石级的赞助商,展示了他们用在 Linux 上的产品投入的增长。Linus Toravlds 曾说过,“如果微软为 Linux 开发应用就意味着我赢了”。我要把这句话改为“开源赢了”。
|
||||
|
||||
### 容器领域的通用标准的创建还需要时间,在容器的几乎所有部分,仍有许多挑战。在这个领域,创业公司有哪些挑战?
|
||||
|
||||
这里有个很重要的点,就是没有开放的标准和开源,我们不可能看到快速推动容器的采用和改变行业格局的创新。开放容器倡议(OCI)由 Linux 和容器行业的行业领导者组成,正在为运行环境和镜像格式创造标准,这将使我们能够看到更多的创新。Anchore 很自豪能成为 OCI 的新成员,我们期待帮助形成标准。
|
||||
|
||||
###你将如何围绕 Anchor 项目建立一个开源社区?
|
||||
|
||||
Anchore 团队来自 Ansible、Eucalyptus Systems 和 Red Hat 的领导团队,在开源社区中拥有丰富的工作经验。从一开始,Anchore 就准备创建一个强大的开源社区,我们正在应用我们在开源世界中学到的经验和教训。第一课,当然,发布要尽早尽快。我们在 6 月开源我们的检测和分析引擎,远远早于我们的商用产品,以便了确保开源项目能够独立运行,使更多的直接用户能够使用它,而无需购买 Anchore 的商用产品。通过支持、服务和增强型的数据源,有很多机会给商用产品创造更多价值,但是如果开源引擎本身没有用,我们将看不到活跃的社区。
|
||||
|
||||
我们将 Anchore 模块化,允许添加分析、报告和策略插件,而不需要更改核心的引擎。我们希望保证任何人都可以创建插件,所以我们选择了 Python 作为项目的基本语言,因为 Python 被开发者和系统管理员广泛应用。但是,即使你不熟悉 Python,你仍然可以使用任何你喜欢的语言或者脚本环境创建插件。如果你可以创建一个 Bash 脚本,那么你也可以创建一个 Anchore 插件。我们的目标是最大化的吸引社区的参与。虽然我们鼓励用户将贡献回馈给社区,但是我们也为这个项目构建并进行了授权,来确保可以独立创建和维护私有的插件和模块。
|
||||
|
||||
### 容器的用途不止是在服务器上更大密度的部署应用程序或者技术层面更快的速度,而且还有不同工具的组合,这些工具提供了一种不同的方式来拉近开发者和操作者共同工作。作为在这个领域工作的公司,你们希望提供一个什么样的消息来让开发者和运营产生共鸣?
|
||||
|
||||
随着越来越多的运行环境、编排、监控和集成产品,容器的生态系统正在快速发展。所以,我们的架构中的第一个考虑因素不是限定 Anchore 的部署和使用。我们需要确保我们可以适应任何 CI/CD 工作流,无论是私有部署还是云端部署。一个经常问到我们的问题是,Anchore 是否将提供一个包含了镜像扫描和分析的容器仓库。虽然这将大大简化我们的工作,但是这会迫使用户进入特定的部署架构,并限制了用户部署他们自己最好的组件的能力。我们已经确保 Anchore 可以和所有领先的仓库、运行环境平台、 CI/CD 平台和编排工具配合使用。
|
||||
|
||||
一些开发者掌握了运营技能,并转换为 DevOps 角色,我们看到系统管理员/运营团队也在更多的了解开发,转换成 DevOps 角色。我们也看到了具有混合能力的团队。我们设计了可供开发运营和安全团队使用的 Anchore ,以便他们共同定义规则和策略来评估开发周期中的任何一个环节。另外一个例子是插件/模块的架构,使任何人都可以在他们喜欢的环境中轻松创建一个模块 —— 无论是以 Python、Go、Perl、C 甚至是一个 Bash 脚本。
|
||||
|
||||
------
|
||||
|
||||
via: https://opensource.com/business/16/10/interview-andy-cathrow-anchore
|
||||
|
||||
作者:[Jason Baker][a]
|
||||
译者:[Bestony](https://github.co/Bestony)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/jason-baker
|
@ -1,5 +1,4 @@
|
||||
|
||||
为了畅游网络的人们、专注于云端的 Linux 发行版
|
||||
专注于云端的 Linux 发行版
|
||||
============================================================
|
||||
|
||||
[
|
||||
@ -8,85 +7,81 @@
|
||||
|
||||
概述:我们列举几款以云端为中心的 Linux 发行版,它们被视为真正能替代 Chrome OS 的 Linux 发行版。
|
||||
|
||||
这个世界正在向云端服务转变,而且我们都知道 Chrome OS 倍受人们喜爱。嗯,它确实值得尊重。它超级快、轻盈、省电、简约、设计精美而且充分发挥了当今科技所能提供的云端潜能。
|
||||
世界正在向云端服务转变,而且我们都知道 Chrome OS 倍受人们喜爱。嗯,它确实值得赞许。它超级快、轻盈、省电、简约、设计精美而且充分发挥了当今科技所能提供的云端潜能。
|
||||
|
||||
虽然 [Chrome OS][7] 只能在谷歌的硬件上使用,但是,就只是在你的台式机或者笔记本上,还是有其他的方法来体验云计算的潜能。
|
||||
虽然 [Chrome OS][7] 只能在谷歌的硬件上使用,但是,在你的台式机或者笔记本上,还是有其他的方法来体验云计算的潜能。
|
||||
|
||||
正如我重复所说的,在 Linux 领域中,人们总能参与其中。有那些看起来像 Windows 或者 Mac OS 的Linux 发行版。Linux 汇集了分享,爱和计算体验的最前沿。让我们马上看看这份列表吧!
|
||||
正如我重复所说的,在 Linux 领域中,人们总能参与其中,比如那些看起来像 Windows 或者 Mac OS 的Linux 发行版。Linux 汇集了分享,爱和计算体验的最前沿。让我们马上看看这份列表吧!
|
||||
|
||||
### 1\. CUB LINUX
|
||||
### 1、 Cub Linux
|
||||
|
||||

|
||||

|
||||
|
||||
这不是 Chrome OS ,上述图片描绘的是 Cub Linux 的桌面。不清楚我说的什么?
|
||||
|
||||
Cub Linux 对于 Linux 用户来说不再新鲜,但是如果你确实不知道的话,(我来解释下,)Cub Linux 灵感来源于主流的 Chrome OS ,是一款专注于网页的 Linux 发行版。从母亲 Linux 来讲,它也是 Chrome OS 的开源兄弟。
|
||||
Cub Linux 对于 Linux 用户来说不是什么新鲜事,但是如果你确实不知道的话,(我来解释下,)Cub Linux 灵感来源于主流的 Chrome OS ,是一款专注于网页的 Linux 发行版。从母亲 Linux 来讲,它也是 Chrome OS 的开源兄弟。
|
||||
|
||||
Chrome OS 内置了 Chrome 浏览器。不久之前,一个名为 [Chromixium OS][10] 的项目启动,旨在用 Chromium 浏览器取代 Chrome 浏览器,来提供与 Chrome OS 同样的体验。因为一些法律上的争论,项目名字后来改为 Cub Linux (取自 Chromium 和 Ubuntu 两个词)。
|
||||
Chrome OS 内置了 Chrome 浏览器。不久之前,一个名为 [Chromixium OS][10] 的项目启动,旨在用 Chromium 浏览器取代 Chrome 浏览器,来提供与 Chrome OS 同样的体验。因为一些法律上的争论,项目名字后来改为 Cub Linux (取自 **C**hromium 和 **Ub**untu 两个词)。
|
||||
|
||||

|
||||

|
||||
|
||||
在历史部分,如名字提示的那样,Cub Linux 基于 Ubuntu ,使用了轻量的 Openbox 桌面环境。定制桌面来给人以 Chrome OS 的印象,而且看起来很整洁。
|
||||
撇开历史不说,如名字提示的那样,Cub Linux 基于 Ubuntu ,使用了轻量的 Openbox 桌面环境。定制的桌面来给人以 Chrome OS 的印象,而且看起来很整洁。
|
||||
|
||||
在应用部分,你能安装 Chrome 网上商店的网络应用和所有的 Ubuntu 应用。对,有 Chrome OS 的精美应用,你仍能体会到 Ubuntu 的好处。
|
||||
在应用部分,你能安装 Chrome 网上商店的网页应用和所有的 Ubuntu 应用。对,有 Chrome OS 的精美应用,你仍能体会到 Ubuntu 的好处。
|
||||
|
||||
就表现而言,这操作系统相当快多亏了它自身的 Openbox 桌面环境。基于 Ubuntu ,Cub Linux 的稳定性是毋庸置疑的。这桌面流畅的动画和漂亮的用户界面,对于眼睛是一种享受,
|
||||
就表现而言,这操作系统相当快,这多亏了它自身的 Openbox 桌面环境。基于 Ubuntu ,Cub Linux 的稳定性是毋庸置疑的。这桌面流畅的动画和漂亮的用户界面,对于眼睛是一种享受。
|
||||
|
||||
[Suggested Read[Year 2013 For Linux] 2 Linux Distributions Discontinued][11]
|
||||
我向花费大部分时间在浏览器,时不时做些家务的人推荐 Cub Linux 。嗯,一个浏览器就是你所需要的全部,而且,一个浏览器就可以让你得到全部。
|
||||
|
||||
我向花费大部分时间在浏览器,时不时做些家务的人推荐 Cub Linux 。嗯,一个浏览器就是你所需要的全部,而且,一个浏览器正是你将会得到的全部。
|
||||
|
||||
### 2\. PEPPERMINT OS
|
||||
### 2、Peppermint OS
|
||||
|
||||
不少人把目光投向 Linux 因为他们想要一个良好的使用计算机的体验。一些人是真的不喜欢防病毒软件、磁盘整理程序、清理工具的打扰,他们只是想要一个操作系统而不是个孩子。我必须说 Peppermint OS 真的不会打扰用户。[Peppermint OS][12] 的开发者在理解用户需求上花费了大量的时间精力。
|
||||
|
||||

|
||||

|
||||
|
||||
系统默认内置了很少的软件。内置从每一个软件类别挑选的一些应用,这传统的想法没有被开发者所采纳,这为了良好的用户体验。个性化定制电脑的权力已经移交给用户。顺便说一句,当能用网页替代几乎大部分应用时,我们真的需要安装那么多的应用吗?
|
||||
系统默认内置了很少的软件。从每一个软件类别挑选的一些应用内置进去,这种传统的想法没有被开发者所采纳,这是为了良好的用户体验。个性化定制电脑的权力已经移交给用户。顺便说一句,当能用网页替代几乎大部分应用时,我们真的需要安装那么多的应用吗?
|
||||
|
||||
Ice
|
||||
**Ice**
|
||||
|
||||
Ice 是一个有用的小工具,它能将你最喜爱和经常用到的网页转化成桌面应用,这样你就能直接从你的桌面或菜单启动。这就是我们所说的特定页浏览器。
|
||||
|
||||

|
||||

|
||||
|
||||
喜欢 facebook ?为了快速启动,为什么不弄一个 facebook 的网页应用在你的桌面上?当人们抱怨 Linux 上不知如何正确安装 Google Drive 应用时,Ice 能让你在一次单击就能访问
|
||||
喜欢 facebook ?想要快速启动,为什么不弄一个 facebook 的网页应用在你的桌面上?当人们抱怨 Linux 上不知如何正确安装 Google Drive 应用时,Ice 能让你在一次单击就能访问
|
||||
|
||||
Peppermint OS 7 是基于 Ubuntu 16.04 。它不仅有流畅、稳固的表现,而且反应很快。一个深度定制的 LXDE 将会是你的首页。我所说的定制是为了实现华丽的表现和视觉吸引力。
|
||||
Peppermint OS 7 是基于 Ubuntu 16.04 。它不仅有流畅、稳固的表现,而且反应很快。一个深度定制的 LXDE 将会是你的首页。我所说的定制是兼顾了华丽的表现和视觉吸引力。
|
||||
|
||||
Peppermint OS 介于云操作系统和本地操作系统。虽然这操作系统的框架被设计来支持快速的云端应用,但是本地的 Ubuntu 应用运行得也不错。如果你是像我那样,想要一个能在在线和离线之间保持平衡的操作系统的话,[Peppermint OS 很适合你][13]。
|
||||
Peppermint OS 介于云操作系统和本地操作系统。虽然这个操作系统的框架被设计来支持快速的云端应用,但是本地的 Ubuntu 应用运行得也不错。如果你是像我那样,想要一个能在在线和离线之间保持平衡的操作系统的话,[Peppermint OS][13] 很适合你。
|
||||
|
||||
[Suggested ReadPennsylvania High School Distributes 1,700 Ubuntu Laptops to Students][14]
|
||||
|
||||
### 3.APRICITY OS
|
||||
### 3、Apricity OS
|
||||
|
||||
[Apricity OS][15] 在这里是极具美感的 Linux 发行版之一。它就像是 Linux 里的蒙娜丽莎。但是,不止外观优美,它还有更多优点。
|
||||
|
||||

|
||||

|
||||
|
||||
将 [Apricity OS][16] 加入这名单中的基本理由是它的简洁。当桌面操作系统设计变得越来越乱、堆砌元素时(我只是在讨论 Linux 操作系统),Apricity 除去所有杂项,简化最基本的人机交互。在这,Gnome 桌面环境被定制得非常优美。他们使其变得更简单。
|
||||
将 [Apricity OS][16] 加入这名单中的基本理由是它的简洁。当桌面操作系统设计变得越来越乱、堆砌元素时(我不只是在讨论非 Linux 操作系统),Apricity 除去所有杂项,简化最基本的人机交互。在这,Gnome 桌面环境被定制得非常优美。他们使其变得更简单。
|
||||
|
||||
预装的软件真的很少。几乎所有的 Linux 发行版有同样的预装软件。但是 Apricity OS 有一个全新的软件集合。Chrome 而不是 Firefox 。我真的很期待这点。我是说为什么不在外面告诉我们改变了什么?
|
||||
预装的软件真的很少。几乎所有的 Linux 发行版都预装一样的预装软件。但是 Apricity OS 有一个全新的软件集合。提供了 Chrome 而不是 Firefox 。我真的很期待这点。我是说为什么不在外面告诉我们改变了什么?
|
||||
|
||||
Apricity OS 也展现了我们在上一段讨论的 Ice 工具。但不是 Firefox ,Chrome 浏览器被用在网页-桌面一体化里。Apricity OS 默认内置了 Numix Circle 图标。。每一次你添加一个网页应用,那就会有一个优美的图标放在你的底栏上。
|
||||
Apricity OS 也展现了我们在上一段讨论的 Ice 工具。但不是 Firefox ,而是将 Chrome 浏览器用在网页-桌面一体化里。Apricity OS 默认内置了 Numix Circle 图标。每一次你添加一个流行的网页应用,那就会有一个优美的图标放在你的底栏上。
|
||||
|
||||

|
||||
|
||||
看见我所说的了吗?
|
||||
|
||||
Apricity OS 基于 Arch Linux 。(所以任何想要快速上手 Arch ,想要优美发行版的人,来[这里][17]下载 Apricity 的 ISO 文件。) Apricity 完全保持了 Arch 选择自由的原则。
|
||||
Apricity OS 基于 Arch Linux 。(所以任何想要快速上手 Arch ,想要优美发行版的人,来[这里][17]下载 Apricity 的 ISO 文件吧。) Apricity 完全保持了 Arch “选择自由”的原则。在 Ice 上只要花费十分钟,你就能把你所有喜爱的网页应用配置好。
|
||||
|
||||
华丽的背景,极简主义的桌面和一大堆的功能。这些特性使得 Apricity OS 在建立一个很棒的云端系统上成为一个极佳选择。在 Apricity OS 花上5分钟来使你完全爱上它。我是认真的。
|
||||
华丽的背景,极简主义的桌面和一大堆的功能。这些特性使得 Apricity OS 在建立一个很棒的云端系统方面成为一个极佳选择。在 Apricity OS 花上 5 分钟,你就会完全爱上它。我是认真的。
|
||||
|
||||
到此你就看完了全部。给网上居住者的云端 Linux 发行版。给我们关于网页应用和本地应用话题的看法。别忘了分享。
|
||||
到此你就看完了全部,这是给网上居住者的云端 Linux 发行版。给我们一些关于网页应用和本地应用话题的看法。别忘了分享。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/cloud-focused-linux-distros/
|
||||
|
||||
作者:[Aquil Roshan ][a]
|
||||
作者:[Aquil Roshan][a]
|
||||
译者:[ypingcn](https://github.com/ypingcn)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,245 @@
|
||||
Linux 系统的成长之路:试用 1993-2003 年之间的 Linux 老版本系统
|
||||
============================================================
|
||||
|
||||
> 让我们一起来回顾 Linux 早期版本的美好时光
|
||||
|
||||

|
||||
|
||||
*图片来源:互联网档案馆[书籍][7][图片][8]。 Opensource.com. CC BY-SA 4.0 编辑引用。*
|
||||
|
||||
开源软件最具独特性的一点就是它永远不会真正的走到 EOL(生命的终点)。它们的磁盘镜像文件大都可以一直在网上找到,并且它们的许可证也不会过期,因此,我们可以返回去找到那些老版本的 Linux 系统,并在虚拟机中安装它们,这都是很容易做到的。通过回顾那些珍贵的系统画面,让我们来回顾 Linux 系统这么多年来所发生的翻天覆地的变化。
|
||||
|
||||
我们从 Slackware 1.01 版本来开始这段旅程,在二十多年前它就发布在 **comp.os.linux.announce** 新闻组上了。
|
||||
|
||||
### Slackware 1.01 版本系统 (1993 年)
|
||||
|
||||

|
||||
|
||||
*Slackware 1.01*
|
||||
|
||||
体验 Slackware 1.01 系统最爽的是在 Qemu 模拟器软件 [2014 免费镜像系列][9]中有一个预先制作好的镜像文件,因此你可以不用手动去执行安装任务(真不习惯这种“奢华”待遇)。其引导启动命令如下:
|
||||
|
||||
```
|
||||
$ qemu-kvm -m 16M -drive if=ide,format=qcow2,file=slackware.qcow2 \
|
||||
-netdev user,id=slirp -device ne2k_isa,netdev=slirp \
|
||||
-serial stdio -redir tcp:22122::22
|
||||
```
|
||||
|
||||
在 1993 年那个版本的 Linux 系统中,很多东西都跟我们所想像的一样。所有常用的基本命令,比如 `ls` 和 `cd` 命令的使用方式,以及所有的基本工具(`gawk` , `cut` , `diff` , `perl`,当然还有 [Volkerding][10] 最喜欢的 `elvis` 工具)现在都在使用,而且也包含在如今的 Linux 系统中,但是仍然有一小部分东西让我感到惊讶。当你尝试使用 tab 补全命令方式来列出上百个文件时, BASH 会非常友好的提示用户确认,并且那些查看压缩文件的工具(比如 `zless` 和 `zmore` 以及 `zcat`)都已经出现了。很多方面都超乎我的预计,总之,该系统给人的感觉就是超级现代化。
|
||||
|
||||
不过,该系统没有软件包管理的相关概念。所有软件的安装和卸载都得手动完成,也不能查询出已安装的软件包。
|
||||
|
||||
总的来说,Slackware 1.01 系统感觉更像是一个非常现代化的 UNIX 系统,或者更恰当的是,它给人的感觉就是一个 Linux 用户在操作一个现代化的 UNIX 系统。很多东西都非常熟悉,但是也不尽相同。这个在 1993 年发布的操作系统中,并不是所有东西都跟你想像中的一样。
|
||||
|
||||
### Debian 0.91 版本系统(1994 年)
|
||||
|
||||
为了尝试 Debian 0.91 版本系统,我使用的是 [Ibiblio 数字档案][11] 网站下载的软盘镜像文件,该系统最初发表在 1994 年。启动命令如下:
|
||||
|
||||
```
|
||||
$ gunzip bootdsk.gz basedsk1.gz basedsk2.gz
|
||||
$ qemu-system-i386 -M pc -m 64 -boot order=ac,menu=on \
|
||||
-drive file=bootdisk,if=floppy,format=raw \
|
||||
-drive file=debian.raw,if=ide,format=raw \
|
||||
-device ne2k_isa,netdev=slirp \
|
||||
-serial msmouse -vga std \
|
||||
-redir tcp:22122::22 \
|
||||
-netdev user,id=slirp
|
||||
```
|
||||
|
||||
从 Debian 0.91 的启动磁盘启动后进入到一个简洁的 shell 界面,有很清晰的提示信息告诉你下一步将要执行的操作。
|
||||
|
||||
安装过程进行得非常顺利。从磁盘分区,写入 ext2 文件系统到分区,到显示图形菜单操作界面要经过七个步骤,之后开始复制 `basedsk` 镜像文件。这里使用的是以最小化方式来安装 Debian 系统,跟大家在安装自己的 Linux 系统过程中的很多步骤都非常相似。
|
||||
|
||||
Debian 系统因其自身的包管理器而出名,但是在早期的版本中只是有一些提示功能而已。有 `dpkg` 命令,但它是一个基于交互式菜单的系统——一种古老的 `aptitude`,有多个层次的可选菜单,并且自然地附带了几个可用软件包。
|
||||
|
||||
尽管如此,你也可以感受到其简便的设计理念。你只需下载三个软盘镜像文件,最后合成一个可启动的系统,然后就可以使用一个简单的文本菜单来安装更多的东西。我由衷的明白了为什么 Debian 系统如此受欢迎的原因。
|
||||
|
||||
### Jurix/S.u.S.E. 系统(1996 年)
|
||||
|
||||

|
||||
|
||||
*安装 Jurix 系统*
|
||||
|
||||
Jurix 系统是 SUSE 系统的前身, Jurix 带有的二进制的 `.tgz` 软件包会被组织到类似 Slackware 安装包结构的目录中,其安装包本身也跟 Slackware 的安装包很相似。
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc -m 1024 \
|
||||
-boot order=ac,menu=on \
|
||||
-drive \
|
||||
file=jurix/install,if=floppy,format=raw \
|
||||
-drive file=jurix.img,if=ide \
|
||||
-drive file=pkg.raw,if=ide,format=raw \
|
||||
-device ne2k_isa,netdev=slirp \
|
||||
-serial msmouse -vga std \
|
||||
-redir tcp:22122::22 \
|
||||
-netdev user,id=slirp
|
||||
```
|
||||
|
||||
|
||||
因为我不是刻意去寻找最早期的版本, Jurix 系统是找到的第一个真正’感觉‘像是打算给用户使用的有图形界面的 Linux 发行版。 [XFree86][12] 图形桌面环境已默认安装了,如果你不打算使用该工具,选择退出该环境即可。
|
||||
|
||||
比如 `/usr/lib/X11/XF86Config` (该文件后来变成 `Xorg.conf` )这个配置文件已经存在了,这让我在使用 GUI 前完成了 90% 的工作,但是我花费了一整个周末的时间来调试 `vsync` ,`hsync`,和 `ramdac` 颜色表重写,最后我完全放弃了。
|
||||
|
||||
在 Jurix 系统上安装软件包也非常简单;找到源路径下的 `.tgz` 文件,然后运行一个常用的 `tar` 命令: ` $ su -c 'tar xzvf foo.tgz -C /'` 该软件包就会被解压到 root 分区,并准备好使用了。我刚开始的时候安装了几个之前未安装过的软件包,发现操作也很简单、快速且非常可靠。
|
||||
|
||||
### SUSE 5.1 版本系统(1998 年)
|
||||
|
||||

|
||||
|
||||
*在 SuSE 5.1 系统上运行 FVWM 窗口管理器*
|
||||
|
||||
我是使用 1998 年在马里兰州的一家软件商店里买的 InfoMagic CD-ROM 来安装 SUSE 5.1 系统的。其引导启动命令如下:
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc-0.10 -m 64 \
|
||||
-boot order=ad,menu=on \
|
||||
-drive file=floppy.raw,if=floppy,format=raw \
|
||||
-cdrom /dev/sr0 \
|
||||
-drive file=suse5.raw,if=ide,format=raw \
|
||||
-vga cirrus -serial msmouse
|
||||
```
|
||||
|
||||
安装过程相对于前边几次来说要复杂得多。 YasT 工具在软盘和 CD-ROM 光驱之间搞乱了配置文件和设置,还需要重启好多次,在重启了好几次后我才反应过来是我操作顺序不当导致的问题。在安装过程中,我就犯了两次同样的错,我只是习惯了 YasT 工具的安装方式,到第三次才顺利的安装成功,这对于一个 Linux 用户将来的成长来说是一个很大的教训及经验。
|
||||
|
||||
我使用 SUSE 5.1 的主要目的就是体验其 GUI 桌面环境。配置的过程已经很熟悉了,使用几个漂亮的图形界面工具(包括一个很好用的 `XF86Setup` 前端界面配置工具)来测试和调试鼠标及显示器问题。我用了一个小时不到的时间就调试好 GUI 界面,并正常运行起来,其中大部分时间是耽搁在研究 Qemu 的虚拟显卡可以提供哪种分辨率和颜色方案。
|
||||
|
||||
可选用的桌面环境包括 fvwm、fvwm2 和 ctwm。我使用的是 fvwm,并且运行得也正常。我发现 tkDesk 这个 dock 式的文件管理器跟 Ubuntu 系统的 Unity 的启动栏非常的相似。
|
||||
|
||||
使用该系统总的来说还是非常令人愉快的,一旦成功安装了桌面环境并正常运行起来,SUSE 5.1 可以说是取得了令人瞩目的成功。
|
||||
|
||||
### Red Hat 6.0 版本系统(1999 年)
|
||||
|
||||

|
||||
|
||||
*在 Red Hat 6 系统上运行 GIMP 1.x 图像处理程序*
|
||||
|
||||
下一个系统 Red Hat 6.0 安装盘我刚好家里有。不是 RHEL 6.0 —— 而是 Red Hat 6.0,这是一个在 RHEL 或 Fedora 系统出现之前商店里就有卖的桌面版系统。这个安装盘是我在 1999 年 6 月份买的。
|
||||
|
||||
其引导启动命令如下:
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc-0.10 -m 512 \
|
||||
-boot order=ad,menu=on \
|
||||
-drive file=redhat6.raw,if=ide,format=raw \
|
||||
-serial msmouse -netdev user,id=slirp \
|
||||
-vga cirrus -cdrom /dev/sr0
|
||||
```
|
||||
|
||||
整个安装过程由完全由安装向导指引的,并且速度非常快。无论是选择要安装什么包(按**工作站**, **服务器**, 及**自定义**进行分组 ),磁盘分区,或者是启动安装,你都不会出现进行不下去的问题。
|
||||
|
||||
Red Hat 6 包括一个 `xf86config` 应用程序来一步步指导你完成 X 配置工作,尽管它有一些之后的 X 不认的奇怪的鼠标模拟选项。它比手动修改 Xf86Config 配置文件要容易得多,但是要正确无误的配置好 X 环境显然不是一个简单的工作。
|
||||
|
||||
Red Hat 6 绑定的桌面环境是 GNOME ,没错就是它,但是窗口管理器是早期的 [Enlightenment][13] ,它同样也提供了主要的声卡服务进程。Xdm 和 gdm 都作为登录管理器包含在其中,以便普通用户没有权限也可以登录到系统中并启动或者关闭 X 桌面进程,这在多用户系统中是非常重要的。
|
||||
|
||||
它缺少一些主要的应用程序;还没有 gedit 工具,没有重要的统一办公应用程序,更没有软件包管理器。有 GnoRPM 工具,这是一个图形界面的 RPM 包管理工具,用于查看及删除软件包,这个工具跟 yum 或 PackageKit 工具非常类似,还有基于图形界面的文件编辑器 gnotepad+ (尽管没有 Emacs 工具)。
|
||||
|
||||
总的来说,桌面环境在使用上也是非常直观的。跟后期实现的 GNOME 桌面环境不同,这个早期版本的在屏幕底部有个面板,其中有一个应用程序菜单和启动器图标,在中间位置有个虚拟桌面控制器。我无法想象其它操作系统的用户在使用这个桌面环境时会有多么的不习惯。
|
||||
|
||||
Red Hat 6 对于 Linux 系统来说是一个巨大的进步,很明显 Linux 系统正向着成为一个适用的桌面系统方向发展。
|
||||
|
||||
### Mandrake 8.0 版本系统(2001 年)
|
||||
|
||||

|
||||
|
||||
*Mandrake: Linux 系统的一个转折点*
|
||||
|
||||
Mandrake 8.0 于 2001 年发布,这已经可以跟 Apple OS 9.2 和 Windows ME 系统相提并论了。
|
||||
|
||||
我反而觉得老版本的系统才更安全一些。
|
||||
|
||||
其引导启动命令如下:
|
||||
|
||||
```
|
||||
$ qemu-system-i386 \
|
||||
-M pc-0.10 -m 2048 \
|
||||
-boot order=ad,menu=on \
|
||||
-drive file=mandrake8.qcow2 \
|
||||
-usb -net nic,model=rtl8139 \
|
||||
-netdev user,id=slirp \
|
||||
-vga cirrus \
|
||||
-cdrom mandrake-8.0-i386.iso
|
||||
```
|
||||
|
||||
我一直觉得 Red Hat 系统的安装过程非常棒了,但是 Mandrake 的安装过程更是让人喜出望外。它非常友好,并且在继续下一步之前还给用户一个测试配置文件的机会,易用高效,使用起来像魔法一样。我也不用导入自己的 `XF86Config` 配置文件,因为 Mandrake 的安装程序会自动完成该任务。
|
||||
|
||||

|
||||
|
||||
*Mandrake 8.0 系统的安装程序*
|
||||
|
||||
实际上,使用 Mandrake 系统跟使用其它的桌面环境系统的感受基本相同。让我很惊奇是的它们在操作体验上如此的相似。我相信,即使这个时候我在使用 Mandrake 系统的过程中遇到一些问题,以我自己的技术能力甚至是一个技术水平一般的年轻人也很容易解决。它的界面非常直观,帮助文档也很有用,并且软件包管理起来也很容易,只是那个时候人们还不习惯直接到网上下载他们需要的任何软件包来安装。
|
||||
|
||||
### Fedora 1 版本系统(2003 年)
|
||||
|
||||

|
||||
|
||||
*基于 Red Hat 的 Fedora 系统 *
|
||||
|
||||
2003 年,新的 Fedora Core 版本系统发布了。 Fedora Core 基于 Red Hat 系统,它的主要目的是在 Red Hat 企业版(RHEL)成为该公司旗舰产品之前继续带动 Linux 桌面版系统的发展。
|
||||
|
||||
启动老版本的 Fedora Core 1 系统也没啥特别的地方:
|
||||
|
||||
```
|
||||
$ qemu-system-i386 -M pc \
|
||||
-m 2048 -boot order=ac,menu=on \
|
||||
-drive file=fedora1.qcow2 -usb \
|
||||
-net nic,model='rtl8139' -netdev user \
|
||||
-vga cirrus -cdrom fedora-1-i386-cd1.iso
|
||||
```
|
||||
|
||||
安装 Fedora Core 同样简单容易; Fedora 和 Red Hat 系统在之后的 9 年中使用同样的安装器。它同样使用简单易用的图形化界面。
|
||||
|
||||

|
||||
|
||||
*Anaconda GUI 界面*
|
||||
|
||||
使用 Fedora Core 系统的体验跟 Red Hat 6 或 7 版本没多少区别。 GNOME 图形界面很漂亮,有各种独立的配置程序助手,并且界面展示都非常的整洁和专业。
|
||||
|
||||
桌面上的 “Start Here” 图标指导用户前往三个位置:应用程序目录,首选项面板和系统设置。 一个红帽的图标表示应用程序菜单,而下边的 GNOME 面板里包括所有最新的 Linux 应用程序启动器,包括 OpenOffice 办公套件和 mozilla 浏览器。
|
||||
|
||||
### 展望未来
|
||||
|
||||
在 2000 左右, Linux 系统已经发展得很好并取得了巨大的进步。桌面环境前所未有的更加精致美观,有各种可用的应用程序,安装过程比其它操作操作更简易更高效。事实上,从 2000 年以来,用户和系统之间的关系更加紧密,即使到现在也没发生根本上的改变。当然还有一些更新和改善,以及数量惊人的创新方面的变化。
|
||||
|
||||
让我们来了解一下各个 Linux 系统项目上的演变:
|
||||
|
||||
* Mandrake 系统后来更名为 Mandriva,如今为 [Mageia][1] ;
|
||||
* Fedora Core 随后改为 [Fedora][2] ;
|
||||
* [Ubuntu][3] 脱胎于 [Debian][4] 并且,它让 “Linux” 成为一个家喻户晓的词汇;
|
||||
* Valve 公司开发的 [SteamOS][5] 成为其官方游戏平台;
|
||||
* [Slackware][6] 现如今仍在平稳发展。
|
||||
|
||||
无论你是一个 Linux 新手,还是一个技术精湛的 Linux 老用户,上面的大多数截图都构成了让 Linux 系统被记入历史的一本传记。很高兴今天我们能够回顾成为世界上最大的开源项目之一的 Linux 系统是如何发展壮大起来的。更重要的是,每一次想到自己也是 Linux 开源世界中的一员我们就无比激动,把握现在,展望未来。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||

|
||||
|
||||
Seth Kenlon —— Seth Kenlon 是一位独立多媒体艺术家,开源文化倡导者, Unix 极客。他还是 Slackware 多媒体产品项目的维护人员之一,官网:http://slackermedia.ml 。
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/16/12/yearbook-linux-test-driving-distros
|
||||
|
||||
作者:[Seth Kenlon][a]
|
||||
译者:[rusking](https://github.com/rusking)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/seth
|
||||
[1]:http://mageia.org/
|
||||
[2]:http://fedoraproject.org/
|
||||
[3]:http://ubuntu.com/
|
||||
[4]:http://debian.org/
|
||||
[5]:http://store.steampowered.com/steamos
|
||||
[6]:http://slackware.com/
|
||||
[7]:https://www.flickr.com/photos/internetarchivebookimages/14746482994/in/photolist-ot6zCN-odgbDq-orm48o-otifuv-otdyWa-ouDjnZ-otGT2L-odYVqY-otmff7-otGamG-otnmSg-rxnhoq-orTmKf-otUn6k-otBg1e-Gm6FEf-x4Fh64-otUcGR-wcXsxg-tLTN9R-otrWYV-otnyUE-iaaBKz-ovcPPi-ovokCg-ov4pwM-x8Tdf1-hT5mYr-otb75b-8Zk6XR-vtefQ7-vtehjQ-xhhN9r-vdXhWm-xFBgtQ-vdXdJU-vvTH6R-uyG5rH-vuZChC-xhhGii-vvU5Uv-vvTNpB-vvxqsV-xyN2Ai-vdXcFw-vdXuNC-wBMhes-xxYmxu-vdXxwS-vvU8Zt
|
||||
[8]:https://www.flickr.com/photos/internetarchivebookimages/14774719031/in/photolist-ovAie2-otPK99-xtDX7p-tmxqWf-ow3i43-odd68o-xUPaxW-yHCtWi-wZVsrD-DExW5g-BrzB7b-CmMpC9-oy4hyF-x3UDWA-ow1m4A-x1ij7w-tBdz9a-tQMoRm-wn3tdw-oegTJz-owgrs2-rtpeX1-vNN6g9-owemNT-x3o3pX-wiJyEs-CGCC4W-owg22q-oeT71w-w6PRMn-Ds8gyR-x2Aodm-owoJQm-owtGp9-qVxppC-xM3Gw7-owgV5J-ou9WEs-wihHtF-CRmosE-uk9vB3-wiKdW6-oeGKq3-oeFS4f-x5AZtd-w6PNuv-xgkofr-wZx1gJ-EaYPED-oxCbFP
|
||||
[9]:http://www.qemu-advent-calendar.org/2014
|
||||
[10]:http://www.slackware.com/~volkerdi/
|
||||
[11]:https://ibiblio.org/pub/historic-linux/distributions/debian-0.91/debian-0.91/dist
|
||||
[12]:http://www.xfree86.org/
|
||||
[13]:http://enlightenment.org/
|
95
published/201701/20161222 LFCS Command Line Basics.md
Normal file
95
published/201701/20161222 LFCS Command Line Basics.md
Normal file
@ -0,0 +1,95 @@
|
||||
LFCS 命令行基础
|
||||
=======================
|
||||
|
||||
本文中包含了很多命令行基础。我们将讨论 TeleTYpe(TTY)和几个命令及其选项。确保做完所有练习,并要知道,除非另有说明,对 CentOS 和 Ubuntu 都是相同的。
|
||||
|
||||
### TTY
|
||||
|
||||
当没有图形用户界面(GUI)或当用户在 GUI 之外,Linux 就会使用 TTY。当打开终端窗口时也使用 TTY,但这些是不同类型的 TTY。
|
||||
|
||||
有三种类型的 TTY:
|
||||
|
||||
1. 物理终端
|
||||
2. 本地伪终端
|
||||
3. 远程伪终端
|
||||
|
||||
基本上,每个 Linux 系统有大约六个或七个物理 TTY。 通过按住 `CTRL + ALT` 键,然后在 CentOS 按住 `F1` 到 `F6` ,而在 Ubuntu 中是 `F1` 到 `F7`。
|
||||
|
||||
**注意:** 一些发行版可能有不同数量的 TTY 和不同的 GUI 默认位置。有点发行版可能有在物理 TTY 之间切换的不同组合键,如 `CTRL + F#` 或 `ALT + F#` ( LCTT 译注:`F#` 代表 F1、F2 等)。当使用 VirtualBox 时,除非您更改了主机键映射,请使用右 CTRL 键。
|
||||
|
||||
在 CentOS 中,GUI 在 TTY1(`CTRL + ALT + F1`)上,其他物理 TTY 都是基于文本的。 在 Ubuntu 上,GUI 在 TTY7(`CTRL + ALT + F7`)上,其他物理 TTY 都是基于文本的。
|
||||
|
||||
**注意:** 尝试在另一个 TTY 下加载 GUI 是不明智的,因为这可能耗用大量资源,但你可以这样做。
|
||||
|
||||
当 Linux 启动时,不管是 CentOS 还是 Ubuntu,都会打开默认 TTY。如果安装了 GUI,对于 CentOS 是打开 TTY1,对于 Ubuntu 是打开 TTY7。如果你打开一个终端窗口(伪 TTY)并使用命令 `who`,你可以看到正在使用的 TTY 的列表。 如图 1 所示。
|
||||
|
||||

|
||||
|
||||
*图 1*
|
||||
|
||||
在图 1 中,你可以看到我当前登录到 TTY1(非 GUI)。第二行连接显示我已登录到 GUI(TTY7)以及两个伪 TTY(PTS/1 和 PTS/2)。如图 2,你可以看到新条目显示了远程伪 TTY(PTS/3)。 远程伪连接来自 IP 地址为 192.168.0.11 的系统。
|
||||
|
||||

|
||||
|
||||
*图 2*
|
||||
|
||||
可以使用诸如 PuTTY 或任何 SSH 的客户端(如果远程 Linux 系统上启用了 SSH)之类的应用程序进行远程 TTY 连接。
|
||||
|
||||
如果终端窗口字体比较小,你可以使用 `CTRL + SHIFT` 键和 `+` 键来放大字体。多次按下可以更大。要缩小大小,请使用 `CTRL + SHIFT + -` 不断缩小。要使终端字体恢复为原始大小,请按下 `CTRL + SHIFT + 0`。
|
||||
|
||||
**注意:** 请注意,如果字体已经足够大或足够小了,组合键就不再工作了。
|
||||
|
||||
希望你现在已经了解各种类型的 TTY。让我们看看一些可以在 TTY 中使用的命令。
|
||||
|
||||
### 命令
|
||||
|
||||
其中一个命令前面已经讨论过了。命令 `who` 用于显示谁登录到了系统。
|
||||
|
||||
另一个命令是 `pwd`。命令 `pwd` 代表“打印工作目录(Print Working Directory)”。该命令返回你所在的当前目录。例如,如果终端提示符是 `[jbuse@localhost〜]$`,则用户名为 `jbuse`,当前目录为 `〜`。波浪号(`〜`)代表用户的主文件夹。主文件夹应该是 `/home/USERNAME`。用户名是用于登录系统的名称。
|
||||
|
||||
要列出当前文件夹的内容,请使用命令 `ls`。`ls` 命令代表 List。如果未指定任何选项,则列出当前文件夹。如果给出文件夹名称,则会列出该文件夹的内容。例如,要查看 `media` 文件夹的内容,你可以使用命令 `ls /media`。
|
||||
|
||||
在 `ls` 命令后面我们可以添加一些选项以显示更多详细信息或特定详细信息。如果你想看到所有的文件夹和文件,即使是隐藏的,请使用选项 `-a`。要查看当前目录中的所有文件和文件夹,请使用命令 `ls -a`。隐藏的文件和文件夹将在名称前面显示一个句点(`.`)。
|
||||
|
||||
要在每个文件夹名称后看到正斜杠(`/`),请使用 `-F` 选项。当前文件夹列表将是 `ls -F`。`-F` 用于按文件类型对文件进行分类。符号链接在文件夹名称后用 `@` 表示。
|
||||
|
||||
你可以把这两个选项连在一起形成 `ls -aF`。
|
||||
|
||||
**注意:** 一些选项可能有不同的大小写。选项区分大小写。
|
||||
|
||||
另一个选项是显示长列表的 `-l`。示例输出如图 3 所示。文件夹和文件名称列在右侧。文件为白色,文件夹为深蓝色,符号链接为浅蓝色。如图 3 所示,符号链接 `vtrgb` 链接自 `/etc/alternatives/vtrgb` 。
|
||||
|
||||

|
||||
|
||||
*图 3*
|
||||
|
||||
左侧的第一列是文件或文件夹的权限。第一个字母是 `d` 的为目录,是 `-` 的为文件。接下来的三个字母显示所有者的权限(`r` - 读、`w` - 写、`x` - 执行),后面是组权限以及“其他人”的权限。下一列数字显示指向文件或文件夹的链接数。再下一列是所有者名称,后面是所有组名称。再下一列是文件或文件夹在存储设备上占用的字节数。接下来的三列是文件上次修改的月份、日期和年份。最后一列是路径名。
|
||||
|
||||
目前为止,你可以看到列表是按字母顺序排序。要颠倒从 “z” 到 “a” 而不是 “a” 到 “z” 的顺序,请使用 `-r` 选项。逆转选项 `-r` 使 ls 命令反转输出顺序。
|
||||
|
||||
要按修改的时间戳列出文件,请使用 `-t` 选项。顺序是从最近修改到最早的修改日期。当然,在命令 `ls -tr` 中,同时使用 `-t` 和 `-r` 颠倒了顺序。
|
||||
|
||||
如果你不喜欢看文件的长长的字节数,使用选项 `-h`。输出将会更易读,如显示 `4.0K` 而不是 `4096`。
|
||||
|
||||
要获取单个文件夹的特定信息,请使用选项 `-d`,但必须指定该文件夹。例如,要查看文件夹 `/media` 的详细信息,请使用命令 `ls -ld /media`。
|
||||
|
||||
另一个要熟悉的命令是命令 `cat`。命令 `cat` 用于将标准输入(文件)复制到标准输出(屏幕)。使用 `cat` 可以轻松地查看文件的内容。例如,要查看名为 `text` 的文件的内容,如果你与文件 `text` 在同一个文件夹中请使用命令 `cat text`。如果你不在同一个文件夹中,那么你必须指定位置。例如,如果文件 `text` 在文件夹 `/home/jarret/test/` 中,那么命令将是 `cat /home/jarret/test/text`。
|
||||
|
||||
另一个非常有用的命令是 `man`。`man` 命令用于查看特定命令的文档。例如,要查看命令 `ls` 的帮助页面,请使用命令 `man ls`。
|
||||
|
||||
**注意:** 记住,在 LFCS 考试中,你可以使用 `man` 命令。
|
||||
|
||||
查看这些命令并测试它们以熟悉它们。使用 `man` 命令,查看本文中的命令以查看其他可用的选项。
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.linuxforum.com/threads/lfcs-command-line-basics.3334/
|
||||
|
||||
作者:[Jarret][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.linuxforum.com/members/jarret.268/
|
162
published/201701/20161225 Minecraft Server on Linux.md
Normal file
162
published/201701/20161225 Minecraft Server on Linux.md
Normal file
@ -0,0 +1,162 @@
|
||||
Linux 上搭建 Minecraft 服务器
|
||||
===============
|
||||
|
||||

|
||||
|
||||
“我的世界(Minecraft)”是一个人们可以在各种游戏主机和计算机上玩的主流游戏。 截止至 2016 年 6 月,在各种平台上已经售出了超过十亿六千万份。因其受欢迎,你可能想在家里举办一个“我的世界”派对,那么你就需要安装一个 “我的世界” 服务器,让所有的玩家连接到同一个世界中一起玩。
|
||||
|
||||
### 系统要求
|
||||
|
||||
要开始的话,你需要一个有相当数量内存的 Linux 操作系统。你要在服务器上容纳的玩家越多,你就需要越多的内存。硬盘空间倒不是需求很大,只要足够去安装 Java 以及“我的世界”服务器 Java 文件就行。Minecraft 服务器需要有一个稳定的网络连接,不管是有线还是无线网络。
|
||||
|
||||
让我们看看 “我的世界”服务器最低要求:
|
||||
|
||||
- **CPU:**双核或更好。
|
||||
- **内存:** 2 GB (20-40 用户量),3 GB(30-60 用户量),8 GB(60+ 用户量)。
|
||||
- **系统:** 不需要图形化用户接口,可以留出更多的空闲资源。
|
||||
|
||||
**备注:** 这是“我的世界” 服务端程序的需求,而不是一个完整的操作系统的需求。如果可以给我的世界服务器分配更多的资源,它将运行得更好。
|
||||
|
||||
###安装 Java
|
||||
|
||||
如果你用 Linux 操作系统运行它的话,你需要安装最新版本的 Java 环境。
|
||||
|
||||
为了验证你的 Java 版本,位于终端输入以下命令:`java -version`。结果应该是:
|
||||
|
||||
```
|
||||
java version "1.8.0_101"
|
||||
|
||||
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
|
||||
|
||||
Java HotSpot(TM) Client VM (build 25.101-b13, mixed mode)
|
||||
```
|
||||
|
||||
如果你当前的 Java 版本不是 1.8 或者更高,则通过在 Ubuntu 系统的终端下执行以下操作来安装 Java 版本 8:
|
||||
|
||||
```
|
||||
sudo add-apt-repository ppa:webupd8team/java
|
||||
sudo apt-get update
|
||||
sudo apt-get install oracle-java8-installer
|
||||
```
|
||||
|
||||
**注意:**如果 `add-apt-repository` 命令无法找到,运行 `sudo apt-get install software-properties-common` 来安装。 您还可以将第三个命令中更改为 `oracle-java9-installer` 来安装最新的 java 版本。
|
||||
|
||||
对于 Redhat 系统(如 CentOS),请使用以下命令:
|
||||
|
||||
```
|
||||
sudo yum install java-1.8.0-openjdk
|
||||
```
|
||||
|
||||
安装后,核实键入版本命令 `java-version` ,并且核实输出。这样你就有了一个适当的 Java 版本,你可以继续进行接下来的安装。
|
||||
|
||||
### “我的世界”服务器版本下载
|
||||
|
||||
接下来做的事就是去检查用户将运行的“我的世界”的版本。图 1 显示了一个正在运行的 ”我的世界“ ,注意左下角的版本号。
|
||||
|
||||

|
||||
|
||||
*图 1*
|
||||
|
||||
请记住“我的世界”客户端版本号。每个客户端应该是相同的版本才行。
|
||||
|
||||
您接下来要做的是下载客户端所需要的“我的世界”的服务器版本。为了下载该版本你需要知道它的位置。得到所需的文件的命令是:
|
||||
|
||||
```
|
||||
sudo wget https://s3.amazonaws.com/Minecraft.Download/versions/[version]/minecraft_server.[version].jar
|
||||
```
|
||||
|
||||
在 图1 看到,版本号是 1.10.2。那么这个命令就该变成:
|
||||
|
||||
```
|
||||
sudo wget https://s3.amazonaws.com/Minecraft.Download/versions/1.10.2/minecraft_server.1.10.2.jar
|
||||
```
|
||||
|
||||
|
||||
当你下载好文件,会保存到你当前目录下。使用命令 `pwd` 确定当前位置。
|
||||
|
||||
一旦你有了该文件,知道它所保存的文件夹就可以继续了。
|
||||
|
||||
### 服务器信息
|
||||
|
||||
在启动“我的世界”服务器之前,您必须知道当前系统上能被你使用的可用内存大小。 当启动“我的世界”服务器时,你将需要指定起始内存量和当更多玩家加入时最大分配的内存量。 再次提示,重要的是要有足够的内存。 如果可以,使用最小化安装操作系统来留出更多的内存,例如最小化安装的 Ubuntu。
|
||||
|
||||
一旦你有了所需的“我的世界”服务器文件,就可以确定分配给“我的世界”的内存数量。 要确定可用内存,打开一个终端并键入以下命令 ,示例输出如图 2 所示:
|
||||
|
||||
```
|
||||
free -h
|
||||
```
|
||||
|
||||

|
||||
|
||||
*图 2*
|
||||
|
||||
如图 2 所示,在这个低端系统上你可以看到那只有 684 MB 空闲内存。这不是一个可以用于搭建一个 “我的世界” 服务器的系统。在另一个服务器上我有 2.8 GB 内存可供给“我的世界” 使用。
|
||||
|
||||
在我们启动服务器之前,我们需要找到服务器的 IP 地址。 为此,请运行命令 `ifconfig`。 如图 3 所示,应该列出了网络连接,显示 `Internet Address` 或 `inet addr`,这里是 `192.168.0.2`。 在我的服务器系统上,它列出的地址是 `192.168.0.14`,这个地址是客户端系统将要使用的地址。
|
||||
|
||||

|
||||
|
||||
*图 3*
|
||||
|
||||
### 启动“我的世界”服务器
|
||||
|
||||
下一步才是真正的启动“我的世界”服务器。在我们实际开始前,会涉及到几个选项。当启动“我的世界”服务器时,你需要指定用多少内存来初始化“我是世界”。 您还将指定使用的最大内存量。
|
||||
|
||||
如果我的系统有 3.7GB 闲置内存,我知道会有不到 40 位玩家,于是我只需要划出 2GB。当然,我可以增加些以允许用户增长。如果需要的话,我还可以留一点内存给系统运行。我将最小值设置为 2 GB,最大值设置为 3 GB。 由于最大值设置为 3 GB,如果需要的话,还可以至少留给系统 700 MB 内存,但这只有在“我的世界”服务器使用超过最初分配的2 GB 时才会发生。
|
||||
|
||||
启动服务器的命令行是:
|
||||
|
||||
```
|
||||
sudo java -Xms# -Xmx# -jar [path]/minecraft_server.[version].jar nogui
|
||||
```
|
||||
|
||||
现在解释一下命令结构:
|
||||
|
||||
- -Xms# - 初始启动分配的内存(`-Xms2048m`)
|
||||
- -Xmx# - 最大分配的内存(`-Xmx3096m`)
|
||||
- [path] – “我的世界” 服务器文件路径( `/home/tux/MCS/`)
|
||||
- [version] – 下载的“我的世界” 服务器的版本(`1.10.2`)
|
||||
- nogui – 用于以基于文本的界面来显示,可以减少内存使用。如果你使用图形化界面,那么移除 `nogui` 选项。
|
||||
|
||||
一个使用 2GB 内存以及最大 3GB、位置为 `/home/tux/MCS`、 版本号为 `1.10.2` 的系统的完整命令实例是:
|
||||
|
||||
```
|
||||
sudo java -Xms2048m -Xmx3096m -jar /home/tux/MCS/minecraft_server.1.10.2.jar nogui
|
||||
```
|
||||
|
||||
**注意:** 这里内存容量的大小是兆字节单位。容量要乘以 1024。举个例子,2GB 的内存使 2 与 1024 相乘,容量为 2048。但别忘小写字母 `m` 是特指兆字节。你可以简单地使用特指的 `2g` 和 `3g` 来表示 2GB 和 3GB。
|
||||
|
||||
在你首次运行服务器时会发成一些错误。开始之前,它表明需要同意 “最终用户许可协议 EULA”。
|
||||
|
||||
要同意 “最终用户许可协议 EULA”,你需要编辑与“我的世界”服务器 JAR 文件同一文件夹下的的 `eula.txt` 文件。
|
||||
|
||||
使用一个类似 `nano` 的文件编辑器打开文件 `eula.txt` 文件。确定你进行这步时使用的是 root 权限。将行 `eula = false` 更改为 `eula = true`,并保存文件。
|
||||
|
||||
现在,再次输入上述命令以启动服务器。 应该滚过满屏幕信息,然后一个状态行将显示它的创建过程。 当其这个初始世界创建好之后,状态行将显示 100%。 有关系统时间更改的任何错误消息是正常的,因此忽略它们。
|
||||
|
||||
此时,你可以打开客户端程序并且看到如上图 1 的界面。点击“Multiplayer”按钮。在下一屏幕,如图 4,选择 “Direct Connect”,这将提示您输入服务器地址,因此键入“我的世界”服务器的 IP 地址。你现在应该已经连接到游戏了。
|
||||
|
||||
|
||||

|
||||
|
||||
*图 4*
|
||||
|
||||
### 连接的某些麻烦
|
||||
|
||||
如果一些客户端无法连接到服务器,那么你需要按下 `CTRL+Z` 退出 Java 程序。打开文件 `server.propertices`, 使用一个 nano 之类的编辑器进行编辑。记住要 root 权限。编辑 `online-mode` 行,它应该设置为 `true` ,修改为 `false` 并保存。重启服务器并打开“我的世界”服务器。使用客户端重新连接到服务器,现在应该一切都好了。
|
||||
|
||||
建设快乐!
|
||||
|
||||
------
|
||||
|
||||
via: https://www.linuxforum.com/threads/minecraft-server-on-linux.3202/
|
||||
|
||||
作者:[Jarret][a]
|
||||
译者:[erlinux](http://www.itxdm.me)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.linuxforum.com/members/jarret.268/
|
||||
[1]: https://s3.amazonaws.com/Minecraft.Download/versions/%5Bversion%5D/minecraft_server.%5Bversion%5D.jar
|
||||
[2]: https://s3.amazonaws.com/Minecraft.Download/versions/%5Bversion%5D/minecraft_server.%5Bversion%5D.jar
|
@ -0,0 +1,62 @@
|
||||
2017 年成为 Linux 专家的 4 个热门技能
|
||||
============================================================
|
||||
|
||||
### 你在新的一年里需要刷哪些技能?
|
||||
|
||||

|
||||
|
||||
图片提供:[Internet Archive Book Images][1]。由 Opensource.com 修改。 CC BY-SA 4.0
|
||||
|
||||
成为 Linux 专家的一个问题是“专家”的定义在不断变化。当我进入 Linux 世界的时候,那时认为成为一个 _Linux 专家_,你需要能够编译自己的内核。天啊,如果你想在笔记本电脑上使用 Linux,即便你只是_用户_,你也必须编译一个自定义内核。 如今编译自己的内核通常是浪费时间。这不是说它并不重要,但在开源世界,我们建立在他人成功的基础之上,而 Linux 发行版为我们提供了运行良好的内核。虽然“专家”的定义并不总是那么剧烈变化,但对 IT 专业人员的需求每年都在变化。
|
||||
|
||||
下面是 2017 年 Linux 专业人员的四个重要技能:
|
||||
|
||||
### 1、 安全
|
||||
|
||||
我不是在讨论安全专家或安全顾问。这些职位和服务当然很重要,但是随着联网设备渗透到我们生活的每一个方面,我们需要在我们做出的每一个决定中都具有[安全][2]意识。今年,我的妻子和我买了一台洗衣机和一台冰箱,它们都配备了蓝牙。黑客攻入我的漂洗系统的想法可能看起来很傻,但这都是潜在的攻击点。
|
||||
|
||||
当激活工作、家庭或我们的口袋中的任何系统时,我们应该考虑它们可能引发的安全问题。而且因为像联网烤面包机这样的物品不太可能及时获得固件升级,我们需要按照普通设备可能遭到破坏的思路来设计其余的系统。相比以前任何时候,我们更需要考虑来自防火墙内的攻击。不要让你的文件服务器被你的搅拌器破坏!
|
||||
|
||||
### 2、 DevOps
|
||||
|
||||
[DevOps][3] 不再是一个新概念。在过去两三年里,我们一直鼓励员工学习 DevOps,以便他们能够在工作中取得成功。这是个好建议,但这并不意味着我们应该完全依赖自动化工具来完成我们的工作。Chef、Puppet、Ansible、Salt Stack 及类似的工具是美好的,但我们需要了解背后发生了什么,所以当发生一些不可避免的错误,我们应该知道如何解决它。
|
||||
|
||||
使用 DevOps 的编程方法来计算,我们仍然需要能够维护、修复和理解在代码层之下运行的系统的人。没有 Linux 专家,云计算将是一个可怕的地方,即使那个云在你自己的机房里。
|
||||
|
||||
### 3、 开发
|
||||
|
||||
作为系统管理员,20 年来,我从来没有时间学习编程。这听起来可能是一个借口,但这是事实。我所有的开发技能就是基本的脚本编写,以帮助我更快工作。不过,那些日子已经结束了。虽然我们需要在 DevOps 世界中拥有系统管理技能,但我们还需要系统管理员拥有编程技能。
|
||||
|
||||
如果你是一个像我一样的老练的系统管理员,你可能已经采用 DevOps 并每天使用它。如果你真的想要胜过他人,你需要学习如何以编程方式解决问题,并且不要认为 Chef 或 Puppet 代码只是配置文件。 每个 IT 专业人员都至少需要掌握编程的概念,因为 DevOps 代码至少在某种程度上抽象了 IT 的每个方面。
|
||||
|
||||
### 4、 软技能
|
||||
|
||||
通常,我们在准备职业生涯时所考虑的最后一件事是所谓的 *软技能* - 社交和沟通技巧 - 但是它们可能是最有可能决定你走向成功的技能。无论你正在寻找一份新工作,还是试图适应当前职业生涯的变化,软技能是至关重要的。
|
||||
|
||||
划分 IT 各个领域的标准是交错的,并且良好的沟通能力使得这些模糊的分野成为一个有利条件,而不是绊脚石。我们正生活在一个开发人员围绕着服务器,而运维团队编写 Ruby 代码来维护服务器农场的世界里。这些都是 IT 中的大胆的新思想,如果人们不能在不同部门间很好的沟通,工作场所将迅速有敌对气氛。此外,IT 人员总是需要与其他业务领域的人员进行有效沟通。而且,现在比以往有更大的需求。
|
||||
|
||||
|
||||
你计划在 2017 年里添加什么到你的技能中?在评论栏中让我们知道吧。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||

|
||||
|
||||
Shawn Powers - 自 2009 年起是 CBT Nuggets (www.cbtnuggets.com) 的一名 IT 训练员,专于 Linux、Chef 及为大规模网络集成多个平台。他在 2016 年 12 月发布了一个在线高级 Linux 认证课程(LPIC-2)。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/17/1/yearbook-4-hot-skills-linux-pros-2017
|
||||
|
||||
作者:[Shawn Powers][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/shawnpowers
|
||||
[1]:https://www.flickr.com/photos/internetarchivebookimages/14758810172/in/photolist-oubL5m-ocu2ck-odJwF4-oeq1na-odgZbe-odcugD-w7KHtd-owgcWd-oucGPe-oud585-rgBDNf-obLoQH-oePNvs-osVgEq-othPLM-obHcKo-wQR3KN-oumGqG-odnCyR-owgLg3-x2Zeyq-hMMxbq-oeRzu1-oeY49i-odumMM-xH4oJo-odrT31-oduJr8-odX8B3-obKG8S-of1hTN-ovhHWY-ow7Scj-ovfm7B-ouu1Hj-ods7Sg-qwgw5G-oeYz5D-oeXqFZ-orx8d5-hKPN4Q-ouNKch-our8E1-odvGSH-oweGTn-ouJNQQ-ormX8L-od9XZ1-roZJPJ-ot7Wf4
|
||||
[2]:https://opensource.com/tags/security
|
||||
[3]:https://opensource.com/tags/devops
|
@ -0,0 +1,185 @@
|
||||
50 种系统免遭黑客侵袭的方法 [2017 年版]
|
||||
============================================================
|
||||
|
||||
> Paul Simon 概括了“与爱人分手的 50 法”,而这里,我们提供了提高系统安全性的 50 种方法。
|
||||
|
||||

|
||||
|
||||
图片来自:
|
||||
|
||||
Opensource.com
|
||||
|
||||
当我还是小孩子,耳畔萦绕着 Paul Simon 的流行歌:“[与爱人分手的50法][3]”。当我渐渐地长大,突然受歌的启发,收集了 50 种方法,免得你——门内汉和门外汉——遭受黑客侵袭啊:
|
||||
|
||||
### “你刚刚从后头溜出去了,杰克”
|
||||
|
||||
1、 备份你的数据。如果你不幸被勒索软件光顾,那么你就不用支付赎金,因为你做了备份。
|
||||
|
||||
2、 当你需要在公共场所为你的手机充电,那就使用 [sysncstop][4]吧,或者你也可以用你的备份电池。(LCTT 译注:sysncstop 是一种可以在公共场所安全充电的 USB 设备。在公共场所充电的风险,你知道的。)
|
||||
|
||||
3、 利用好你的审计系统,里头有好多很酷的工具可以帮助你监控系统。如果你确实遭到了入侵,那么审计系统也许就可以告诉你发生了什么,以及攻击者做了些什么。
|
||||
|
||||
4、 说到日志,把日志定向到集中式服务器上总是一个不错的想法,因为如果某个黑客侵入你的系统里,他首先要攻击的就是日志系统以便隐藏他的踪迹。构建一个好的入侵检测系统来监控日志,这对于防范黑客也很有帮助。
|
||||
|
||||
### “做份新的计划吧,斯坦”
|
||||
|
||||
5、 以强制模式运行 SELinux(见 [StopDisablingSelinux.com][5])。不要觉得我现在还在喋喋不休地说这个可笑。SELinux 可以防止 0day 漏洞的影响。当[破壳][6]漏洞出现的时候,SELinux 曾是唯一的防护手段。
|
||||
|
||||
6、 如果可能,在 [SELinux 沙盒][7]中运行应用程序吧——在容器火遍全球前,它就已经是容器了。同时,请关注 [Flatpack][8] 开发,这个工具很快会开发沙盒功能。
|
||||
|
||||
7、 不要安装或者使用 Flash。Firefox 不再支持它了,同时也希望大多数 web 服务器正在远离它。
|
||||
|
||||
8、 使用[受约束的 SELinux 用户][9]来控制用户在你的系统中所能做的事。如果你正运行着一台共享登录的系统,设置用户为 `guest_t`。
|
||||
|
||||
### “你不必害羞,罗伊”
|
||||
|
||||
9、 利用 [systemd 工具的能力][10]来帮助你提升系统安全。大多数系统攻击是通过那些监听着网络的服务来实现的,而 Systemd 提供了一些很棒的方法来锁定服务。例如,使用 [PrivateTmp=yes][11] 。Privatemp 利用挂载命名空间来为服务器的 `/tmp` 设置一个私有的 **tmpfs** 挂载,这可以阻止被入侵的服务访问到主机 `/tmp` 中的内容,以及针对系统中基于监听 `/tmp` 的服务的潜在攻击。
|
||||
|
||||
10、 `InaccessibleDirectories=/home` 是一个 systemd 单元的选项,它使用挂载命名空间的方式使从服务的角度看不到 `/home` 目录(或者其它任何目录),这会使得被入侵的服务攻击到数据更为困难。
|
||||
|
||||
11、 `ReadOnlyDirectories=/var` 是另外一个 systemd 单元的选项,它使用挂载命名空间的方式来将目录内容变成只读模式。基本上你总是可以让 `/usr` 运行在**只读模式**。这可以阻止一个被入侵的应用程序重写二进制文件,因为那可以在下次服务重启时,该服务依旧是被入侵的。
|
||||
|
||||
12、 降低服务权限(`CapabilityBoundingSet=CAP_CHOWN CAP_KILL`)。在内核中,特权服务被分解成一些列不同的权限。大多数服务不需要很多权限(如果需要一些的话),而 systemd 提供了一个简单的开关来从服务中剥离这些权限。
|
||||
|
||||
13、 如果服务不使用网络,那么你可以使用 `PrivateNetwork=yes` 来为该服务关闭网络功能。只需在服务的单元文件中开启该选项,就可以享受它带来的好处,关闭服务所有可用的网络。黑客常常并不是真的想破坏你的机器——他只是想用它作为攻击服务器来攻击其它机器。如果服务连不上网络,那么就不会受到攻击。
|
||||
|
||||
14、 控制服务可用的设备。 Systemd 提供了 `DeviceAllow` 配置,它控制了该服务可用的设备。`DeviceAllow=/dev/null rw` 将访问限制为 `/dev/null`,且仅可访问该设备节点,不允许对其它任何设备节点的访问。该功能实现于设备的 cgroup 控制器顶端。
|
||||
|
||||
15、 Systemd 系统即将迎来的一个新功能是 [`ProtectSystem Strict`][2],该功能可以开启所有这些命名空间以完全锁定服务运行的环境。
|
||||
|
||||
### “刚刚重获自由”
|
||||
|
||||
16、 不要使用没有运行着 SELinux([SEAndroid][11])强制模式的手机。幸运的是,我听说目前超过 90% 的安卓手机都运行着 SEAndroid 的强制模式,这真让我高兴。现在要是我们能让那些果粉们使用 SELinux 就好了。
|
||||
|
||||
17、 只从受信源安装软件。不要安装你从因特网找来的危险东西,对于你的手机、计算机系统、虚拟机以及容器等等也一样。
|
||||
|
||||
18、 我不会在我的手机上进行网上银行操作——我只在我的 Linux 计算机上做这事儿。如果黑客偷了我的信用卡,也许我就丢了那么 50 美元;而如果他黑进我的银行账户,那我丢的钱就会更多。我想我是个老古板。(“滚出我的地盘。”——那些老古板都会这样说。)
|
||||
|
||||
19、 我用我手机做的一件很酷的事情,就是设置让我的信用卡公司每次在我的信用卡消费时给我发送短信。那样的话,如果账号被盗,我会更快地知道。
|
||||
|
||||
20、 当你需要安全地通讯,请使用 [Signal 安全信息应用][12]。
|
||||
|
||||
### “搭个便车,格斯”
|
||||
|
||||
21、 在你的计算机系统上运行 Linux。当我第一次想用计算机联络我的父亲时,在他的计算机中毒前,我很少回家。我回去给他的系统安了个 Linux,而他从那以后就一直运行着它。我相信 Linux 大体上说是一个更加安全的系统,因为它的设计方式。而且我也相信这个桌面被黑的可能性也相对较小,因为用它的人相对较少。有些人或许要持反对意见了,他们会说 Windows 在过去几年中已经有了很大的改进了,但对于我而言,我仍然坚持己见。
|
||||
|
||||
22、 只运行那些有[安全响应团队][13]进行安全监管的发行版。企业软件及其重要。
|
||||
|
||||
23、 运行一个企业级内核。在容器中,单点故障往往是内核。如果你想要保证它安全,那么就使用一个企业级内核,即便它不是一个最新的版本,但也包含了最新的安全补丁。记住,最新的内核虽然带来了最新的安全补丁,但是它也带来了大量的新代码,这些代码可能存在漏洞。
|
||||
|
||||
### “你不要说太多”
|
||||
|
||||
24、 大多数非法入侵都是通过社会工程学实施的——例如,电子邮件链接、web 浏览器攻击,以及电话。对于此,最好的选择是接受相关教育,并且对一切留个心眼儿。没有哪个来自尼日利亚的家伙会给你钱,国税局也不会打电话到你家问你要钱。如果你电子邮件收到了来自你银行的电子邮件,里面包含有到某个网站的链接,那么不要直接去点击那个链接,在 web 浏览器中输入那个地址来打开。
|
||||
|
||||
25、 总是把你的系统打上最新的安全补丁。已知有安全漏洞以及过时的系统的数量十分可怕,脚本小子们依赖于你**不**更新系统。
|
||||
|
||||
26、 当连接到网络上的服务时,请始终使用 HTTPS。Chrome 和 Firefox 现在有个强制开启 HTTPS 的模式。到 2016 年为止,那些还不支持安全通讯的网站可能就不值得你们访问。
|
||||
|
||||
27、 在你的容器中使用 [seccomp][14],这会将攻击限制在内核之外,内核是个单点故障。限制什么进程可以具体讨论。
|
||||
|
||||
### “就把那钥匙丢下吧,李”
|
||||
|
||||
28、 使用 [YubiKey][15] 来存储私钥。
|
||||
|
||||
29、 加密你系统上的数据。至少对于笔记本而言,应该把**家目录**以及你的其它数据目录加密。几年前,我正乘坐在伦敦的地铁上,我的笔记本就成了某些人的目标——我下了车,车门关上了,而我发现我的笔记本不见了。此时,地铁已经驶出了站台。幸运的是,我把磁盘加密了。
|
||||
|
||||
30、 给你的所有网站用上 [Let's Encrypt][16] 吧,没有任何理由不再运行 HTTPS 了。
|
||||
|
||||
31、 绝不要在不同 web 服务器上使用相同的密码。虽然这个很难不落入陷阱,但是像 [Let's Encrypt][16] 这样的工具会有很大帮助。如果你使用 ssh 密钥来登录进系统,这会更好。
|
||||
|
||||
32、 使用双因素认证(2FA)。密码变得无关紧要,使用 Yubikey 以及诸如此类的工具可以使得双因素认证很方便,我们都有手机。在大脑中记一个密码,并在手机中生成一个密钥,总是比一个密码来得更好。
|
||||
|
||||
33、 网站总要我注册个帐号,没有比这更激怒我的事情了——我们就不能做得更好点?对于网站密码,始终都要使用密码生成工具来生成。我是个保守派:我使用 [Password Safe][17] 来生成密码,然后剪切粘贴到 web 浏览器中。我听说,其他人使用 [LastPass][18],或者其它整合在手机和 web 服务中的工具也用着不错。
|
||||
|
||||
34、 配置像 [FreeIPA][19] 之类的服务用于身份认证。使用像 [Kerberos][20] 之类的工具来认证和授权,会使得跟踪雇员及其对系统的访问更为简便(而且它也有很酷的加密服务)。使用活动目录也很不错,或许我有点偏颇。
|
||||
|
||||
35、 如果你经常输入密码,那就使用一个容易记忆的句子,而不是一个单词。我所偏好的用于记忆密码的方式,就是使用有几个单词并且易于输入的词组。
|
||||
|
||||
### “让自己自由”
|
||||
|
||||
36、 使用 [USBGuard][21] 来保护你的系统免遭流氓 USB 设备破坏。
|
||||
|
||||
37、 在过去几年中,我一直工作于容器方面,让我们来说说容器的安全吧。首先,让它们在开启强制模式的 SELinux 的系统中运行。如果你的系统不支持 SELinux,那就换个支持它的版本吧。SELinux 是使用文件系统来保护容器免遭破坏的最佳工具。
|
||||
|
||||
38、 如果可能,在容器中跑你的服务吧。我相信,使用 [OCI 镜像格式][22] 和 Linux 容器技术是应用的未来。用 [runC][23]、OCID、RKT、Systemd-nspawn 等等来启动这些容器。虽然我常常说“容器并不包容“,但是不要在容器外面运行这些服务更好一些。
|
||||
|
||||
39、 在虚拟机中运行容器。虚拟机提供比容器更好的隔离机制,在虚拟机中跑像容器之类的东西,更加灵活有弹性,并且互相隔离。
|
||||
|
||||
40、 在不同的虚拟机中,按不同的安全需求跑容器应用。你可以在 DMZ 中的虚拟机上跑 web 服务容器,而在 DMZ 外的虚拟机上跑数据容器。
|
||||
|
||||
41、 同时,记得在不同的物理机上跑需要最高安全性的虚拟机,并且容器放在不同虚拟机上(这也叫深度防护)(LCTT 译注:此处原文有误,根据理解修改)。
|
||||
|
||||
42、 以[只读模式][24]跑容器。开发环境中的容器需要能够写入到 `/usr`,但是生产环境中的容器只能写入到 `tmpfs`,并且将卷挂载到容器中。
|
||||
|
||||
43、 [降低容器权限][25]。不管是在容器中,还是在容器外,我们都以比它们所需的更多的“权限”跑它们的进程,你可以通过降低权限来让你的进程更加安全。
|
||||
|
||||
44、 [不要以 root 身份在容器中跑进程][26]。大多数服务都不需要 root 特权,或者它们需要该权限来绑定到低于 1024 的端口,然后切换到非 root 用户。我建议你始终以非 root 身份来跑应用。
|
||||
|
||||
45、 给你的容器打上最新的 CVE 补丁。使用像 OpenShift 这样的工具来构建并维护你的容器镜像是个不错的主意,因为它会在新的安全补丁出现时自动重构容器镜像。
|
||||
|
||||
46、 我的一个同事说 “Docker 就是用来在你的主机上以 root 身份运行来自因特网的随机代码的。”从一个受信源获取软件,不要抓取你在 docker.io 上随便找到的第一个 Apache 应用。[操作系统有重要关系][27]。
|
||||
|
||||
47、 在一台受限的容器化优化的主机上跑生产环境容器,例如在一台[原子主机][28]上,它开启了所有安全特性,为运行中的容器而优化,带有限制攻击层和原子级更新。有什么不喜欢的吗?
|
||||
|
||||
48、 使用像 [OpenScap][29] 这样的工具来扫描你系统的漏洞。糟糕的是,新的漏洞总是层出不穷,所以你得时刻更新你的扫描器。(也可以看看 [原子扫描][30],用于扫描你的容器。)
|
||||
|
||||
49、 OpenScap 也具有扫描[安全配置][31]的功能,如 STIG(安全技术部署指南)。
|
||||
|
||||
50、 为你孩子收到的所有那些圣诞物联网设备设置一个特别的客户网络。我钟爱我的 Amazon Echo,还有自动化灯以及电源开关(“Alexa,打开圣诞灯“),但是所有这些都是由可能存在安全问题的 Linux 操作系统控制。
|
||||
|
||||
### ”一定还有着另外 50 种免遭黑客侵害的方法“
|
||||
|
||||
你会为这个列表添加点什么呢?在下面的评论中告诉我们吧。
|
||||
|
||||
_Josh Bressers 对本文作出贡献。_
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||

|
||||
|
||||
Daniel J Walsh - Daniel Walsh 已经致力于计算机安全领域将近 30 年。Dan 在 2001 年 8 月份加入 Red Hat。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/17/1/yearbook-50-ways-avoid-getting-hacked
|
||||
|
||||
作者:[Daniel J Walsh][a]
|
||||
译者:[GOLinux](https://github.com/GOLinux)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/rhatdan
|
||||
[1]:http://danwalsh.livejournal.com/51459.html
|
||||
[2]:https://www.phoronix.com/scan.php?page=news_item&px=systemd-New-Protect-Tunables
|
||||
[3]:https://www.youtube.com/watch?v=0H5chfbcWtY
|
||||
[4]:http://syncstop.com/
|
||||
[5]:http://stopdisablingselinux.com/
|
||||
[6]:http://danwalsh.livejournal.com/71122.html
|
||||
[7]:http://danwalsh.livejournal.com/31146.html
|
||||
[8]:http://flatpak.org/
|
||||
[9]:http://danwalsh.livejournal.com/37404.html
|
||||
[10]:http://0pointer.de/blog/projects/security.html
|
||||
[11]:https://source.android.com/security/selinux/
|
||||
[12]:https://whispersystems.org/
|
||||
[13]:https://access.redhat.com/blogs/766093/posts/2695561
|
||||
[14]:https://lwn.net/Articles/656307/
|
||||
[15]:https://www.yubico.com/
|
||||
[16]:https://letsencrypt.org/
|
||||
[17]:https://pwsafe.org/
|
||||
[18]:https://www.lastpass.com/
|
||||
[19]:https://www.freeipa.org/page/Main_Page
|
||||
[20]:https://web.mit.edu/kerberos/
|
||||
[21]:https://github.com/dkopecek/usbguard
|
||||
[22]:https://www.opencontainers.org/
|
||||
[23]:https://runc.io/
|
||||
[24]:http://www.projectatomic.io/blog/2015/12/making-docker-images-write-only-in-production/
|
||||
[25]:http://rhelblog.redhat.com/2016/10/17/secure-your-containers-with-this-one-weird-trick/
|
||||
[26]:https://www.projectatomic.io/blog/2016/01/how-to-run-a-more-secure-non-root-user-container/
|
||||
[27]:https://opensource.com/16/12/yearbook-why-operating-system-matters
|
||||
[28]:https://access.redhat.com/articles/rhel-atomic-getting-started
|
||||
[29]:https://www.open-scap.org/
|
||||
[30]:https://developers.redhat.com/blog/2016/05/02/introducing-atomic-scan-container-vulnerability-detection/
|
||||
[31]:https://www.open-scap.org/security-policies/scap-security-guide/
|
@ -0,0 +1,247 @@
|
||||
在 Linux 中设置 sudo 的十条 sudoers 实用配置
|
||||
===================
|
||||
|
||||
在 Linux 和其他的类 Unix 操作系统中,只有 root 用户可以运行所有的命令,才能在系统中执行那些需要鉴权的操作,比如安装、升级和移除软件包、[创建用户和用户组][1]、修改系统重要的配置文件等等。
|
||||
|
||||
然而,系统管理员,比如说 root 用户,可以通过 [sudo 命令][2] 和一些配置选项来给普通用户进行授权,从而让该普通用户可以运行某些命令已经上述的那些相当重要的系统级操作。
|
||||
|
||||
另外,系统管理员还可以分享 root 用户密码 (这个做法是不值得提倡的),这样普通用户就可以通过 `su` 命令来转化为 root 用户角色。
|
||||
|
||||
`sudo` 允许已授权用户按照指定的安全策略、以 root 用户 (或者是其他的用户角色) 权限来执行某个命令。
|
||||
|
||||
1. `sudo` 会读取和解析 `/etc/sudoers` 文件,查找调用命令的用户及其权限。
|
||||
2. 然后提示调用该命令的用户输入密码 (通常是用户密码,但也可能是目标用户的密码,或者也可以通过 `NOPASSWD` 标志来跳过密码验证)。
|
||||
3. 这之后, `sudo` 会创建一个子进程,调用 setuid() 来切换到目标用户。
|
||||
4. 接着,它会在上述子进程中执行参数给定的 shell 或命令。
|
||||
|
||||
以下列出十个 `/etc/sudoers` 文件配置,使用 `Defaults` 项修改 sudo 命令的行为。
|
||||
|
||||
```
|
||||
$ sudo cat /etc/sudoers
|
||||
```
|
||||
|
||||
`/etc/sudoers` 文件:
|
||||
|
||||
```
|
||||
#
|
||||
# This file MUST be edited with the 'visudo' command as root.
|
||||
#
|
||||
# Please consider adding local content in /etc/sudoers.d/ instead of
|
||||
# directly modifying this file.
|
||||
#
|
||||
# See the man page for details on how to write a sudoers file.
|
||||
#
|
||||
Defaults env_reset
|
||||
Defaults mail_badpass
|
||||
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
Defaults logfile="/var/log/sudo.log"
|
||||
Defaults lecture="always"
|
||||
Defaults badpass_message="Password is wrong, please try again"
|
||||
Defaults passwd_tries=5
|
||||
Defaults insults
|
||||
Defaults log_input,log_output
|
||||
```
|
||||
|
||||
#### Defaults 项的类型
|
||||
|
||||
```
|
||||
Defaults parameter, parameter_list ### 对任意主机登录的所有用户起作用
|
||||
Defaults@Host_List parameter, parameter_list ### 对指定主机登录的所有用户起作用
|
||||
Defaults:User_List parameter, parameter_list ### 对指定用户起作用
|
||||
Defaults!Cmnd_List parameter, parameter_list ### 对指定命令起作用
|
||||
Defaults>Runas_List parameter, parameter_list ### 对以指定目标用户运行命令起作用
|
||||
```
|
||||
|
||||
在本文讨论范围内,我们下面的将以第一个 `Defaults` 作为基准来参考。parameter 参数可以是标记 (flags)、整数值或者是列表 (list)。
|
||||
|
||||
值得注意的是,标记 (flag) 是指布尔类型值,可以使用 `!` 操作符来进行取反,列表 (list) 有两个赋值运算符:`+=` (添加到列表) 和 `-=` (从列表中移除)。
|
||||
|
||||
```
|
||||
Defaults parameter
|
||||
或
|
||||
Defaults parameter=值
|
||||
或
|
||||
Defaults parameter -=值
|
||||
Defaults parameter +=值
|
||||
或
|
||||
Defaults !parameter
|
||||
```
|
||||
|
||||
### 1、 安置一个安全的 PATH 环境变量
|
||||
|
||||
该 `PATH` 环境变量应用于每个通过 `sudo` 执行的命令,需要注意两点:
|
||||
|
||||
1. 当系统管理员不信任 `sudo` 用户,便可以设置一个安全的 `PATH` 环境变量。
|
||||
2. 该设置将 root 的 PATH 和用户的 PATH 分开,只有在 `exempt_group` 组的用户不受该设置的影响。
|
||||
|
||||
可以添加以下内容来设置:
|
||||
|
||||
```
|
||||
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
|
||||
```
|
||||
|
||||
### 2、 允许 tty 用户会话使用 sudo
|
||||
|
||||
该设置允许在一个真实的 tty 中进行调用 `sudo`,但不允许通过 cron 或者 cgi-bin 脚本等方法来调用。添加以下内容来设置:
|
||||
|
||||
```
|
||||
Defaults requiretty
|
||||
```
|
||||
|
||||
### 3、 使用 pty 运行 sudo 命令
|
||||
|
||||
少数情况下,攻击者可以通过 sudo 来运行一个恶意程序 (比如病毒或者恶意代码),这种恶意程序可能会分叉出一个后台运行的进程,即使主程序完成执行,它仍能够运行在用户的终端设备上。
|
||||
|
||||
为了防止出现这样的情况,你可以通过 `use_pty` 参数来设置 `sudo` 使用伪终端来运行其他命令,而不必管 I/O 日志的开启状态。如下:
|
||||
|
||||
```
|
||||
Defaults use_pty
|
||||
```
|
||||
|
||||
### 4、 创建 sudo 日志文件
|
||||
|
||||
默认下,`sudo` 通过 syslog(3) 来记录到日志。但是我们可以通过 `logfile` 参数来指定一个自定义的日志文件。如下:
|
||||
|
||||
```
|
||||
Defaults logfile="/var/log/sudo.log"
|
||||
```
|
||||
|
||||
使用 `log_host` 和 `log_year` 参数可以对应记录日志主机名和 4 位数年份到自定义日志文件。如下:
|
||||
|
||||
```
|
||||
Defaults log_host, log_year, logfile="/var/log/sudo.log"
|
||||
```
|
||||
|
||||
下面是自定义 sudo 日志文件的例示:
|
||||
|
||||
[][3]
|
||||
|
||||
*创建 sudo 日志文件*
|
||||
|
||||
### 5、 记录 sudo 命令的输入/输出
|
||||
|
||||
`log_input` 和 `log_output` 参数可以让 `sudo` 命令运行在伪终端,并可以对应地记录所有的用户输入和输出到屏幕上。
|
||||
|
||||
默认的 I/O 日志目录为 `/var/log/sudo-io`,如果存在会话序列号,它将被存储到该目录。你可以通过 `iolog_dir` 参数来指定一个目录。
|
||||
|
||||
```
|
||||
Defaults log_input, log_output
|
||||
```
|
||||
|
||||
这其中支持转义字符,像 `%{seq}` —— 以 36 为基数的单调递增序列,比如 000001,这里每两个数字都分别用来形成一个新目录。请看下边例示 00/00/01:
|
||||
|
||||
```
|
||||
$ cd /var/log/sudo-io/
|
||||
$ ls
|
||||
$ cd 00/00/01
|
||||
$ ls
|
||||
$ cat log
|
||||
```
|
||||
|
||||
[][4]
|
||||
|
||||
*记录 sudo 命令的输入/输出*
|
||||
|
||||
[cat 命令][5] 来查看该目录的其余部分。
|
||||
|
||||
### 6、 为 sudo 用户提示命令用法
|
||||
|
||||
如下,使用 `lecture` 参数可以在系统中为 `sudo` 用户提示命令的用法:
|
||||
|
||||
参数属性值有三个选择:
|
||||
|
||||
1. `always` – 一直提示
|
||||
2. `once` – 用户首次运行 sudo 时提示 (未指定参数属性值时的默认值)
|
||||
3. `never` – 从不提示
|
||||
|
||||
```
|
||||
Defaults lecture="always"
|
||||
```
|
||||
|
||||
此外,你还可以使用 `lecture_file` 参数类自定义提示内容,在指定的文件中输入适当的提示内容即可:
|
||||
|
||||
```
|
||||
Defaults lecture_file="/path/to/file"
|
||||
```
|
||||
|
||||
[][6]
|
||||
|
||||
*为 sudo 用户提示命令用法*
|
||||
|
||||
### 7、 输入错误的 sudo 密码是显示自定义信息
|
||||
|
||||
当某个用户输错密码时,会有一个对应的信息显示在屏幕上。默认是“抱歉,请重新尝试。(sorry, try again)”,你可以通过 `badpass_message` 参数来修改该信息:
|
||||
|
||||
```
|
||||
Defaults badpass_message="Password is wrong, please try again"
|
||||
```
|
||||
|
||||
### 8、 增加 sudo 密码尝试限制次数
|
||||
|
||||
`passwd_tries` 参数用于指定用户尝试输入密码的次数。
|
||||
|
||||
默认为 3。
|
||||
|
||||
```
|
||||
Defaults passwd_tries=5
|
||||
```
|
||||
|
||||
[][7]
|
||||
|
||||
*增加 sudo 密码尝试限制次数*
|
||||
|
||||
使用 `passwd_timeout` 参数设置密码超时 (默认为 5 分钟),如下:
|
||||
|
||||
```
|
||||
Defaults passwd_timeout=2
|
||||
```
|
||||
|
||||
### 9、 在输错密码时让 sudo 羞辱用户
|
||||
|
||||
使用了 `insults` 参数之后,一旦你输出了密码,sudo 便会在命令窗口中显示羞辱你的信息。这个参数会自动关闭 `badpass_message` 参数。
|
||||
|
||||
```
|
||||
Defaults insults
|
||||
```
|
||||
|
||||
[][8]
|
||||
|
||||
*在输错密码时让 sudo 羞辱用户*
|
||||
|
||||
### 10、 更多关于 sudo 的配置
|
||||
|
||||
此外,欲了解更多 sudo 命令的配置,请自行阅读:[su 与 sudo 的差异以及如何配置 sudo][9]。
|
||||
|
||||
文毕。你也可以在评论区分享其他有用的 sudo 配置或者 [Linux 技巧][10]。
|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
作者简介:Aaron Kili 是一名 Linux 和 F.O.S.S 忠实拥护者、高级 Linux 系统管理员、Web 开发者,目前在 TecMint 是一名活跃的博主,热衷于计算机并有着强烈的只是分享意愿。
|
||||
|
||||

|
||||
|
||||
译者简介:[GHLandy](http://GHLandy.com) —— 欲得之,则为之奋斗 (If you want it, work for it.)。
|
||||
|
||||

|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[GHLandy](https://github.com/GHLandy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/add-users-in-linux/
|
||||
[2]:http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/
|
||||
[3]:http://www.tecmint.com/wp-content/uploads/2017/01/Create-Sudo-Log-File.png
|
||||
[4]:http://www.tecmint.com/wp-content/uploads/2017/01/Log-sudo-Input-Output.png
|
||||
[5]:http://www.tecmint.com/13-basic-cat-command-examples-in-linux/
|
||||
[6]:http://www.tecmint.com/wp-content/uploads/2017/01/Lecture-Sudo-Users.png
|
||||
[7]:http://www.tecmint.com/wp-content/uploads/2017/01/Increase-Sudo-Password-Attempts.png
|
||||
[8]:http://www.tecmint.com/wp-content/uploads/2017/01/Sudo-Insult-Message.png
|
||||
[9]:http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/
|
||||
[10]:http://www.tecmint.com/tag/linux-tricks/
|
@ -0,0 +1,86 @@
|
||||
CentOS 与 Ubuntu:哪个更适合做服务器?
|
||||
============================================================
|
||||
|
||||

|
||||
|
||||
已经决定买一台虚拟服务器,但还不能决定使用哪个 Linux 发行版?我们都经历过这种困扰。对于 Linux 发行版来说,要在这么多的发行版和种种支流(flavors)中选择一个,那简直能让人崩溃。不过,对于服务器而言,有两个主流的 Linux 发行版,那就是 CentOS 和 Ubuntu。但如何从这两个之中选择,这是摆在管理员、初学者和专业人士面前的主要问题。在对这两个(和更多)发行版有了一定的经验之后,我们决定对这两个发行版用于服务器时做个比较。
|
||||
|
||||
### 概览
|
||||
|
||||
|  CentOS |  Ubuntu |
|
||||
| --- | --- |
|
||||
| 基于 Red Hat Linux Enterprise | 基于 Debian |
|
||||
| 更新频度较少 | 经常更新 |
|
||||
| 更稳定和更安全一些,因为不经常更新。 | 更新的软件包可能不稳定,不安全?不会,因为他们在发布到正式版本前进行了大量测试。 |
|
||||
| 没有足够的教程和用户群较少(LCTT 译注:可能是由于国内外情况不同,在国内,相对 Ubuntu 来说,人们更喜欢用 CentOS 做服务器) | 丰富的文档,活跃的社区和大量的在线教程|
|
||||
| 对初学者困难,因为基于 Red Hat 桌面发行版不流行 | 更容易为已经熟悉桌面版 Ubuntu 的初学者使用|
|
||||
| 支持 cPanel | 不支持 cPanel |
|
||||
| .rpm 软件包和 “yum” 软件包管理器 | .deb 软件包和 “apt-get” 软件包管理器 |
|
||||
| 在 [DigitalOcean][1] 免费试用 CentOS 服务器 | 在[DigitalOcean][2] 免费试用 Ubuntu 服务器 |
|
||||
|
||||
### 哪个更适合新手?
|
||||
|
||||
Ubuntu。
|
||||
|
||||
一如往常那样,它主要取决于你的需求和以前的经验,但一般来说,Ubuntu 对于初学者来说是更好的选择。主要是因为这两个原因:
|
||||
|
||||
* Ubuntu 有一个庞大的社区,随时可以免费提供帮助。我指的是真正的大。数以千计的用户分布在数百个不同的在线论坛和兴趣组内。甚至有现实生活中的大会。你也可以为 CentOS 找到很多教程和帮助,特别是对于简单的 LAMP 栈和流行的应用程序而言。
|
||||
* Ubuntu 服务器对于以前使用过 Ubuntu 桌面的人来说会容易得多。同样的情况也存在于 CentOS 和 Fedora 之间,但是 Ubuntu 桌面版比任何其他基于 Linux 的家用桌面更受欢迎。
|
||||
|
||||
所以,如果你是一个初学者,而且没有任何特殊要求,那就去使用 Ubuntu 服务器。 更好的是,你可以从一个[便宜的托管服务提供商][4]那购买服务,这样你就可以在你的服务器上进行实验,还有一个[专业的 24/7 支持团队][7]准备好帮助你。
|
||||
|
||||
### 哪个更适合商用?
|
||||
|
||||
CentOS。
|
||||
|
||||
同样,你仍然可以使用 Ubuntu 作为商用网站或公司内部服务器,但 CentOS 有它的优势:
|
||||
|
||||
* CentOS(可以说)更稳定以及更安全。由于 CentOS 的更新频率较低,这意味着软件测试的时间更长,并且只有真正稳定的版本才会得到发布。如果你使用 CentOS,你不会因新的有 bug 的应用程序版本而遇到任何稳定性问题,因为你不会得到那个新的有 bug 的版本。
|
||||
* 大多数控制面板(包括最受欢迎的控制面板 - cPanel)仅支持 CentOS。所以这意味着如果你是一个网站托管公司,或者如果你是一个有很多客户的网站服务代理商,并且需要一个控制面板 - CentOS 是一个更好的选择。
|
||||
|
||||
### 尝试一下它们并选择一个
|
||||
|
||||
如果你还是不能决定,你可以免费试试它们。你可以在本地安装或使用 live 镜像。你还可以从 [Vultr][6] 和 [DigitalOcean][7] 这样的地方买到便宜的 VPS($5/月)。你可以在几秒钟内启动 CentOS/Ubuntu 服务器。当你通过推广链接(如我们的)注册,你可能会得到免费金额 - 这意味着你会真的可以免费试用。
|
||||
|
||||
### 哪个更快?
|
||||
|
||||
它们在速度方面是相同的。它们和运行在你自己的硬件上一样快。它们将如你配置的一样快。不管怎样,你都应该正确配置并且保护所有的服务器、配置和应用程序。
|
||||
|
||||
你会使用哪个发行版?想告诉我们你是哪个发行版的拥趸么?请随时留下评论。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
**文末评论**
|
||||
|
||||
W. Anderson:
|
||||
|
||||
> 我的大多数 Linux 服务器部署都是针对企业客户的,所以我对文章作者以 GUI 客户端版本来反映任何服务器的管理功能感到困惑。通常,许多服务提供商也会在 CentOS、Ubuntu,或经常部署的 OpenSuse Leap 和 FreeBSD 10+ 服务器操作系统上提供 WebMin、VirtualAdmin 或类似工具作为控制面板,即使是在虚拟专用服务器(VPS)环境中。
|
||||
|
||||
> CentOS 在许多商业应用以及高级网络/虚拟化和云计算环境方面具有明显优于 Ubuntu 的优势,并且 CentOS 充分利用 SELinux 框架用于加强的安全层,而目前在 Ubuntu 中则不可用(或不容易)。
|
||||
|
||||
> 这种类型的比较通常是多余的,因为几乎总是有特定的和细微的要求,和需要服务器实现的需求,这将决定哪个发行版具有更多的优势或用途 - 基于技术专家/托管公司的专业知识和广泛的经验。
|
||||
|
||||
VAN DER BEKEN:
|
||||
|
||||
> 正确的比较应该是对 Debian 和 CentOS 进行比较。
|
||||
|
||||
> 以我的经验,我使用 CentOS 和 Debian 作为服务器,稍微偏爱 Debian 一点点,因为它的社区。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://thishosting.rocks/centos-vs-ubuntu-server/
|
||||
|
||||
作者:[W. Anderson][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://thishosting.rocks/centos-vs-ubuntu-server/
|
||||
[1]:https://thishosting.rocks/go/digitalocean/
|
||||
[2]:https://thishosting.rocks/go/digitalocean/
|
||||
[3]:https://thishosting.rocks/how-to-choose-web-hosting/
|
||||
[4]:https://thishosting.rocks/best-cheap-managed-vps/
|
||||
[5]:https://thishosting.rocks/support/
|
||||
[6]:https://thishosting.rocks/go/vultr/
|
||||
[7]:https://thishosting.rocks/go/digitalocean/
|
@ -0,0 +1,32 @@
|
||||
是时候抛弃 Skype 和 TeamSpeak 了, Discord 为 Linux 用户发布了应用
|
||||
============================================================
|
||||
|
||||
### 程序已经在 Ubuntu Linux 和其他发行版上可用了
|
||||
|
||||
在 2016 年 1 月 11 日发布的一则非常简短的声明中,[Discord][1] 公司发布了首个 Linux 平台的稳定版本,它是一款给玩家开发的流行、免费的、安全一体化的语音和文字聊天程序。
|
||||
|
||||
Linux 是他们补足全平台(桌面设备和移动设备)服务支持的缺失的一块。Discord 目前可用于 Android、iOS、Mac和 Windows,但你也可以使用兼容的网络浏览器直接在网络上使用它。
|
||||
|
||||
该应用程序似乎是微软 Skype VoIP 客户端,以及著名的 TeamSpeak 语音通信平台的直接竞争对手。它提供了广泛的功能,包括 IP 和 DDoS 保护,游戏内叠加,智能推送通知,单独音量控制,支持多个通道和现代化的文字聊天。
|
||||
|
||||
Discord 其他值得注意的功能包括支持编解码器、权限和自定义键盘快捷键、直接消息系统和朋友列表。它还承诺尽可能减少 CPU 使用率,为音频和自动故障转移功能提供低延迟支持。
|
||||
|
||||
### 在 Ubuntu 上安装 Discord
|
||||
|
||||
官方 Discord 的第一个 Linux 稳定版本(版本 0.0.1)目前以二进制软件包[提供][2],支持 Debian 和基于 Ubuntu 的发行版(例如 Ubuntu、Debian、Linux Mint 等)。但是要安装它,你需要一个 64位系统。
|
||||
|
||||
如果你没有运行一个基于 Debian 或 Ubuntu 的操作系统,还有一个源码 tarball 可供下载,但你必须自行编译它。目前 Discord 0.0.1 已经进入 Arch Linux AUR 仓库了,并且很快也会到 Solus 中。其他发行版可能在未来几周内向其仓库添加 Discord。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://news.softpedia.com/news/it-s-time-to-ditch-skype-and-teamspeak-discord-launches-its-app-for-linux-users-511753.shtml
|
||||
|
||||
作者:[Marius Nestor][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://news.softpedia.com/editors/browse/marius-nestor
|
||||
[1]:https://discordapp.com/
|
||||
[2]:https://discordapp.com/download
|
@ -10,8 +10,7 @@
|
||||
* [5 个针对有经验用户的 Vim 技巧][4]
|
||||
* 3 个针对高级用户的 Vim 编辑器实用技巧
|
||||
|
||||
毫无疑问, Vim 是一个很强大的文本编辑器。它提供了大量的特性,这意味着学习并记住 Vim 的所有功能实际上是不可能的。但是我们至少可以
|
||||
不断学习简单的方法来完成事情,从而随着时间的增长,我们使用编辑器的经验将会变得更好。
|
||||
毫无疑问, Vim 是一个很强大的文本编辑器。它提供了大量的特性,这意味着学习并记住 Vim 的所有功能实际上是不可能的。但是我们至少可以不断学习简单的方法来完成事情,从而随着时间的增长,我们使用编辑器的经验将会变得更好。
|
||||
|
||||
请记住,在这篇文章中我们将讨论的一些 Vim 编辑器技巧是针对高级用户的。
|
||||
|
||||
@ -19,37 +18,37 @@
|
||||
|
||||
请注意文中提到的所有技巧绝大多数都是在简单、易于理解的代码环境中进行阐述的,因为它们在软件开发中确实很实用。但这并不意味着普通用户(非程序员、没有把 Vim 作为一般的文本编辑器)在他们的工作中用不到。
|
||||
|
||||
### 1\.为文件设置特殊变量
|
||||
### 1、为文件设置特定的变量
|
||||
|
||||
有时候,在一个特殊文件中,你可能想把输入的某个字母用空格代替,或者想把一个源代码文件使用两个空格缩进,而编辑器的默认缩进是四个空格。
|
||||
有时候,在一个特定文件中,你可能想把输入的制表符用空格代替,或者想要把源代码文件使用两个空格缩进,即便编辑器的默认缩进是四个空格。
|
||||
|
||||
我们在这儿基本讨论对特殊文件进行的更改。 Vim 提供了一个特性允许你对一个特殊的文件更改特定的设置。这个特性叫做 “Modeline” 。
|
||||
基本上我们在这儿讨论对针对文件的的更改。 Vim 提供的这个特性允许你对一个指定的文件更改特定的设置。这个特性叫做 “模式行(Modeline)” 。
|
||||
|
||||
比如,如果你想把输入的每一个制表符 (Tab) 用空格代替,那么你需要做的就是考虑在文件的前几行或最后几行加入下面的 ‘modeline’ :
|
||||
比如,如果你想把输入的每一个制表符(Tab)用空格代替,那么你只需要在文件的前几行或最后几行加入下面的模式行:
|
||||
|
||||
```
|
||||
# vim: set expandtab:
|
||||
```
|
||||
|
||||
如果想把默认缩进从 4 个空格变成 2 个空格,可以在源文件中添加下面的 ‘modeline’ :
|
||||
如果想把默认缩进从 4 个空格变成 2 个空格,可以在源文件中添加下面的模式行:
|
||||
|
||||
```
|
||||
// vim: noai:ts=2:sw=2
|
||||
```
|
||||
|
||||
在使用 ‘modeline’ 时,请记住下面这几个重要的点:
|
||||
在使用模式行时,请记住下面这几个重要的点:
|
||||
|
||||
* ‘Modeline’ 只能添加在文件中的前五行或者最后五行。
|
||||
* 为了使用 “modeline” 选项这个特性,必须在 “.vimrc” 文件中添加 ‘:set modeline’ 。
|
||||
* 在以 root 用户身份对文件进行编辑的时候该特性失效。
|
||||
* 模式行只能添加在文件中的前五行或者最后五行。
|
||||
* 为了使用模式行这个特性,必须在 `.vimrc` 文件中添加 `:set modeline` 。
|
||||
* 在以 root 用户身份对文件进行编辑的时候该特性失效。
|
||||
|
||||
了解更多的信息,请阅读该特性的[官方文档][17]
|
||||
了解更多的信息,请阅读该特性的[官方文档][17]。
|
||||
|
||||
### 2\. 关键字补全
|
||||
### 2、 关键字补全
|
||||
|
||||
当你开始写更多的复杂代码或者开始开发大量的源文件时,你需要设置一些变量名字。有时,要记住所有的变量名字不太容易,所以当需要输入变量名字的时候,你通常从已经使用过的地方复制过来。
|
||||
当你开始写的复杂代码越来越多或者开始在一个大的源文件上编辑时,你会遇到一些变量名字。有时,要记住所有的变量名字不太容易,所以当需要输入变量名字的时候,你通常从已经使用过的地方复制过来。
|
||||
|
||||
幸运的是,使用 Vim 你只需要输入变量的几个起始字母即可。在’插入模式’中,按 “Ctrl + n” 或者 “Ctrl + p” 可以得到匹配关键词。 “Ctrl + n” 用来插入下一个匹配词; “Ctrl + p” 给出一系列过去的匹配词。
|
||||
幸运的是,使用 Vim 你只需要输入变量的几个起始字母即可。在’插入模式’中,按 `Ctrl + n` 或者 `Ctrl + p` 可以得到一个匹配的关键词列表。 `Ctrl + n` 用来插入下一个匹配词; `Ctrl + p` 给出一个之前匹配的关键词列表。
|
||||
|
||||
下图是该特性的一个展示:
|
||||
|
||||
@ -57,11 +56,11 @@
|
||||
|
||||
正如上面的屏幕截图清晰展示的那样,列表中也会出现其他源文件中包含的词。关于该特性的更多信息,请访问[这儿][18]。
|
||||
|
||||
### 3\. 搜索
|
||||
### 3、 搜索
|
||||
|
||||
假设你正在调试代码,其中一部分需要做的工作是快速查看一个变量在一个文件中所有出现的地方。一个常用的方法是退出‘插入模式’,输入 ‘/[变量名字]’ 命令,按 ‘Press’ ,然后返回‘插入模式’,使用 “n” 和 “p” 关键字。
|
||||
假设你正在调试代码,其中一个需要做的工作是快速查看一个变量在一个文件中所有出现的地方。一个常用的方法是退出‘插入模式’,输入 `/[变量名字]` 命令,按回车 ,然后返回‘插入模式’,使用 `n` 和 `p` 在关键字之间导航。
|
||||
|
||||
上面讲到的方法是挺好的,但是还有一种更简单、更快捷的方法可以来完成这样的搜索。使用这种方法,首先你需要退出‘插入模式’,然后把光标移动到你想要搜索的词/变量下面,这并不费时。接下来,你只需要按 “Shift + .” 即可。
|
||||
上面讲到的这种方法没毛病,但是还有一种更简单、更快捷的方法可以来完成这样的搜索。使用这种方法,首先你需要退出‘插入模式’,然后把光标移动到你想要搜索的词/变量下面,这并不费时。接下来,你只需要按 `Shift + *` 即可。
|
||||
|
||||
重复这样做,然后编辑器将会带你找到在文件中所有使用了这个词/变量的地方。
|
||||
|
||||
@ -76,7 +75,7 @@ via: https://www.maketecheasier.com/vim-tips-tricks-advanced-users/
|
||||
|
||||
作者:[Himanshu Arora][a]
|
||||
译者:[ucasFL](https://github.com/ucasFL)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,31 @@
|
||||
你现在可以下载包含所有风味的 Ubuntu 16.10 的单独 ISO 镜像了
|
||||
======================================
|
||||
Linux AIO 开发商 Željko Popivoda 通知说可以下载 Linux AIO(All-in-One)Ubuntu 16.10 Live DVD 了,该 DVD 包含所有主要的 Ubuntu 16.10 风味(flavor)版本。
|
||||
|
||||
如果你梦想有一个可以写在 USB 或 DVD 光盘上的单独 ISO 镜像,然后在需要时启动某个 Ubuntu Linux 操作系统(如 Ubuntu、Kubuntu、Xubuntu、Lubuntu 或者 Ubuntu MATE),现在你就可以用 Linux AIO Ubuntu 16.10 做到了。
|
||||
|
||||
[Linux AIO][1] 团队以开发这种完全免费的多发行版 ISO 镜像而闻名,而 Linux AIO Ubuntu 16.10 有两个版本,分别用于 64 位和 32 位平台,里面有 Ubuntu 16.10、Kubuntu 16.10、Xubuntu 16.10、Lubuntu 16.10、Ubuntu MATE 16.10 和 Ubuntu GNOME 16.10。
|
||||
|
||||
这些都是未修改的官方发行版。Linux AIO 团队把它们都放在一个易于使用的单一容器中,例如,当你在客户那,你需要向他/她展示各种基于 Linux 的操作系统来选择,你就不必带来六个不同的 U 盘或 DVD 光盘。
|
||||
|
||||
### 包含了硬件和内存测试工具
|
||||
|
||||
两种 Linux AIO Ubuntu 16.10 都附带两个重要的实用程序,即 HDT(硬件检测工具),用于查看目标计算机上是否与各个同 Ubuntu 16.10 流派完全兼容,还有 Memtest86+,这是一个非常流行的命令行工具,用于测试系统内存错误并验证其完整性。
|
||||
|
||||
[Linux AIO Ubuntu 16.10 现在可以下载了][2],但请记住,由于托管文件的 SourceForge 服务器的存储限制,镜像被分为两个 .7z 存档,你需要下载并解压缩以获取可用的 ISO。
|
||||
|
||||
我们曾经被许多读者问过 Linux AIO Live DVD 是否支持 UEFI ,答案仍然是没有,但是团队正在努力实现未来对 UEFI 的支持。还请查看最近发布的 Linux AIO Ubuntu Mixture 2017.01。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://news.softpedia.com/news/you-can-now-have-a-single-iso-image-with-all-essential-ubuntu-16-10-flavors-exclusive-511788.shtml
|
||||
|
||||
作者:[Marius Nestor][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://news.softpedia.com/editors/browse/marius-nestor
|
||||
[1]:http://linuxaio.net/
|
||||
[2]:http://linux.softpedia.com/get/Linux-Distributions/Ubuntu-AIO-DVD-103429.shtml
|
@ -0,0 +1,99 @@
|
||||
给 Linux 新手的最佳发行版
|
||||
============================================================
|
||||
|
||||

|
||||
|
||||
Jack Wallen 为来自不同环境的新手们挑选出专门为他们设计的发行版。[CC0][5]社区。
|
||||
|
||||
一个很古老的问题,找到适合的 Linux 发行版比简单的指出哪种 Linux 版本受欢迎更重要。为什么这么说?
|
||||
|
||||
让我们设置一个情景:你有一位用户,很有可能,他过去大多数时候都是在 Windows 或者 Mac 系统上工作,他们想让你给他们一个选择的替代品。现在,你想要在很短的时间里直截了当的说明 Linux 系统的工作方式并突出它的强大性和灵活性。
|
||||
|
||||
但是,请记住,最重要的一个方面是他们必须能够 _get it_,即开箱即用。
|
||||
|
||||
这就是为什么我们经常需要花费时间来找出哪种版本是最适合新手的 -- 因为把新手们带入 Linux 系统是传播 Linux 并增加 Linux 用户的最好方式。
|
||||
|
||||
对于新手来说最好的版本是什么?这次,我将要花费一定时间来说明对于来自不同环境的用户哪种版本才是最适合的。此外,你也可以查看我在 [2017 最好的发行版][11]中列出的发行版。
|
||||
|
||||
### 从 Windows 7 到 Linux:ZorinOS
|
||||
|
||||
当 Windows 8 发布以后,有一个理由让如此多的用户依然坚持使用 Windows 7, 那就是熟悉度。用户们已经在相同的桌面环境上工作了十几年,他们不想转移到 Windows 8 这种更以触摸屏为主的平台上。所以,你会去选择哪种版本呢?你首先必须要考虑的是桌面环境。为什么?因为这是你能够立刻吸引上这些 Windows 7 用户的地方。对于这个任务,还有什么版本会比 [ZorinOS][13] 更好呢?
|
||||
|
||||
ZorinOS 就是专门作为 Windows 和 Mac 系统的替代品而设计的,所以它下了很大的功夫来模仿 Windows 和 Mac 桌面的外观和感觉。事实上,除了 ZorinOS 以外,你很难找到一个别的 Linux 版本,能够完美的从 Windows 7 转移到 Linux 系统上,同时保留 Linux 系统如此强大、灵活的平台。
|
||||
|
||||
除了桌面环境(图片 1)以外, 因为 ZorinOS 完全基于 Ubuntu 系统,所以在其“外表”下面, ZorinOS 和 Ubuntu 以同样的方式工作(所以基本不用去担心硬件不能够被检测到)。同时伴有已经就绪的软件,你便有了针对来自 Windows 7 用户的最完美的 Linux 版本。
|
||||
|
||||

|
||||
|
||||
*图片 1:类 Windows 7 的 ZorinOS 桌面,准备开始服务。[使用许可][1]*
|
||||
|
||||
请注意:然而, ZorinOS 有两个版本: Zorin Ultimate 和 Zorin Core 。 Zorin Core 是免费的,但它不包含几乎所有你能够在 Zorin Ultimate 中找到的软件。如果你想要一个适合于所有来自 Windows 7 用户的开箱即用的版本,那么我强烈推荐购买 [Zorin Ultimate][14](大约需要花费 20 美元)。当然,如果你不想花钱购买 Ultimate 版本,你也可以从 Core 版本包含的软件包管理工具中安装几乎所有你需要的东西。
|
||||
|
||||
### 从 Windows 8 到 Linux : Ubuntu GNOME
|
||||
|
||||
让我们来看看 Windows 8, 它带来了一个以触摸屏为中心的环境,改变了用户与电脑互动的方式。老式的启动菜单、面板、系统托盘桌面已经被触摸屏环境界面所取代。如果你正在找一个能给 Linux 新手们带来不同体验的最好环境,同时功能也要是最好的,那么没有比 [Ubuntu GNOME][16] 更合适的了。
|
||||
|
||||
Ubuntu GNOME 是 Ubuntu 和 GNOME(图 2)这两个世界之间最好的融合。用一个现代、优雅、简洁并且用户友好的桌面代替了 Unity 界面, 因此 Ubuntu GNOME 不会给任何来自 Windows 8 的用户造成太多的麻烦。该版本不仅基于最新的长期支持版的 Ubuntu 发行版(支持期会很长),同时使用了 GNOME 桌面的最新稳定版本 - 这意味着用户将能够享受到难以置信的稳定体验。
|
||||
|
||||

|
||||
|
||||
*图片 2 :在 Ubuntu GNOME 中可以发现,在优雅而又简洁。 [使用许可][2]*
|
||||
|
||||
### 从 Mac 到 Linux : Elementary OS
|
||||
|
||||
毫无疑问,这一场的绝对赢家是 [Elementary OS][17]。尽管 Elementary OS 在外观和感觉上所达到的效果和 OS X 桌面非常相似,但实际还有更多优秀的地方。 Elementary OS 同样是基于 Linux 系统的,只不过是它采取了很多 Mac X 桌面的设计元素。
|
||||
|
||||
任何的 Mac 用户使用 Elementary OS 的桌面环境(图片 3)都会感觉就像是“在家一样”(使用 Mac 一样)。伴有如此熟悉的文档,同时包含一个熟悉的应用菜单, Elementary OS 总是位于我的‘最佳发行版列表’的顶部。如果我们正在和 Mac 用户讨论迁移,那么没有比 Elementary OS 更好的 Mac 替代品了。
|
||||
|
||||

|
||||
|
||||
*图片 3 :Elementary OS 桌面的荣耀。[使用许可][3]*
|
||||
|
||||
有一件事情 Mac 用户们将会非常感激,那就是 Elementary OS 的开发者们很好的保持了桌面的一致性。从 dock, 到面板、菜单、到包括的应用,你找不到任何一个看起来或感觉没有归属感的单一元素。
|
||||
|
||||
我将在这儿说一个关于 Elementary OS 的预警。你需要安装一个好的浏览器(因为它自带安装的 Epiphany-a 浏览器没有得到许多常用站点的支持),同时,你需要从官方的 [LibreOffice 网站][18]下载安装包来安装 LibreOffice (因为在 Elementary OS 的软件中心找到的安装包已经有些过时了)。
|
||||
|
||||
### 从 Android 到 Linux:Ubuntu
|
||||
|
||||
这似乎有点像是一个延伸话题,但考虑到 Android 在全球市场中占主导地位,所以你可能遇到一个来自以移动设备为中心的用户,他可能需要一个 Linux 桌面,从而让他一直感觉像是‘在家’一样。对于我来说, [Ubuntu][19] 是最显然的赢家。为什么?和其他系统相比, Ubuntu Unity 在桌面上做出了很杰出的工作,它使得桌面感觉像是一个包罗万象的界面。如果你愿意,那么可以包含在线搜索结果(默认情况下禁用),这是在几乎每个移动环境中均可找到的东西。同样, Unity HUD 菜单系统(图片 4)是在任何界面系统中所能找到的最独一无二的菜单系统之一。通过 Unity HUD 菜单系统,用户可以更少的依赖鼠标(就像他们过去在 Android 支持的移动设备上工作一样)。
|
||||
|
||||

|
||||
|
||||
*图片 4: 使用中的 Unity HUD 。[使用许可][4]*
|
||||
|
||||
当然, Ubuntu 也提供了市场上最稳定的桌面平台,所以用户体验近乎完美。
|
||||
|
||||
### 总有一款 Linux 发行版适合你
|
||||
|
||||
有一件很重要的事情需要记住,那就是总有一款 Linux 发行版适合你。但是对于那些来自特殊环境的人,我强烈推荐找到一个最喜爱的 Linux 版本,从而能够帮助他们无缝过渡。给自己一个机会尝试一下,看看你是否可以轻松体验到开源和 Linux 的强大。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.linux.com/news/best-linux-distributions-new-users
|
||||
|
||||
作者:[JACK WALLEN][a]
|
||||
译者:[ucasFL](https://github.com/ucasFL)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.linux.com/users/jlwallen
|
||||
[1]:https://www.linux.com/licenses/category/used-permission
|
||||
[2]:https://www.linux.com/licenses/category/used-permission
|
||||
[3]:https://www.linux.com/licenses/category/used-permission
|
||||
[4]:https://www.linux.com/licenses/category/used-permission
|
||||
[5]:https://www.linux.com/licenses/category/creative-commons-zero
|
||||
[6]:https://www.linux.com/files/images/zorinosjpg
|
||||
[7]:https://www.linux.com/files/images/ubuntugnomejpg
|
||||
[8]:https://www.linux.com/files/images/elementaryosjpg-1
|
||||
[9]:https://www.linux.com/files/images/ubuntujpg
|
||||
[10]:https://www.linux.com/files/images/distros-new-usersjpg
|
||||
[11]:https://www.linux.com/news/learn/sysadmin/best-linux-distributions-2017
|
||||
[12]:http://bit.ly/2jJgK0Q
|
||||
[13]:https://zorinos.com/
|
||||
[14]:https://zorinos.com/download/#ultimate
|
||||
[15]:https://training.linuxfoundation.org/certification/lfcs?utm_source=linux-inline-ad&utm_campaign=new-users-2017&utm_medium=online-advertising&utm_content=new-year
|
||||
[16]:https://ubuntugnome.org/
|
||||
[17]:https://elementary.io/
|
||||
[18]:http://www.libreoffice.org/download/libreoffice-fresh/
|
||||
[19]:https://www.ubuntu.com/
|
@ -0,0 +1,97 @@
|
||||
为你在 Bash 历史中执行过的每一项命令设置时间和日期
|
||||
============================================================
|
||||
|
||||
在默认情况下,所有通过 Bash 在命令行中执行过的命令都被存储在历史缓存区或者一个叫做 `~/.bash_history` 的文件里。这意味着系统管理员可以看到系统上用户执行过的命令清单,或者用户可以通过像 [history 命令][1]这样的选项来看他或她自己的命令历史。
|
||||
```
|
||||
$ history
|
||||
```
|
||||
[
|
||||

|
||||
][2]
|
||||
|
||||
*Linux 历史命令*
|
||||
|
||||
从上面 [history 命令][3]的输出可知,命令被执行的日期和时间并没有显示出来。基本上所有的 Linux 发行版的默认设置都是这样的。
|
||||
|
||||
在这篇文章里,我们将解释当在 Bash 中执行 `history` 命令显示每个命令时,如何配置显示时间戳信息。
|
||||
|
||||
每个命令相关的日期和时间可以记录到历史文件中,用 `HISTTIMEFORMAT` 环境变量的设置作为命令历史的备注记录。
|
||||
|
||||
这里有两种可行的方式来达到目的:一种是暂时的效果,一种是永久的效果。
|
||||
|
||||
要临时设置 `HISTTIMEFORMAT` 环境变量,在命令行这样输出它:
|
||||
|
||||
```
|
||||
$ export HISTTIMEFORMAT='%F %T'
|
||||
```
|
||||
|
||||
在上面的输出命令当中,时间戳格式如下:
|
||||
|
||||
1、`%F`-展开为完整日期,即 `%Y-%m-%d`(年-月-日)。
|
||||
|
||||
2、`%T`-展开为时间,即 `%H:%M:%S`(时:分:秒)。
|
||||
|
||||
通读 [date 命令][4]的 man 手册来获得更多使用说明:
|
||||
|
||||
```
|
||||
$ man date
|
||||
```
|
||||
|
||||
然后如下检查你的命令历史:
|
||||
|
||||
```
|
||||
$ history
|
||||
```
|
||||
[
|
||||

|
||||
][5]
|
||||
|
||||
*显示带有日期和时间的 Linux 命令历史。*
|
||||
|
||||
(LCTT 译注:注意:这个功能只能用在当 HISTTIMEFORMAT 这个环境变量被设置之后,之后的那些新执行的 bash 命令才会被打上正确的时间戳。在此之前的所有命令,都将会显示成设置 HISTTIMEFORMAT 变量的时间。)
|
||||
|
||||
然而,如果你想永久地配置该变量,用你最喜欢的编辑器打开文件 `~/.bashrc`。
|
||||
|
||||
```
|
||||
$ vi ~/.bashrc
|
||||
```
|
||||
|
||||
然后在下方添加(用注释将其标记为你自己的配置):
|
||||
|
||||
```
|
||||
# 我的配置
|
||||
export HISTTIMEFORMAT='%F %T'
|
||||
```
|
||||
|
||||
保存文件并退出,然后,运行下面的命令以便改动当即生效:
|
||||
|
||||
```
|
||||
$ source ~/.bashrc
|
||||
```
|
||||
|
||||
就是这些!请通过下方的评论区来与我们分享一些有趣的历史命令的小技巧以及你对这篇文章的想法。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||

|
||||
|
||||
我是 Ravi Saive,TecMint 的创建者。一个爱在网上分享的技巧和提示的电脑极客和 Linux 专家。我的大多数服务器运行在名为 Linux 的开源平台上。请在 Twitter、 Facebook 和 Google 等上关注我。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/display-linux-command-history-with-date-and-time/
|
||||
|
||||
作者:[Ravi Saive][a]
|
||||
译者:[Hymantin](https://github.com/Hymantin)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/admin/
|
||||
[1]:http://www.tecmint.com/history-command-examples/
|
||||
[2]:http://www.tecmint.com/wp-content/uploads/2017/01/Linux-History-Command.png
|
||||
[3]:http://www.tecmint.com/history-command-examples/
|
||||
[4]:http://www.tecmint.com/sort-ls-output-by-last-modified-date-and-time/
|
||||
[5]:http://www.tecmint.com/wp-content/uploads/2017/01/Set-Date-and-Time-on-Linux-Commands-History.png
|
@ -0,0 +1,45 @@
|
||||
RISC-V,微处理器中的 Linux :它会开启一个开源硬件的文艺复兴么?
|
||||
============================================================
|
||||
|
||||

|
||||
|
||||
|
||||
我与许多人分享过一个愿景,我们很快就能使用由开源硬件([OSH][1])和开源软件所驱动的现代而强大的设备。
|
||||
|
||||
开放硬件是那种有完整的文档,并且可以根据你的需求自由使用、研究、修改和复制的设备。它从原理图到 PCB 布局的所有内容全都是公开的,包括驱动硬件的软件。近年来有所进步,有更多的硬件被开放了,但是我们的 PC 和其它设备中的微处理器却被限制在了桌面端的以 x86 为主导的、封闭的指令集架构([ISA][2]),或者智能手机/平板设备上的 ARM 变体。这两个指令集架构都是闭源的,并且不能用于开放设备。此外,许多广泛使用的 ARM 实现,比如 A9 或 Snapdragon 在这些已经专有的指令集架构上添加了进一步的专有层。
|
||||
|
||||
[RISC-V][3] 是不同的。在加州大学伯克利分校的研究人员于 2010 年推出的 RISC-V(发音 risk-five)是根据同样的初始 [RISC][4](精简指令集计算(Reduced Instruction Set Computing)) CPU 设计构建的,其基础是其它熟悉的指令集架构,如 ARM、MIPS、PowerPC 和 SPARC,但目的是开放且不受专利保护(注意:目前,RISC-V 规范仅供私人或教育用途使用,计划在将来完全开放)。RISC 设计策略与 x86 系列的复杂指令集计算(CISC)设计相反。
|
||||
|
||||
虽然 RISC-V 不是现有唯一的开放指令集架构,但它是唯一一个极速推进的。指导指令集架构的开发和采用的 RISC-V 基金会有一些相当大的捐赠者,如 Oracle、Western Digital、HP、Google、IBM 和 Nvidia。我可以看到名单上缺少的几个著名的芯片制造商。似乎大的玩家们已经意识到,与软件一样,硬件会在开放下发展得更快更好。而且,任何人使用它你都不必付费。因为开发中的困难和成本,像这样的项目并没有被更快取得成功。现在,一个公开的结果是大的公司正在跟进,开发资金正在源源而来。
|
||||
|
||||
RISC-V 在学术界也有很多支持。从在伯克利的孵化到在世界范围内超过 35 个大学项目协助其发展,在那里不缺乏聪明的头脑为这个项目工作。
|
||||
|
||||
在其背后也有进展。在软件方面,人们正在将程序移植到 RISC-V 上,让它启动起来。Fedora 已经移植了成千上万的程序 - 下面是 [Fedora/RISC-V][5] 在 QEMU 中启动:
|
||||
|
||||

|
||||
|
||||
*向 Richard WM Jones 做出这么棒的动画致敬*
|
||||
|
||||
在硬件方面,人们正在制造开发板。HiFive1 是一个成功众筹的项目,它是来自 SiFive 的一块 Arduino 板,由他们的 FE310 SoC 驱动,这是一块 32 位的 RISC-V 芯片,运行频率为 320+ MHz。 它会在 2 月发货,你可以[在这里][6]预订一个,价格为 $59。
|
||||
|
||||

|
||||
|
||||
这一切听起来很棒 - 我希望他们能够交付,因为我们都将从中受益非浅。如果可以,请支持这个项目。告诉人们这个东西。购买一块 HiFive1,看看它上面运行了什么。我在你的未来看到了这些芯片。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.darrentoback.com/can-risc-v-linux-of-microprocessors-start-an-open-hardware-renaissance
|
||||
|
||||
作者:[dmt][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.darrentoback.com/about-me
|
||||
[1]:https://en.wikipedia.org/wiki/Open-source_hardware
|
||||
[2]:https://en.wikipedia.org/wiki/Comparison_of_instruction_set_architectures
|
||||
[3]:https://en.wikipedia.org/wiki/RISC-V
|
||||
[4]:https://en.wikipedia.org/wiki/Reduced_instruction_set_computing
|
||||
[5]:https://fedoraproject.org/wiki/Architectures/RISC-V
|
||||
[6]:https://www.crowdsupply.com/sifive/hifive1/
|
@ -1,41 +1,44 @@
|
||||
如何知道目录和子目录下文件的数量
|
||||
如何知道目录及子目录下文件的数量
|
||||
============================================================
|
||||
|
||||
在本指南中,我们将介绍如何在 Linux 系统上显示当前工作目录或任何其他目录及其子目录中的文件数量。
|
||||
在本指南中,我们将介绍如何在 Linux 系统上显示当前工作目录或任何目录及其子目录中的文件数量。
|
||||
|
||||
我们将使用[ find 命令][6],它用于搜索目录层次结构中的文件以及[ wc 命令][7],它会打印每个文件或标准输入的换行符、单词和字节计数。
|
||||
我们将使用 [find 命令][6],它用于搜索目录层次结构中的文件,以及 [wc 命令][7],它会打印每个文件或来自标准输入的换行符、单词和字节计数。
|
||||
|
||||
以下是我们可以使用[ find 命令][8]的选项,如下所示:
|
||||
以下是我们在 [find 命令][8]中使用的选项,如下所示:
|
||||
|
||||
1. `-type` - 指定要搜索的文件类型,在上面的情况下,`f`表示查找所有常规文件。
|
||||
1. `-type` - 指定要搜索的文件类型,在上面的情况下,`f` 表示查找所有常规文件。
|
||||
2. `-print` - 打印文件绝对路径。
|
||||
3. `-l` - 此选项打印换行符的总数,等于由[ find 命令][1]输出的绝对文件路径总数。
|
||||
|
||||
find 命令的一般语法。
|
||||
以下是我们 [wc 命令][8]中使用的选项,如下所示:
|
||||
|
||||
1. `-l` - 此选项打印换行符的总数,也即由 [find 命令][1]输出的绝对文件路径总数。
|
||||
|
||||
`find` 命令的一般语法。
|
||||
|
||||
```
|
||||
# find . -type f -print | wc -l
|
||||
$ sudo find . -type f -print | wc -l
|
||||
```
|
||||
|
||||
重要:使用[ sudo 命令][9]读取指定目录中的所有文件,包括具有超级用户权限的子目录中的文件,以避免 “Permission denied” 错误,如下截图所示:
|
||||
重要:使用 [sudo 命令][9]来读取指定目录中的所有文件,包括具有超级用户权限的子目录中的文件,以避免 “Permission denied” 错误,如下截图所示:
|
||||
|
||||
[
|
||||

|
||||
][10]
|
||||
|
||||
Linux 中的文件数量
|
||||
*Linux 中的文件数量*
|
||||
|
||||
你可以看到,在上面的第一个命令中,find 命令没有读取当前工作目录中的所有文件。
|
||||
你可以看到,在上面的第一个命令中,`find` 命令没有读取当前工作目录中的所有文件。
|
||||
|
||||
下面是额外的示例,分别显示 `/var/log` 和 `/etc` 目录中的常规文件总数:
|
||||
下面是更多的示例,分别显示 `/var/log` 和 `/etc` 目录中的常规文件总数:
|
||||
|
||||
```
|
||||
$ sudo find /var/log/ -type f -print | wc -l
|
||||
$ sudo find /etc/ -type f -print | wc -l
|
||||
```
|
||||
|
||||
有关Linux find 和 wc 命令的更多示例,请查看以下系列文章以了解其他使用选项,提示和相关命令:
|
||||
有关 Linux 中 `find` 和 `wc` 命令的更多示例,请查看以下系列文章以了解其他使用选项,提示和相关命令:
|
||||
|
||||
1. [35 个 Linux 中的 “find” 命令示例][2]
|
||||
2. [如何在 Linux 中查找最近或今天的修改的文件][3]
|
||||
@ -58,7 +61,7 @@ via: http://www.tecmint.com/find-number-of-files-in-directory-subdirectories-lin
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,15 +1,15 @@
|
||||
如何在 Linux 让 ‘sudo’ 密码会话超时更长些
|
||||
如何在 Linux 中让 sudo 密码会话的超时更长些
|
||||
============================================================
|
||||
|
||||
在最近的文章中,我们向你展示了[ Linux 中的 10 个有用的 sudoers 配置][1]以及[让 sudo 在输入不正确的密码时冒犯你][2],在本文中,我们发现了另一个 sudo 贴士,在 Ubuntu Linux 中使 sudo 密码会话(超时)更长或更短。
|
||||
在最近的文章中,我们向你展示了 在 Linux 中设置 sudo 的十条 sudoers 实用配置][1]以及[让 sudo 在你输入错误的密码时“嘲讽”你][2],在本文中,我们发现了另一个 sudo 贴士,在 Ubuntu Linux 中使 sudo 密码会话(超时)更长或更短。
|
||||
|
||||
在 Ubuntu 及其衍生版如 Linux Mint 或任何其他基于 Ubuntu 的发行版中,当你执行 [sudo command][3] 时,它将提示你输入管理密码。
|
||||
在 Ubuntu 及其衍生版如 Linux Mint 或任何其他基于 Ubuntu 的发行版中,当你执行 [sudo 命令][3] 时,它将提示你输入管理密码。
|
||||
|
||||
在第一次执行 sudo 命令后,默认情况下密码将保持 15 分钟,因此你不需要为每个 sudo 命令键入密码。
|
||||
|
||||
如果,你因为某种原因觉得 15 分钟太长或太短,你可以在 sudoers 文件中做一个简单的调整。
|
||||
如果,你因为某种原因觉得 15 分钟太长或太短,你可以在 `sudoers` 文件中做一个简单的调整。
|
||||
|
||||
要设置 sudo 密码超时值,请使用 `passwd_timeout` 参数。首先使用 sudo 和 visudo 命令以超级用户权限打开 /etc/sudoers 文件,如下所示:
|
||||
要设置 sudo 密码超时值,请使用 `passwd_timeout` 参数。首先使用 `sudo` 和 `visudo` 命令以超级用户权限打开 `/etc/sudoers` 文件,如下所示:
|
||||
|
||||
```
|
||||
$ sudo visudo
|
||||
@ -21,19 +21,19 @@ $ sudo visudo
|
||||
Defaults env_reset,timestamp_timeout=20
|
||||
```
|
||||
|
||||
注意:你可以马上设置任何所需的时间,并确保在超时之前等待。 如果要为每个执行的 sudo 命令弹出密码提示,你也可以将时间设置为0,或者通过设置值 `-1` 永久禁用密码提示。
|
||||
注意:你可以以分钟设置为你所需的任何时间,它会在超时之前一直等待。 如果要为每个执行的 sudo 命令弹出密码提示,你也可以将时间设置为 `0`,或者通过设置值 `-1` 永久禁用密码提示。
|
||||
|
||||
下面的截图显示了我在 /etc/sudoers 文件中设置的默认参数。
|
||||
下面的截图显示了我在 `/etc/sudoers` 文件中设置的默认参数。
|
||||
|
||||
[
|
||||

|
||||
][4]
|
||||
|
||||
改变 sudo 密码超时
|
||||
*改变 sudo 密码超时*
|
||||
|
||||
按 `[Ctrl + O]` 保存文件,然后使用 `[Ctrl + X]` 退出。 然后,使用 sudo 运行命令并等待 2 分钟以检查密码提示是否超时以测试设置是否正常。
|
||||
按 `Ctrl + O` 保存文件,然后使用 `Ctrl + X` 退出。 然后,使用 `sudo` 运行命令并等待 2 分钟以检查密码提示是否超时以测试设置是否正常。
|
||||
|
||||
在本篇中,我们解释了如何设置 sudo 密码提示超时之前的分钟数,记得在评论栏分享你对这篇文章的想法或者其他[对系统管理员配置有用的 sudo 配置][5]。
|
||||
在本篇中,我们解释了如何设置 `sudo` 密码提示超时之前的分钟数,记得在评论栏分享你对这篇文章的想法或者其他[对系统管理员配置有用的 sudo 配置][5]。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -43,19 +43,19 @@ Defaults env_reset,timestamp_timeout=20
|
||||
|
||||
Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 以及 web 开发人员,目前是 TecMint 的内容创建者,他喜欢用电脑工作,并坚信分享知识。
|
||||
|
||||
|
||||
-----
|
||||
|
||||
via: http://www.tecmint.com/set-sudo-password-timeout-session-longer-linux/
|
||||
|
||||
作者:[Aaron Kili ][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/
|
||||
[2]:http://www.tecmint.com/sudo-insult-when-enter-wrong-password/
|
||||
[1]:https://linux.cn/article-8145-1.html
|
||||
[2]:https://linux.cn/article-8128-1.html
|
||||
[3]:http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/
|
||||
[4]:http://www.tecmint.com/wp-content/uploads/2017/01/set-sudo-password-timeout-session.png
|
||||
[5]:http://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/
|
@ -1,16 +1,16 @@
|
||||
如何将 Linux 命令的输出赋值给变量
|
||||
==================================
|
||||
|
||||
每当你运行一个命令,它都出在屏幕上输出一些内容:该命令的期望结果或者该命令执行细节的状态/错误消息。有些时候,你可能想要将某个命令的输出内容存储在一个变量中,以待在后续操作中取出来使用。
|
||||
运行一条命令时,它都会产生某种输出:要么是该命令的期望结果,或者是该命令执行细节的状态/错误消息。有些时候,你可能想要将某个命令的输出内容存储在一个变量中,以待在后续操作中取出来使用。
|
||||
|
||||
本文将介绍将 shell 命令赋值给变量的不同方法,这对于 shell 脚本编程是特别有用的。
|
||||
|
||||
你可以使用如下的 shell 命令置换特性来将命令的输出存储到变量中:
|
||||
可以使用如下形式的 shell 命令置换特性,将命令的输出存储到变量中:
|
||||
|
||||
```
|
||||
变量名=$(命令)
|
||||
变量名=$(命令 [命令选项 ...] 参数1 参数2 ...)
|
||||
或者:
|
||||
或者:
|
||||
变量名='命令'
|
||||
变量名='命令 [命令选项 ...] 参数1 参数2 ...'
|
||||
```
|
||||
@ -23,13 +23,13 @@
|
||||
$ CURRENT_USERS=$(who)
|
||||
```
|
||||
|
||||
然后,我们可以使用 [echo 命令][1] 来使用上述变量,如下:
|
||||
然后,我们可以使用 [echo 命令][1] 显示一个句子并使用上述变量,如下:
|
||||
|
||||
```
|
||||
$ echo -e "以下为登录到系统中的用户:\n\n $CURRENT_USERS"
|
||||
```
|
||||
|
||||
上面的命令中:`-e` 标记表示解释所有的转义序列 (如 `\n` 为换行)。为节约时间和内存,通常在 [echo 命令][2] 中使用命令置换特性,如下:
|
||||
上面的命令中:`-e` 标记表示解释所有的转义序列 (如 `\n` 为换行)。为节约时间和内存,通常在 [echo 命令][2] 中直接使用命令置换特性,如下:
|
||||
|
||||
```
|
||||
$ echo -e "以下为登录到系统中的用户:\n\n $(who)"
|
||||
@ -37,9 +37,9 @@ $ echo -e "以下为登录到系统中的用户:\n\n $(who)"
|
||||
|
||||
[][3]
|
||||
|
||||
在 Linux 中显示当前登录系统的用户
|
||||
*在 Linux 中显示当前登录系统的用户*
|
||||
|
||||
接下来,为了演示刚刚的第二种形式,我们以把当前工作目录下文件数存储到变量 `FILES` 为了,然后使用 echo 来输出,如下:
|
||||
接下来,为了演示上面提到的第二种形式,我们以把当前工作目录下文件数存储到变量 `FILES` ,然后使用 **echo** 来输出,如下:
|
||||
|
||||
```
|
||||
$ FILES=`sudo find . -type f -print | wc -l`
|
||||
@ -47,9 +47,9 @@ $ echo "当前目录有 $FILES 个文件。"
|
||||
```
|
||||
[][4]
|
||||
|
||||
显示目中包含文件的数量
|
||||
*显示目中包含文件的数量*
|
||||
|
||||
至此,文毕。我们展示了将 shell 命令的输出赋值给变量的方法。你可以在下边的评论反馈区留下你的想法。
|
||||
就是这些了。我们展示了将 shell 命令的输出赋值给变量的方法。你可以在下边的评论反馈区留下你的想法。
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
@ -57,7 +57,7 @@ $ echo "当前目录有 $FILES 个文件。"
|
||||
|
||||

|
||||
|
||||
Aaron Kili 是一名 Linux 和 F.O.S.S 忠实拥护者、高级 Linux 系统管理员、Web 开发者,目前在 TecMint 是一名活跃的博主,热衷于计算机并有着强烈的只是分享意愿。
|
||||
Aaron Kili 是一名 Linux 和 F.O.S.S 忠实拥护者、未来的 Linux 系统管理员、Web 开发者,目前是 TecMint 的原创作者,热衷于计算机并乐于知识分享。
|
||||
译者简介:
|
||||
|
||||

|
||||
@ -70,7 +70,7 @@ via: http://www.tecmint.com/assign-linux-command-output-to-variable/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[GHLandy](https://github.com/GHLandy)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,335 @@
|
||||
vmstat:一个标准的报告虚拟内存统计工具
|
||||
============================================================
|
||||
|
||||
### 什么是 RAM?
|
||||
|
||||
在智能手机世界,我们每一个人都知道 RAM。因此,我不想深入介绍,这样我就简要概括下。RAM 代表“随机访问内存”(Random Access Memory),是一种计算机数据存储,它会存储经常使用的程序来提升系统性能。
|
||||
|
||||
### 什么是虚拟内存?
|
||||
|
||||
虚拟内存是一种内存管理方式,计算机通过临时将最近未使用的程序数据从 RAM 转移到硬盘,以平衡或管理内存的短缺。
|
||||
|
||||
### 什么是 vmstat?
|
||||
|
||||
vmstat 是一个标准的工具,它会报告 Linux 系统的虚拟内存统计。vmstat 会报告有关进程、内存、分页、块 IO、陷阱(中断)和 cpu 活动的信息。它可以帮助 Linux 管理员在解决问题时识别系统瓶颈。
|
||||
|
||||
### 在 Linux 中安装 Sysstat
|
||||
|
||||
Linux 中没有独立的 `vmstat` 包。它与 `sysstat` 绑定在一起,并在大多数发行版的默认仓库上都有。如果还没有安装,只要基于你的发行版输入下面的命令。
|
||||
|
||||
```
|
||||
[在 CentOS/RHEL 中安装 vmstat]
|
||||
$ sudo yum install sysstat
|
||||
|
||||
[在 Fedora 中安装 vmstat]
|
||||
$ sudo dnf install sysstat
|
||||
|
||||
[在 Debian/Ubuntu 中安装 vmstat]
|
||||
$ sudo apt-get install sysstat
|
||||
|
||||
[在 Arch Linux 中安装 vmstat]
|
||||
$ sudo pacman -S sysstat
|
||||
|
||||
[在 Mageia 中安装 vmstat]
|
||||
$ sudo urpmi sysstat
|
||||
|
||||
[在 openSUSE 中安装 vmstat]
|
||||
$ sudo zypper install sysstat
|
||||
```
|
||||
|
||||
### 不带参数运行 vmstat
|
||||
|
||||
假设你已经成功安装 vmstat,在终端中不带参数运行 `vmstat`,它会向你展示 vmstat 的默认结果。
|
||||
|
||||
```
|
||||
# vmstat
|
||||
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
|
||||
r b swpd free buff cache si so bi bo in cs us sy id wa
|
||||
2 0 79496 1614120 139240 787928 0 0 23 10 0 0 11 1 88 0
|
||||
```
|
||||
|
||||
当你看到上面的输出,你可能已经大致了解了它是什么以及它的目的。不要担心,我们将深入解释每个参数,以便你可以了解 vmstat 的用途和目的。
|
||||
|
||||
`procs`:procs 中有 `r` 和 `b` 列,它报告进程统计信息。在上面的输出中,在运行队列(`r`)中有两个进程在等待 CPU 并有零个休眠进程(`b`)。通常,它不应该超过处理器(或核心)的数量,如果你发现异常,最好使用 [top 命令][1]进一步地排除故障。
|
||||
|
||||
* `r`:等待运行的进程数。
|
||||
* `b`:休眠状态下的进程数。
|
||||
|
||||
`memory`: memory 下有报告内存统计的 `swpd`、`free`、`buff` 和 `cache` 列。你可以用 `free -m` 命令看到同样的信息。在上面的内存统计中,统计数据以千字节表示,这有点难以理解,最好添加 `M` 参数来看到以兆字节为单位的统计数据。
|
||||
|
||||
* `swpd`:使用的虚拟内存量。
|
||||
* `free`:空闲内存量。
|
||||
* `buff`:用作缓冲区的内存量。
|
||||
* `cache`:用作高速缓存的内存量。
|
||||
* `inact`:非活动内存的数量。
|
||||
* `active`:活动内存量。
|
||||
|
||||
`swap`:swap 有 `si` 和 `so` 列,用于报告交换内存统计信息。你可以用 `free -m` 命令看到相同的信息。
|
||||
|
||||
* `si`:从磁盘交换的内存量(换入,从 swap 移到实际内存的内存)。
|
||||
* `so`:交换到磁盘的内存量(换出,从实际内存移动到 swap 的内存)。
|
||||
|
||||
`I/O`:I/O 有 `bi` 和 `bo` 列,它以“块读取”和“块写入”的单位来报告每秒磁盘读取和写入的块的统计信息。如果你发现有巨大的 I/O 读写,最好使用 [iotop][2] 和 [iostat][3] 命令来查看。
|
||||
|
||||
* `bi`:从块设备接收的块数。
|
||||
* `bo`:发送到块设备的块数。
|
||||
|
||||
`system`:system 有 `in` 和 `cs` 列,它报告每秒的系统操作。
|
||||
|
||||
* `in`:每秒的系统中断数,包括时钟中断。
|
||||
* `cs`:发送到块设备的块数。
|
||||
|
||||
`CPU`:CPU 有 `cs`、`us`、`sy`、`id` 和 `wa` 列,报告(所用的) CPU 资源占总 CPU 时间的百分比。如果你发现异常,最好使用 `top` 和 `free` 命令。
|
||||
|
||||
* `cs`:每秒的系统中断数,包括时钟。
|
||||
* `us`:发送到块设备的块数。
|
||||
* `sy`:用作高速缓存的内存量。
|
||||
* `id`:非活动内存量。
|
||||
* `wa`:活动内存量。
|
||||
|
||||
### 以 MB 方式输出
|
||||
|
||||
默认情况下,vmstat 以千字节为单位显示内存统计,这是非常难以理解的,最好添加 `-S m` 参数以获取以兆字节为单位的统计。
|
||||
|
||||
```
|
||||
# vmstat -S m
|
||||
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
|
||||
r b swpd free buff cache si so bi bo in cs us sy id wa
|
||||
1 0 103 371 406 2116 0 0 40 15 0 0 11 1 87 0
|
||||
```
|
||||
|
||||
### 以延迟方式运行 vmstat 获取更好的统计信息
|
||||
|
||||
默认情况下,vmstat 的单次统计信息不足以进一步进行故障排除,因此,添加更新延迟(延迟是更新之间的延迟,以秒为单位)以定期捕获活动。如果你想以 2 秒延迟运行 vmstat ,只需使用下面的命令(如果你想要更长的延迟,你可以根据你的愿望改变)。
|
||||
|
||||
以下命令将每 2 秒运行一次,直到退出。
|
||||
|
||||
```
|
||||
# vmstat 2
|
||||
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
|
||||
r b swpd free buff cache si so bi bo in cs us sy id wa
|
||||
1 0 105500 325776 416016 2166912 0 0 40 15 0 0 11 1 87 0
|
||||
0 0 105500 325644 416016 2166920 0 0 0 13 1083 1174 11 1 87 0
|
||||
0 0 105500 308648 416024 2166928 0 0 1 16 1559 1453 16 2 82 0
|
||||
0 0 105500 285948 416032 2166932 0 0 0 12 934 1003 9 1 90 0
|
||||
0 0 105500 326620 416040 2166940 0 0 1 27 922 1068 9 1 90 0
|
||||
0 0 105500 366704 416048 2166944 0 0 0 17 835 955 9 1 90 0
|
||||
0 0 105500 366456 416056 2166948 0 0 1 22 859 918 9 1 90 0
|
||||
0 0 105500 366456 416056 2166948 0 0 0 15 1539 1504 17 2 81 0
|
||||
0 0 105500 365224 416060 2166996 0 0 1 19 984 1097 11 1 88 0
|
||||
```
|
||||
|
||||
### 带延迟和计数运行 vmstat
|
||||
|
||||
或者,你可以带延迟和特定计数运行 vmstat,一旦达到给定的计数,然后自动退出。
|
||||
|
||||
以下命令将每 2 秒运行一次,10 次后自动退出。
|
||||
|
||||
```
|
||||
# vmstat 2 10
|
||||
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
|
||||
r b swpd free buff cache si so bi bo in cs us sy id wa
|
||||
1 0 79496 1581916 157380 810412 0 0 23 10 0 1 11 1 88 0
|
||||
2 0 79496 1559464 157380 810416 0 0 1 1 1821 1749 21 2 77 0
|
||||
0 0 79496 1583768 157384 810416 0 0 1 46 681 799 9 1 90 0
|
||||
2 0 79496 1556364 157384 810428 0 0 1 1 1392 1545 15 2 83 0
|
||||
0 0 79496 1583272 157384 810428 0 0 1 0 1307 1448 14 2 84 0
|
||||
2 0 79496 1582032 157384 810428 0 0 1 41 424 605 4 1 96 0
|
||||
1 0 79496 1575848 157384 810428 0 0 1 0 1912 2407 26 2 71 0
|
||||
0 0 79496 1582884 157384 810436 0 0 1 69 678 825 9 1 90 0
|
||||
2 0 79496 1569368 157392 810432 0 0 11 26 920 969 9 1 90 0
|
||||
1 0 79496 1583612 157400 810444 0 0 7 39 2001 2530 20 2 77 0
|
||||
```
|
||||
|
||||
### 显示活动和非活动内存
|
||||
|
||||
默认情况下,vmstat 会显示除活动和非活动内存之外的内存统计信息。如果要查看活动和非活动内存统计信息,请在 vmstat 后添加 `-a` 参数。
|
||||
|
||||
```
|
||||
# vmstat -a
|
||||
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
|
||||
r b swpd free inact active si so bi bo in cs us sy id wa
|
||||
1 0 105500 2387592 415148 584112 0 0 40 15 0 1 11 1 87 0
|
||||
```
|
||||
|
||||
### 打印磁盘统计
|
||||
|
||||
在 vmstat 后面添加 `-d` 参数会以每个磁盘一行的方式显示统计(包含读、写和 IO)。
|
||||
|
||||
```
|
||||
# vmstat -d
|
||||
disk- ------------reads------------ ------------writes----------- -----IO------
|
||||
total merged sectors ms total merged sectors ms cur sec
|
||||
ram0 0 0 0 0 0 0 0 0 0 0
|
||||
ram1 0 0 0 0 0 0 0 0 0 0
|
||||
ram2 0 0 0 0 0 0 0 0 0 0
|
||||
ram3 0 0 0 0 0 0 0 0 0 0
|
||||
ram4 0 0 0 0 0 0 0 0 0 0
|
||||
ram5 0 0 0 0 0 0 0 0 0 0
|
||||
ram6 0 0 0 0 0 0 0 0 0 0
|
||||
ram7 0 0 0 0 0 0 0 0 0 0
|
||||
ram8 0 0 0 0 0 0 0 0 0 0
|
||||
ram9 0 0 0 0 0 0 0 0 0 0
|
||||
ram10 0 0 0 0 0 0 0 0 0 0
|
||||
ram11 0 0 0 0 0 0 0 0 0 0
|
||||
ram12 0 0 0 0 0 0 0 0 0 0
|
||||
ram13 0 0 0 0 0 0 0 0 0 0
|
||||
ram14 0 0 0 0 0 0 0 0 0 0
|
||||
ram15 0 0 0 0 0 0 0 0 0 0
|
||||
loop0 0 0 0 0 0 0 0 0 0 0
|
||||
loop1 0 0 0 0 0 0 0 0 0 0
|
||||
loop2 0 0 0 0 0 0 0 0 0 0
|
||||
loop3 0 0 0 0 0 0 0 0 0 0
|
||||
loop4 0 0 0 0 0 0 0 0 0 0
|
||||
loop5 0 0 0 0 0 0 0 0 0 0
|
||||
loop6 0 0 0 0 0 0 0 0 0 0
|
||||
loop7 0 0 0 0 0 0 0 0 0 0
|
||||
fd0 0 0 0 0 0 0 0 0 0 0
|
||||
sda 16604050 904497 2594882190 57455732 30037054 28093770 2160032056 118189160 0 40915
|
||||
sdb 257357577 479985 3124712204 577235320 8502519 1283237 36645890 11250948 0 182336
|
||||
```
|
||||
|
||||
### 总结磁盘统计
|
||||
|
||||
在 vmstat 后面添加 `-D` 会显示全局统计(包括全部的磁盘、分区、全部读、合并的读、读取的扇区、写、合并的写、写入的扇区和 IO)。
|
||||
|
||||
```
|
||||
# vmstat -D
|
||||
27 disks
|
||||
3 partitions
|
||||
275754028 total reads
|
||||
1388030 merged reads
|
||||
5751195976 read sectors
|
||||
638710116 milli reading
|
||||
38795040 writes
|
||||
29520659 merged writes
|
||||
2209820333 written sectors
|
||||
130210652 milli writing
|
||||
0 inprogress IO
|
||||
224704 milli spent IO
|
||||
```
|
||||
|
||||
### 打印指定分区统计
|
||||
|
||||
vmstat 添加 `-p` 参数后面跟上设备名会显示指定分区统计(包括读、读取的扇区、写以及请求的写)。
|
||||
|
||||
```
|
||||
# vmstat -p /dev/sdb1
|
||||
sdb1 reads read sectors writes requested writes
|
||||
3115 27890 839453 206728016
|
||||
```
|
||||
|
||||
### vmstat 统计信息带上时间戳
|
||||
|
||||
当你想在特定时间区间内找到内存尖峰时,用 vmstat 命令添加 `-t` 参数,后跟延迟和计数。
|
||||
|
||||
注意:此组合不适用于基于 Debian 的系统。
|
||||
|
||||
```
|
||||
# vmstat -t 1 5
|
||||
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
|
||||
r b swpd free buff cache si so bi bo in cs us sy id wa st
|
||||
0 0 0 6981416 181324 24588604 0 0 0 1 0 0 0 0 100 0 0 2017-01-11 15:42:15 MST
|
||||
2 0 0 6981276 181324 24588604 0 0 0 0 91 40 0 0 100 0 0 2017-01-11 15:42:16 MST
|
||||
0 0 0 6982016 181324 24588604 0 0 0 0 75 116 0 0 100 0 0 2017-01-11 15:42:17 MST
|
||||
0 0 0 6982016 181324 24588604 0 0 0 0 43 39 0 0 100 0 0 2017-01-11 15:42:18 MST
|
||||
0 0 0 6982280 181324 24588604 0 0 0 0 113 185 0 0 100 0 0 2017-01-11 15:42:19 MST
|
||||
```
|
||||
|
||||
### 打印更多统计
|
||||
|
||||
vmstat 后面跟上 `-s` 参数会显示不同统计的总结。
|
||||
|
||||
```
|
||||
# vmstat -s
|
||||
32849392 total memory
|
||||
25864128 used memory
|
||||
16468180 active memory
|
||||
8320888 inactive memory
|
||||
6985264 free memory
|
||||
181324 buffer memory
|
||||
24588612 swap cache
|
||||
20970492 total swap
|
||||
0 used swap
|
||||
20970492 free swap
|
||||
891075 non-nice user cpu ticks
|
||||
6532 nice user cpu ticks
|
||||
1507099 system cpu ticks
|
||||
18925265601 idle cpu ticks
|
||||
113043 IO-wait cpu ticks
|
||||
108 IRQ cpu ticks
|
||||
4185 softirq cpu ticks
|
||||
0 stolen cpu ticks
|
||||
4071862 pages paged in
|
||||
216759718 pages paged out
|
||||
0 pages swapped in
|
||||
0 pages swapped out
|
||||
369611221 interrupts
|
||||
477861261 CPU context switches
|
||||
1478258826 boot time
|
||||
2196121 forks
|
||||
```
|
||||
|
||||
### 打印 slab 统计
|
||||
|
||||
vmstat 后面跟上 `-m` 参数会显示 slab 信息。
|
||||
|
||||
```
|
||||
# vmstat -m
|
||||
Cache Num Total Size Pages
|
||||
nf_conntrack_expect 0 0 240 16
|
||||
nf_conntrack_ffffffff81b2a920 18 60 312 12
|
||||
fib6_nodes 24 59 64 59
|
||||
ip6_dst_cache 16 30 384 10
|
||||
ndisc_cache 7 30 256 15
|
||||
ip6_mrt_cache 0 0 128 30
|
||||
RAWv6 35 35 1088 7
|
||||
UDPLITEv6 0 0 1024 4
|
||||
UDPv6 4 12 1024 4
|
||||
tw_sock_TCPv6 0 0 320 12
|
||||
request_sock_TCPv6 0 0 192 20
|
||||
TCPv6 4 6 1920 2
|
||||
fat_inode_cache 5 6 672 6
|
||||
fat_cache 0 0 32 112
|
||||
ioat2 4096 4140 128 30
|
||||
ext4_inode_cache 34322 34364 1000 4
|
||||
ext4_xattr 0 0 88 44
|
||||
.
|
||||
.
|
||||
.
|
||||
```
|
||||
|
||||
### 阅读更多关于 vmstat
|
||||
|
||||
如果你想了解关于 vmstat 的更多选项,请阅读手册。
|
||||
|
||||
```
|
||||
# vmstat --help
|
||||
或者
|
||||
# man vmstat
|
||||
```
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||

|
||||
|
||||
热爱玩所有的 Linux 发行版
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.2daygeek.com/linux-vmstat-command-examples-tool-report-virtual-memory-statistics/
|
||||
|
||||
作者:[Magesh Maruthamuthu][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.2daygeek.com/author/magesh/
|
||||
[1]:http://www.2daygeek.com/top-command-examples-to-monitor-server-
|
||||
[2]:http://www.2daygeek.com/monitor-disk-io-activity-using-iotop-
|
||||
[3]:http://www.2daygeek.com/monitor-disk-io-activity-using-iotop-
|
||||
[4]:https://en.wikipedia.org/wiki/Virtual_memory
|
||||
[5]:http://www.2daygeek.com/sar-command-examples-system-performance-monitoring-linux/
|
@ -0,0 +1,36 @@
|
||||
MapD:由 GPU 驱动的数据库分析平台可在几毫秒内查询数十亿条数据
|
||||
=================================================
|
||||
|
||||

|
||||
|
||||
|
||||
麻省理工学院计算机科学与人工智能实验室(CSAIL)的前研究员开发了一款名为 MapD 的数据库分析平台。该平台使用 GPU 而不是 CPU ,可在几毫秒内查询和映射数十亿条数据。
|
||||
|
||||
人们通常将 GPU 与图像处理和游戏相关联。然而,现代 GPU 中高效的核心和处理单元也可以用于通用计算应用。以前在 CSAIL 工作的 Todd Mostak 开发了 MapD,它能在毫秒内处理数十亿条数据。
|
||||
|
||||
Mostak [声称][5] 他的 MapD 比由 CPU 驱动的传统数据库管理系统的快 100 倍。该平台可以在短时间内处理并可视化大量数据,并且被处理的数据的参数可以很容易地修改。
|
||||
|
||||
MapD 将所有数据缓存在多个 GPU 上,而不是存储在某些 CPU 上。每个 GPU 被给予不同的缓冲池以节省时间。通过此过程,系统可以提供比 CPU 驱动的数据库系统快两到三倍的性能。
|
||||
|
||||
许多公司客户已经开始使用 Mostak 的 MapD。像 Verizon 这样的电信公司据说也在为其内部研发尝试该数据库分析平台。这家电信公司使用 MapD 分析了 8500 万用户的 SIM 卡更新数据库。
|
||||
|
||||
除了 Verizon,MapD 还有如社交媒体公司,金融和广告公司的客户。
|
||||
|
||||
由 Mostak 领导的创业公司最近从美国中央情报局的投资部门 In-Q-Tel 筹集了一笔资金。你可以期望在不久的将来在不同的领域中使用 MapD 的各种情况。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://opensourceforu.com/2017/01/gpu-powered-database-analytics-platform-query-billions-data-points/
|
||||
|
||||
作者:[RAJAT KABADE][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:
|
||||
[1]:https://twitter.com/home?status=This%20GPU-powered%20database%20analytics%20platform%20can%20query%20billions%20of%20data%20points%20in%20milliseconds+http://opensourceforu.com/2017/01/gpu-powered-database-analytics-platform-query-billions-data-points/
|
||||
[2]:https://plus.google.com/share?url=http://opensourceforu.com/2017/01/gpu-powered-database-analytics-platform-query-billions-data-points/
|
||||
[3]:http://pinterest.com/pin/create/button/?url=http://opensourceforu.com/2017/01/gpu-powered-database-analytics-platform-query-billions-data-points/&media=http://opensourceforu.com/wp-content/uploads/2015/03/Database-Backup1.jpg&description=This%20GPU-powered%20database%20analytics%20platform%20can%20query%20billions%20of%20data%20points%20in%20milliseconds
|
||||
[4]:https://www.tumblr.com/widgets/share/tool?shareSource=legacy&canonicalUrl=&url=http%3A%2F%2Fopensourceforu.com%2F2017%2F01%2Fgpu-powered-database-analytics-platform-query-billions-data-points%2F&posttype=link&title=This+GPU-powered+database+analytics+platform+can+query+billions+of+data+points+in+milliseconds&content=
|
||||
[5]:http://news.mit.edu/2017/startup-mapd-fast-big-data-mapping-0111
|
@ -0,0 +1,92 @@
|
||||
剪切板是一个安全问题 - 在 Linux 中你可以用 xclip 和 cron 修复它
|
||||
============================================================
|
||||
|
||||

|
||||
|
||||
|
||||
**更新:我原文推荐的是 xsel,但几个用户报告说它禁用了他们的声音。这对我来说不是问题,但我发现了另一种方式(使用 [xclip][1] )来实现同样的目标,这样应该就能回避这个问题。文章已更新,切换到了 xclip。**
|
||||
|
||||
在你的操作系统上复制/粘贴的能力是必不可少的。无论你写的是代码还是剧本,这两个功能是在计算机上处理文本的核心。当你复制文本时,它会进入内存驻留的剪贴板。除非安装了可以容纳多个条目的剪贴板管理器,否则剪贴板默认情况下只会处理一个_复制_事件,当你_复制_其他东西的时候,它之前的条目才会消失。在标准 Linux 设置中,剪贴板内容存储在控制它的程序的内存中(通常是 Xorg)。
|
||||
|
||||
剪贴板应该有所限制,因为任何程序都可以读取其内容,如果放任它,它保存的东西就会一直呆在那里。此外,现代浏览器允许恶意网站以多种方式从剪贴板读取(和写入)。
|
||||
|
||||
虽然不是默认设置,但浏览器可以设置为禁止访问剪贴板。虽然也有用于浏览器和操作系统管理剪贴板的附加组件,但是,在此链条的源头解决问题更容易、更可靠,并使系统范围内的剪贴板安全。有很多理由使用一个剪贴板,但没有足够的理由让内容在那里保留一两分钟以上。
|
||||
|
||||
密码管理器最近变得很受欢迎,如果你使用过的话,你已经了解了它们如何将密码复制到剪贴板,以便你可以将其粘贴到浏览器中,并登录到你的帐户。接下来会发生什么?你的密码会保留在剪贴板上,直到另一个复制事件或重新启动。
|
||||
|
||||
即使你使用单独的浏览器来处理银行等事务,复制密码时,通过剪贴板会将其带回其他浏览器,并将其暴露在基于 web 的剪贴板收集技术中。
|
||||
|
||||
我的解决方案是在后台进行处理,每分钟自动清除剪贴板的内容。它使用 xclip 这个命令行工具、一个小脚本和 [cron][2]。cron 的一分钟间隔给你足够的时间来复制密码,然后它会清空剪贴板。此动作会每分钟执行一次,保证复制无忧。
|
||||
|
||||
我们需要使用 [xclip][3] 工具清除终端中的剪贴板。在基于 apt 的发行版中,输入:
|
||||
|
||||
```
|
||||
sudo apt-get install xclip
|
||||
```
|
||||
|
||||
我们在终端中测试一下程序。首先从某处复制一些文字,复制到其他地方,并输入这两条命令:
|
||||
|
||||
```
|
||||
touch blank
|
||||
xclip -selection clipboard blank
|
||||
```
|
||||
|
||||
接着再次尝试复制文本 - 它应该就会消失了。现在把这个命令放在脚本中。创建一个脚本(用你的文本编辑器代替 leafpad):
|
||||
|
||||
```
|
||||
leafpad nukeclipboard.sh
|
||||
```
|
||||
|
||||
并在新文件中输入下面的内容:
|
||||
|
||||
```
|
||||
#!/bin/sh
|
||||
touch blank && xclip -selection clipboard blank
|
||||
```
|
||||
|
||||
保存并关闭文件,接着加上可执行权限:
|
||||
|
||||
```
|
||||
chmod +x nukeclipboard.sh
|
||||
```
|
||||
|
||||
现在让 cron 任务每分钟运行一次。首先要小心,不同的发行版有不同的 cron 选项。以下设置适用于 Ubuntu(基于)的发行版,并且在你的发行版中过程可能不同,因此[请阅读手册][4]。
|
||||
|
||||
要设置 cron 任务,请在终端输入:
|
||||
|
||||
```
|
||||
crontab -e
|
||||
```
|
||||
|
||||
在最后被注释掉的行后,输入下面的行(将 `/home/user/` 替换为你的脚本位置):
|
||||
|
||||
```
|
||||
* * * * * export DISPLAY=:0 && /home/user/nukeclipboard.sh
|
||||
```
|
||||
|
||||
现在按下 `ctrl-o` 保存(使用你的 cron 任务编辑器的保存快捷键),然后点击回车保存你的 crontab。最后,按下 `ctrl-x` 退出程序。从现在起,你的剪贴板的使用寿命为一分钟。
|
||||
|
||||
关于上面的 cron 条目的解释: cron 有环境变量的限制,当它失败时,你可能要花一整天试着一百种方法来解决它。在我找到了一个建议设置 DISPLAY 的[快速修复][5] 后,就解决了。感谢 [Mike Q][6] 的贡献。
|
||||
|
||||
现在,可能会发生当你要粘贴复制的东西时,正好剪贴板被清空,从而无法粘贴,但它只是安全的一个小的代价。 如果这是一个问题,您可以配置 cron 以任何适合您的间隔运行任务(比如 2 分钟)。 Ubuntu 的说明在[此] [7]页。
|
||||
|
||||
我希望这个教程能帮助你把剪贴板锁定下来 - 如果你有可以工作的脚本或者更好的方法,欢迎来做评论。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.darrentoback.com/your-computer-s-clipboard-is-a-security-problem-fix-it-in-linux-with-xsel-and-cron
|
||||
|
||||
作者:[dmt][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.darrentoback.com/about-me
|
||||
[1]:https://github.com/astrand/xclip
|
||||
[2]:https://en.wikipedia.org/wiki/Cron
|
||||
[3]:https://github.com/astrand/xclip
|
||||
[4]:https://en.wikipedia.org/wiki/Cron
|
||||
[5]:https://stackoverflow.com/questions/14296911/when-linux-system-calls-scripts-some-commands-dont-work-cron-if-up-d/24070707#24070707
|
||||
[6]:https://stackoverflow.com/users/1618630/mike-q
|
||||
[7]:https://help.ubuntu.com/community/CronHowto
|
@ -0,0 +1,79 @@
|
||||
如何更改 Linux I/O 调度器调整性能
|
||||
============================================================
|
||||
|
||||
为了从 Linux 服务器榨取尽可能多的性能,请了解如何更改 I/O 调度器以满足你的需求。
|
||||
|
||||

|
||||
|
||||
Linux I/O 调度器(Linux I/O scheduler)控制内核提交读写请求给磁盘的方式。自从 2.6 内核以来,管理员已经能够更改这个调度器,所以他们可以自定义他们的平台以完全适合他们的需要。
|
||||
|
||||
有三个调度器可供选择,每个调度器都有其优点。这些调度器是:
|
||||
|
||||
* **[CFQ (Completely Fair Scheduler(完全公平调度器))][7](cfq)** :它是许多 Linux 发行版的默认调度器;它将由进程提交的同步请求放到多个进程队列中,然后为每个队列分配时间片以访问磁盘。
|
||||
* **[Noop 调度器][8](noop)** : 基于先入先出(FIFO)队列概念的 Linux 内核里最简单的 I/O 调度器。此调度程序最适合于 SSD。
|
||||
* **[截止时间调度器][9](deadline)** : 尝试保证请求的开始服务时间。
|
||||
|
||||
当你想要让 Linux 机器发挥最佳性能时,这可能是你所要做的事情之一。幸运的是,更改 I/O 调度器非常简单。让我告诉你怎么做。
|
||||
|
||||
### 找出你有的调度器
|
||||
|
||||
你需要做的第一件事是找出哪个调度器正在处理你系统上的 I/O。这是从命令行完成的,你必须知道磁盘的名称。为简单起见,我假设磁盘是 sda。据此信息,打开终端窗口并输入以下命令:
|
||||
|
||||
```
|
||||
cat /sys/block/sda/queue/scheduler
|
||||
```
|
||||
|
||||
该命令的结果将显示当前运行的调度程序(下图)。
|
||||
|
||||

|
||||
|
||||
*Elementary OS Loki 运行 deadline 调度器。*
|
||||
|
||||
### 更改你的调度器
|
||||
|
||||
你可以通过两种方式更改你的调度器:即时或永久。如果你即时更改调度器,它会在重启后恢复到之前的默认调度器。你可能希望首先进行即时更改,以查看哪个调度器能为你的需求带来最佳性能。
|
||||
|
||||
说到你要即时改到 noop 调度器。 为此,输入以下命令:
|
||||
|
||||
```
|
||||
sudo echo noop > /sys/block/hda/queue/scheduler
|
||||
```
|
||||
|
||||
你可以将 `noop` 更改为 `cfq` 或 `deadline`。
|
||||
|
||||
此更改可以在不重新启动计算机的情况下生效。 一旦更改,I/O 调度器将会切换,(希望)你能看到性能提高(再说一次,根据你的需要而定)。
|
||||
|
||||
如果要将调度器更改为永久,则必须在 GRUB 配置文件中执行此操作。 为此,请输入 `sudo nano /etc/default/grub`,然后修改下面的行:
|
||||
|
||||
```
|
||||
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
|
||||
```
|
||||
|
||||
到
|
||||
|
||||
```
|
||||
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"
|
||||
```
|
||||
|
||||
同样,你可以改变 `noop` 为任何你需要的调度器。如果你用的是即时修改,则不必重新启动以使新调度器生效。
|
||||
|
||||
这些就是修改调度器的方法了。
|
||||
|
||||
### 做出明智的选择
|
||||
|
||||
你应该做研究,找出什么调度器最适合你的特殊情况。要了解每个调度器的更多信息,请查看这些 Wiki 页面:[CFS][7]、[Noop][8]和 [Deadline][9]。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.techrepublic.com/article/how-to-change-the-linux-io-scheduler-to-fit-your-needs/
|
||||
|
||||
作者:[Jack Wallen][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.techrepublic.com/meet-the-team/us/jack-wallen/
|
||||
[7]:https://en.wikipedia.org/wiki/Completely_Fair_Scheduler
|
||||
[8]:https://en.wikipedia.org/wiki/Noop_scheduler
|
||||
[9]:https://en.wikipedia.org/wiki/Deadline_scheduler
|
@ -1,28 +1,25 @@
|
||||
OpenSSL 在 Apache 和 Dovecot 下的使用:第一部分
|
||||
OpenSSL 在 Apache 和 Dovecot 下的使用(一)
|
||||
============================================================
|
||||
|
||||

|
||||
在这有两部分的系列中,Carla Schroder 会向你展示如何创建自己的 OpenSSL 证书以及如何配置 Apache 和 Dovecot 来使用它们。
|
||||
|
||||
[Creative Commons Zero][1]Pixabay
|
||||

|
||||
|
||||
> 在这有两部分的系列中,Carla Schroder 会向你展示如何创建自己的 OpenSSL 证书以及如何配置 Apache 和 Dovecot 来使用它们。
|
||||
|
||||
这么长时间之后,我的读者们,这里是我给你们承诺的在 Apache 中使用 OpenSSL 的方法,下周你会看到在 Dovecot 中使用 SSL。 在这个分为两部分的系列中,我们将学习如何创建自己的 OpenSSL 证书,以及如何配置 Apache 和 Dovecot 来使用它们。
|
||||
|
||||
这些例子基于这些教程:
|
||||
|
||||
* [给初学者看的在 Ubuntu Linux 上使用 Apache][3]
|
||||
* [给初学者看的在 Ubuntu Linux 上使用 Apache:第2部分][4]
|
||||
* [给初学者看的在 CentOS Linux 上使用 Apache][5]
|
||||
* [给初学者看的在 Ubuntu Linux 上使用 Apache][3]
|
||||
* [给初学者看的在 Ubuntu Linux 上使用 Apache:第 2 部分][4]
|
||||
* [给初学者看的在 CentOS Linux 上使用 Apache][5]
|
||||
|
||||
### 创建你的证书
|
||||
|
||||
Debian/Ubuntu/Mint 存储私钥和符号链接到位于 `/etc/ssl` 中的证书中。与系统捆绑的证书保存在 `/usr/share/ca-certificates` 中。你安装或创建的证书在 `/usr/local/share/ca-certificates/` 中。
|
||||
Debian/Ubuntu/Mint 会在 `/etc/ssl` 中存储私钥和证书的符号链接。系统自带的证书保存在 `/usr/share/ca-certificates` 中。你安装或创建的证书在 `/usr/local/share/ca-certificates/` 中。
|
||||
|
||||
这个例子是对 Debian 而言。创建私钥和公用证书,将证书转换为正确的格式,并将其符号链接到正确的目录:
|
||||
|
||||
```
|
||||
|
||||
$ sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048 \
|
||||
-keyout /etc/ssl/private/test-com.key -out \
|
||||
/usr/local/share/ca-certificates/test-com.crt
|
||||
@ -59,34 +56,31 @@ done.
|
||||
CentOS/Fedora 使用不同的文件结构,并不使用 `update-ca-certificates`,使用这个命令:
|
||||
|
||||
```
|
||||
|
||||
$ sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048 \
|
||||
-keyout /etc/httpd/ssl/test-com.key -out \
|
||||
/etc/httpd/ssl/test-com.crt
|
||||
```
|
||||
|
||||
最重要的条目是 Common Name,它必须与你的完全限定域名完全匹配。 这一切都是任意的。 用 `-nodes` 创建一个无密码的证书,这是Apache所必需的。用 `-days` 定义过期日期。这是一个麻烦的更新证书的方法,但它应该能够提供一些额外的安全。参见[ 90 天证书有效期的利弊][10],以便进行良好的讨论。
|
||||
最重要的条目是 `Common Name`,它必须与你的完全限定域名(FQDN)完全匹配。此外其它信息都是任意的。`-nodes` 用于创建一个无密码的证书,这是 Apache 所必需的。`-days` 用于定义过期日期。更新证书是一个麻烦的事情,但这样应该能够额外提供一些安全保障。参见 [90 天证书有效期的利弊][10]中的讨论。
|
||||
|
||||
### 配置 Apache
|
||||
|
||||
现在配置 Apache 以使用你的新证书。如果你遵循[给初学者看的在 Ubuntu Linux 上使用 Apache:第2部分][11],你所要做的就是修改虚拟主机配置中的 `SSLCertificateFile` 和 `SSLCertificateKeyFile`,以指向你的新私钥和公共证书。本教程中的 `test.com` 示例现在看起来像这样:
|
||||
现在配置 Apache 以使用你的新证书。如果你遵循[给初学者看的在 Ubuntu Linux 上使用 Apache:第 2 部分][11],你所要做的就是修改虚拟主机配置中的 `SSLCertificateFile` 和 `SSLCertificateKeyFile`,以指向你的新私钥和公共证书。来自该教程中的 `test.com` 示例现在看起来像这样:
|
||||
|
||||
```
|
||||
|
||||
SSLCertificateFile /etc/ssl/certs/test-com.pem
|
||||
SSLCertificateKeyFile /etc/ssl/private/test-com.key
|
||||
```
|
||||
|
||||
CentOS 用户,请参阅在 CentOS wiki 中[使用 CentOS 设置 SSL 加密的 Web 服务器][12]。过程是类似的,wiki 会告诉如何处理 SELinux。
|
||||
CentOS 用户,请参阅在 CentOS wiki 中的[在 CentOS 上设置 SSL 加密的 Web 服务器][12]一文。过程是类似的,wiki 会告诉如何处理 SELinux。
|
||||
|
||||
### 测试 Apache SSL
|
||||
|
||||
一个简单的方法是将你的网络浏览器指向 [https://yoursite.com][13],看看它是否可以正常工作。在第一次这样做时,你会在你过度保护的 web 浏览器中看到可怕的警告说网站是不安全的,因为它使用的是自签名证书。请忽略你的浏览器并单击屏幕创建永久性异常。 如果你遵循在[给初学者看的在 Ubuntu Linux 上使用 Apache:第2部分][14]上的示例虚拟主机配置,那么即使你的网站访问者尝试使用纯 HTTP,你的网站的所有流量都将被迫通过 HTTPS。
|
||||
一个简单的方法是用你的网络浏览器访问 https://yoursite.com,看看它是否可以正常工作。在第一次这样做时,你会在你过度保护的 web 浏览器中看到可怕的警告说网站是不安全的,因为它使用的是自签名证书。请忽略你这个敏感的浏览器,并单击屏幕创建永久性例外。 如果你遵循在[给初学者看的在 Ubuntu Linux 上使用 Apache:第 2 部分][14]上的示例虚拟主机配置,那么即使你的网站访问者尝试使用纯 HTTP,你的网站的所有流量都将强制通过 HTTPS。
|
||||
|
||||
一个很好测试方法是使用OpenSSL。是的,有一个漂亮的命令来测试这些东西。试下这个:
|
||||
一个很好测试方法是使用 OpenSSL。是的,有一个漂亮的命令来测试这些东西。试下这个:
|
||||
|
||||
```
|
||||
|
||||
$ openssl s_client -connect www.test.com:443
|
||||
CONNECTED(00000003)
|
||||
depth=0 C = US, ST = WA, L = Seattle, O = Alrac Writing Sweatshop,
|
||||
@ -108,18 +102,16 @@ Server certificate
|
||||
|
||||
### 创建一个证书签名请求
|
||||
|
||||
如果你决定使用第三方证书颁发机构(CA),那么就必须创建证书签名请求(CSR)。你将它发送给你的新 CA,他们将签署并将其发送给您。他们可能有自己的要求来创建你的 CSR; 这是如何创建一个新的私钥和 CSR 的示例:
|
||||
如果你决定使用第三方证书颁发机构(CA),那么就必须创建证书签名请求(CSR)。你将它发送给你的新 CA,他们将签署并将其发送给您。他们可能对创建你的 CSR 有自己的要求; 这是如何创建一个新的私钥和 CSR 的典型示例:
|
||||
|
||||
```
|
||||
|
||||
$ openssl req -newkey rsa:2048 -nodes \
|
||||
-keyout yourdomain.key -out yourdomain.csr
|
||||
```
|
||||
|
||||
你可以从一个已经存在的 key 中创建一个 CSR:
|
||||
你也可以从一个已经存在的 key 中创建一个 CSR:
|
||||
|
||||
```
|
||||
|
||||
$ openssl req -key yourdomain.key \
|
||||
-new -out domain.csr
|
||||
```
|
||||
@ -128,11 +120,11 @@ $ openssl req -key yourdomain.key \
|
||||
|
||||
### 额外的教程
|
||||
|
||||
[消灭让人害怕的 web 浏览器 SSL 警告][16]
|
||||
[如何在 Linux 上使用 OpenVPN 设置安全远程网络:第一部分][17]
|
||||
[如何在 Linux 上使用 OpenVPN 设置安全远程网络:第一部分][18]
|
||||
- [消灭让人害怕的 web 浏览器 SSL 警告][16]
|
||||
- [如何在 Linux 上使用 OpenVPN 设置安全远程网络:第一部分][17]
|
||||
- [如何在 Linux 上使用 OpenVPN 设置安全远程网络:第一部分][18]
|
||||
|
||||
_提高你的系统管理职业生涯吧!查看Linux基金会的[ ][6][系统管理的要点][7][ ][8]课程。_
|
||||
提高你的系统管理职业生涯吧!查看Linux基金会的[系统管理的要点][8]课程。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -140,7 +132,7 @@ via: https://www.linux.com/learn/sysadmin/openssl-apache-and-dovecot
|
||||
|
||||
作者:[CARLA SCHRODER][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,76 @@
|
||||
用 Pi-hole 和 Orange Pi 阻止家中所有设备上的广告
|
||||
============================================================
|
||||
|
||||
你是否很恼火地发现你的浏览器、智能手机和平板上不装广告拦截器不行? 至少我是这样的。我家里有一些“智能”设备,但是它们似乎没有任何类型的广告拦截软件。 好了,我了解到 [Pi-hole][2] 是一个可以运行在树莓派板子上的广告拦截软件,它能在各种广告到达你的设备之前拦截它们。它允许你将任何域加入到黑名单或白名单,并且它有一个很好的仪表盘面板,可以让你深入了解你的家庭网络最常访问的域/网站、最活跃的设备和最常见的广告商。
|
||||
|
||||
Pi-hole 原本是运行在树莓派上的,但我想知道它能否在我运行 Armbian Linux 的廉价 Orange Pi 上运行。 好吧,它绝对可以!下面是我让 Pi-hole 能快速运行的方法。
|
||||
|
||||
### 安装 Pi-hole
|
||||
|
||||
安装 Pi-hole 是使用终端完成的,所以打开你的 Orange Pi 桌面上的终端或使用 ssh 连接。
|
||||
|
||||
因为需要下载软件,所以进入到一个你选定的目录,确保你有写入权限。像这样:
|
||||
|
||||
```
|
||||
cd <your preferred directory>/
|
||||
```
|
||||
|
||||
我没有选择 Pi-hole 主页上的“单条命令”安装方式。 我的意思是,他们在那条命令下面写着“用管道到 bash 可能是危险的”,本地安装“更安全”。所以,这里是我的本地安装步骤:
|
||||
|
||||
```
|
||||
git clone --depth 1 https://github.com/pi-hole/pi-hole.git Pi-hole
|
||||
cd Pi-hole/automated\ install/
|
||||
./basic-install.sh
|
||||
```
|
||||
|
||||
如果你没有以 root 用户身份登录,那么这个安装脚本将提示你输入密码,然后再继续。 如果需要,脚本将下载并安装一些必备的 Linux 软件包。接着它会显示一个红蓝界面,提示你回答有关如何配置 Pi-hole 的几个问题。以我的经验,直接接受默认值就可以了,我后来发现 Pi-hole 的 web 应用可以让你更改设置,比如 DNS 提供商。
|
||||
|
||||
该脚本将告诉你在图形界面和终端中 Pi-hole 的密码。 请记住该密码!
|
||||
|
||||
脚本还会告诉你 Pi-hole 的网址,应该像这样:
|
||||
|
||||
```
|
||||
http://<your pi’s IP address>/admin
|
||||
```
|
||||
|
||||
或者类似这样:
|
||||
|
||||
```
|
||||
http://orangepipc/admin
|
||||
```
|
||||
|
||||
输入 Pi-hole 密码,接着你会看到像下面这样的漂亮的仪表盘面板:
|
||||
|
||||

|
||||
|
||||
请记住更改家庭网络路由器上的 DNS 设置并使用你的 Orange Pi 的地址。 否则,广告不会被过滤!
|
||||
|
||||
上面的说明与 Pi-hole 网站提供的替代“安全”方法大致相同,尽管 Armbian 没有被列为官方支持的操作系统。我相信这些说明应该在树莓派或其他运行某种形式的基于 Debian 的 Linux 操作系统的 Pi 上工作。但是,我并没有测试这一点,所以期待听到你的经验(请给我留下简短的评论)。
|
||||
|
||||
### 思考和观察
|
||||
|
||||
运行 Pi-hole 一段时间,并研究了在 Pi-hole 面板上出现的信息后,我发现有很多我不知道的网络活动在进行,而它们并不都是我批准的活动。例如,有一些我不知道的关于游戏程序的“有趣”连接从我的孩子的设备上发出,还有社交网络程序显然一直在给我发送骚扰数据。总之,无论是否是无害流量,我很高兴减少了流量负载,即使仅减少了一点点……我的意思是,为什么我应该允许我不想要的或者不关心的应用程序和广告吃掉我的网络流量?好吧,现在他们被封锁了。
|
||||
|
||||
像这样为 Orange Pi 设置广告屏蔽很便宜、容易,限制一些不必要的流量在我的家庭网络中进出(特别是与孩子们相关的)使我感到放松多了。如果有兴趣,你可以看看我的上一篇文章,如何[轻松设置一个 Orange Pi][3],并使用下面的链接来查看 Orange Pi 是多么便宜。我相信这是一个值得的投资。
|
||||
|
||||
- Amazon 上的 Orange Pi (受益链接): [Orange Pi PC Single Board Computer Quad Core ARM Cortex-A7 1GB DDR3 4K Decode][4]
|
||||
- [AliExpress 上的 Orange Pi 商店][5] (受益链接)
|
||||
|
||||
更新:具有讽刺意味的是,如果你成功地按照这篇文章设置了 Pi-hole,这个站点上(s.click.aliexpress.com)的受益链接会被屏蔽,是否将它加入到白名单取决于你。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://piboards.com/2017/01/07/block-ads-on-all-your-devices-at-home-with-pi-hole-and-an-orange-pi/
|
||||
|
||||
作者:[MIKE WILMOTH][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://piboards.com/author/piguy/
|
||||
[1]:http://s.click.aliexpress.com/deep_link.htm?aff_short_key=N3VJQBY&dl_target_url=http://best.aliexpress.com
|
||||
[2]:https://pi-hole.net/
|
||||
[3]:http://piboards.com/2017/01/04/easy-set-up-orange-pi/
|
||||
[4]:https://www.amazon.com/gp/product/B018W6OTIM/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B018W6OTIM&linkCode=as2&tag=piboards-20&linkId=ac292a536d58eabf1ee73e2c575e1111
|
||||
[5]:http://s.click.aliexpress.com/e/bAMVj2R
|
38
published/20170107 Check your Local and Public IP address.md
Normal file
38
published/20170107 Check your Local and Public IP address.md
Normal file
@ -0,0 +1,38 @@
|
||||
小技巧:检查你本地及公共 IP 地址
|
||||
===================
|
||||
|
||||
**你本地的 IP 地址:** **192.168.1.100**
|
||||
|
||||
上面是分配给你计算机上的内部硬件或虚拟网卡的本地/私有 IP 地址。根据你的 LAN 配置,上述 IP 地址可能是静态或动态的。
|
||||
|
||||
**如果你找不到上述任何地址,请在 Linux 上执行 `ifconfig` 或 `ip` 命令手动检查内部 IP 地址:**
|
||||
|
||||
```
|
||||
# ifconfig | grep -w inet | awk '{ print $2}'
|
||||
或者
|
||||
# ip a s | grep -w inet | awk '{ print $2}'
|
||||
```
|
||||
|
||||
**你公共的 IP 地址是:** **123.115.72.251**
|
||||
|
||||
上述地址是你的 Internet 服务提供商(ISP)为你分配的公共/外部 IP 地址。根据你与 ISP 的计划,它可能是动态的,这意味着它会在每次重启路由器后改变,它也可能是静态的,这意味着它将永远不会改变。
|
||||
|
||||
**如果你找不到上述任何地址,请在 Linux上 执行 `wget` 或 `curl` 命令手动检查你的公共IP地址:**
|
||||
|
||||
```
|
||||
# echo $(wget -qO - https://api.ipify.org)
|
||||
或者
|
||||
# echo $(curl -s https://api.ipify.org)
|
||||
```
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://linuxconfig.org/check-your-local-and-public-ip-address
|
||||
|
||||
作者:[Lubos Rendek][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://linuxconfig.org/check-your-local-and-public-ip-address
|
@ -0,0 +1,69 @@
|
||||
故障排除提示:5 个最常见的 Linux 问题
|
||||
============================================================
|
||||
|
||||
> 了解如何解决Linux桌面用户遇到的最常见的问题
|
||||
|
||||

|
||||
|
||||
图片:Opensource.com
|
||||
|
||||
尽管绝大多数用户如预期地成功安装和操作了 Linux, 但不可避免地仍会有一些用户遇到问题。作为今年任务队列里的最后一篇文章,我认为在即将进入 2016 年时,总结一下人们所遇到的最常见的技术性的 Linux 问题会很有趣。我把这个问题发布到了 LinuxQuestions.org(LQ) 和社交媒体,我分析了 LQ 的帖子情况之后,得到如下成果。
|
||||
|
||||
### 1、 Wifi 驱动程序(特别是 Broadcom 芯片)
|
||||
|
||||
一般来说,Wifi 驱动程序,特别是 Broadcom 无线网卡,仍然是 Linux 面临的最大的问题技术问题之一。在 LQ 上,2016 年有数以百计的帖子在讨论这个话题,而且还有其他无数的地方也是。市场上有数十种 Broadcom 无线网卡可供使用,但为每一个发行版描述具体的排错细节来已经超出了一篇文章的范畴,但是基本的故障排除步骤是相同的:
|
||||
|
||||
* 通过使用 `lspci` 命令确定具体使用的 Broadcom 卡,以找出 PCI ID,
|
||||
* 确定使用发行版是否支持该卡,
|
||||
* 如果支持,找到正确的方法来使网卡工作。
|
||||
|
||||
例如,如果有一个 `14e4:4315` PCI ID 的卡,并且系统为 Ubuntu,则应该知道 BCM4312 卡可以通过安装 `firmware-b43-installer` 包来驱动。另一个选择是在购买之前,研究好可用的 WiFi 卡,以确保您的发行版完全支持它。
|
||||
|
||||
### 2、 打印机驱动程序(特别是佳能和 Lexmark)
|
||||
|
||||
打印机也是常有问题的,佳能和 Lexmark 被反复提及遇到这种问题。如果您要购买一台新打印机,请在购买之前研究兼容性。但是,如果您从其他操作系统迁移,这可能没得选择。如果你正在做调研,[OpenPrinting][1] 数据库和您的发行版的官方支持渠道是两个最好的起点。请注意,您应确保设备的所有功能完全兼容,特别是如果它是个多功能产品。对佳能打印机的一个常见的抱怨是,驱动程序通常只能在非英语,甚至是很难找的网站上才有。
|
||||
|
||||
> 如果您购买的是新打印机,请在购买之前研究兼容性。
|
||||
|
||||
### 3、 显卡
|
||||
|
||||
显卡是一个微妙的话题,因为在 Linux 上显卡可以非常好的简单直观的开箱即用。出现的问题是:显卡加速器/3D 加速;最新的显卡和最新显示技术,如 NVIDIA Optimus 和 ATI 动态 GPU 切换;专有驱动程序的安装和稳定性;能效管理;以及可靠的挂起和恢复。如果你不是一个游戏玩家,也没有别的需要高端图形功能的需求,并且不是使用笔记本电脑,那么你可能不必担心这个。如果您正在寻找一台新的笔记本电脑,一定要在购买前研究好兼容性。如果你是一个游戏玩家或需要最高端的图形功能,你需要明确知道你的需求是什么,然后开始你的研究。幸运的是,这种情况正在改善,Wayland 开始解决问题,2017 年情况应该会变得好一些。
|
||||
|
||||
### 4、 声卡
|
||||
|
||||
再次,对于简单配置,声卡非常容易设置并可以很可靠地在 Linux 上运行。一旦你买的是专业级产品,例如回声消除、音频路由,统一混合和其他复杂的配置,它可能就很快地每况愈下。我的建议是,如果你需要高端的实时音频,请使用专用的音频相关的发行版。
|
||||
|
||||
### 5、 安装
|
||||
|
||||
有了这个包罗万象的分类,本文几乎保证是高质量的。也就是说,公平的说,我不知道 Linux 有普遍的安装问题。绝大多数的安装都按预期进行。Linux 支持多种硬件,安装 Linux 机器上可能有近乎无限的硬件组合,不可避免会导致了某种情况下的例外情况。最终用户其实也很少安装类似 Mac OS 或 Windows 这样的其它系统,因为它们都是随同新设备预安装的。
|
||||
|
||||
> 绝大多数的安装都按预期进行。
|
||||
|
||||
### 前景光明
|
||||
|
||||
其他提到的问题经常包括蓝牙、挂起/恢复,HiDPI 和触摸屏。您可能会看到这里形成一个模式,本文中提到的大多数问题集中在桌面用户。如果你已经意识到了这点,这其实是有意义的。Linux 桌面使用率相对较低,导致结果是,用于发现和解决相关问题的测试和资源很少。随着桌面使用量的增加,可以预期这些部分会改善。
|
||||
|
||||
在这方面,我认为最好提及的一个例子,曾经常常作为 Linux 的问题提出,但是反而最近很罕见:字体。几年前,获得高品质的抗锯齿字体常常是个问题。但是,随着现代发行版本的更新,它已成为常规。
|
||||
|
||||
你认为 2016 年最常见的 Linux 技术问题是什么? 请在评论中留言告诉我。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||

|
||||
|
||||
Jeremy Garcia - Jeremy Garcia is the founder of LinuxQuestions.org and an ardent but realistic open source advocate. Follow Jeremy on Twitter: @linuxquestions
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/17/1/yearbook-linux-troubleshooting-tips
|
||||
|
||||
作者:[Jeremy Garcia][a]
|
||||
译者:[Vic020](http://vicyu.net)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/jeremy-garcia
|
||||
[1]:http://www.openprinting.org/printers
|
@ -0,0 +1,58 @@
|
||||
让你的 Linux 远离黑客(一):两个安全建议
|
||||
============================================================
|
||||
|
||||

|
||||
|
||||
> 在本系列中,我们将介绍五种将黑客拒之门外的最简单的方法。请观看免费网络研讨会以了解更多信息。
|
||||
|
||||
[Creative Commons Zero] [1] Pixabay
|
||||
|
||||
在互联网上没有什么比美味的 Linux 机器让黑客更喜欢的了。在最近的 Linux 基金会网络研讨会中,我分享了黑客用来侵入的战术、工具和方法。
|
||||
|
||||
在这个系列的博文中,我们将介绍五种将黑客拒之门外的最简单的方法,并知道他们是否已经侵入。想要了解更多信息?请[观看免费的网络研讨会点播][4]。
|
||||
|
||||
### 简单的 Linux 安全提示 #1
|
||||
|
||||
**如果你没有在使用安全 shell,你应该取使用它。**
|
||||
|
||||
这是一个有非常非常长时间的提示了。Telnet 是不安全的。 rLogin 是不安全的。仍然有服务需要这些,但它们不应该暴露在互联网上。如果你没有 SSH ,那就关闭互联网连接。我们总是说:使用 SSH 密钥。
|
||||
|
||||
SSH 规则 1:不要使用密码认证。SSH 规则 2:不要使用密码认证。SSH 规则 3:不要使用密码认证。重要的事情重复三遍。
|
||||
|
||||
如果你有一台 Linux 机器在互联网上,不管时间长短,你总是面临暴力破解。肯定会这样的。暴力破解用的是脚本。扫描器只要看到对互联网开放的端口 22,它们就会攻击它。
|
||||
|
||||
你可以做的另一件事是修改 SSH 的标准端口,我们许多人都这么做。这可以防止少量的暴力攻击,但是,一般来说,不使用密码认证,你会更安全。
|
||||
|
||||
SSH 的第四条规则:所有密钥都要设置密码。无密码密钥根本就不是真正的密钥。我知道如果你想要自动登录或自动化一些事情,这会使得难以处理,但所有的密钥应该有密码!
|
||||
|
||||
我最喜欢做的就是入侵一台主机,并找到主目录与私钥。一旦我拥有了私钥,那你就玩完了。我可以闯入使用该公钥的任何地方。
|
||||
|
||||
如果你有口令短语,哪怕只是一个密码,它不用是你的密钥环的长密码,但是它会使我的行为更加、更加困难。
|
||||
|
||||
### 简单的 Linux 安全提示 #2
|
||||
|
||||
**安装 Fail2ban**
|
||||
|
||||
我说的那些暴力攻击?fail2ban 将大大有助于你。它将自动激活 iptables 规则以阻止 SSH 到你的机器的重复尝试。把它配置好,让它不会把你关在门外或者占用太多的资源。要使用它、爱它、看着它。
|
||||
|
||||
它有自己的日志,所以一定要查看它们,并检查它是否在实际运行。这是一件非常重要的事情。
|
||||
|
||||
在[本系列的第 2 部分][5],我会给你三个更容易的安全提示,以让黑客远离你的 Linux 机器。你也可以[现在观看完整的免费网络研讨会][6]。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.linux.com/news/webinar/2017/how-keep-hackers-out-your-linux-machine-part-1-top-two-security-tips
|
||||
|
||||
作者:[Mike Guthrie][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.linux.com/users/anch
|
||||
[1]:https://www.linux.com/licenses/category/creative-commons-zero
|
||||
[2]:https://www.linux.com/files/images/security-webinarjpg
|
||||
[3]:http://bit.ly/2j89ISJ
|
||||
[4]:http://bit.ly/2j89ISJ
|
||||
[5]:https://www.linux.com/news/webinar/2017/how-keep-hackers-out-your-linux-machine-part-2-three-more-easy-security-tips
|
||||
[6]:http://bit.ly/2j89ISJ
|
@ -1,18 +1,19 @@
|
||||
OpenSSL 在 Apache 和 Dovecot 下的使用:第二部分
|
||||
OpenSSL 在 Apache 和 Dovecot 下的使用(二)
|
||||
============================================================
|
||||
|
||||

|
||||
本篇中,Carla Schroder 会解释如何使用 OpenSSL 保护你的 Postfix/Dovecot 邮件服务器
|
||||
|
||||
> 本篇中,Carla Schroder 会解释如何使用 OpenSSL 保护你的 Postfix/Dovecot 邮件服务器
|
||||
|
||||
[Creative Commons Zero][1]Pixabay
|
||||
|
||||
在[上周][11],作为我们 OpenSSL 系列的一部分,我们学习了如何配置 Apache 以使用 OpenSSL 并强制所有会话使用 HTTPS。 今天,我们将使用 OpenSSL 保护我们的 Postfix/Dovecot 邮件服务器。这些示例基于前面的教程; 请参阅最后的参考资料部分,了解本系列中以前的所有教程的链接。
|
||||
|
||||
你需要配置 Postfix 以及 Dovecot 来使用 OpenSSL,我们将使用我们在[在 Apache 和 Dovecot 中使用 OpenSSL][12]中创建的密钥和证书。
|
||||
你需要配置 Postfix 以及 Dovecot 都使用 OpenSSL,我们将使用我们在[OpenSSL 在 Apache 和 Dovecot 下的使用(一)][12]中创建的密钥和证书。
|
||||
|
||||
### Postfix 配置
|
||||
|
||||
你必须编辑 `/etc/postfix/main.cf` 以及 `/etc/postfix/master.cf`。`main.cf` 这个例子是完整的配置,它在我们先前的教程中构建过了。替换成你自己的 OpenSSL 密钥和证书名以及本地网络。
|
||||
你必须编辑 `/etc/postfix/main.cf` 以及 `/etc/postfix/master.cf`。实例的 `main.cf` 是完整的配置,基于我们先前的教程。替换成你自己的 OpenSSL 密钥和证书名以及本地网络地址。
|
||||
|
||||
```
|
||||
compatibility_level=2
|
||||
@ -47,7 +48,7 @@ smtpd_sasl_path = private/auth
|
||||
smtpd_sasl_authenticated_header = yes
|
||||
```
|
||||
|
||||
在 `master.cf` 解除 `submission inet` 部分的注释,并编辑 `smtpd_recipient_restrictions`:
|
||||
在 `master.cf` 取消 `submission inet` 部分的注释,并编辑 `smtpd_recipient_restrictions`:
|
||||
|
||||
```
|
||||
#submission inet n - y - - smtpd
|
||||
@ -67,7 +68,7 @@ $ sudo service postfix reload
|
||||
|
||||
### Dovecot 配置
|
||||
|
||||
在我们以前的教程中,我们为 Dovecot 在 `/etc/dovecot/dovecot.conf` 创建了一个配置文件,而不是使用多个默认配置文件。这是一个建立在我们以前的教程的完整配置。再说一次,使用你自己的 OpenSSL 密钥和证书,以及你自己的 `userdb` 家文件:
|
||||
在我们以前的教程中,我们为 Dovecot 创建了一个单一配置文件 `/etc/dovecot/dovecot.conf`,而不是使用多个默认配置文件。这是一个基于我们以前的教程的完整配置。再说一次,使用你自己的 OpenSSL 密钥和证书,以及你自己的 `userdb` 的 home 文件:
|
||||
|
||||
```
|
||||
protocols = imap pop3 lmtp
|
||||
@ -125,7 +126,7 @@ $ sudo service postfix reload
|
||||
|
||||
### 用 telnet 测试
|
||||
|
||||
就像我们以前一样,现在我们可以通过使用 telnet 发送消息来测试我们的设置。 但是等等,你说 telnet 不支持 TLS/SSL,那么怎么能这样呢?首先通过使用 `openssl s_client` 打开一个加密会话。`openssl s_client` 的输出将显示你的证书、指纹和大量其他信息,以便你知道你的服务器正在使用正确的证书。会话建立后输入的命令以粗体显示:
|
||||
就像我们以前一样,现在我们可以通过使用 telnet 发送消息来测试我们的设置。 但是等等,你说 telnet 不支持 TLS/SSL,那么这样怎么办呢?首先通过使用 `openssl s_client` 打开一个加密会话。`openssl s_client` 的输出将显示你的证书及其指纹和大量其它信息,以便你知道你的服务器正在使用正确的证书。会话建立后输入的命令都是不以数字开头的:
|
||||
|
||||
```
|
||||
$ openssl s_client -starttls smtp -connect studio:25
|
||||
@ -158,7 +159,7 @@ quit
|
||||
221 2.0.0 Bye
|
||||
```
|
||||
|
||||
你应该可以在邮件客户端中看到一条新邮件,并在打开 SSL 证书时要求你验证 SSL 证书。你也可以使用 `openssl s_client` 来测试 Dovecot POP3 和 IMAP 服务。此示例测试加密的 POP3,#5 消息是我们在 telnet(上面)中创建的:
|
||||
你应该可以在邮件客户端中看到一条新邮件,并在打开时要求你验证 SSL 证书。你也可以使用 `openssl s_client` 来测试 Dovecot 的 POP3 和 IMAP 服务。此示例测试加密的 POP3,第 5 号消息是我们在 telnet(如上)中创建的:
|
||||
|
||||
```
|
||||
$ openssl s_client -connect studio:995
|
||||
@ -203,7 +204,7 @@ closed
|
||||
|
||||
### 现在做什么?
|
||||
|
||||
现在你有一个很好的有适当的 TLS/SSL 保护的邮件服务器了。我鼓励你深入学习 Postfix 以及 Dovecot; 这些教程中的示例尽可能地简单,不包括对安全性、防病毒扫描程序、垃圾邮件过滤器或任何其他高级功能的微调。我认为当你有一个基本工作系统时更容易学习高级功能。
|
||||
现在你有一个功能良好的,具有合适的 TLS/SSL 保护的邮件服务器了。我鼓励你深入学习 Postfix 以及 Dovecot; 这些教程中的示例尽可能地简单,不包括对安全性、防病毒扫描程序、垃圾邮件过滤器或任何其他高级功能的调整。我认为当你有一个基本工作系统时更容易学习高级功能。
|
||||
|
||||
下周回到 openSUSE 包管理备忘录上。
|
||||
|
||||
@ -214,7 +215,7 @@ closed
|
||||
* [在 Ubuntu Linux 上构建电子邮件服务器:第2部分][5]
|
||||
* [在 Ubuntu Linux 上构建电子邮件服务器:第3部分][6]
|
||||
* [给初学者看的在 Ubuntu Linux 上使用 Apache][7]
|
||||
* [初学者看的在 Ubuntu Linux 上使用 Apache:第二部分][8]
|
||||
* [给初学者看的在 Ubuntu Linux 上使用 Apache:第二部分][8]
|
||||
* [给初学者看的在 CentOS Linux 上使用 Apache][9]
|
||||
* [消灭让人害怕的 web 浏览器 SSL 警告][10]
|
||||
|
||||
@ -224,20 +225,20 @@ via: https://www.linux.com/learn/intro-to-linux/openssl-apache-and-dovecot-part-
|
||||
|
||||
作者:[CARLA SCHRODER][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.linux.com/users/cschroder
|
||||
[1]:https://www.linux.com/licenses/category/creative-commons-zero
|
||||
[2]:https://www.linux.com/files/images/key-openssljpg-0
|
||||
[3]:https://www.linux.com/learn/sysadmin/openssl-apache-and-dovecot
|
||||
[4]:https://www.linux.com/learn/how-build-email-server-ubuntu-linux
|
||||
[5]:https://www.linux.com/learn/sysadmin/building-email-server-ubuntu-linux-part-2
|
||||
[6]:https://www.linux.com/learn/sysadmin/building-email-server-ubuntu-linux-part-3
|
||||
[3]:https://linux.cn/article-8167-1.html
|
||||
[4]:https://linux.cn/article-8071-1.html
|
||||
[5]:https://linux.cn/article-8077-1.html
|
||||
[6]:https://linux.cn/article-8088-1.html
|
||||
[7]:https://www.linux.com/learn/apache-ubuntu-linux-beginners
|
||||
[8]:https://www.linux.com/learn/apache-ubuntu-linux-beginners-part-2
|
||||
[9]:https://www.linux.com/learn/apache-centos-linux-beginners
|
||||
[10]:https://www.linux.com/learn/quieting-scary-web-browser-ssl-alerts
|
||||
[11]:https://www.linux.com/learn/sysadmin/openssl-apache-and-dovecot
|
||||
[12]:https://www.linux.com/learn/sysadmin/openssl-apache-and-dovecot
|
||||
[11]:https://linux.cn/article-8167-1.html
|
||||
[12]:https://linux.cn/article-8167-1.html
|
110
published/20170113 How to Encrypt Your Hard Disk in Ubuntu.md
Normal file
110
published/20170113 How to Encrypt Your Hard Disk in Ubuntu.md
Normal file
@ -0,0 +1,110 @@
|
||||
如何在 Ubuntu 中加密硬盘
|
||||
=========================
|
||||

|
||||
|
||||
隐私保护、安全和加密是不可分开的,用户可以通过加密来提高安全和保护操作系统的隐私信息。本文将会介绍在 Ubuntu Linux 中对硬盘全盘加密的优缺点。此外,我们也介绍如何在系统级别上进行加密设置,并对一些目录进行加密。加密是非常有用的,而且也没有你想象中那么复杂。综上所述,让我开始进行加密吧。
|
||||
|
||||
### 加密的优缺点
|
||||
|
||||
尽管进行全盘加密听起来非常棒,但是否要这么做还是有些争议的。我们先来看看这个做法有哪些优缺点。
|
||||
|
||||
#### 加密的优点
|
||||
|
||||
* 提高私密程度
|
||||
* 只有拥有密钥的人才能访问操作系统及其中文件
|
||||
* 确保政府或者黑客无法侦测你的系统和侵犯你的隐私
|
||||
|
||||
#### 加密的缺点
|
||||
|
||||
* 在其他的 Linux 操作系统上访问和挂载文件系统将变得困难
|
||||
* 无法从那些加密分区中恢复数据
|
||||
* 如果用户丢失了加密密钥,那就彻底悲剧了
|
||||
|
||||
### 安装前的准备
|
||||
|
||||
在 Ubuntu 中加密最好就是在安装进程开始之前在系统层面进行。在 Ubuntu 安装进程开始之后是无法加密的,所以先备份你的重要数据到 [Dropbox][10]、 [Google Drive][11] (或者其它硬盘上),然后后准备重新安装 Ubuntu。
|
||||
|
||||

|
||||
|
||||
从 [此处][12] 开始下载最新版本的 Ubuntu,并制作好可启动的 U 盘 (需要至少 2 GB 可用空间)。
|
||||
|
||||
制作启动 U 盘需要一个烧录程序,可以到 [etcher.io][13] 去下载。下载好之后解压 zip 文件,右击 (或者使用鼠标选定之后按下回车) 解压出来的文件以运行。
|
||||
|
||||

|
||||
|
||||
**注意**:烧录程序会询问是否创建图标,选择“yes”。
|
||||
|
||||
在烧录程序中点击“选择镜像(Select Image)”按钮,选择之前下载好的 Ubuntu ISO 镜像。然后插入你的 U 盘。烧录程序会自动检测并为你选择。最后,点击“开始烧录( Flash)”按钮来开始创建进程。
|
||||
|
||||
完成之后,重启电脑至 BIOS,设置为 U 盘启动。
|
||||
|
||||
**注意**:如果你的电脑不支持从 U 盘启动,下载 32 位的 Ubuntu,并使用你电脑中的烧录软件将其烧录到 DVD 中。
|
||||
|
||||
### 对你的硬盘进行全盘加密
|
||||
|
||||
加载好 Live Ubuntu 之后,安装进程就可以开始了。当 Ubuntu 安装进程开始之后,会出现下面这样一个界面。注意每个人安装进程都可能不同的,或许你会看到的不太一样。
|
||||
|
||||

|
||||
|
||||
选择“擦除磁盘并安装 Ubuntu (Erase disk and install Ubuntu)”,并选择“加密新装的 Ubuntu 以提高安全程度(Encrypt the new Ubuntu installation for Security)”来开始加密的安装进程。这样会自动选择 LVM。两个选框都必须选中。选好加密选项之后,点击“现在安装(Install Now)”。
|
||||
|
||||
**注意**:如果是双系统启动的话,你需要安装到空余磁盘空间,而非擦除磁盘。选择好之后,像上边一样选择加密选项。
|
||||
|
||||
选择加密选项并开始安装之后,会出现一个加密配置页面。这个页面用户需要为安装进程设置自己的加密密钥。
|
||||
|
||||

|
||||
|
||||
输入安全密钥。该安全密钥设置窗口会自动为你输入的密钥进行密码强度评级,使用这个功能时看着后边的显示,直到显示为“高强度密码(strong password)”为止。输入完成后,在下方在此输入来确认密码,最后用一张纸把密码写下下来妥善保管。
|
||||
|
||||
此外,选定“覆些磁盘空余空间(Overwrite empty disk space)”,当然这是一个可选步骤。一切准备就绪之后点击现在安装即可。
|
||||
|
||||

|
||||
|
||||
在设置完加密密钥之后,就是传统的 Ubuntu 安装配置了。选择时区、创建用户以及对应的安全密码。
|
||||
|
||||

|
||||
|
||||
与创建和加密 Ubuntu 磁盘对应,在创建用户的时记得候选择“登录系统需要密码(require my password to log in)”和“加密我的家目录(encrypt my home folder)”。这样可以为你的数据再增加一层保护。
|
||||
|
||||
等到用户名、加密设置以及其他所有事情都完成之后,Ubuntu 安装进程就可以开始了。随后,安装进程会告知你安装已完成,移除安装介质后重启即可享受 Ubuntu 之旅。
|
||||
|
||||
### 结论
|
||||
|
||||
进行磁盘加密之后,如果没有加密密钥则无法开启 Ubuntu。尽管无趣,但这种级别的加密使用最容易的,并且还充分利用了操作系统提供的特性。用户不需要过多的知识,或者使用其他第三方程序就可以很快完成加密要求。
|
||||
|
||||

|
||||
|
||||
加密之后的 Ubuntu,使用起来和没有加密的并没有什么区别。不需要其他的步骤,也不需要学习什么复杂的解密方法。对于那些非常在意隐私但又不想太过麻烦的人来说,这个提高安全等级的方法是必须学会的(当然,这很容易不是吗)。
|
||||
|
||||
你是否会使用 Ubuntu 对硬盘进行加密呢?在下方评论告诉我们。
|
||||
|
||||
---------------------------------
|
||||
|
||||
译者简介:
|
||||
|
||||
[GHLandy](http://GHLandy.com) —— 欲得之,则为之奋斗 (If you want it, work for it.)。
|
||||
|
||||
-----------------------------------
|
||||
|
||||
via: https://www.maketecheasier.com/encrypt-hard-disk-in-ubuntu/
|
||||
|
||||
作者:[Derrik Diener][a]
|
||||
译者:[GHLandy](https://github.com/GHLandy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.maketecheasier.com/author/derrikdiener/
|
||||
[1]:https://www.maketecheasier.com/author/derrikdiener/
|
||||
[2]:https://www.maketecheasier.com/encrypt-hard-disk-in-ubuntu/#comments
|
||||
[3]:https://www.maketecheasier.com/category/linux-tips/
|
||||
[4]:http://www.facebook.com/sharer.php?u=https%3A%2F%2Fwww.maketecheasier.com%2Fencrypt-hard-disk-in-ubuntu%2F
|
||||
[5]:http://twitter.com/share?url=https%3A%2F%2Fwww.maketecheasier.com%2Fencrypt-hard-disk-in-ubuntu%2F&text=How+to+Encrypt+Your+Hard+Disk+in+Ubuntu
|
||||
[6]:mailto:?subject=How%20to%20Encrypt%20Your%20Hard%20Disk%20in%20Ubuntu&body=https%3A%2F%2Fwww.maketecheasier.com%2Fencrypt-hard-disk-in-ubuntu%2F
|
||||
[7]:https://www.maketecheasier.com/why-is-iphone-overheating/
|
||||
[8]:https://www.maketecheasier.com/it-security-ethical-hacking-training/
|
||||
[9]:https://support.google.com/adsense/troubleshooter/1631343
|
||||
[10]:http://www.maketecheasier.com/tag/dropbox
|
||||
[11]:http://www.maketecheasier.com/tag/google-drive
|
||||
[12]:https://www.ubuntu.com/download/alternative-downloads
|
||||
[13]:https://etcher.io/
|
@ -1,33 +1,23 @@
|
||||
如何在Ubuntu 16.04中安装 Ceph 存储集群
|
||||
如何在 Ubuntu 16.04 中安装 Ceph 存储集群
|
||||
============================================================
|
||||
|
||||
### 在此页
|
||||
|
||||
1. [第1步 - 配置所有节点][1]
|
||||
2. [第2步 - 配置 SSH 服务器][2]
|
||||
3. [第3步 - 配置 Ubuntu 防火墙][3]
|
||||
4. [第4步 - 配置 Ceph OSD 节点][4]
|
||||
5. [第5步 - 建立 Ceph 集群][5]
|
||||
6. [第6步 - 测试 Ceph][6]
|
||||
7. [参考][7]
|
||||
|
||||
Ceph 是一个高性能,可靠行和可扩展性的开源存储平台。他是一个自由的分部署存储系统,提供了一个对象,块,文件级存储接口和缺少一个节点依然可以运行的特性。
|
||||
Ceph 是一个高性能、可靠、可扩展的开源存储平台。它是一个自由的分布式存储系统,提供了对象、块和文件级存储的接口,并可以不受单点故障的影响而运行。
|
||||
|
||||
在这个教程中,我将指导你在 Ubuntu 16.04 服务器上安装建立一个 Ceph 集群。Ceph 集群包括这些组件:
|
||||
|
||||
* **Ceph OSDs (ceph-osd)** - 控制数据存储,数据复制和恢复。Ceph 集群需要至少两个 Ceph OSD 服务器。这次安装我们将使用三个 Ubuntu 16.04 服务器。
|
||||
* **Ceph Monitor (ceph-mon)** - 监控集群状态和运行的 OSD 映射 和 CRUSH 映射。这里我们使用一个服务器。
|
||||
* **Ceph OSD (ceph-osd)** - 控制数据存储,数据复制和恢复。Ceph 集群需要至少两个 Ceph OSD 服务器。这次安装中我们将使用三个 Ubuntu 16.04 服务器。
|
||||
* **Ceph Monitor (ceph-mon)** - 监控集群状态并运行 OSD 映射 和 CRUSH 映射。这里我们使用一个服务器。
|
||||
* **Ceph Meta Data Server (ceph-mds)** - 如果你想把 Ceph 作为文件系统使用,就需要这个。
|
||||
|
||||
### **前提条件**
|
||||
### 前提条件
|
||||
|
||||
* 6个安装了 Ubuntu 16.04 的服务器节点
|
||||
* 6 个安装了 Ubuntu 16.04 的服务器节点
|
||||
* 所有节点上的 root 权限
|
||||
|
||||
我将使用下面这些 hostname /IP 安装:
|
||||
|
||||
```
|
||||
hostname IP address
|
||||
主机名 IP 地址
|
||||
ceph-admin 10.0.15.10
|
||||
mon1 10.0.15.11
|
||||
osd1 10.0.15.21
|
||||
@ -36,20 +26,20 @@ osd3 10.0.15.23
|
||||
client 10.0.15.15
|
||||
```
|
||||
|
||||
### 第1步 - 配置所有节点
|
||||
### 第 1 步 - 配置所有节点
|
||||
|
||||
这次安装,我将配置所有的6个节点来准备安装 Ceph 集群软件。所以你必须在所有节点运行下面的命令。然后确保所有节点都安装了 ssh-server。
|
||||
这次安装,我将配置所有的 6 个节点来准备安装 Ceph 集群软件。所以你必须在所有节点运行下面的命令。然后确保所有节点都安装了 ssh-server。
|
||||
|
||||
**创建 Ceph 用户**
|
||||
#### 创建 Ceph 用户
|
||||
|
||||
在所有节点创建一个名为'**cephuser**'的新用户
|
||||
在所有节点创建一个名为 `cephuser` 的新用户
|
||||
|
||||
```
|
||||
useradd -m -s /bin/bash cephuser
|
||||
passwd cephuser
|
||||
```
|
||||
|
||||
创建完新用户后,我们需要配置 **cephuser** 无密码 sudo 权限。这意味着 ‘cephuser’ 首次可以不输入密码执行和获取 sudo 权限。
|
||||
创建完新用户后,我们需要给 `cephuser` 配置无密码的 sudo 权限。这意味着 `cephuser` 可以不先输入密码而获取到 sudo 权限运行。
|
||||
|
||||
运行下面的命令来完成配置。
|
||||
|
||||
@ -59,9 +49,9 @@ chmod 0440 /etc/sudoers.d/cephuser
|
||||
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
|
||||
```
|
||||
|
||||
**安装和配置 NTP**
|
||||
#### 安装和配置 NTP
|
||||
|
||||
安装 NTP 来同步所有节点的日期和时间。运行 ntpdate 命令通过 NTP 设置日期。我们将使用 US 池 NTP 服务器。然后开启并使 NTP 服务在开机时启动。
|
||||
安装 NTP 来同步所有节点的日期和时间。先运行 `ntpdate` 命令通过 NTP 设置日期。我们将使用 US 池的 NTP 服务器。然后开启并使 NTP 服务在开机时启动。
|
||||
|
||||
```
|
||||
sudo apt-get install -y ntp ntpdate ntp-doc
|
||||
@ -71,15 +61,15 @@ systemctl enable ntp
|
||||
systemctl start ntp
|
||||
```
|
||||
|
||||
**安装 Open-vm-tools**
|
||||
#### 安装 Open-vm-tools
|
||||
|
||||
如果你正在VMware里运行所有节点,你需要安装这个虚拟化工具。
|
||||
如果你正在 VMware 里运行所有节点,你需要安装这个虚拟化工具。
|
||||
|
||||
```
|
||||
sudo apt-get install -y open-vm-tools
|
||||
```
|
||||
|
||||
**安装 Python 和 parted**
|
||||
#### 安装 Python 和 parted
|
||||
|
||||
在这个教程,我们需要 python 包来建立 ceph 集群。安装 python 和 python-pip。
|
||||
|
||||
@ -87,15 +77,15 @@ sudo apt-get install -y open-vm-tools
|
||||
sudo apt-get install -y python python-pip parted
|
||||
```
|
||||
|
||||
**配置 Hosts 文件**
|
||||
#### 配置 Hosts 文件
|
||||
|
||||
用 vim 编辑器编辑所有节点的 hosts 文件。
|
||||
用 vim 编辑器编辑所有节点的 `hosts` 文件。
|
||||
|
||||
```
|
||||
vim /etc/hosts
|
||||
```
|
||||
|
||||
Paste the configuration below:
|
||||
粘帖如下配置:
|
||||
|
||||
```
|
||||
10.0.15.10 ceph-admin
|
||||
@ -106,9 +96,9 @@ Paste the configuration below:
|
||||
10.0.15.15 ceph-client
|
||||
```
|
||||
|
||||
保存 hosts 文件,然后退出 vim 编辑器。
|
||||
保存 `hosts` 文件,然后退出 vim 编辑器。
|
||||
|
||||
现在你可以试着在两个服务器间 ping 主机名来测试网络连通性。
|
||||
现在你可以试着在两个服务器间 `ping` 主机名来测试网络连通性。
|
||||
|
||||
```
|
||||
ping -c 5 mon1
|
||||
@ -118,24 +108,24 @@ ping -c 5 mon1
|
||||

|
||||
][8]
|
||||
|
||||
### 第2步 - 配置 SSH 服务器
|
||||
### 第 2 步 - 配置 SSH 服务器
|
||||
|
||||
这一步,我们将配置 **ceph-admin 节点**。管理节点是用来配置监控节点和 osd 节点的。登录到 ceph-admin 节点然后使用 '**cephuser**'。
|
||||
这一步,我们将配置 **ceph-admin 节点**。管理节点是用来配置监控节点和 osd 节点的。登录到 ceph-admin 节点然后使用 `cephuser` 用户。
|
||||
|
||||
```
|
||||
ssh root@ceph-admin
|
||||
su - cephuser
|
||||
```
|
||||
|
||||
管理节点用来安装配置所有集群节点,所以 ceph-admin 用户必须有不使用密码连接到所有节点的权限。我们需要为 'ceph-admin' 节点的 'cephuser' 用户配置无密码登录权限。
|
||||
管理节点用来安装配置所有集群节点,所以 ceph-admin 上的用户必须有不使用密码连接到所有节点的权限。我们需要为 'ceph-admin' 节点的 `cephuser` 用户配置无密码 SSH 登录权限。
|
||||
|
||||
生成 '**cephuser**' 的 ssh 密钥。
|
||||
生成 `cephuser` 的 ssh 密钥。
|
||||
|
||||
```
|
||||
ssh-keygen
|
||||
```
|
||||
|
||||
让密码为空
|
||||
让密码为空。
|
||||
|
||||
下面,为 ssh 创建一个配置文件
|
||||
|
||||
@ -143,7 +133,7 @@ ssh-keygen
|
||||
vim ~/.ssh/config
|
||||
```
|
||||
|
||||
Paste the configuration below:
|
||||
粘帖如下配置:
|
||||
|
||||
```
|
||||
Host ceph-admin
|
||||
@ -177,13 +167,13 @@ Host ceph-client
|
||||

|
||||
][9]
|
||||
|
||||
改变配置文件权限为644。
|
||||
改变配置文件权限为 644。
|
||||
|
||||
```
|
||||
chmod 644 ~/.ssh/config
|
||||
```
|
||||
|
||||
现在使用 ssh-copy-id 命令增加密钥到所有节点。
|
||||
现在使用 `ssh-copy-id` 命令增加密钥到所有节点。
|
||||
|
||||
```
|
||||
ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts
|
||||
@ -193,7 +183,7 @@ ssh-copy-id ceph-osd3
|
||||
ssh-copy-id mon1
|
||||
```
|
||||
|
||||
当请求输入密码时输入你的 cephuser 密码。
|
||||
当请求输入密码时输入你的 `cephuser` 密码。
|
||||
|
||||
[
|
||||

|
||||
@ -209,9 +199,9 @@ ssh ceph-osd1
|
||||

|
||||
][11]
|
||||
|
||||
### 第3步 - 配置 Ubuntu 防火墙
|
||||
### 第 3 步 - 配置 Ubuntu 防火墙
|
||||
|
||||
出于安全原因,我们需要在服务器打开防火墙。我们更愿使用 Ufw(不复杂的防火墙),Ubuntu 默认的防火墙,来保护系统。在这一步,我们在所有节点开启 ufw,然后打开 ceph-admin,ceph-mon 和 ceph-osd 需要使用的端口。
|
||||
出于安全原因,我们需要在服务器打开防火墙。我们更愿使用 Ufw(不复杂防火墙)来保护系统,这是 Ubuntu 默认的防火墙。在这一步,我们在所有节点开启 ufw,然后打开 ceph-admin、ceph-mon 和 ceph-osd 需要使用的端口。
|
||||
|
||||
登录到 ceph-admin 节点,然后安装 ufw 包。
|
||||
|
||||
@ -220,7 +210,7 @@ ssh root@ceph-admin
|
||||
sudo apt-get install -y ufw
|
||||
```
|
||||
|
||||
打开 80,2003 和 4505-4506 端口,然后重载防火墙。
|
||||
打开 80,2003 和 4505-4506 端口,然后重启防火墙。
|
||||
|
||||
```
|
||||
sudo ufw allow 22/tcp
|
||||
@ -239,7 +229,7 @@ sudo ufw enable
|
||||

|
||||
][12]
|
||||
|
||||
从 ceph-admin 节点,登录到监控节点 'mon1' 然后安装 ufw。
|
||||
从 ceph-admin 节点,登录到监控节点 mon1 然后安装 ufw。
|
||||
|
||||
```
|
||||
ssh mon1
|
||||
@ -254,7 +244,7 @@ sudo ufw allow 6789/tcp
|
||||
sudo ufw enable
|
||||
```
|
||||
|
||||
最后,在每个 osd 节点:ceph-osd1,ceph-osd2 和 ceph-osd3 打开这些端口 6800-7300。
|
||||
最后,在每个 osd 节点 ceph-osd1、ceph-osd2 和 ceph-osd3 上打开这些端口 6800-7300。
|
||||
|
||||
从 ceph-admin 登录到每个 ceph-osd 节点安装 ufw。
|
||||
|
||||
@ -263,7 +253,7 @@ ssh ceph-osd1
|
||||
sudo apt-get install -y ufw
|
||||
```
|
||||
|
||||
在 osd 节点打开端口并重载防火墙。
|
||||
在 osd 节点打开端口并重启防火墙。
|
||||
|
||||
```
|
||||
sudo ufw allow 22/tcp
|
||||
@ -273,12 +263,12 @@ sudo ufw enable
|
||||
|
||||
ufw 防火墙配置完成。
|
||||
|
||||
### 第4步 - 配置 Ceph OSD 节点
|
||||
### 第 4 步 - 配置 Ceph OSD 节点
|
||||
|
||||
这个教程里,我们有 3 个 OSD 节点,每个节点有两块硬盘分区。
|
||||
|
||||
1. **/dev/sda** for root partition
|
||||
2. **/dev/sdb** is empty partition - 20GB
|
||||
1. **/dev/sda** 用于根分区
|
||||
2. **/dev/sdb** 空闲分区 - 20GB
|
||||
|
||||
我们要使用 **/dev/sdb** 作为 ceph 磁盘。从 ceph-admin 节点,登录到所有 OSD 节点,然后格式化 /dev/sdb 分区为 **XFS** 文件系统。
|
||||
|
||||
@ -294,19 +284,19 @@ ssh ceph-osd3
|
||||
sudo fdisk -l /dev/sdb
|
||||
```
|
||||
|
||||
格式化 /dev/sdb 分区为 XFS 文件系统,使用 parted 命令创建一个 GPT 分区表。
|
||||
格式化 /dev/sdb 分区为 XFS 文件系统,使用 `parted` 命令创建一个 GPT 分区表。
|
||||
|
||||
```
|
||||
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
|
||||
```
|
||||
|
||||
下面,使用 mkfs 命令格式化分区为 XFS 格式。
|
||||
下面,使用 `mkfs` 命令格式化分区为 XFS 格式。
|
||||
|
||||
```
|
||||
sudo mkfs.xfs -f /dev/sdb
|
||||
```
|
||||
|
||||
现在检查分区,然后你会看见 XFS /dev/sdb 分区。
|
||||
现在检查分区,然后你会看见一个 XFS 文件系统的 /dev/sdb 分区。
|
||||
|
||||
```
|
||||
sudo fdisk -s /dev/sdb
|
||||
@ -317,31 +307,30 @@ sudo blkid -o value -s TYPE /dev/sdb
|
||||

|
||||
][13]
|
||||
|
||||
### 第5步 - 创建 Ceph 集群
|
||||
### 第 5 步 - 创建 Ceph 集群
|
||||
|
||||
在这步,我们将从 ceph-admin 安装 Ceph 到所有节点。马上开始,登录到 ceph-admin 节点。
|
||||
在这步,我们将从 ceph-admin 安装 Ceph 到所有节点。马上开始,先登录到 ceph-admin 节点。
|
||||
|
||||
```
|
||||
ssh root@ceph-admin
|
||||
su - cephuser
|
||||
```
|
||||
|
||||
**在 ceph-admin 节点上安装 ceph-deploy**
|
||||
#### 在 ceph-admin 节点上安装 ceph-deploy
|
||||
|
||||
首先我们已经在系统上安装了 python 和 python-pip。现在我们需要从 pypi python 仓库安装 Ceph 部署工具 '**ceph-deploy**'。
|
||||
|
||||
Install ceph-deploy on the ceph-admin node with the pip command.
|
||||
用 pip 命令在 ceph-admin 节点安装 ceph-deploy 。
|
||||
|
||||
```
|
||||
sudo pip install ceph-deploy
|
||||
```
|
||||
|
||||
注意: 确保所有节点都已经更新.
|
||||
注意: 确保所有节点都已经更新。
|
||||
|
||||
ceph-deploy 工具已经安装完毕后,为 Ceph 集群配置创建一个新目录。
|
||||
|
||||
**创建一个新集群**
|
||||
#### 创建一个新集群
|
||||
|
||||
创建一个新集群目录。
|
||||
|
||||
@ -350,25 +339,25 @@ mkdir cluster
|
||||
cd cluster/
|
||||
```
|
||||
|
||||
下一步,用 '**ceph-deploy**' 命令通过定义监控节点 '**mon1**' 创建一个新集群。
|
||||
下一步,用 `ceph-deploy` 命令通过定义监控节点 mon1 创建一个新集群。
|
||||
|
||||
```
|
||||
ceph-deploy new mon1
|
||||
```
|
||||
|
||||
命令将在集群目录生成 Ceph 集群配置文件 'ceph.conf'。
|
||||
命令将在集群目录生成 Ceph 集群配置文件 `ceph.conf`。
|
||||
|
||||
[
|
||||

|
||||
][14]
|
||||
|
||||
用 vim 编辑 ceph.conf。
|
||||
用 vim 编辑 `ceph.conf`。
|
||||
|
||||
```
|
||||
vim ceph.conf
|
||||
```
|
||||
|
||||
在 [global] 块下,粘贴下面的配置。
|
||||
在 `[global]` 块下,粘贴下面的配置。
|
||||
|
||||
```
|
||||
# Your network address
|
||||
@ -376,9 +365,9 @@ public network = 10.0.15.0/24
|
||||
osd pool default size = 2
|
||||
```
|
||||
|
||||
保存文件并推出编辑器。
|
||||
保存文件并退出编辑器。
|
||||
|
||||
**安装 Ceph 到所有节点**
|
||||
#### 安装 Ceph 到所有节点
|
||||
|
||||
现在用一个命令从 ceph-admin 节点安装 Ceph 到所有节点。
|
||||
|
||||
@ -386,7 +375,7 @@ osd pool default size = 2
|
||||
ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1
|
||||
```
|
||||
|
||||
命令将自动安装 Ceph 到所有节点:mon1,osd1-3 和 ceph-admin - 安装将花一些时间。
|
||||
命令将自动安装 Ceph 到所有节点:mon1、osd1-3 和 ceph-admin - 安装将花一些时间。
|
||||
|
||||
现在到 mon1 节点部署监控节点。
|
||||
|
||||
@ -404,9 +393,9 @@ ceph-deploy gatherkeys mon1
|
||||

|
||||
][15]
|
||||
|
||||
**增加 OSDS 到集群**
|
||||
#### 增加 OSD 到集群
|
||||
|
||||
在所有节点上安装了 Ceph 之后,现在我们可以增加 OSD 守护进程到集群。OSD 守护进程将在磁盘 /dev/sdb 分区上创建数据和日志 。
|
||||
在所有节点上安装了 Ceph 之后,现在我们可以增加 OSD 守护进程到该集群。OSD 守护进程将在磁盘 /dev/sdb 分区上创建数据和日志 。
|
||||
|
||||
检查所有 osd 节点的 /dev/sdb 磁盘可用性。
|
||||
|
||||
@ -420,7 +409,7 @@ ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
|
||||
|
||||
你将看见我们之前创建 XFS 格式的 /dev/sdb。
|
||||
|
||||
下面,在所有节点用 zap 选项删除分区表。
|
||||
下面,在所有 OSD 节点上用 zap 选项删除该分区表。
|
||||
|
||||
```
|
||||
ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
|
||||
@ -428,13 +417,13 @@ ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
|
||||
|
||||
这个命令将删除所有 Ceph OSD 节点的 /dev/sdb 上的数据。
|
||||
|
||||
现在准备所有 OSD 节点并确保结果没有报错。
|
||||
现在准备所有 OSD 节点,请确保结果没有报错。
|
||||
|
||||
```
|
||||
ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
|
||||
```
|
||||
|
||||
当你看到 ceph-osd1-3 结果已经准备好 OSD 使用,然后命令已经成功。
|
||||
当你看到 ceph-osd1-3 结果已经准备好供 OSD 使用,就表明命令已经成功。
|
||||
|
||||
[
|
||||

|
||||
@ -486,17 +475,17 @@ sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
|
||||
|
||||
Ceph 集群在 Ubuntu 16.04 已经创建完成。
|
||||
|
||||
### 第6步 - 测试 Ceph
|
||||
### 第 6 步 - 测试 Ceph
|
||||
|
||||
在第4步,我们已经安装并创建了一个新 Ceph 集群,然后添加了 OSDS 节点到集群。现在我们应该测试集群确保它如期工作。
|
||||
在第 4 步,我们已经安装并创建了一个新 Ceph 集群,然后添加了 OSD 节点到集群。现在我们应该测试集群确保它如期工作。
|
||||
|
||||
从 ceph-admin 节点,登录到 Ceph 监控服务器 '**mon1**'。
|
||||
从 ceph-admin 节点,登录到 Ceph 监控服务器 mon1。
|
||||
|
||||
```
|
||||
ssh mon1
|
||||
```
|
||||
|
||||
运行下面命令来检查集群健康。
|
||||
运行下面命令来检查集群是否健康。
|
||||
|
||||
```
|
||||
sudo ceph health
|
||||
@ -514,7 +503,7 @@ sudo ceph -s
|
||||

|
||||
][20]
|
||||
|
||||
确保 Ceph 健康是 **OK** 并且有一个监控节点 '**mon1**' IP 地址为 '**10.0.15.11**'。有 **3 OSD** 服务器都是 **up** 状态并且正在运行,可用磁盘空间为 **45GB** - 3x15GB Ceph 数据 OSD 分区。
|
||||
确保 Ceph 健康状态是 `OK` 的,有一个监控节点 mon1 IP 地址为 '**10.0.15.11**'。有 **3 个 OSD** 服务器都是 **up** 状态并且正在运行,可用磁盘空间为 **45GB** - 3x15GB 的 Ceph 数据 OSD 分区。
|
||||
|
||||
我们在 Ubuntu 16.04 建立一个新 Ceph 集群成功。
|
||||
|
||||
@ -528,7 +517,7 @@ via: https://www.howtoforge.com/tutorial/how-to-install-a-ceph-cluster-on-ubuntu
|
||||
|
||||
作者:[Muhammad Arul][a]
|
||||
译者:[wyangsun](https://github.com/wyangsun)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,128 @@
|
||||
在 Ubuntu 上使用 DokuWiki 构建你自己的 wiki
|
||||
============================================================
|
||||
|
||||
我们在使用 [DokuWiki][2],它是一个真棒的工具。我们团队有一个内部知识库,我们使用 DokuWiki 存储我们的所有评论、教程等。它很简单,并且易于安装和使用。在这篇文章中,我们将展示如何在 Ubuntu 16.04 服务器上安装 DokuWiki。
|
||||
|
||||
### 需求
|
||||
|
||||
DokuWiki 不需要太多依赖,因为它不需要数据库。这里是 DokuWiki 的要求:
|
||||
|
||||
* PHP 5.3.4 或更高版本(建议使用 PHP 7+)
|
||||
* 一台 web 服务器(Apache/Nginx/任何其他)
|
||||
* 一台 VPS。[买一台便宜的托管 VPS][1],那么你就不必这样做了。你只需与支持团队联系,他们将会为您安装。
|
||||
|
||||
### 指导
|
||||
|
||||
在你开始之前,你应该升级你的系统。运行下面的命令:
|
||||
|
||||
```
|
||||
sudo apt-get update && sudo apt-get upgrade
|
||||
```
|
||||
|
||||
### 安装 Apache
|
||||
|
||||
我们需要一台用于我们 wiki 的 web 服务器。我们在本教程中使用 Apache,但你也可以使用 Nginx 或任何其他 web 服务器。用下面的命令安装apache:
|
||||
|
||||
```
|
||||
apt-get install apache2
|
||||
```
|
||||
|
||||
### 安装 PHP7 和模块
|
||||
|
||||
接下来,如果你还没有安装 PHP,你应该先安装 PHP。在本教程中,我们使用 PHP7。所以请使用下面的命令安装 PHP7 和一些其他 PHP 模块:
|
||||
|
||||
```
|
||||
apt-get install php7.0-fpm php7.0-cli php-apcu php7.0-gd php7.0-xml php7.0-curl php7.0-json php7.0-mcrypt php7.0-cgi php7.0 libapache2-mod-php7.0
|
||||
```
|
||||
|
||||
### 下载安装 DokuWiki
|
||||
|
||||
下面就来到主要部分了 - 实际安装 DokuWiki。
|
||||
|
||||
首先,为你的 DokuWiki 创建一个目录:
|
||||
|
||||
```
|
||||
mkdir -p /var/www/thrwiki
|
||||
```
|
||||
|
||||
进入你刚才创建的目录:
|
||||
|
||||
```
|
||||
cd /var/www/thrwiki
|
||||
```
|
||||
|
||||
运行下面的命令来下载最新(稳定)的 DokuWiki:
|
||||
|
||||
```
|
||||
wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
|
||||
```
|
||||
|
||||
解压 .tgz 文件:
|
||||
|
||||
```
|
||||
tar xvf dokuwiki-stable.tgz
|
||||
```
|
||||
|
||||
更改文件/文件夹权限:
|
||||
|
||||
```
|
||||
www-data:www-data -R /var/www/thrwiki
|
||||
chmod -R 707 /var/www/thrwiki
|
||||
```
|
||||
|
||||
### 为 DokuWiki 配置 Apache
|
||||
|
||||
为你的 DokuWiki 创建一个 .conf 文件(我们把它命名为 `thrwiki.conf`,但是你可以把它命名成任何你想要的),并用你喜欢的文本编辑器打开。我们使用 nano:
|
||||
|
||||
```
|
||||
touch /etc/apache2/sites-available/thrwiki.conf
|
||||
ln -s /etc/apache2/sites-available/thrwiki.conf /etc/apache2/sites-enabled/thrwiki.conf
|
||||
nano /etc/apache2/sites-available/thrwiki.conf
|
||||
```
|
||||
|
||||
下面是 thrwiki.conf 中的内容:
|
||||
|
||||
```
|
||||
<VirtualHost yourServerIP:80>
|
||||
ServerAdmin wikiadmin@thishosting.rocks
|
||||
DocumentRoot /var/www/thrwiki/
|
||||
ServerName wiki.thishosting.rocks
|
||||
ServerAlias www.wiki.thishosting.rocks
|
||||
<Directory /var/www/thrwiki/>
|
||||
Options FollowSymLinks
|
||||
AllowOverride All
|
||||
Order allow,deny
|
||||
allow from all
|
||||
</Directory>
|
||||
ErrorLog /var/log/apache2/wiki.thishosting.rocks-error_log
|
||||
CustomLog /var/log/apache2/wiki.thishosting.rocks-access_log common
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
编辑与你服务器相关的行。将 `wikiadmin@thishosting.rocks`、`wiki.thishosting.rocks` 替换成你自己的数据,重启 apache 使更改生效:
|
||||
|
||||
```
|
||||
systemctl restart apache2.service
|
||||
```
|
||||
|
||||
就是这样了。现在已经配置完成了。现在你可以继续通过前端页面 http://wiki.thishosting.rocks/install.php 安装配置 DokuWiki 了。安装完成后,你可以用下面的命令删除 install.php:
|
||||
|
||||
```
|
||||
rm -f /var/www/html/thrwiki/install.php
|
||||
```
|
||||
|
||||
如果你需要任何帮助,请随意留下评论。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://thishosting.rocks/build-your-own-wiki-on-ubuntu-with-dokuwiki/
|
||||
|
||||
作者:[thishostrocks.com][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://twitter.com/thishostrocks
|
||||
[1]:https://thishosting.rocks/best-cheap-managed-vps/
|
||||
[2]:https://github.com/splitbrain/dokuwiki
|
@ -0,0 +1,62 @@
|
||||
5 个让你的 WordPress 网站安全的技巧
|
||||
============================================================
|
||||
|
||||

|
||||
|
||||
WordPress 是迄今为止最流行的博客平台。
|
||||
|
||||
正由于它的流行,也因此带来了正面和负面的影响。事实上,几乎每个人都使用它,使它更容易被发现漏洞。WordPress 的开发人员做了很多工作,一旦新的缺陷被发现,就会发布修复和补丁,但这并不意味着你可以安装完就置之脑后。
|
||||
|
||||
在这篇文章中,我们将提供一些最常见的保护和强化 WordPress 网站的方法。
|
||||
|
||||
### 在登录后台时总是使用 SSL
|
||||
|
||||
不用说的是,如果你并不打算只是做一个随意的博客,你应该总是使用 SSL。不使用加密连接登录到你的网站会暴露你的用户名和密码。任何人嗅探流量都可能会发现你的密码。如果你使用 WiFi 上网或者连接到一个公共热点,那么你被黑的几率更高,这是特别真实的。你可以从[这里][1]获取受信任的免费 SSL 证书。
|
||||
|
||||
### 精心挑选附加的插件
|
||||
|
||||
由第三方开发人员所开发,每个插件的质量和安全性总是值得怀疑,并且它仅取决于其开发人员的经验。当安装任何额外的插件时,你应该仔细选择,并考虑其受欢迎程度以及插件的维护频率。应该避免维护不良的插件,因为它们更容易出现易于被利用的错误和漏洞。
|
||||
|
||||
此主题也是上一个关于 SSL 主题的补充,因为许多插件包含的脚本会发出不安全连接(HTTP)的请求。只要你的网站通过 HTTP 访问,一切似乎很好。但是,一旦你决定使用加密并强制使用 SSL 访问,则会立即导致网站的功能被破坏,因为当你使用 HTTPS 访问其他网站时,这些插件上的脚本将继续通过 HTTP 提供请求。
|
||||
|
||||
### 安装 Wordfence
|
||||
|
||||
Wordfence 是由 Feedjit Inc. 开发的,Wordfence 是目前最流行的 WordPress 安全插件,并且是每个严肃的 WordPress 网站必备的,特别是那些使用 [WooCommerce][2] 或其它的 WordPress 电子商务平台的网站。
|
||||
|
||||
Wordfence 不只是一个插件,因为它提供了一系列加强您的网站的安全功能。它具有 web 程序防火墙、恶意软件扫描、实时流量分析器和各种其它工具,它们可以提高你网站的安全性。防火墙将默认阻止恶意登录尝试,甚至可以配置为按照 IP 地址范围来阻止整个国家/地区的访问。我们真正喜欢 Wordfence 的原因是,即使你的网站因为某些原因被侵害,例如恶意脚本,Wordfence 可以在安装以后扫描和清理你的网站上被感染的文件。
|
||||
|
||||
该公司提供这个插件的免费和付费订阅计划,但即使是免费计划,你的网站仍将获得令人满意的水平。
|
||||
|
||||
### 用额外的密码锁住 /wp-admin 和 /wp-login.php
|
||||
|
||||
保护你的 WordPress 后端的另一个步骤是使用额外的密码保护任何除了你以外不打算让任何人使用的目录(即URL)。 /wp-admin 目录属于此关键目录列表。 如果你不允许普通用户登录 WordPress,你应该使用密码限制对 wp.login.php 文件的访问。无论是使用 [Apache][3] 还是 [Nginx][4],你都可以访问这两篇文章,了解如何额外保护 WordPress 安装。
|
||||
|
||||
### 禁用/停止用户枚举
|
||||
|
||||
这是攻击者发现你网站上的有效用户名的一种相当简单的方法(即找出管理员用户名)。那么它是如何工作的?这很简单。在任何 WordPress 站点上的主要 URL 后面跟上 `/?author=1` 即可。 例如:`wordpressexample.com/?author=1`。
|
||||
|
||||
要保护您的网站免受此影响,只需安装[停止用户枚举][5]插件。
|
||||
|
||||
### 禁用 XML-RPC
|
||||
|
||||
RPC 代表远程过程调用,它可以用来从位于网络上另一台计算机上的程序请求服务的协议。对于 WordPress 来说,XML-RPC 允许你使用流行的网络博客客户端(如 Windows Live Writer)在你的 WordPress 博客上发布文章,如果你使用 WordPress 移动应用程序那么也需要它。 XML-RPC 在早期版本中被禁用,但是从 WordPress 3.5 时它被默认启用,这让你的网站面临更大的攻击可能。虽然各种安全研究人员建议这不是一个大问题,但如果你不打算使用网络博客客户端或 WP 的移动应用程序,你应该禁用 XML-RPC 服务。
|
||||
|
||||
有多种方法可以做到这一点,最简单的是安装[禁用 XML-RPC][6]插件。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.rosehosting.com/blog/5-tips-for-securing-your-wordpress-sites/
|
||||
|
||||
作者:[rosehosting.com][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:rosehosting.com
|
||||
[1]:https://letsencrypt.org/
|
||||
[2]:https://www.rosehosting.com/woocommerce-hosting.html
|
||||
[3]:https://www.rosehosting.com/blog/password-protect-a-directory-using-htaccess/
|
||||
[4]:https://www.rosehosting.com/blog/password-protecting-directories-with-nginx/
|
||||
[5]:https://wordpress.org/plugins/stop-user-enumeration/
|
||||
[6]:https://wordpress.org/plugins/disable-xml-rpc/
|
193
published/20170116 How to debug C programs in Linux using gdb.md
Normal file
193
published/20170116 How to debug C programs in Linux using gdb.md
Normal file
@ -0,0 +1,193 @@
|
||||
在 Linux 中如何使用 gdb 调试 C 程序
|
||||
============================================================
|
||||
|
||||
无论多么有经验的程序员,开发的任何软件都不可能完全没有 bug。因此,排查及修复 bug 成为软件开发周期中最重要的任务之一。有许多办法可以排查 bug(测试、代码自审等等),但是还有一些专用软件(称为调试器)可以帮助准确定位问题的所在,以便进行修复。
|
||||
|
||||
如果你是 C/C++ 程序员,或者使用 Fortran 和 Modula-2 编程语言开发软件,那么你将会很乐意知道有这么一款优秀的调试器 - [GDB][4] - 可以帮你更轻松地调试代码 bug 以及其它问题。在这篇文章中,我们将讨论一下 GDB 调试器的基础知识,包括它提供的一些有用的功能/选项。
|
||||
|
||||
在我们开始之前,值得一提的是,文章中的所有说明和示例都已经在 Ubuntu 14.04 LTS 中测试过。教程中的示例代码都是 C 语言写的;使用的 shell 为 bash(4.3.11);GDB 版本为 7.7.1。
|
||||
|
||||
### GDB 调试器基础
|
||||
|
||||
通俗的讲,GDB 可以让你看到程序在执行过程时的内部流程,并帮你明确问题的所在。我们将在下一节通过一个有效的示例来讨论 GDB 调试器的用法,但在此之前,我们先来探讨一些之后对你有帮助的基本要点。
|
||||
|
||||
首先,为了能够顺利使用类似 GDB 这样的调试器,你必须以指定的方式编译程序,让编译器产生调试器所需的调试信息。例如,在使用 gcc 编译器(我们将在本教程之后的章节用它来编译 C 程序示例)编译代码的时候,你需要使用 `-g` 命令行选项。
|
||||
|
||||
想要了解 gcc 编译器手册页中关于 `-g` 命令行选项相关的内容,请看[这里][5]。
|
||||
|
||||
下一步,确保在你的系统中已经安装 GDB 调试器。如果没有安装,而且你使用的是基于 Debian 的系统(如 Ubuntu),那么你就可以使用以下命令轻松安装该工具:
|
||||
|
||||
```
|
||||
sudo apt-get install gdb
|
||||
```
|
||||
|
||||
在其他发行版上的安装方法,请看[这里][6]。
|
||||
|
||||
现在,当你按照上述的方式编译完程序(`gcc -g` 命令行选项),同时也已经安装好 GDB 调试器,那么你就可以使用以下命令让程序在调试模式中运行:
|
||||
|
||||
```
|
||||
gdb [可执行程序的名称]
|
||||
```
|
||||
|
||||
这样做会初始化 GDB 调试器,但你的可执行程序此时还不会被启动。在这个时候你就可以定义调试相关的设置。例如,你可以在特定行或函数中设置一个断点让 GDB 在该行暂停程序的执行。
|
||||
|
||||
接着,为了启动你的程序,你必须输入执行以下 gdb 命令:
|
||||
|
||||
```
|
||||
run
|
||||
```
|
||||
|
||||
在这里,值得一提的是,如果你的程序需要一些命令行参数,那么你可以在这里指定这些参数。例如:
|
||||
|
||||
```
|
||||
run [arguments]
|
||||
```
|
||||
|
||||
GDB 提供了很多有用的命令,在调试的时候总是能派的上用场。我们将在下一节讨论其中一部分命令。
|
||||
|
||||
### GDB 调试器用例
|
||||
|
||||
现在我们对 GDB 及其用法有了基本的概念。因此,让我们举例来应用所学的知识。这是一段示例代码:
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int out = 0, tot = 0, cnt = 0;
|
||||
int val[] = {5, 54, 76, 91, 35, 27, 45, 15, 99, 0};
|
||||
|
||||
while(cnt < 10)
|
||||
{
|
||||
out = val[cnt];
|
||||
tot = tot + 0xffffffff/out;
|
||||
cnt++;
|
||||
}
|
||||
|
||||
printf("\n Total = [%d]\n", tot);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
简单说明一下这段代码要做什么事。获取 `val` 数组中每一个值,将其赋值给 `out` 变量,然后将 `tot` 之前的值与 `0xffffffff/out` 的结果值累加,赋值给 `tot` 变量。
|
||||
|
||||
这里遇到的问题是,当执行这段代码编译后的可执行程序时,产生以下错误:
|
||||
|
||||
```
|
||||
$ ./gdb-test
|
||||
Floating point exception (core dumped)
|
||||
```
|
||||
|
||||
因此,要调试这段代码,第一步是使用 `-g` 选项编译程序。命令如下:
|
||||
|
||||
```
|
||||
gcc -g -Wall gdb-test.c -o gdb-test
|
||||
```
|
||||
|
||||
接着,让我们运行 GDB 调试器并指定要调试的可执行程序。命令如下:
|
||||
|
||||
```
|
||||
gdb ./gdb-test
|
||||
```
|
||||
|
||||
现在,我刚才得到的错误是 `Floating point exception`,大部分人可能已经知道,这是因为 `n % x`,当 x 为 0 时导致的错误。所以,考虑到这一点,我在 11 行代码除法运算的位置处添加了一个断点。如下:
|
||||
|
||||
```
|
||||
(gdb) break 11
|
||||
```
|
||||
|
||||
注意 `(gdb)` 是调试器的提示信息,我只输入了 `break 11` 命令。
|
||||
|
||||
现在,让 GDB 开始运行程序:
|
||||
|
||||
```
|
||||
run
|
||||
```
|
||||
|
||||
当断点第一次被命中时,GDB 显示如下输出:
|
||||
|
||||
```
|
||||
Breakpoint 1, main () at gdb-test.c:11
|
||||
11 tot = tot + 0xffffffff/out;
|
||||
(gdb)
|
||||
```
|
||||
|
||||
正如你所看到的那样,调试器会显示断点所在的行代码。现在,让我们打印出此时 `out` 的值。如下:
|
||||
|
||||
```
|
||||
(gdb) print out
|
||||
$1 = 5
|
||||
(gdb)
|
||||
```
|
||||
|
||||
如上所示,值 `5` 被打印出来了。这个时候一切都还是正常的。让调试器继续执行程序直到命中下一个断点,可以通过使用 `c` 命令来完成:
|
||||
|
||||
```
|
||||
c
|
||||
```
|
||||
|
||||
重复上述操作,直到 `out` 值变为 `0` 时。
|
||||
|
||||
```
|
||||
...
|
||||
...
|
||||
...
|
||||
Breakpoint 1, main () at gdb-test.c:11
|
||||
11 tot = tot + 0xffffffff/out;
|
||||
(gdb) print out
|
||||
$2 = 99
|
||||
(gdb) c
|
||||
Continuing.
|
||||
|
||||
Breakpoint 1, main () at gdb-test.c:11
|
||||
11 tot = tot + 0xffffffff/out;
|
||||
(gdb) print out
|
||||
$3 = 0
|
||||
(gdb)
|
||||
```
|
||||
|
||||
现在,为了进一步确认问题,我使用 GDB 的 `s`(或 `step`) 命令代替 `c` 命令。因为,我只想让当前程序在第 11 行之后暂停,再一步步执行,看看这个时候是否会发生崩溃。
|
||||
|
||||
以下是执行之后输出信息:
|
||||
|
||||
```
|
||||
(gdb) s
|
||||
|
||||
Program received signal SIGFPE, Arithmetic exception.
|
||||
0x080484aa in main () at gdb-test.c:11
|
||||
11 tot = tot + 0xffffffff/out;
|
||||
```
|
||||
|
||||
是的,如上输出的第一行内容所示,这就是抛出异常的地方。当我再次尝试运行 `s` 命令时,问题最终也得到了确认:
|
||||
|
||||
```
|
||||
(gdb) s
|
||||
|
||||
Program terminated with signal SIGFPE, Arithmetic exception.
|
||||
The program no longer exists.
|
||||
```
|
||||
|
||||
通过这种方式,你就可以使用 GDB 调试你的程序。
|
||||
|
||||
### 总结
|
||||
|
||||
GDB 提供了很多功能供用户研究和使用,在这里,我们仅仅只介绍了很少一部分内容。通过 GDB 的手册页可以进一步了解这个工具,当你在调试代码的时候,尝试使用一下它。GDB 调试器有一定的学习难度,但是它很值得你下功夫学习。
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.howtoforge.com/tutorial/how-to-debug-c-programs-in-linux-using-gdb/
|
||||
|
||||
作者:[Ansh][a]
|
||||
译者:[zhb127](https://github.com/zhb127)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.howtoforge.com/tutorial/how-to-debug-c-programs-in-linux-using-gdb/
|
||||
[1]:https://www.howtoforge.com/tutorial/how-to-debug-c-programs-in-linux-using-gdb/#gdb-debugger-basics
|
||||
[2]:https://www.howtoforge.com/tutorial/how-to-debug-c-programs-in-linux-using-gdb/#gdb-usage-example
|
||||
[3]:https://www.howtoforge.com/tutorial/how-to-debug-c-programs-in-linux-using-gdb/#conclusion
|
||||
[4]:https://www.sourceware.org/gdb/
|
||||
[5]:https://linux.die.net/man/1/gcc
|
||||
[6]:https://www.sourceware.org/gdb/download/
|
@ -0,0 +1,74 @@
|
||||
5 个找到 deb 软件包的好地方
|
||||
============================================================
|
||||

|
||||
|
||||
基于 Debian 的 Linux 发行版上有一个共同特点:为用户提供了很多可选的软件。当涉及到为 Linux 制作软件时,所有的大公司都首先瞄准这种类型的 Linux 发行版。甚至一些开发人员根本不打算为其他类型的 Linux 发行版打包,只做 DEB 包。
|
||||
|
||||
然而,这么多的开发人员针对此类 Linux 发行版开发并不意味着用户在寻找软件方面不会遇到问题。一般情况下,大多数 Debian 和 Ubuntu 用户都是自己在互联网上搜索 DEB 包。
|
||||
|
||||
因此,我们决定写一篇文章,它涵盖了五个最好的可以找到 DEB 软件包的网站。 这样基于 Debian 的 Linux 发行版的用户就能够更容易地找到他们需要的软件,而不是浪费时间在互联网上搜索。
|
||||
|
||||
### 1、 Launchpad
|
||||
|
||||
[Launchpad][11] 是互联网上最大的基于 Debian 的软件包仓库。 为什么? 这是 PPA 所在的地方!Canonical 创建了这个服务,所以任何开发商(无论是大的或小的)都可以使用它,并且轻松地将其软件包分发给 Ubuntu 用户。
|
||||
|
||||
不幸的是,并不是所有基于 Debian 的 Linux 发行版都是 Ubuntu。但是,就算你的 Linux 发行版不使用 PPA,也并不意味着此服务无用。Launchpad 使得直接下载任何 Debian 软件包进行安装成为可能。
|
||||
|
||||

|
||||
|
||||
### 2、 Pkgs.org
|
||||
|
||||
除了 Launchpad,[Pkgs.org][12] 可能是互联网上最大的查找 Debian 软件包的站点。如果一个 Linux 用户需要一个 deb,并且不能在它的发行版的软件包仓库中找到它,那它很可能在这个网站上找到。
|
||||
|
||||

|
||||
|
||||
### 3、 Getdeb
|
||||
|
||||
[Getdeb][13] 是一个针对 Ubuntu 的项目,它托管了最新的 Ubuntu 版本的软件。这使它成为一个找 Debian 包的很好的地方。特别是如果用户使用的是 Ubuntu、Linux Mint、Elementary OS 和其他许多基于 Ubuntu 的 Linux 发行版上。此外,这些软件包甚至可以在 Debian 上工作!
|
||||
|
||||

|
||||
|
||||
### 4、 RPM Seek
|
||||
|
||||
即使 [RPM Seek][14] 声称是 “Linux RPM 包搜索引擎”,奇怪的是,它也可以搜索 DEB 包。如果你试图找到一个特定的 DEB 包,并且在其他地方都找过了,再检查下 RPM Seek 或许是一个好主意,因为它可能有你所需要的。
|
||||
|
||||

|
||||
|
||||
### 5、 Open Suse Software
|
||||
|
||||
[Open SUSE 构建服务(OSB)][15]是 Linux 上最知名的软件构建工具之一。有了它,开发人员可以轻松地将他们的代码为许多不同的 Linux 发行版打包。因此,OSB 的包搜索允许用户下载 DEB 文件。
|
||||
|
||||
更有趣的是,许多开发人员选择使用 OSB 分发他们的软件,因为它可以轻松地生成 RPM、DEB 等。如果用户急切需要 DEB,OSB 的服务很值得去看下。
|
||||
|
||||

|
||||
|
||||
### 总结
|
||||
|
||||
寻找 Linux 发行版的包可能是乏味的,有时令人沮丧。想必介绍的这些网站可以让基于 Debian 的 Linux 发行版的用户在获得他们需要的软件时候更加轻松。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.maketecheasier.com/best-places-find-debs-packages/
|
||||
|
||||
作者:[Derrik Diener][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.maketecheasier.com/author/derrikdiener/
|
||||
[1]:https://www.maketecheasier.com/author/derrikdiener/
|
||||
[2]:https://www.maketecheasier.com/best-places-find-debs-packages/#comments
|
||||
[3]:https://www.maketecheasier.com/category/linux-tips/
|
||||
[4]:http://www.facebook.com/sharer.php?u=https%3A%2F%2Fwww.maketecheasier.com%2Fbest-places-find-debs-packages%2F
|
||||
[5]:http://twitter.com/share?url=https%3A%2F%2Fwww.maketecheasier.com%2Fbest-places-find-debs-packages%2F&text=5+of+the+Best+Places+to+Find+DEBs+Packages+for+Debian-Based+Linux+Distros
|
||||
[6]:mailto:?subject=5%20of%20the%20Best%20Places%20to%20Find%20DEBs%20Packages%20for%20Debian-Based%20Linux%20Distros&body=https%3A%2F%2Fwww.maketecheasier.com%2Fbest-places-find-debs-packages%2F
|
||||
[7]:https://www.maketecheasier.com/add-paypal-wordpress/
|
||||
[8]:https://www.maketecheasier.com/keep-kids-videos-out-youtube-history/
|
||||
[9]:https://support.google.com/adsense/troubleshooter/1631343
|
||||
[10]:https://www.maketecheasier.com/find-rpms-for-redhat-based-distros/
|
||||
[11]:https://launchpad.net/
|
||||
[12]:https://pkgs.org/
|
||||
[13]:http://www.getdeb.net/welcome/
|
||||
[14]:http://www.rpmseek.com/index.html
|
||||
[15]:https://build.opensuse.org/
|
@ -0,0 +1,88 @@
|
||||
在 Fedora 上使用 Redshift 改善睡眠
|
||||
===============================================
|
||||
|
||||

|
||||
|
||||
大多数电子设备发射的蓝光被认为对我们的睡眠有负面影响。作为一个尝试,我们可以在黑暗中不再使用我们的电子设备,以改善我们的睡眠。然而,由于这对我们大多数人并不是很适合,更好的方法是根据你周围环境调整屏幕的色温。实现这一点的最流行的方法之一是使用 Redshift。 Redshift 的创建者 Jon Lund Steffensen 这样描述了他的程序:
|
||||
|
||||
> Redshift 会根据你周围的环境调整屏幕的色温。如果你在夜间在屏幕前工作,它可以帮助你减少眼睛伤害。
|
||||
|
||||
Redshift 在 Fedora Workstation 上仅工作在 X11 会话中。所以如果你使用 Fedora 24,Redshift 可以工作在默认登录会话中。然而,在 Fedora 25 上,登录的默认会话是 Wayland,因此你将需要替代使用其 GNOME shell 扩展。注意,这个 GNOME Shell 扩展也适用于 X11 会话。
|
||||
|
||||
### Redshift 工具
|
||||
|
||||
#### 安装
|
||||
|
||||
Redshift 在 Fedora 的仓库中,因此我们使用下面的命令安装:
|
||||
|
||||
```
|
||||
sudo dnf install redshift
|
||||
```
|
||||
|
||||
该软件也提供了 GUI。要使用的话就安装 `redshift-gtk`。记住,这个工具只能在 X11 会话中使用:
|
||||
|
||||
#### 使用 Redshift 工具
|
||||
|
||||
用像下面的命令在命令行中运行:
|
||||
|
||||
```
|
||||
redshift -l 23.6980:133.8807 -t 5600:3400
|
||||
```
|
||||
|
||||
在以上命令中,`-l 23.6980:133.8807` 的意思是我们通知 Redshift 我们当前的位置是南纬 23.6980°,东经 133.8807°。 `-t 5600:3400` 表明你白天想要的色温是 5600,晚上是 3400。
|
||||
|
||||
色温与发射的蓝光的量成比例:较低的色温意味着较低量的蓝光。我喜欢在白天使用 5600K(6500K 是中性日光),在晚上使用 3400K(更低的色温让我觉得像盯着番茄一样),但你可以随意尝试。
|
||||
|
||||
如果你不指定位置,Redshift 会尝试使用 Geoclue 方法来确定你的位置坐标。如果此方法不起作用,你可以使用几个[网站][2]和在线地图来查找坐标。
|
||||
|
||||

|
||||
|
||||
别忘记将 Redshift 设置为自动启动,查看 [Jon 的网站][3]来获取更多信息。
|
||||
|
||||
### Redshift GNOME Shell 扩展
|
||||
|
||||
该程序不能在运行 Wayland 显示服务器(这是 Fedora 25 中的标准)的环境中工作。幸运的是,这里有一个方便的 GNOME Shell 扩展可以做到同样的工作。要安装它,请运行以下命令:
|
||||
|
||||
```
|
||||
sudo dnf copr enable mystro256/gnome-redshift
|
||||
sudo dnf install gnome-shell-extension-redshift
|
||||
```
|
||||
|
||||
从 COPR 仓库安装后,注销并重新登录你的 Fedora Workstation,然后在 GNOME Tweak 工具中启用它。关于更多信息,请查看 gnome-redshift 的 [copr 仓库][4]或 [github 仓库][5]。
|
||||
|
||||
启用扩展后,GNOME shell 右上角会出现一个小小的太阳(或月亮)图标。该扩展还提供了一个设置对话框来调整 redshift 和温度的时间。
|
||||
|
||||

|
||||
|
||||
### 相关软件
|
||||
|
||||
#### F.lux
|
||||
|
||||
Redshift 可以被看作是 F.lux 的开源变体。现在有一个 [linux 版本的 F.lux][6]。如果你不介意使用闭源软件,或者 Redshift 不能正常工作,你可以考虑使用它。
|
||||
|
||||
#### Android 版 Twilight
|
||||
|
||||
Twilight 与 Redshift 相似,但是用于 Android。它可以让你在晚上在智能手机或平板上阅读更加舒服。
|
||||
|
||||
#### Redshift plasmoid
|
||||
|
||||
这是 Redshift GUI 的 KDE 版本。你可以在 [github ][7] 中找到更多信息。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/safe-eyes-redshift/
|
||||
|
||||
作者:[novel][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://novel.id.fedoraproject.org/
|
||||
[1]:https://fedoramagazine.org/safe-eyes-redshift/
|
||||
[2]:http://www.latlong.net/
|
||||
[3]:http://jonls.dk/redshift/
|
||||
[4]:https://copr.fedorainfracloud.org/coprs/mystro256/gnome-redshift/
|
||||
[5]:https://github.com/benzea/gnome-shell-extension-redshift
|
||||
[6]:https://justgetflux.com/linux.html
|
||||
[7]:https://github.com/simgunz/redshift-plasmoid
|
129
published/20170119 How to get started contributing to Mozilla.md
Normal file
129
published/20170119 How to get started contributing to Mozilla.md
Normal file
@ -0,0 +1,129 @@
|
||||
如何向 Mozilla 开源社区做贡献
|
||||
============================================================
|
||||
|
||||

|
||||
|
||||
opensource.com 供图
|
||||
|
||||
_千里之行,始于足下(The journey of a thousand miles begins with one step) —— 老子_
|
||||
|
||||
参与开源工作有很多好处,可以帮助你优化和加速技术生涯,包括但不仅限于提高现实中的技术经验和拓展你的专业人脉。有很多你能做贡献的开源项目,无论是小型、中型、大型,还是不知名或知名的项目。在这篇文章里我们将专注于如何为网上最大最有名的开源项目之一 ,**Mozilla** ,做出贡献。
|
||||
|
||||
### 为什么要向 Mozilla 做贡献?
|
||||
|
||||
#### 现实经验
|
||||
|
||||
Mozilla 是网络上最大的开源项目之一,其也托管了许多其他的开源项目。所以,当你为像 Mozilla 这样的大型开源项目做贡献时,你能真正接触到技术领域中的事物是如何工作的,能增长关于技术术语和复杂系统功能的知识。最重要的是,你能理解如何将代码从本地系统移动到实际的代码仓库里。你将会学习在管理大型项目时,贡献者们使用的许多工具和技术,如 Github 、Docker、Bugzilla 等。
|
||||
|
||||
#### 社区联系
|
||||
|
||||
社区是任何开源项目的核心。向 Mozilla 做贡献将你与 Mozilla 的员工和顾问、资深 Mozilla 贡献者(又称 Mozillians)以及你当地的 Mozilla 社区相互联系在一起。社区里有着同样关注并致力于改善开源项目的志趣相投的人们。
|
||||
|
||||
你也能有个机会来建立在 Mozilla 社区里的专属身份,激励其他 Mozillians 同伴。如果你想的话,最后你也能指导其他人。
|
||||
|
||||
#### 活动和酷物件
|
||||
|
||||
没有点充满乐趣的活动和小礼品的社区是不完整的。Mozilla 也不例外。
|
||||
|
||||
向 Mozilla 做贡献能给你机会参加 Mozilla 的内部活动。一旦你成为熟练的 Mozilla 贡献者,你将能主持你当地的 Mozilla 活动(Mozilla 或许会予以资金支持)。当然,会另外提供些小礼品 —— 贴纸,T恤,马克杯等。
|
||||
|
||||

|
||||
|
||||
*根据 CC BY-SA 4.0 协议分享,印度 2016 Mozilla 聚会, Moin Shaikh 提供。*
|
||||
|
||||
### 如何向 Mozilla 做贡献
|
||||
|
||||
不管您是编程人员、网页设计师、品质控制测试者、翻译,或者是介于之间的任何职业,都有许多不同的方式向 Mozilla 做贡献。让我们看看以下两个主要方面:技术贡献和非技术贡献。
|
||||
|
||||

|
||||
|
||||
*根据 CC BY-SA 3.0 协议分享, [Mozilla.org][1] 供图。*
|
||||
|
||||
#### 技术贡献
|
||||
|
||||
技术贡献是给那些喜欢编程,想要用他们的代码来弄出点动静的人。有不同的用特定编程语言的项目可供施展能力。
|
||||
|
||||
* 如果喜欢 C++ ,你能向火狐的核心层和其他 Mozilla 产品做贡献。
|
||||
* 如果喜欢 JavaScript、HTML 和 CSS ,你能向火狐的前端做贡献。
|
||||
* 如果你懂得 Java ,你能向火狐移动端、火狐安卓版和 MozStumbler (LCTT 译注:MozStumbler 是 Mozilla 开源无线网络扫描程序)做贡献。
|
||||
* 如果你懂得 Python ,你能给网络服务,包括火狐同步(Firefox Sync)或者火狐账户(Firefox Accounts)做贡献。
|
||||
* 如果你懂得 Shell、Make、Perl 或者 Python ,你能给 Mozilla 的编译系统和发布引擎和自动化做贡献。
|
||||
* 如果你懂得 C 语言,你能给 NSS、Opus 和 Daala 做贡献。
|
||||
* 如果你懂得 Rust 语言,你能给 RustC、Servo(一个为并行、安全而设计的网页浏览器引擎)或者 Quantum (一个将大量 Servo 转化为 Gecko 的项目)做贡献。
|
||||
* 如果你懂得 Go 语言,你能给 Heka 做贡献,这是一个数据处理工具。
|
||||
|
||||
要获取更多信息,可以访问 <ruby>Mozilla 开发者网络<rt>Mozilla Developer Network</rt></ruby>(MDN)的[开始][3]部分来了解不同的贡献领域。
|
||||
|
||||
除了语言和代码,积极测试火狐浏览器的各个部分、火狐安卓浏览器和 Mozilla 的很多网络组件,例如火狐附加组件等,这样也能贡献你的品质保证(QA)和测试能力。
|
||||
|
||||
#### 非技术贡献
|
||||
|
||||
你也可以给 Mozilla 提供非技术贡献,专注于以下领域:品质保证(QA)测试,文档翻译,用户体验/用户界面(UX/UI)设计,Web 识别(web literacy),开源宣讲(open source advocacy),给 Mozilla 的火狐用户、雷鸟用户提供支持等。
|
||||
|
||||
**品质保证(QA)测试:** Mozilla 的 QA 团队遍及全世界,有着庞大且活跃的社区,他们深入参与到了火狐及 Mozilla 的其他项目中。QA 贡献者早期介入到各种产品,探索新的特性,记录漏洞,将已知漏洞分类,编写并执行测试用例,进行自动化测试,并从可用性角度提供有价值的反馈。想开始或者了解更多 Mozilla QA 社区资源,请访问 [Mozilla QA 社区][4] 网页。
|
||||
|
||||
**用户体验设计:** 如果你是个有创意的设计者或是个喜爱折腾色彩和图形的极客,Mozilla 在其社区里有很多位置提供给你,在那里你能设计好用易理解的、美妙的 Mozilla 项目。去看看 Mozilla GitHub page 上的[<ruby>开放设计仓库<rt>Open Design repository</rt></ruby>][5] 页面。
|
||||
|
||||
**用户支持(论坛和社交支持):** 这是成千上万像你我这样的火狐、雷鸟用户访问和发帖询问关于火狐、雷鸟问题的地方。这也是他们从像我们这样的 Mozilla 贡献者获取回答的地方。这不需要编程才华,不需要设计技能,不需要测试能力,作为火狐用户支持贡献者,你只需要有点儿火狐的知识即可上手。点击 [SUMO][7] 的“[参与其中][6]”的链接来加入用户支持。从做支持开始或许是你着手开始你的 Mozilla 旅程中最简单的部分。(注:三年前,我从社区支持论坛开始我的 Mozilla 旅程)
|
||||
|
||||
**编写知识库和帮助文章:** 如果你喜欢写作和传授知识,知识库对你来说是个好地方。 Mozilla 总是在寻找能给火狐和其它产品用英文撰写、编辑、校对文章的志愿者。每周有成千上万的用户浏览这些知识库文章,通过分享你的智慧和编写帮助文章,你也能产生强大的影响力。访问 [Mozilla 知识库][8] 页面来参与其中。
|
||||
|
||||
**本地化,又称 “L10N”:** (LCTT 译注:L10N 是 localization 的缩写形式,意即在 l 和 n 之间有 10 个字母) Mozilla 的产品,例如火狐,被全世界数百万讲着不同语言的人们所使用着。人们需要这些产品以他们的语言显示。语言本地化是个非常需要志愿者的领域。需要你的翻译和本地化能力的项目包括:
|
||||
|
||||
* Mozilla 产品,例如火狐
|
||||
* Mozilla 网页和服务
|
||||
* Mozilla 市场活动
|
||||
* SUMO 产品支持文档
|
||||
* MDN 开发者文档
|
||||
|
||||
你可以访问 [Mozilla 本地化][9]页面来参与其中。
|
||||
|
||||
**教授和 Web 识别(web literacy)能力:** Mozilla 基本使命目标之一是使所有人都可访问网络。为了实现这个目标使命,Mozilla 通过提供 web 识别工具和技术来致力于教育和帮助 Web 用户。这是可以用你的教授技能来帮助他人的地方。如果你是一位喜欢分享知识、给民众展示关于互联网相关东西的热情的老师,来看一下 Mozilla 发起的 [Web 教育][10]活动。将互联网和 web 识别教给你当地社区、学校孩子、你的朋友和其他有关的人。
|
||||
|
||||
**宣讲:** 如果你对 Mozilla 的使命充满热情,你能通过倡导 Mozilla 的使命来传播使命内容。当倡导 Mozilla 的使命时,你能做出如下来贡献:
|
||||
|
||||
* 捍卫公共规则,为开放的互联网和用户隐私做斗争。
|
||||
* 跟网站管理者在兼容性方面合作,提高网站的互操作性。
|
||||
* 帮助网络作者提升在开放网络方面的文章写作。
|
||||
* 成为[火狐朋友(Firefox Friends)][2],展示你作为 Mozilla 和火狐贡献者的自豪。
|
||||
|
||||
想要开始帮助宣传 Mozilla 使命,看一下 [Mozilla 宣讲][11] 页面。
|
||||
|
||||
### 如果你还有疑惑,我来帮你开始!
|
||||
|
||||
我知道,作为一个新来的贡献者,这篇文章或许给你太多的信息。如果你需要更深入的方向、更多的资源资料,你可以在下面的评论中问我,或者[在 Twitter 里私信我][12],我很乐意帮助你开始向 Mozilla 做出第一次的贡献(或者更多!)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||

|
||||
|
||||
Moin Shaikh 是一个开源科技极客,职业是网页分析,有着 7 年多的 IT 工作经验。主要贡献领域:火狐网络 QA ,火狐技术支持,本地化和社区指导。除了开源贡献,还学习并身体力行于用户体验、物料设计和电子商务分析。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/17/1/how-get-started-contributing-mozilla
|
||||
|
||||
作者:[Moin Shaikh][a]
|
||||
译者:[ypingcn](https://github.com/ypingcn)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/moinshaikh
|
||||
[1]: http://mozilla.org/
|
||||
[2]: https://www.mozilla.org/en-US/contribute/friends/
|
||||
[3]: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Introduction#Find_a_bug_we've_identified_as_a_good_fit_for_new_contributors.
|
||||
[4]: https://quality.mozilla.org/get-involved/
|
||||
[5]: https://github.com/mozilla/OpenDesign
|
||||
[6]: https://support.mozilla.org/en-US/get-involved/questions
|
||||
[7]: http://support.mozilla.org/
|
||||
[8]: https://support.mozilla.org/en-US/get-involved/kb
|
||||
[9]: https://l10n.mozilla.org/
|
||||
[10]: https://learning.mozilla.org/en-US/
|
||||
[11]: https://advocacy.mozilla.org/en-US
|
||||
[12]: https://twitter.com/moingshaikh
|
||||
|
||||
|
||||
|
@ -0,0 +1,86 @@
|
||||
在 Linux 中安装最新的 Thunderbird 邮件客户端
|
||||
============================================================
|
||||
|
||||
雷鸟(Thunderbird) 是一个开源自由的跨平台的基于 web 的电子邮件、新闻和聊天客户端应用程序,其旨在处理多个电子邮件帐户和新闻源。
|
||||
|
||||
在 2016 年 12 月 28 日,Mozilla 团队宣布 Thunderbird 45.6.0 的发布。这个新版本带有如下功能:
|
||||
|
||||
### Thunderbird 45.6.0 功能
|
||||
|
||||
1. 每次启动 Thunderbird 时都会显示系统集成对话框
|
||||
2. 各种错误修复和性能改进。
|
||||
3. 各种安全修复。
|
||||
|
||||
查看更多关于 Thunderbird 45.6.0 版本的新功能和已知问题在 [Thunderbird 发行说明][1]中有。
|
||||
|
||||
本文将解释如何在 Linux 发行版(如 Fedora、Ubuntu 及其衍生版)中安装 Thunderbird 邮件客户端。
|
||||
|
||||
在许多 Linux 发行版中,Thunderbird 包已经默认包含在内,并且可以使用默认包管理系统来安装,这样可以:
|
||||
|
||||
1. 确保你具有所有需要的库
|
||||
2. 添加桌面快捷方式以启动 Thunderbird
|
||||
3. 使 Thunderbird 可供计算机上的所有系统用户访问
|
||||
4. 它可能不会为你提供最新版本的 Thunderbird
|
||||
|
||||
### 在 Linux 中安装 Thunderbird 邮件客户端
|
||||
|
||||
要从系统默认仓库中安装 Thunderbird:
|
||||
|
||||
```
|
||||
$ sudo apt-get install thunderbird [在基于 Ubuntu 的系统中]
|
||||
$ dnf install thunderbird [在基于 Fedora 的系统中]
|
||||
```
|
||||
|
||||
如我所说,从默认仓库中安装的话将带给你的是旧版本 Thunderbird。如果要安装最新版本的 Mozilla Thunderbird,可以使用 Mozilla 团队维护的 PPA。
|
||||
|
||||
在 Ubuntu 及其衍生版中使用 `CTRL + ALT + T` 从桌面打开终端并添加 Thunderbird 仓库。
|
||||
|
||||
```
|
||||
$ sudo add-apt-repository ppa:ubuntu-mozilla-security/ppa
|
||||
```
|
||||
|
||||
接下来,使用 `update` 命令升级软件包。
|
||||
|
||||
```
|
||||
$ sudo apt-get update
|
||||
```
|
||||
|
||||
系统升级完成后,使用下面的命令安装。
|
||||
|
||||
```
|
||||
$ sudo apt-get install thunderbird
|
||||
```
|
||||
|
||||
### Thunderbird 预览
|
||||
|
||||
[
|
||||

|
||||
][2]
|
||||
|
||||
*在 Linux 中安装 Thunderbird*
|
||||
|
||||
就是这样了,你已经成功在 Linux 中安装了 Thunderbird 45.6.0。在 [Thunderbird 下载页][3]中 Thunderbird 还可用于其他操作系统。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||

|
||||
|
||||
我是 Ravi Saive,TecMint 的创建者。一个喜欢在互联网上分享技巧和提示的计算机 Geek 和 Linux 大师。我的大多数服务器运行在 Linux 开源平台上。在 Twitter、Facebook 和 Google+ 上关注我。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
via: http://www.tecmint.com/install-thunderbird-in-ubuntu-fedora-linux/
|
||||
|
||||
作者:[Ravi Saive][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/admin/
|
||||
[1]:https://www.mozilla.org/en-US/thunderbird/45.6.0/releasenotes/
|
||||
[2]:http://www.tecmint.com/wp-content/uploads/2012/11/Install-Thunderbird-in-Linux.png
|
||||
[3]:http://www.mozilla.org/en-US/products/thunderbird/
|
@ -0,0 +1,99 @@
|
||||
如何在 Kali Linux 中安装 Google Chrome 浏览器
|
||||
====================
|
||||
|
||||
### 介绍
|
||||
|
||||
**目的**
|
||||
|
||||
我们的目标就是在 Kali Linux 上安装好 Google Chrome Web 浏览器。同时,请参阅附录为可能出现的问题进行排查。
|
||||
|
||||
**要求**
|
||||
|
||||
需要获得已安装 Kali Linux 或者 Live 系统的特权。
|
||||
|
||||
**困难程度**
|
||||
|
||||
容易。
|
||||
|
||||
**惯例**
|
||||
|
||||
- `#` - 给定命令需要以 root 用户权限运行或者使用 `sudo` 命令
|
||||
- `$` - 给定命令以常规权限用户运行
|
||||
|
||||
### 步骤说明
|
||||
|
||||
**下载 Google Chrome**
|
||||
|
||||
首先,使用 `wget` 命令来下载最新版本的 Google Chrome 的 debian 安装包。
|
||||
|
||||
```
|
||||
# wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
|
||||
```
|
||||
|
||||
**安装 Google Chrome**
|
||||
|
||||
在 Kali Linux 安装 Google Chrome 最容易的方法就是使用 `gdebi`,它会自动帮你下载所有的依赖包。
|
||||
|
||||
```
|
||||
# gdebi google-chrome-stable_current_amd64.deb
|
||||
```
|
||||
|
||||
**启动 Google Chrome**
|
||||
|
||||
开启一个终端(terminal),执行 `google-chrome` 命令来启动 Google Chrome 浏览器。
|
||||
|
||||
```
|
||||
$ google-chrome
|
||||
```
|
||||
|
||||
### 附录
|
||||
|
||||
**非法指令 (Illegal Instruction)**
|
||||
|
||||
当以 root 用户特权来运行 `google-chrome` 命令是,会出现 非法指令 (Illegal Instruction) 错误信息。因为通常情况下,Kali Linux 默认情况下的默认用户是 root 用户,我们需要创建一个虚的非特权用户,比如 `linuxconfig`,然后使用这个用户来启动 Google Chrome 浏览器。如下:
|
||||
|
||||
```
|
||||
# useradd -m -d /home/linuxconfig linuxconfig
|
||||
# su linuxconfig -c google-chrome
|
||||
```
|
||||
|
||||
**libappindicator1 包未安装**
|
||||
|
||||
```
|
||||
dpkg: dependency problems prevent configuration of google-chrome-stable:
|
||||
google-chrome-stable depends on libappindicator1; however:
|
||||
Package libappindicator1 is not installed.
|
||||
```
|
||||
|
||||
使用 `gdebi` 命令来安装 Google Chrome 的 debian 包可以解决依赖问题。参阅上文。
|
||||
|
||||

|
||||
|
||||
-------------------------------
|
||||
|
||||
译者简介:
|
||||
|
||||
[GHLandy](http://GHLandy.com) —— 生活中所有欢乐与苦闷都应藏在心中,有些事儿注定无人知晓,自己也无从说起。
|
||||
|
||||
-------------------------------
|
||||
|
||||
via: https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux
|
||||
|
||||
作者:[Lubos Rendek][a]
|
||||
译者:[GHLandy](https://github.com/GHLandy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux
|
||||
[1]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux#h5-4-1-illegal-instruction
|
||||
[2]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux#h5-4-2-package-libappindicator1-is-not-installed
|
||||
[3]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux#h5-1-download-google-chrome
|
||||
[4]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux#h5-2-install-google-chrome
|
||||
[5]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux#h5-3-start-google-chrome
|
||||
[6]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux#h5-4-appendix
|
||||
[7]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux#h1-objective
|
||||
[8]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux#h2-requirements
|
||||
[9]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux#h3-difficulty
|
||||
[10]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux#h4-conventions
|
||||
[11]:https://linuxconfig.org/how-to-install-google-chrome-browser-on-kali-linux#h5-instructions
|
@ -0,0 +1,97 @@
|
||||
如何在 Kali Linux 上安装 SSH 服务
|
||||
===============
|
||||
|
||||
### 介绍
|
||||
|
||||
**目的**
|
||||
|
||||
我们的目的是 Kali Linux 上安装 SSH(安全 shell)。
|
||||
|
||||
**要求**
|
||||
|
||||
你需要有特权访问你的 Kali Linux 安装或者 Live 系统。
|
||||
|
||||
**困难程度**
|
||||
|
||||
很容易!
|
||||
|
||||
**惯例**
|
||||
|
||||
- `#` - 给定命令需要以 root 用户权限运行或者使用 `sudo` 命令
|
||||
- `$` - 给定命令以常规权限用户运行
|
||||
|
||||
### 指导
|
||||
|
||||
**安装 SSH**
|
||||
|
||||
从终端使用 `apt-get` 命令安装 SSH 包:
|
||||
|
||||
```
|
||||
# apt-get update
|
||||
# apt-get install ssh
|
||||
```
|
||||
|
||||
**启用和开始使用 SSH**
|
||||
|
||||
为了确保安全 shell 能够使用,在重启系统后使用 `systemctl` 命令来启用它:
|
||||
|
||||
```
|
||||
# systemctl enable ssh
|
||||
```
|
||||
|
||||
在当前对话执行中使用 SSH:
|
||||
|
||||
```
|
||||
# service ssh start
|
||||
```
|
||||
|
||||
**允许 SSH Root 访问**
|
||||
|
||||
默认情况下 SSH 不允许以 root 用户登录,因此将会出现下面的错误提示信息:
|
||||
|
||||
```
|
||||
Permission denied, please try again.
|
||||
```
|
||||
|
||||
为了通过 SSH 进入你的 Kali Linux 系统,你可以有两个不同的选择。第一个选择是创建一个新的非特权用户然后使用它的身份来登录。第二个选择,你可以以 root 用户访问 SSH 。为了实现这件事,需要在SSH 配置文件 `/etc/ssh/sshd_config` 中插入下面这些行内容或对其进行编辑:
|
||||
|
||||
将
|
||||
|
||||
```
|
||||
#PermitRootLogin prohibit-password
|
||||
```
|
||||
|
||||
改为:
|
||||
|
||||
```
|
||||
PermitRootLogin yes
|
||||
```
|
||||
|
||||

|
||||
|
||||
对 `/etc/ssh/sshd_config` 进行更改以后,需在以 root 用户登录 SSH 前重启 SSH 服务:
|
||||
|
||||
```
|
||||
# service ssh restart
|
||||
```
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://linuxconfig.org/how-to-install-ssh-secure-shell-service-on-kali-linux
|
||||
|
||||
作者:[Lubos Rendek][a]
|
||||
译者:[ucasFL](https://github.com/ucasFL)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://linuxconfig.org/how-to-install-ssh-secure-shell-service-on-kali-linux
|
||||
[1]:https://linuxconfig.org/how-to-install-ssh-secure-shell-service-on-kali-linux#h5-1-install-ssh
|
||||
[2]:https://linuxconfig.org/how-to-install-ssh-secure-shell-service-on-kali-linux#h5-2-enable-and-start-ssh
|
||||
[3]:https://linuxconfig.org/how-to-install-ssh-secure-shell-service-on-kali-linux#h5-3-allow-ssh-root-access
|
||||
[4]:https://linuxconfig.org/how-to-install-ssh-secure-shell-service-on-kali-linux#h1-objective
|
||||
[5]:https://linuxconfig.org/how-to-install-ssh-secure-shell-service-on-kali-linux#h2-requirements
|
||||
[6]:https://linuxconfig.org/how-to-install-ssh-secure-shell-service-on-kali-linux#h3-difficulty
|
||||
[7]:https://linuxconfig.org/how-to-install-ssh-secure-shell-service-on-kali-linux#h4-conventions
|
||||
[8]:https://linuxconfig.org/how-to-install-ssh-secure-shell-service-on-kali-linux#h5-instructions
|
@ -0,0 +1,104 @@
|
||||
如何隐藏 Apache 版本号和其它敏感信息
|
||||
============================================================
|
||||
|
||||
当远程请求发送到你的 Apache Web 服务器时,在默认情况下,一些有价值的信息,如 web 服务器版本号、服务器操作系统详细信息、已安装的 Apache 模块等等,会随服务器生成的文档发回客户端。
|
||||
|
||||
这给攻击者利用漏洞并获取对 web 服务器的访问提供了很多有用的信息。为了避免显示 web 服务器信息,我们将在本文中演示如何使用特定的 Apache 指令隐藏 Apache Web 服务器的信息。
|
||||
|
||||
**推荐阅读:** [13 个有用的 Apache 服务器安全贴士][1]。
|
||||
|
||||
两个重要的指令是:
|
||||
|
||||
### ServerSignature
|
||||
|
||||
这允许在服务器生成的文档(如错误消息、mod_proxy 的 ftp 目录列表、mod_info 输出等等)下添加一个显示服务器名称和版本号的页脚行。
|
||||
|
||||
它有三个可能的值:
|
||||
|
||||
- `On` - 允许在服务器生成的文档中添加尾部页脚行,
|
||||
- `Off` - 禁用页脚行
|
||||
- `EMail` - 创建一个 “**mailto:**” 引用;用于将邮件发送到所引用文档的 ServerAdmin。
|
||||
|
||||
### ServerTokens
|
||||
|
||||
它决定了发送回客户端的服务器响应头字段是否包含服务器操作系统类型的描述和有关已启用的 Apache 模块的信息。
|
||||
|
||||
此指令具有以下可能的值(以及在设置特定值时发送到客户端的示例信息):
|
||||
|
||||
```
|
||||
ServerTokens Full (或者不指定)
|
||||
```
|
||||
发送给客户端的信息: `Server: Apache/2.4.2 (Unix) PHP/4.2.2 MyMod/1.2`
|
||||
```
|
||||
ServerTokens Prod[uctOnly]
|
||||
```
|
||||
发送给客户端的信息: `Server: Apache`
|
||||
```
|
||||
ServerTokens Major
|
||||
```
|
||||
发送给客户端的信息: `Server: Apache/2`
|
||||
```
|
||||
ServerTokens Minor
|
||||
```
|
||||
发送给客户端的信息: `Server: Apache/2.4`
|
||||
```
|
||||
ServerTokens Min[imal]
|
||||
```
|
||||
发送给客户端的信息:`Server: Apache/2.4.2`
|
||||
```
|
||||
ServerTokens OS
|
||||
```
|
||||
发送给客户端的信息: `Server: Apache/2.4.2 (Unix)`
|
||||
|
||||
|
||||
**注意**:在 Apache **2.0.44** 之后,`ServerTokens` 也控制由 `ServerSignature` 指令提供的信息。
|
||||
|
||||
**推荐阅读:** [5 个加速 Apache Web 服务器的贴士][2]。
|
||||
|
||||
为了隐藏 web 服务器版本号、服务器操作系统细节、已安装的 Apache 模块等等,使用你最喜欢的编辑器打开 Apache 配置文件:
|
||||
|
||||
```
|
||||
$ sudo vi /etc/apache2/apache2.conf #Debian/Ubuntu systems
|
||||
$ sudo vi /etc/httpd/conf/httpd.conf #RHEL/CentOS systems
|
||||
```
|
||||
|
||||
添加/修改/附加下面的行:
|
||||
|
||||
```
|
||||
ServerTokens Prod
|
||||
ServerSignature Off
|
||||
```
|
||||
|
||||
保存并退出文件,重启你的 Apache 服务器:
|
||||
|
||||
```
|
||||
$ sudo systemctl apache2 restart #SystemD
|
||||
$ sudo sevice apache2 restart #SysVInit
|
||||
```
|
||||
|
||||
本篇中,我们解释了如何使用特定的 Apache 指令隐藏Apache web 服务器版本号及其他信息。
|
||||
|
||||
如果你在 Apache 中运行 PHP,我建议你[隐藏 PHP 版本号][3]。
|
||||
|
||||
如往常一样,你可以在评论栏中写下你的想法。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 及 web 开发者,目前是 TecMint 的内容创作者,他喜欢用电脑工作,并坚信分享知识。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/hide-apache-web-server-version-information/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/apache-security-tips/
|
||||
[2]:http://www.tecmint.com/apache-performance-tuning/
|
||||
[3]:http://www.tecmint.com/hide-php-version-http-header/
|
@ -0,0 +1,99 @@
|
||||
如何在 HTTP 头中隐藏 PHP 版本号
|
||||
============================================================
|
||||
|
||||
PHP 配置默认允许服务器在 HTTP 响应头 `X-Powered-By` 中显示安装在服务器上的 PHP 版本。
|
||||
|
||||
出于服务器安全原因(虽然不是主要的要担心的威胁),建议你禁用或隐藏此信息,避免那些针对你的服务器的攻击者知道你是否运行了 PHP。
|
||||
|
||||
假设你服务器上安装的特定版本的 PHP 具有安全漏洞,另一方面,攻击者可以了解这一点,他们将更容易利用漏洞并通过脚本访问服务器。
|
||||
|
||||
在我以前的文章中,我已经展示了[如何隐藏 apache 版本号][1],你已经看到如何不再显示 apache 的安装版本。但是如果你在你的 apache 服务器上运行 PHP,你还需要隐藏 PHP 的安装版本,这我们将在本文中展示。
|
||||
|
||||
因此,在本文中,我们将解释如何隐藏或关闭服务器 HTTP 响应头中的 PHP 版本号。
|
||||
|
||||
此设置可以在加载的 PHP 配置文件中配置。如果你不知道此配置文件在服务器上的位置,请运行以下命令找到它:
|
||||
|
||||
```
|
||||
$ php -i | grep "Loaded Configuration File"
|
||||
```
|
||||
PHP 配置文件位置
|
||||
```
|
||||
---------------- 在 CentOS/RHEL/Fedora 上----------------
|
||||
Loaded Configuration File => /etc/php.ini
|
||||
---------------- 在 Debian/Ubuntu/Linux Mint 上----------------
|
||||
Loaded Configuration File => /etc/php/7.0/cli/php.ini
|
||||
```
|
||||
|
||||
在对 PHP 配置文件进行任何更改之前,我建议您首先备份您的 PHP 配置文件,如下所示:
|
||||
|
||||
```
|
||||
----------------在 CentOS/RHEL/Fedora 上----------------
|
||||
$ sudo cp /etc/php.ini /etc/php.ini.orig
|
||||
---------------- 在 Debian/Ubuntu/Linux Mint 上----------------
|
||||
$ sudo cp /etc/php/7.0/cli/php.ini /etc/php/7.0/cli/php.ini.orig
|
||||
```
|
||||
|
||||
[用你最喜欢的编辑器][2],使用超级用户权限打开文件:
|
||||
|
||||
```
|
||||
---------------- 在 CentOS/RHEL/Fedora 上----------------
|
||||
$ sudo vi /etc/php.ini
|
||||
----------------在 Debian/Ubuntu/Linux Mint 上----------------
|
||||
$ sudo vi /etc/php/7.0/cli/php.ini
|
||||
```
|
||||
|
||||
定位到关键词 `expose_php`,并将值设置成 `Off`:
|
||||
|
||||
```
|
||||
expose_php = Off
|
||||
```
|
||||
|
||||
保存并退出文件。之后,重启 web 服务器:
|
||||
|
||||
```
|
||||
---------------- 使用 SystemD ----------------
|
||||
$ sudo systemctl restart httpd
|
||||
$ sudo systemctl restart apache2
|
||||
---------------- 使用 SysVInit ----------------
|
||||
$ sudo service httpd restart
|
||||
$ sudo service apache2 restart
|
||||
```
|
||||
|
||||
最后,不过同样重要,使用下面的命令检查服务器 HTTP 响应头是否仍然显示你的 PHP 版本号。
|
||||
|
||||
```
|
||||
$ lynx -head -mime_header http://localhost
|
||||
或者
|
||||
$ lynx -head -mime_header http://server-address
|
||||
```
|
||||
|
||||
这里的标志含义是:
|
||||
|
||||
- `-head` – 发送一个请求 mime 报头的 HEAD 请求。
|
||||
- `-mime_header` – 打印所提取文档的 MIME 标头及其源代码。
|
||||
|
||||
**注意**: 确保你系统中已经安装了[命令行 web 浏览器 lynx][3]。
|
||||
|
||||
就是这样了!在本文中,我们解释了如何隐藏服务器 HTTP 响应头中的 PHP 版本号以保护 web 服务器免受可能的攻击。你可以在下面的评论栏中留下你的想法或者相关的问题。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 及 web 开发者,目前是 TecMint 的内容创作者,他喜欢用电脑工作,并坚信分享知识。
|
||||
|
||||
---------------------------------------------------------------------------------
|
||||
|
||||
|
||||
via: http://www.tecmint.com/hide-php-version-http-header/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/hide-apache-web-server-version-information/
|
||||
[2]:http://www.tecmint.com/linux-command-line-editors/
|
||||
[3]:http://www.tecmint.com/command-line-web-browsers/
|
@ -0,0 +1,92 @@
|
||||
如何在 Linux 中不输入密码运行 sudo 命令
|
||||
============================================================
|
||||
|
||||
假设你在只有自己使用的计算机上运行 Linux 系统,比如在笔记本电脑上,在每次调用 **sudo** 时需要输入密码,长期下来就会觉得很乏味。因此,在本指南中,我们将描述[如何配置 sudo 命令][4]在运行时而不输入密码。
|
||||
|
||||
此设置在 `/etc/sudoers` 文件中完成,这是使用 [sudo 命令][5]的默认安全策略;在用户权限指定部分。
|
||||
|
||||
**重要**:在 `sudeors` 文件中,默认打开的 `authenticate` 参数用于验证目的。如果设置了它,用户必须通过密码(或其他身份验证方法)进行身份验证,然后才能使用 `sudo` 运行命令。
|
||||
|
||||
但是,可以使用 `NOPASSWD`(当用户调用 `sudo` 命令时不需要密码)标记来覆盖此默认值。
|
||||
|
||||
配置用户权限的语法如下:
|
||||
|
||||
```
|
||||
user_list host_list=effective_user_list tag_list command_list
|
||||
```
|
||||
|
||||
其中:
|
||||
|
||||
1. `user_list` - 用户列表或已经设置的用户别名。
|
||||
2. `host_list` - 主机列表或用户可以在其上运行 sudo 的主机别名。
|
||||
3. `effective_user_list` - 以该用户或别名运行的用户列表
|
||||
4. `tag_list` - 标签列表,如 `NOPASSWD`。
|
||||
5. `command_list` - 用户使用 `sudo` 运行的命令或命令别名列表。
|
||||
|
||||
要允许用户(下面的示例中的 `aaronkilik`)使用 `sudo` 不输入密码即可运行所有命令,请打开 `sudoers` 文件:
|
||||
|
||||
```
|
||||
$ sudo visudo
|
||||
```
|
||||
|
||||
添加下面的行:
|
||||
|
||||
```
|
||||
aaronkilik ALL=(ALL) NOPASSWD: ALL
|
||||
```
|
||||
|
||||
对于组而言,在组名前面使用 `%` 字符;这意味着 `sys` 组的所有成员都可以不用密码使用 `sudo`。
|
||||
|
||||
```
|
||||
%sys ALL=(ALL) NOPASSWD: ALL
|
||||
```
|
||||
|
||||
要允许用户不用密码使用 `sudo` 运行指定命令(`/bin/kill`),添加下面的行:
|
||||
|
||||
```
|
||||
aaronkilik ALL=(ALL) NOPASSWD: /bin/kill
|
||||
```
|
||||
|
||||
下面的行会让 `sys` 组成员在使用 `sudo` 运行命令:`/bin/kill`、`/bin/rm` 时不用输入密码:
|
||||
|
||||
```
|
||||
%sys ALL=(ALL) NOPASSWD: /bin/kill, /bin/rm
|
||||
```
|
||||
[
|
||||

|
||||
][6]
|
||||
|
||||
*不用密码运行 sudo*
|
||||
|
||||
对于更多的 `sudo` 配置和其他使用选项,请阅读我们有更多例子描述的文章,:
|
||||
|
||||
- [在 Linux 中设置 sudo 的十条 sudoers 实用配置][1]
|
||||
- [让 sudo 在你输入错误的密码时“嘲讽”你][2]
|
||||
- [如何在 Linux 中让 sudo 密码会话的超时更长些][3]
|
||||
|
||||
在本篇中,我们讨论了如何配置 sudo 命令来不用输入密码运行。不要忘记在评论栏中给我们提供你关于这份指导的想法和其他对于 Linux 系统管理员有用的 sudoers 配置。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 及 web 开发者,目前是 TecMint 的内容创作者,他喜欢用电脑工作,并坚信分享知识。
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
via: http://www.tecmint.com/run-sudo-command-without-password-linux/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:https://linux.cn/article-8145-1.html
|
||||
[2]:https://linux.cn/article-8128-1.html
|
||||
[3]:https://linux.cn/article-8151-1.html
|
||||
[4]:http://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/
|
||||
[5]:http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/
|
||||
[6]:http://www.tecmint.com/wp-content/uploads/2017/01/Run-sudo-Without-Password.png
|
@ -0,0 +1,57 @@
|
||||
在 Linux 中使用 SSD(固态驱动器):启用 TRIM
|
||||
============================================================
|
||||
|
||||

|
||||
|
||||
图片提供: opensource.com
|
||||
|
||||
当我在运行 Linux 的计算机上安装我的第一块固态驱动器(SSD)后,我开始探索如何用好它们。SSD 在操作方式上与传统磁性驱动器不同,并且它们需要在软件上另行处理以达到功能优化。
|
||||
|
||||
在传统磁盘驱动器上,删除时所删除的文件不会从磁盘中完全删除。这就是为什么你可以恢复已删除的文件的原因。基本上,文件系统仅引用磁盘上文件的位置,并且当文件被删除时,该引用被擦除,以允许你在这些空间中写入新数据覆盖原来的数据。然而,对于 SSD,新数据只能写在驱动器上完全新的或已擦除的单元上。因为必须在写入之前清除空间,如果在写入文件时尚未有足够的可用空间,则必须首先擦除该空间。这可能会对性能产生负面影响。
|
||||
|
||||
如果操作系统在写入新数据之前就擦除了未使用的空间,而不是在写入时同时进行擦除,则可以提高文件保存性能。这种做法就是 [TRIM][1]。 TRIM 命令本质上允许你的操作系统告诉驱动器哪些区域的数据不再使用,以便擦除它们,加快驱动器将来的写入,可以 SSD 的用户提供更佳的体验。
|
||||
|
||||
在 Linux 中,`fstrim` 提供此功能,它可以为写入新数据而准备驱动器,并延长驱动器的使用寿命。由于在我使用的 Linux 发行版上 SSD 的 trim 不是自动的,所以必须去调度该操作,否则 SSD 的性能会随着时间的推移而降低。
|
||||
|
||||
为了在驱动器上运行 `fstrim`,驱动器本身以及其上的文件系统必须支持 TRIM。在文件系统挂载过程中可以启用 TRIM。例如,为了将设备 `/dev/sda2` 启用 TRIM 挂载到 `/mnt`,你要运行:
|
||||
|
||||
```
|
||||
mount -t ext4 -o discard /dev/sda2 /mnt
|
||||
```
|
||||
|
||||
一旦启用,TRIM 过程本身就相当简单。TRIM SSD 也可以在命令行或 cron 任务中手动完成。作为超级用户(使用 `su` 或 `sudo`),运行 `fstrim / -v` 以完成手动 trim,或者设置 cron 任务以在计算机未使用时定期为你运行此命令。对于 `fstrim` 的完整选项列表请参考它的 [man 手册][3]。
|
||||
|
||||
硬件支持根据使用的驱动器接口类型如 PCI、[ATA][4]、[SCSI][5] 还是 [SD/MMC][6] 而有所不同。你需要咨询你的 Linux 供应商以了解你的特定发行版是如何支持 TRIM 的。
|
||||
|
||||
例如,红帽提供以下 [SSD 磁盘指南][7]。“性能随着所使用的块数接近磁盘容量而降低,性能影响程度因供应商而异,但是所有设备都会遇到一些性能降低。为了解决性能降低问题,主机系统(例如 Linux 内核)使用丢弃请求以通知存储器给定范围的块不再使用。”
|
||||
|
||||
[Debian wiki][8] 提供了 SSD 使用的一些基本注意事项:使用 Linux 3.2 或更高版本内核,使用 SSD 的最新固件,使用 EXT4 文件系统,并且“在正常工作负载下有足够的 DRAM 用来操作而不用使用交换空间“。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
Don Watkins - 教育家、教育技术专家、企业家、开源倡导者。教育心理学硕士、教育领导硕士、Linux 系统管理员、CCNA、使用 Virtual Box 虚拟化。关注我 @Don_Watkins。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/17/1/solid-state-drives-linux-enabling-trim-ssds
|
||||
|
||||
作者:[Don Watkins][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/don-watkins
|
||||
[1]:https://en.wikipedia.org/wiki/Trim_(computing)
|
||||
[2]:https://opensource.com/article/17/1/solid-state-drives-linux-enabling-trim-ssds?rate=7ZBblixmfl2icbl8HWXjIfzUr3-EUjlgkOGyEhI1DK8
|
||||
[3]:http://man7.org/linux/man-pages/man8/fstrim.8.html
|
||||
[4]:https://en.wikipedia.org/wiki/Trim_(computing)#ATA
|
||||
[5]:https://en.wikipedia.org/wiki/Trim_(computing)#SCSI
|
||||
[6]:https://en.wikipedia.org/wiki/Trim_(computing)#SD.2FMMC
|
||||
[7]:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-ssd.html
|
||||
[8]:https://wiki.debian.org/SSDOptimization
|
||||
[9]:https://opensource.com/user/15542/feed
|
||||
[10]:https://opensource.com/article/17/1/solid-state-drives-linux-enabling-trim-ssds#comments
|
||||
[11]:https://opensource.com/users/don-watkins
|
@ -0,0 +1,96 @@
|
||||
使用 .htaccess 文件禁用 Web 目录列举
|
||||
===========
|
||||
|
||||
[确保 Apache web 服务器安全][3] 是最重要的任务之一,特别是在你的网站刚刚搭建好的时侯。
|
||||
|
||||
比方说,如果你 Apache 服务目录 (`/var/www/tecmint` 或 `/var/www/html/tecmint`) 下创建一个名为 `tecmint` 的目录,并且忘记在该目录放置 `index.html`,你会惊奇的发现所有访问者都可以在浏览器输入 **http://www.example.com/tecmint** 来完整列举所有在该目录中的重要文件和文件夹。
|
||||
|
||||
本文将为你展示如何使用 `.htaccess` 文件禁用或阻止 Apache 服务器目录列举。
|
||||
|
||||
以下便是不存在 `index.html` ,且未采取防范措施前,目录的列举的情况。
|
||||
|
||||
[][4]
|
||||
|
||||
*Apache 目录列举*
|
||||
|
||||
首先,`.htaccess` (**hypertext access**) 是一个文件,它可以让站点管理员控制服务器的环境变量以及其他的重要选项,用以增强他/她的站点功能。
|
||||
|
||||
欲知更多关于该重要文件的信息,请阅读以下文章,以便通过 `.htaccess` 的方法来确保 Apache Web 服务器的安全。
|
||||
|
||||
1. [确保 Apache Web 服务器安全的 25 条 .htaccess 设置技巧][1]
|
||||
2. [使用 .htaccess 为 Apache Web 目录进行密码保护][2]
|
||||
|
||||
使用这一简单方法,在站点目录树中的任意/每个目录创建 `.htaccess` 文件,以便为站点根目录、子目录和其中的文件提供保护支持。
|
||||
|
||||
首先要 Apache 主配置文件中为你的站点启用 `.htaccess` 文件支持。
|
||||
|
||||
```
|
||||
$ sudo vi /etc/apache2/apache2.conf #Debian/Ubuntu 系统
|
||||
$ sudo vi /etc/httpd/conf/httpd.conf #RHEL/CentOS 系统
|
||||
```
|
||||
然后寻找以下部分,其中 `AllowOverride` 指令必须设置为 `AllowOverride All`。
|
||||
|
||||
```
|
||||
<Directory /var/www/html/>
|
||||
Options Indexes FollowSymLinks
|
||||
AllowOverride All
|
||||
</Directory>
|
||||
```
|
||||
如果已存在 `.htaccess` 文件,先备份(如下),假设文件在 `/var/www/html/tecmint/` (并要禁用该目录列举):
|
||||
|
||||
```
|
||||
$ sudo cp /var/www/html/tecmint/.htaccess /var/www/html/tecmint/.htaccess.orig
|
||||
```
|
||||
|
||||
然后你就可以在某个特定的目录使用你喜欢的编辑器打开 (或创建) 它,以便修改。并添加以下内容来关闭目录列举。
|
||||
|
||||
```
|
||||
Options -Indexes
|
||||
```
|
||||
|
||||
下一步就是重启 Apache Web 服务器:
|
||||
|
||||
```
|
||||
-------- 使用 SystemD 的系统 --------
|
||||
$ sudo systemctl restart apache2
|
||||
$ sudo systemctl restart httpd
|
||||
-------- 使用 SysVInit 的系统 --------
|
||||
$ sudo /etc/init.d/apache2 restart
|
||||
$ sudo /etc/init.d/httpd restart
|
||||
```
|
||||
|
||||
现在来验证效果,在浏览器中输入:**http://www.example.com/tecmint**,你会得到类似如下的信息:
|
||||
|
||||
[][5]
|
||||
|
||||
*Apache 目录列举已禁用*
|
||||
|
||||
在本文中,我们描述了如何使用 `.htaccess` 文件来禁用 Apache Web 服务器的目录列举。之后我们会介绍两种同样简单的我方法来实现这一相同目的。随时保持联系。
|
||||
|
||||
像往常一样,在下方反馈表单中给我们发送关于本文的任何想法。
|
||||
|
||||
--------------
|
||||
|
||||
作者简介:
|
||||
|
||||
Aaron Kili 是一名 Linux 和 F.O.S.S 忠实拥护者、未来的 Linux 系统管理员、Web 开发者,目前是 TecMint 的原创作者,热衷于计算机并乐于知识分享。
|
||||
|
||||
-------------
|
||||
|
||||
译者简介:
|
||||
|
||||
[GHLandy](http://GHLandy.com) - 生活中所有欢乐与苦闷都应藏在心中,有些事儿注定无人知晓,自己也无从说起。
|
||||
|
||||
-------------
|
||||
|
||||
via: http://www.tecmint.com/disable-apache-directory-listing-htaccess/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[GHLandy](https://github.com/GHLandy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProje) 原创编译,[Linux中国](https://linux.cn) 荣誉推出
|
||||
|
||||
[1]: http://www.tecmint.com/password-protect-apache-web-directories-using-htaccess/
|
||||
[2]: http://www.tecmint.com/apache-htaccess-tricks/
|
||||
[3]: http://www.tecmint.com/apache-security-tips/
|
109
published/20170130 5 Reasons To Install Linux Today.md
Normal file
109
published/20170130 5 Reasons To Install Linux Today.md
Normal file
@ -0,0 +1,109 @@
|
||||
当今需要安装 Linux 的五大理由
|
||||
===========================
|
||||
|
||||
如果你在阅读本文,那么你可能是一个 Linux 新手或者是 Linux 的潜在用户。又或者我猜的都不对,你只是好奇于我所说的当今需要安装 Linux 的五大理由。
|
||||
|
||||
不管如何,我都欢迎你来看看我做出的解释。如果说你能够读完全文,记得使用下边的评论功能分享你的想法。
|
||||
|
||||
**建议阅读:** [关于 GNU/Linux,我所喜恶的五件事][1]
|
||||
|
||||
**声明**:以下列出的理由并非按照重要性顺序排列。也就是说,你可以从上到下或者以你愿意的顺序来进行阅读。
|
||||
|
||||
### 理由 1 – Linux 自由、免费
|
||||
|
||||
在 Linux 这个生态系统中,**“自由、免费 (free)”** 有两种含义:**1) 自由使用(Free as in freedom)** 以及 **2) 免费使用(Free as in beer)**。
|
||||
|
||||
第一个含义意味着,你可以自由使用 Linux 做你想要的任何事,比如个人使用或者商业用途。
|
||||
|
||||
第二个含义表明这样一个事实,多数 (**99%**) 的 Linux 发行版 (或者说,不同风格的 Linux) 都可以免费的下载和运行在大多数电脑上。
|
||||
|
||||
**建议阅读:** [2016 年最流行的 Linux 发行版][2]
|
||||
|
||||
商业发行版经常应用到企业环境,以便获取其后公司的技术支持。红帽公司著名的 [红帽企业级 Linux][3] 就是这样一个例子。
|
||||
|
||||
[][4]
|
||||
|
||||
*Linux 自由、免费*
|
||||
|
||||
### 理由 2 – Linux 可以使老旧设备起死回生
|
||||
|
||||
是的,你没看错。如果你有一部老旧电脑已经积满灰尘,因为它已经无法满足其他操作系统的硬件要求,那么 Linux 可以帮你拯救它。以我的经验来说,我第一台电脑 (2000 年末,我母亲给我的高中毕业礼物) 作为家庭服务器已经连续运行 5 年了 —— 一直在使用 Debian 最新的稳定版。
|
||||
|
||||
**建议阅读:** [老旧电脑和笔记本值得尝试的 6 个 Linux 发行版][5]
|
||||
|
||||
[][6]
|
||||
|
||||
*Linux 支持老旧设备*
|
||||
|
||||
### 理由 3 – Linux 是学习计算机如何工作的最好工具
|
||||
|
||||
即使是新手,访问并与电脑硬件进行交互也是相对容易的。通过诸如 [dmesg][8] (从内核中列出相关信息)等 [命令行工具][7]加上一点耐心,你可以很容易了解从你按下电源开关到加载好一个完整可用的系统到底发生了哪些事情。当然,这只是其中一个例子。
|
||||
|
||||
[][9]
|
||||
|
||||
*学习 Linux*
|
||||
|
||||
### 理由 4 – Linux 是学习编程的最好工具
|
||||
|
||||
我常常说,要是我早些认识 Linux 该多好。安装好系统之后,它就具备了开始学习 [Python 编程][10] 的必备工具。作为当今最流行的面向对象的编程语言之一,Python 在多所顶尖大学里都是计算机科学专业的主修课程。
|
||||
|
||||
[][11]
|
||||
|
||||
*学习 Linux 及 Python 编程*
|
||||
|
||||
### 理由 5 – 大量自由的世界一流软件
|
||||
|
||||
当然,我知道这与 **理由 1** 多少有些相似,但我还是决定将其列为一个独立的理由。为何?因为这为我们强调了这样一个事实,我们今天所使用的软件大多数是来自于大量志愿者的努力。
|
||||
|
||||
是的,写出这些优秀软件的人员从中不挣一分钱。在某些情况下,也有些公司为软件的开发和维护提供资金。
|
||||
|
||||
**建议阅读:** [2015 年我找到的 20 款自由开源的软件][12]
|
||||
|
||||
Linux 系统是相当稳定的,所以他们都想要将他们的软件运行其中。这就是为什么很多公司愿意为 Linux 生态系统做出大量贡献的原因 (指捐赠或者提供人力)。
|
||||
|
||||
[][13]
|
||||
|
||||
*自由开源软件*
|
||||
|
||||
### 总结
|
||||
|
||||
感谢你花费时间来阅读本文!关于我会第一时间建议他人使用的 Linux 的理由,我已经尽最大努力来阐述了。
|
||||
|
||||
如果你有不同于本文的意见,欢迎随时使用下方评论表单来分享您的观点。
|
||||
|
||||
------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
Gabriel Cánepa - 一位来自阿根廷圣路易斯梅塞德斯镇 (Villa Mercedes, San Luis, Argentina) 的 GNU/Linux 系统管理员,Web 开发者。就职于一家世界领先级的消费品公司,乐于在每天的工作中能使用 FOSS 工具来提高生产力。
|
||||
|
||||
------------------------------------
|
||||
|
||||
译者简介:
|
||||
|
||||
[GHLandy](http://GHLandy.com) —— 划不完粉腮柳眉泣别离。
|
||||
|
||||
------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/install-linux-today/
|
||||
|
||||
作者:[Gabriel Cánepa][a]
|
||||
译者:[GHLandy](https://github.com/GHLandy)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/install-linux-today/
|
||||
[1]:http://www.tecmint.com/things-i-dislike-and-love-about-gnu-linux/
|
||||
[2]:http://www.tecmint.com/top-best-linux-distributions-2016/
|
||||
[3]:http://www.tecmint.com/red-hat-rhcsa-rhce-exam-certification-book/
|
||||
[4]:http://www.tecmint.com/wp-content/uploads/2017/01/Linux-is-Free.png
|
||||
[5]:http://www.tecmint.com/linux-distributions-for-old-computers/
|
||||
[6]:http://www.tecmint.com/wp-content/uploads/2017/01/Linux-Supports-Old-Hardware.jpg
|
||||
[7]:http://www.tecmint.com/category/linux-commands/
|
||||
[8]:http://www.tecmint.com/dmesg-commands/
|
||||
[9]:http://www.tecmint.com/wp-content/uploads/2017/01/Learn-Linux.jpg
|
||||
[10]:http://www.tecmint.com/category/python/
|
||||
[11]:http://www.tecmint.com/wp-content/uploads/2017/01/Learn-Linux-with-Python-Programming.png
|
||||
[12]:http://www.tecmint.com/best-free-open-source-softwares-of-2015/
|
||||
[13]:http://www.tecmint.com/wp-content/uploads/2017/01/Free-Open-Source-Software.jpg
|
@ -0,0 +1,88 @@
|
||||
5 个用于日志记录以及监控的 DevOps 工具
|
||||
============================================================
|
||||
|
||||
|
||||

|
||||
|
||||
> 这些 DevOps 日志记录和监控工具是重塑云计算趋势的一部分 -- 在《开放云指南》中了解更多。
|
||||
|
||||
[Creative Commons Zero][1] Pixabay
|
||||
|
||||
在云中,开源工具和应用程序使 DevOps 提高了很多效率,对于日志记录和监视解决方案尤其如此。监控云平台、应用程序和组件以及处理和分析日志,对于确保高可用性、高性能、低延迟等至关重要。事实上,RightScale 最近的[云状态调查][4]报告中说,最常见的云优化的行为中,45% 的大公司和中小型企业关注的是监控。
|
||||
|
||||
然而,专有的记录和监控解决方案是昂贵的。更糟的是,它们通常捆绑更昂贵的管理服务产品。
|
||||
|
||||
现在进入强大的开放日志和监控解决方案的新浪潮。其中一些聚焦于有针对性的任务,例如容器集群的监控和性能分析,而其他作为整体监控和警报工具包,它们能够进行多维度的数据收集和查询。
|
||||
|
||||
Linux 基金会最近[发布][5]了[<ruby>《开放云指南:当前趋势和开源项目》<rt> Guide to the Open Cloud: Current Trends and Open Source Projects</rt></ruby>][6]这篇报告。这是第三份年度报告,全面地介绍了开放云计算的状态,包括为 DevOps 社区的日志记录和监控的部分。该报告现在已经可以[下载][7],它对研究进行了汇总和分析,阐述了容器、监控等的发展趋势在如何重塑云计算。该报告提供了对当今开放云环境很重要的分类项目的描述和链接。需要特别注意的是,DevOps 已经成为云中应用交付和维护的最有效方法。
|
||||
|
||||
在这里的[一系列帖子][8]中,我们按照类别从指南中列出了这些项目,并提供了该类别整体发展情况的见解。下面,你将看到一些用于记录和监视的重要 DevOps 工具集合,它们所带来的影响,以及它们的 GitHub 链接,这些都是从《[开放云指南][6]》中收集而来的:
|
||||
|
||||
### 日志记录和监控
|
||||
|
||||
#### Fluentd
|
||||
|
||||
Fluentd 是一个用于统一日志记录层的开源数据收集器,由 Treasure Data 贡献。它将数据结构化为 JSON,以统一处理日志数据的所有方面:在多个源和目标之间收集、过滤、缓冲和输出日志。
|
||||
|
||||
- [官网][9]
|
||||
- [GitHub][10]
|
||||
|
||||
#### Heapster
|
||||
|
||||
Heapster 是 Kubernetes 的一个容器集群监控和性能分析工具。它本身支持 Kubernetes 和 CoreOS,并且经过调整可以在 OpenShift 上运行。它还支持可插拔的存储后端:使用 Grafana 的 InfluxDB、Google Cloud Monitoring、Google Cloud Logging、Hawkular、Riemann 和 Kafka。
|
||||
|
||||
- [官网][11]
|
||||
- [GitHub][12]
|
||||
|
||||
#### Logstash
|
||||
|
||||
Logstash 是 Elastic 的开源数据管道,用于帮助处理来自各种系统的日志和其他事件数据。它的插件可以连接到各种源和大规模流数据到中央分析系统。
|
||||
|
||||
- [官网][13]
|
||||
- [GitHub][14]
|
||||
|
||||
#### Prometheus
|
||||
|
||||
Prometheus 是一个开源的系统监控和警报工具包,最初由 SoundCloud 构建,现在是 Linux 基金会的云计算基础项目。它适用于以机器为中心和微服务架构,并支持多维度数据收集和查询。
|
||||
|
||||
- [官网][15]
|
||||
- [GitHub][16]
|
||||
|
||||
#### Weave Scope
|
||||
|
||||
Weave Scope 是 Weaveworks 的开源工具,用于实时监控分布式应用程序及其容器。它与 Kubernetes 和 AWS ECS 集成。
|
||||
|
||||
- [官网][17]
|
||||
- [GitHub][18]
|
||||
|
||||
_要了解更多关于开源云计算的趋势,查看顶级开源云计算项目的完整列表。[现在下载 Linux 基金会的《开放云指南》报告!][3]_
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.linux.com/news/open-cloud-report/2016/5-devops-tools-logging-and-monitoring
|
||||
|
||||
作者:[SAM DEAN][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.linux.com/users/sam-dean
|
||||
[1]:https://www.linux.com/licenses/category/creative-commons-zero
|
||||
[2]:https://www.linux.com/files/images/devops-loggingjpg
|
||||
[3]:http://bit.ly/2eHQOwy
|
||||
[4]:http://www.rightscale.com/blog/cloud-industry-insights/cloud-computing-trends-2016-state-cloud-survey
|
||||
[5]:https://www.linux.com/blog/linux-foundation-issues-2016-guide-open-source-cloud-projects
|
||||
[6]:http://go.linuxfoundation.org/l/6342/2016-10-31/3krbjr?utm_source=press-release&utm_medium=pr&utm_campaign=open-cloud-report-2016
|
||||
[7]:http://go.linuxfoundation.org/l/6342/2016-10-31/3krbjr
|
||||
[8]:https://www.linux.com/news/open-cloud-report/2016/guide-open-cloud-state-micro-oses
|
||||
[9]:http://www.fluentd.org/
|
||||
[10]:https://github.com/fluent
|
||||
[11]:http://blog.kubernetes.io/2015/05/resource-usage-monitoring-kubernetes.html
|
||||
[12]:https://github.com/kubernetes/heapster
|
||||
[13]:https://www.elastic.co/products/logstash
|
||||
[14]:https://github.com/elastic/logstash
|
||||
[15]:https://prometheus.io/
|
||||
[16]:https://github.com/prometheus
|
||||
[17]:https://www.weave.works/products/weave-scope/
|
||||
[18]:https://github.com/weaveworks/scope
|
@ -0,0 +1,87 @@
|
||||
如何在 Linux 中创建一个共享目录
|
||||
============================================================
|
||||
|
||||
作为系统管理员,你可能有一个特定目录,你希望为 Linux 服务器上的每个用户授予读/写访问权限。在本指南中,我们将回顾如何在 Linux 中对特定目录(共享目录)上的所有用户启用写访问。
|
||||
|
||||
这要求设置适当的访问权限,而最有效、可靠的方法是为所有要共享或对特定目录的写访问权的用户分配一个公共组。
|
||||
|
||||
如果你系统中还没有存在这个目录和公众组,用下面的命令创建:
|
||||
|
||||
```
|
||||
$ sudo mkdir -p /var/www/reports/
|
||||
$ sudo groupadd project
|
||||
```
|
||||
|
||||
接着将对目录 `/var/www/reports/` 有写权限的用户添加到 `project` 组中。
|
||||
|
||||
```
|
||||
$ sudo usermod -a -G project tecmint
|
||||
```
|
||||
[
|
||||

|
||||
][1]
|
||||
|
||||
*创建公共目录组*
|
||||
|
||||
上面命令使用到的标志和参数是:
|
||||
|
||||
1. `-a` – 将用户添加到增补组中。
|
||||
2. `-G` – 指定组名。
|
||||
3. `project` – 组名。
|
||||
4. `tecmint` – 已有的用户名。
|
||||
|
||||
在这之后,给目录配置适当的权限,`-R` 会让操作递归进入子目录中:
|
||||
|
||||
```
|
||||
$ sudo chgrp -R project /var/www/reports/
|
||||
$ sudo chmod -R 2775 /var/www/reports/
|
||||
```
|
||||
|
||||
解释下上面 `chmod` 命令中的 `2775`:
|
||||
|
||||
1. `2` - 打开 setGID 位,意味着新创建的子文件继承与目录相同的组,新创建的子目录继承父目录的 setGID 位。
|
||||
2. `7` - 为所有者提供 rwx 权限。
|
||||
3. `7` - 给组 rwx 权限。
|
||||
4. `5` - 为其他人提供 rx 权限。
|
||||
|
||||
你可以使用下面的命令创建更多的系统用户并将它们添加到目录组中:
|
||||
|
||||
```
|
||||
$ sudo useradd -m -c "Aaron Kili" -s/bin/bash -G project aaronkilik
|
||||
$ sudo useradd -m -c "John Doo" -s/bin/bash -G project john
|
||||
$ sudo useradd -m -c "Ravi Saive" -s/bin/bash -G project ravi
|
||||
```
|
||||
|
||||
接着创建每个用户存储他们项目报告的子目录:
|
||||
|
||||
```
|
||||
$ sudo mkdir -p /var/www/reports/aaronkilik_reports
|
||||
$ sudo mkdir -p /var/www/reports/johndoo_reports
|
||||
$ sudo mkdir -p /var/www/reports/ravi_reports
|
||||
```
|
||||
|
||||
现在你可以创建文件/文件,并分享给该组的其他用户了。
|
||||
|
||||
就是这样了!在本篇中,我们回顾了如何启用所有用户对特定目录的写权限。要了解更多关于 Linux 中的用户/组,阅读[如何管理用户/组和属性][2]。
|
||||
|
||||
记得在评论栏中留下你对这篇文章的想法。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
译者简介:
|
||||
|
||||
Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 和 web 开发人员,目前是 TecMint 的内容创建者,他喜欢用电脑工作,并坚信分享知识。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/create-a-shared-directory-in-linux/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
[1]:http://www.tecmint.com/wp-content/uploads/2017/01/Create-Common-Directory-Group.png
|
||||
[2]:http://www.tecmint.com/manage-users-and-groups-in-linux/
|
@ -0,0 +1,85 @@
|
||||
3 个帮助你整理信息的桌面 Wiki
|
||||
============================================================
|
||||
|
||||

|
||||
图片提供: opensource.com
|
||||
|
||||
当你想到 “wiki” 这个词时,可能会想到 MediaWiki 或 DokuWiki 这样的例子。它们开源、好用、强大而且灵活。它们可以自己用、也可以团队协作使用或者只是帮忙整理生活中的海量信息。
|
||||
|
||||
另一方面,那些 wiki 也有点大。运行它们稍微需要一些额外的计算机技能。对我们中的许多人来说,这有些困难,特别是如果你只想在自己的桌面上使用 wiki。
|
||||
|
||||
如果你想在桌面上感受 wiki,而不用做那些复杂的工作,这很容易做到。这有一些轻量级 wiki,可以帮助你组织你的信息、跟踪你的任务、管理你的笔记等等。
|
||||
|
||||
让我们来看看其中三个轻量级的桌面 wiki。
|
||||
|
||||
### Zim Desktop Wiki
|
||||
|
||||
[Zim Desktop Wiki][2](简称 Zim)相对较小、相当快,而且易于使用。它围绕“笔记本”的概念构建,“笔记本”是一个单一主题或一组 wiki 页面的集合。
|
||||
|
||||
每个笔记本都可以包含任意数量的页面,你可以使用 [CamelCase][3](wiki 用户的最爱)或使用工具栏上的选项在这些页面之间链接。你可以通过单击工具栏上的按钮来使用 Zim 的 wiki 标记对页面进行格式化。
|
||||
|
||||
Zim 可以将你的网页导出为多种格式,包括 HTML、LaTeX、ReStructuredText 和 Markdown。你还可以利用 Zim 的[众多插件][4]来为应用程序添加拼写检查,方程编辑器,表格编辑器等。
|
||||
|
||||

|
||||
|
||||
*Zim Desktop Wiki*
|
||||
|
||||
### TiddlyWiki
|
||||
|
||||
[TiddlyWiki][5] 不是一个软件,它是一个大的 HTML 文件。大小大概有 2MB,TiddlyWiki 是最灵活的选择之一。你可以将文件存储在计算机上、网络驱动器上,或随身携带在闪存上。 但是不要被 TiddlyWiki 表面上的简单所迷惑,它是一个非常强大的工具。
|
||||
|
||||
想要使用 TiddlyWiki,你要创建叫一种 “tiddlers” 的东西。 tiddlers 是你的 wiki 上的项目,如笔记、日记、书签和任务列表。tiddlers 也可以是你想要的任何东西。当使用 tiddlers 时,你可以添加 TiddlyWiki 版的 WikiText 和图片。 TiddlyWiki 甚至包装了一个原始的绘画程序。
|
||||
|
||||
如果这还不够,TiddlyWiki 有一个内置的插件集,它允许你更改 tiddlers 的编辑器,添加工具来实现从印象笔记导入数据、做数学排版、Markdown 渲染等等。
|
||||
|
||||

|
||||
|
||||
*TiddlyWiki*
|
||||
|
||||
### WikidPad
|
||||
|
||||
虽然不够漂亮,但古老的 [WikiPad][6] 可以很好地完成工作。
|
||||
|
||||
当你想要围绕某个主题创建一组笔记(例如你撰写的文章的信息或项目计划)时,你可以创建一个新的 wiki 页面。接着,你可以添加子页面并通过使用 [CamelCase][7] 命名这些子页面将它们链接在一起。你可以创建任意数量的 wiki 页面,并且根据需要打开(在单独的窗口中)。
|
||||
|
||||
此外,你可以使用 WikiText 添加基本格式,也可以将图像粘贴到 wiki 页面中。当你想要共享你的 wiki 页面时,你可以在线发布或打印它们 - WikidPad 有一个非常好的 HTML 导出功能。
|
||||
|
||||
WikidPad 只有 Windows 安装程序或源代码发布的形式。它没有流行的发行版的软件包。但是,你不必编译就可以在 Linux 中使用它。WikidPad wiki 有从命令行启动软件的[简单而细致的说明][8]。
|
||||
|
||||

|
||||
|
||||
*WikidPad*
|
||||
|
||||
**你有最喜欢的可以帮你组织信息的轻量级桌面 wiki 么?请在下方的留言中与我们共享。**
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
译者简介:
|
||||
|
||||
Scott Nesbitt - 作家、编辑、江湖客(Soldier of fortune)、豹猫牧马人(Ocelot wrangler)、丈夫和父亲、博客主、陶器收藏家。Scott 是以上的混合体。他也是一个自由/开源软件的长期用户,他为此写了很多[博客][12]。你可以在 [Twitter][13]、[GitHub][14] 找到他。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/17/2/3-desktop-wikis
|
||||
|
||||
作者:[Scott Nesbitt][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[Bestony](https://github.com/Bestony)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/scottnesbitt
|
||||
[1]:https://opensource.com/article/17/2/3-desktop-wikis?rate=2SqxwFsI7ttHe6AWH_Wyq4I6WT8NdBSuZ_4zUOLO9RA
|
||||
[2]:http://zim-wiki.org/index.html
|
||||
[3]:https://en.wikipedia.org/wiki/Camel_case#Wiki_link_markup
|
||||
[4]:http://zim-wiki.org/manual/Plugins.html
|
||||
[5]:http://tiddlywiki.com/
|
||||
[6]:http://wikidpad.sourceforge.net/
|
||||
[7]:https://en.wikipedia.org/wiki/Camel_case#Wiki_link_markup
|
||||
[8]:http://trac.wikidpad2.webfactional.com/wiki/InstallLinux
|
||||
[9]:https://opensource.com/user/14925/feed
|
||||
[10]:https://opensource.com/article/17/2/3-desktop-wikis#comments
|
||||
[11]:https://opensource.com/users/scottnesbitt
|
||||
[12]:http://scottnesbitt.io/
|
||||
[13]:http://www.twitter.com/ScottWNesbitt
|
||||
[14]:https://github.com/ScottWNesbitt
|
@ -0,0 +1,47 @@
|
||||
Arch Linux、Solus 和 openSUSE Tumbleweed:谁是你最喜欢的滚动发行版?
|
||||
============================================================
|
||||
|
||||
> 告诉我们你 PC 上使用的滚动 Linux 系统
|
||||
|
||||
我最近不得不重新安装我的笔记本,由于在我的笔记本上我只使用 Linux,我不能花半天定制操作系统、安装数百个更新,然后设置我最喜欢的应用程序。
|
||||
|
||||
我通常使用 [Arch Linux][1],但因为安装它并不简单,我必须花费很多时间让它变成我喜欢的方式,如安装我最喜欢的桌面环境,启用 AUR(Arch 用户仓库),安装工作需要的各种应用程序和我需要在笔记本上做的一切,所以,我决定试试不同的发行版。
|
||||
|
||||
当然,我可以使用基于 Arch Linux 的发行版,比如 Antergos、Manjaro 或 Chakra GNU/Linux,但是我不是那种衍生发行版的粉丝,更不要说它们中的许多针对特定的桌面环境而构建,我不喜欢把软件包混合起来,从而最终变成了一个臃肿的系统。
|
||||
|
||||
我的意思是,如果我使用 [Arch Linux][2],并且我有时间安装它并完全配置它,那么当我可以使用“真实的东西”的时候,为什么我要选择那种只是混用了 Arch Linux 仓库/软件包的操作系统呢?所以,我去看了看 [Solus][3] 和 [openSUSE Tumbleweed][4],因为现在它们是最流行的系统之一。
|
||||
|
||||
虽然 openSUSE Tumbleweed 是一个[总是能得到最新的软件版本][5],并会迅速移动到新的 Linux 内核分支的很棒的发行版,但我觉得基于 RPM 的发行版不是我的菜。我不知道为什么,但我一直以来总是喜欢基于 DEB 的操作系统,当然直到我发现了 Arch Linux。
|
||||
|
||||
当然,openSUSE Tumbleweed 很容易安装和配置,但我决定在我的笔记本上试下 Solus,因为它现在提供 ISO 快照,所以你不必在安装后下载数百个更新,并且它预装了我每天使用的大多数应用程序。
|
||||
|
||||
[Solus 还提供最新的应用程序][6]、系统加密,而且超级容易安装。它在我笔记本上可以安装即用,Budgie 环境也可以根据你的爱好设置。我最喜欢 Solus 的是,只要我想我就可以随时升级我使用的程序,就像在 Arch Linux 上那样。
|
||||
|
||||
现在 Solus 社区不像 Arch Linux 那么大,但是随着时间的推移,它会增长,特别是你可以通过贡献新的或更新包来帮助它成长。最后,每当我想重新安装我的笔记本,我可以总是依赖我手上的 Solus Live USB。
|
||||
|
||||
我想知道你日常使用这三个系统中的哪个,特别是在你发现你不得不重新安装系统时。是的,我知道,有很多其他发行版提供了一个快速的安装过程,如 Ubuntu,这是很多人喜欢的,但哪个滚动发行版是你最喜欢的,为什么?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://news.softpedia.com/news/arch-linux-vs-solus-vs-opensuse-tumbleweed-your-favorite-rolling-distro-is-512599.shtml
|
||||
|
||||
作者:[Marius Nestor][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://news.softpedia.com/editors/browse/marius-nestor
|
||||
[1]:https://www.archlinux.org/
|
||||
[2]:http://news.softpedia.com/news/arch-linux-2017-02-01-released-as-the-last-iso-with-32-bit-support-download-now-512492.shtml
|
||||
[3]:https://solus-project.com/
|
||||
[4]:https://en.opensuse.org/Portal:Tumbleweed
|
||||
[5]:http://news.softpedia.com/news/kde-plasma-5-9-wine-2-0-and-pulseaudio-10-hit-opensuse-tumbleweed-s-repos-512541.shtml
|
||||
[6]:http://news.softpedia.com/news/solus-now-powered-by-linux-kernel-4-9-7-uses-applications-from-gnome-3-22-stack-512501.shtml
|
||||
[7]:http://news.softpedia.com/editors/browse/marius-nestor
|
||||
[8]:http://news.softpedia.com/news/arch-linux-vs-solus-vs-opensuse-tumbleweed-your-favorite-rolling-distro-is-512599.shtml#
|
||||
[9]:https://share.flipboard.com/bookmarklet/popout?v=2&title=Arch+Linux+vs.+Solus+vs.+openSUSE+Tumbleweed%3A+Your+Favorite+Rolling+Distro+Is%3F&url=http%3A%2F%2Fnews.softpedia.com%2Fnews%2Farch-linux-vs-solus-vs-opensuse-tumbleweed-your-favorite-rolling-distro-is-512599.shtml&t=1486432590&utm_campaign=widgets&utm_medium=web&utm_source=flipit&utm_content=news.softpedia.com
|
||||
[10]:http://news.softpedia.com/news/arch-linux-vs-solus-vs-opensuse-tumbleweed-your-favorite-rolling-distro-is-512599.shtml#
|
||||
[11]:http://twitter.com/intent/tweet?related=softpedia&via=mariusnestor&text=Arch+Linux+vs.+Solus+vs.+openSUSE+Tumbleweed%3A+Your+Favorite+Rolling+Distro+Is%3F&url=http%3A%2F%2Fnews.softpedia.com%2Fnews%2Farch-linux-vs-solus-vs-opensuse-tumbleweed-your-favorite-rolling-distro-is-512599.shtml
|
||||
[12]:https://plus.google.com/share?url=http://news.softpedia.com/news/arch-linux-vs-solus-vs-opensuse-tumbleweed-your-favorite-rolling-distro-is-512599.shtml
|
||||
[13]:https://twitter.com/intent/follow?screen_name=mariusnestor
|
@ -0,0 +1,73 @@
|
||||
如何在 KDE Plasma 5.9 中激活全局菜单
|
||||
============================================================
|
||||
|
||||

|
||||
|
||||
全局菜单是 KDE Plasma 5.9 这个最新的 KDE 桌面环境主版本中的最有趣的功能之一。
|
||||
|
||||
全局菜单允许用户将应用程序菜单(application menu)放到程序内,作为标题栏按钮或放到屏幕顶部的组件面板中。
|
||||
|
||||
全局菜单是一个用户渴望的令人兴奋的功能,但不幸的是,由于某些原因,如果你不知道在哪里找到它,启用它可能有点复杂。
|
||||
|
||||
在本教程中,我们将了解如何启用“标题栏按钮”和“应用程序组件”菜单。
|
||||
|
||||
### 标题栏按钮
|
||||
|
||||
[
|
||||

|
||||
][4]
|
||||
|
||||
*Plasma 5.9 中 Konsole 的标题栏按钮 widget*
|
||||
|
||||
标题栏按钮是放置在标题栏中的一个小图标,用户可以通过点击它来访问应用程序菜单。要启用它,打开系统设置(System Settings)并进入应用程序样式(Application Style)选项。 在组件样式(Widget Style)设置中,进入微调(Fine Tuning)选项卡,然后选择标题栏按钮(Title bar button)作为菜单样式(Menubar style)选项。
|
||||
|
||||
[
|
||||

|
||||
][5]
|
||||
|
||||
*组件样式面板*
|
||||
|
||||
在此之后,要使用它,你需要_手动_放置标题按钮,因为它不是自动出现的。
|
||||
|
||||
为此,请进入应用程序样式(Application Style)的窗口装饰(Windows Decoration)。进入按钮(Buttons)选项卡,并将小的应用程序菜单(Application Menu)图标拖动到标题栏按钮(Title bar)中。
|
||||
|
||||
[
|
||||

|
||||
][6]
|
||||
|
||||
*拖动这个按钮到标题栏中*
|
||||
|
||||
现在你可以在任何有应用菜单的程序中看到标题栏按钮了。
|
||||
|
||||
### 应用程序菜单组件
|
||||
|
||||
[
|
||||

|
||||
][7]
|
||||
|
||||
*Plasma 5.9 中的应用菜单面板*
|
||||
|
||||
要启用应用程序菜单组件,请在微调(Fine Tuning)选项卡的菜单样式(Menu Style)选项中选择相关条目。
|
||||
|
||||
在桌面上右键单击,然后选择添加面板(Add Panel)-> 应用程序菜单栏(Application Menu Bar)。
|
||||
|
||||
如你所见,如果你不知道在哪里找到它,启用“全局菜单”可能会有点复杂。无论如何,虽然我非常感谢 KDE 团队为这个新的 Plasma 主要版本做了出色的工作,但是我希望他们继续提高桌面可用性,让那些不想花时间在互联网上搜索这样的教程的人而言,使这个新的有趣的功能更容易启用。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://fasterland.net/activate-global-menu-kde-plasma-5-9.html
|
||||
|
||||
作者:[Francesco Mondello][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://fasterland.net/
|
||||
[1]:http://fasterland.net/author/faster3ck
|
||||
[2]:http://fasterland.net/
|
||||
[3]:http://fasterland.net/category/linux-howtos
|
||||
[4]:http://fasterland.net/wp-content/uploads/2017/02/plasma-59-titlebar-button.png
|
||||
[5]:http://fasterland.net/wp-content/uploads/2017/02/plasma-59-widget-style-panel.png
|
||||
[6]:http://fasterland.net/wp-content/uploads/2017/02/plasma59-titlebar-drag-button.png
|
||||
[7]:http://fasterland.net/wp-content/uploads/2017/02/plasma59-application-menu-bar.jpg
|
@ -0,0 +1,72 @@
|
||||
使用 nc 命令检查远程端口是否打开
|
||||
============================================================
|
||||
|
||||
**端口**是与 Linux 操作系统上的应用或进程的通讯端点的逻辑实体。在使用之前,了解目标机器上哪些端口是打开并正在运行服务是非常有用的。
|
||||
|
||||
我们可以使用 [netstat][4] 或其他几个 Linux 命令如 [NMAP][5] 在本地机器上轻松地[列出 Linux 中的打开端口][3]。
|
||||
|
||||
在本指南中,我们将向你展示如何使用简单的 `netcat`(简称 `nc`)命令来确定远程主机上的端口是否可访问/打开。
|
||||
|
||||
`netcat`(或简称 `nc`)是一个功能强大且易于使用的程序,可用于 Linux 中与 TCP、UDP 或 UNIX 域套接字相关的任何事情。
|
||||
|
||||
```
|
||||
# yum install nc [在 CentOS/RHEL 中]
|
||||
# dnf install nc [在 Fedora 22+ 中]
|
||||
$ sudo apt-get install netcat [在 Debian/Ubuntu 中]
|
||||
```
|
||||
|
||||
我们可以使用它:打开 TCP 连接、侦听任意 TCP 和 UDP 端口、发送 UDP 数据包、在 IPv4 和 IPv6 进行端口扫描。
|
||||
|
||||
使用 **netcat**,你可以检查单个或多个或一段打开的端口范围,如下所示。下面的命令将帮助我们查看端口 22 是否在主机 192.168.56.10 上打开:
|
||||
|
||||
```
|
||||
$ nc -zv 192.168.1.15 22
|
||||
```
|
||||
|
||||
上面的命令中,这些标志是:
|
||||
|
||||
1. `-z` – 设置 nc 只是扫描侦听守护进程,实际上不向它们发送任何数据。
|
||||
2. `-v` – 启用详细模式
|
||||
|
||||
下面的命令会检查远程主机 192.168.5.10 上是否打开了端口 80、22 和 21(我们也可以使用主机名):
|
||||
|
||||
```
|
||||
nc -zv 192.168.56.10 80 22 21
|
||||
```
|
||||
|
||||
也可以指定端口扫描的范围:
|
||||
|
||||
```
|
||||
$ nc -zv 192.168.56.10 20-80
|
||||
```
|
||||
|
||||
更多关于 netcat 命令的例子和使用,阅读我们下面的文章。
|
||||
|
||||
1. [使用 netcat 命令在 Linux 服务器间传输文件][1]
|
||||
2. [Linux 网络配置及排障调试命令][2]
|
||||
|
||||
就是这样。在本文中,我们解释了如何使用 netcat 命令检测远程主机端口是否可达/打开。请在评论栏中留下你的想法。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
译者简介:
|
||||
|
||||
Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 和 web 开发人员,目前是 TecMint 的内容创建者,他喜欢用电脑工作,并坚信分享知识。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/check-remote-port-in-linux/
|
||||
|
||||
作者:[Aaron Kili][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[jasminepeng](https://github.com/jasminepeng)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/aaronkili/
|
||||
|
||||
[1]:http://www.tecmint.com/transfer-files-between-two-linux-machines/
|
||||
[2]:http://www.tecmint.com/linux-network-configuration-and-troubleshooting-commands/
|
||||
[3]:http://www.tecmint.com/find-open-ports-in-linux/
|
||||
[4]:http://www.tecmint.com/20-netstat-commands-for-linux-network-management/
|
||||
[5]:http://www.tecmint.com/nmap-command-examples/
|
@ -0,0 +1,80 @@
|
||||
CloudStats :SaaS 服务器监控工具
|
||||
============================================================
|
||||
|
||||
CloudStats 是一个简单而强大的[服务器监控][1]和网络监控工具。使用 CloudStats,你可以监控来自世界上任何地方的服务器和网络的所有指标。
|
||||
|
||||
最棒的是你不需要有任何特殊的技术技能 - CloudStats 很容易安装在任何数据中心的任何服务器上。
|
||||
|
||||
CloudStats 允许你使用任何操作系统对任何服务器执行服务器监视。它只需要在你的服务器上运行一个命令,即可获取所有服务器的统计信息。
|
||||
|
||||
在服务器和 CloudStats 之间的同步完成后,你将获得有关你的服务器和网络的完整信息,包括 CPU、磁盘、RAM、网络使用情况等。你还可以监控 Apache、MySQL、邮件、FTP、DNS 和其他服务。
|
||||
|
||||
这里有几个关于 CloudStats 监控的截图。
|
||||
|
||||
[
|
||||

|
||||
][2]
|
||||
|
||||
*CloudStats – 服务器概览*
|
||||
|
||||
[
|
||||

|
||||
][3]
|
||||
|
||||
*CloudStats – 服务监控概览*
|
||||
|
||||
[
|
||||

|
||||
][4]
|
||||
|
||||
*CloudStats – 监控的服务器列表*
|
||||
|
||||
如果系统中出现问题,CloudStats 将立即发出警报:你将在你的帐户界面中看到问题通知,并且还会通过电子邮件、Skype 或 Slack 接收警报。这将帮助你及时检测和修复服务器功能中的任何问题并防止停机。
|
||||
|
||||
使用 CloudStats 的另一个原因是,你可以登录 CloudStats 帐户,从任何地方(无论你在哪里)使用家庭或办公室PC、智能手机或平板电脑检查 IT 基础架构的状态。
|
||||
|
||||
[CloudStats 服务监控][5]服务基于 Microsoft Azure 云技术运行,确保其监控结果始终是正确的及最新的。
|
||||
|
||||
###### 下面是 CloudStats 的一些功能:
|
||||
|
||||
1. Linux 及 Windows 服务监控
|
||||
2. 数据备份工具
|
||||
3. 网络监控
|
||||
4. 进程监控
|
||||
5. 服务状态检查
|
||||
6. 外部检查
|
||||
7. URL 监控及 PingMap
|
||||
8. Email、Skype 及 Slack 警告
|
||||
9. 有免费账户
|
||||
|
||||
使用 CloudStats 后你将能够监控数百台服务器。此工具适用于商业和个人使用。与现有的服务器和网络监控服务相比,CloudStats 解决方案更便宜、更易于安装和更有用。
|
||||
|
||||
现在[注册一个可以监控多达 10 台服务器、网站和 IP 地址免费的个人][6]账户!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
作者简介:
|
||||
|
||||
我是 Ravi Saive,TecMint 的创建者。一个喜欢在互联网上分享技巧和提示计算机 Geek 和 Linux 专家。我的大多数服务器运行在 Linux 开源平台上。在 Twitter、Facebook 和 Google+ 上关注我。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
via: http://www.tecmint.com/cloudstats-linux-server-monitoring-tool/
|
||||
|
||||
作者:[Ravi Saive][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/admin/
|
||||
[00]:https://twitter.com/ravisaive
|
||||
[01]:https://www.facebook.com/ravi.saive
|
||||
[02]:https://plus.google.com/u/0/+RaviSaive
|
||||
[1]:https://servermonitoring.me/?utm_source=tecmint1&utm_campaign=tecmint1&utm_medium=tecmintpost1
|
||||
[2]:http://www.tecmint.com/wp-content/uploads/2017/02/CloudStats-Server-Overview.png
|
||||
[3]:http://www.tecmint.com/wp-content/uploads/2017/02/CloudStats-Server-Monitoring-Overview.png
|
||||
[4]:http://www.tecmint.com/wp-content/uploads/2017/02/CloudStats-Server-Monitoring.png
|
||||
[5]:https://servermonitoring.me/?utm_source=tecmint1&utm_campaign=tecmint1&utm_medium=tecmintpost1
|
||||
[6]:https://servermonitoring.me/?utm_source=tecmint1&utm_campaign=tecmint1&utm_medium=tecmintpost1
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user