Merge pull request #20 from LCTT/master

Update Repo
This commit is contained in:
joeren 2015-07-07 10:23:46 +08:00
commit 46355b6ac1
139 changed files with 5993 additions and 4228 deletions

View File

@ -0,0 +1,423 @@
25 个有用 Apache .htaccess 技巧
================================================================================
网站是我们生活中重要的一部分。它们是实现扩大业务、分享知识以及其它更多功能的方式。早期受制于只能提供静态内容,随着动态客户端和服务器端脚本语言的引入和现有静态语言的持续改进,例如从 html 到 html5动态网站成为可能剩下的也许在不久的将来也会实现。
对于网站随之而来的是需要一个能向全球大规模用户显示站点的某个东西。这个需求可以通过托管网站的服务器实现。这包括一系列的服务器例如Apache HTTP Server、Joomla 以及 允许个人拥有自己网站的 WordPress。
![Apache htaccess 小技巧](http://www.tecmint.com/wp-content/uploads/2015/01/htaccess-tricks.jpg)
*25 个 htaccess 小技巧*
想要拥有一个网站,可以创建一个自己的本地服务器,或者联系任何上面提到的或其它服务器管理员来托管他的网站。但实际问题也从这点开始。网站的性能主要取决于以下因素:
- 网站消耗的带宽。
- 面对黑客,网站有多安全。
- 对数据库进行数据检索时的优化。
- 显示导航菜单和提供更多 UI 功能时的用户友好性。
除此之外,保证托管网站服务器成功的多种因素还包括:
- 对于一个流行站点的数据压缩量。
- 同时为多个对请求同一或不同站点的用户服务的能力。
- 保证网站上输入的机密数据安全例如Email、信用卡信息等等。
- 允许更多的选项用于增强站点的动态性。
这篇文章讨论一个服务器提供的用于增强网站性能和提高针对坏机器人、热链等的安全性的功能:‘.htaccess 文件。
### .htaccess 是什么? ###
htaccess (hypertext access超文本访问) 是为网站所有者提供用于控制服务器环境变量以及其它参数的选项,从而增强他们网站的功能的文件。这些文件可以在网站目录树的任何一个目录中,并向该目录以及目录中的文件和子目录提供功能。
这些功能是什么呢?其实这些是服务器的指令,例如命令服务器执行特定任务的行,这些命令只对该文件所在目录中的文件和子目录有效。这些文件默认是隐藏的,因为所有操作系统和网站服务器默认配置为忽略它们,但如果查看隐藏文件的话,你就可以看到这些特殊文件。后续章节的话题将讨论能控制什么类型的参数。
注意:如果 .htaccess 文件保存在 /apache/home/www/Gunjit/ 目录,那么它会向该目录中的所有文件和子目录提供命令,但如果该目录包含一个名为 /Gunjit/images/ 子目录,且该子目录中也有一个 .htaccess 文件,那么这个子目录中的命令会覆盖父目录中 .htaccess 文件(或者目录层次结构中更上层的文件)提供的命令。
### Apache Server 和 .htaccess 文件 ###
Apache HTTP Server 俗称为 Apache是为了表示对一个有卓越战争策略技能的美洲土著部落的尊敬而命名。它基于 [NCSA HTTPd 服务器][1] ,是用 C/C++ 和 XML 建立的跨平台 Web 服务器,它在万维网的成长和发展中起到了关键作用。
它最常用于 UNIX但 Apache 也能用于多种平台,包括 FreeBSD、Linux、Windows、Mac OS、Novel Netware 等。在 2009 年Apache 成为第一个为超过一亿站点提供服务的服务器。
Apache 服务器可以让 www/ 目录中的每个用户有一个单独的 .htaccess 文件。尽管这些文件是隐藏的,但如果需要的话可以使它们可见。在 www/ 目录中可以有很多子目录,每个子目录通过用户名或所有者名称命名,包含了一个站点。除此之外你可以在每个子目录中有一个 .htaccess 文件,像之前所述用于配置子目录中的文件。
下面介绍如果配置 Apache 服务器上的 htaccess 文件。
### Apache 服务器上的配置 ###
这里有两种情况:
#### 在自己的服务器上托管网站 ####
在这种情况下,如果没有启用 .htaccess 文件,你可以通过在 http.conf(Apache HTTP 守护进程的默认配置文件) 中找到 <Directories> 部分启用。
<Directory "/var/www/htdocs">
定位如下行
AllowOverride None
更改为
AllowOverride All
现在,重启 Apache 后就启用了 .htaccess。
#### 在不同的托管服务提供商的服务器上托管网站 ####
在这种情况下最好咨询托管管理员,如果他们允许访问 .htaccess 文件的话。
### 用于网站的 25 个 Apache Web 服务器 .htaccess 小技巧 ###
#### 1. 如何在 .htaccess 文件中启用 mod_rewrite ####
mod_rewrite 选项允许你使用重定向并通过重定向到其它 URL 来隐藏你真实的 URL。这个选项非常有用允许你用短的容易记忆的 URL 替换长 URL。
要允许 mod_rewrite只需要在你的 .htaccess 文件的第一行添加如下一行。
Options +FollowSymLinks
该选项允许你跟踪符号链接从而在站点中启用 mod_rewrite。后面会介绍用短 URL 替换。LCTT 译注:+FollowSymLinks 只是启用 mod_rewrite 的前提之一,还需要在全局和虚拟机中设置 `RewriteEngine on` 才能启用重写模块。)
#### 2. 如何允许或禁止对站点的访问 ####
通过使用 order、allow 和 deny 关键字htaccess 文件可以允许或者禁止对站点或目录中子目录或文件的访问。
**只允许 IP 192.168.3.1 的访问**
Order Allow, Deny
Deny from All
Allow from 192.168.3.1
Order Allow, Deny
Allow from 192.168.3.1
这里的 Order 关键字指定处理 allow 和 deny 访问的顺序。对于上面的 Order 语句,首先会处理 Allow 语句,然后是 deny 语句。
**只禁止某个 IP 的访问**
下面一行的意思是除了 IP 地址 192.168.3.1,允许所有用户访问网站。
Order Allow, Deny
Deny from 192.168.3.1
Allow from All
Order Deny, Allow
Deny from 192.168.3.1
#### 3. 为不同错误码生成 Apache 错误文档 ####
用简单几行,我们可以解决当用户/客户端请求一个站点上不可用的网页时服务器产生的错误码的错误文档,例如我们大部分人见过的浏览器中显示的 404 Page not found.htaccess 文件指定了发生这些错误情况时采取何种操作。
要做到这点,需要添加下面的行到 .htaccess 文件:
ErrorDocument <error-code> <path-of-document/string-representing-html-file-content>
ErrorDocument 是一个关键字error-code 可以是 401、403、404、500 或任何有效的表示错误的代码,最后 path-of-document 表示本地机器上的路径(如果你使用的是你自己的本地服务器) 或服务器上的路径(如果你使用任何其它服务器来托管网站)。
**例子:**
ErrorDocument 404 /error-docs/error-404.html
上面一行设置客户请求任何无效页面,服务器报告 404 错误时显示 error-docs 目录下的 error-404.html 文档。
ErrorDocument 404 "<html><head><title>404 Page not found</title></head><body><p>The page you request is not present. Check the URL you have typed</p></body></html>"
上面的表示也正确,其中字符串相当于一个普通的 html 文件。
#### 4. 设置/取消 Apache 服务器环境变量 ####
在 .htaccess 文件中你可以设置或者取消站点所有者可以更改的全局环境变量。要设置或取消环境变量,你需要在你的 .htaccess 文件中添加下面的行。
**设置环境变量**
SetEnv OWNER “Gunjit Khera”
**取消环境变量**
UnsetEnv OWNER
#### 5. 为文件定义不同 MIME 类型 ####
MIME多用途 Internet 多媒体扩展)是浏览器运行任何页面所默认识别的类型。你可以在 .htaccess 文件中为你的站点定义 MIME 类型,然后服务器就可以识别你定义类型的文件并运行。
<IfModule mod_mime.c>
AddType application/javascript js
AddType application/x-font-ttf ttf ttc
</IfModule>
这里mod_mime.c 是用于控制定义不同 MIME 类型的模块,如果在你的系统中已经安装了这个模块,那么你就可以用该模块去为你站点中不同的扩展名定义不同的 MIME 类型,从而让服务器可以理解这些文件。
#### 6. 如何在 Apache 中限制上传和下载的大小 ####
.htaccess 文件允许你能够控制某个用户从你的站点(通过 PHP单次上传数据量的大小LCTT 译注:原文有误,修改)。要做到这点你只需要添加下面的行到你的 .htaccess 文件:
php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200
上面的行设置最大上传大小、最大POST 提交数据大小、最长执行时间(例如,允许用户在他的本地机器上单次执行一个请求的最大时间)、限制的最大输入时间。
#### 7. 让用户不能在你的站点上在线播放 .mp3 和其它文件 ####
大部分情况下,人们在下载检查音乐质量之前会在网站上播放等等。作为一个聪明的销售者,你可以添加一个简单的功能,不允许任何用户在线播放音乐或视频,而是必须下载完成后才能播放。这非常有用,因为(无缓冲的)在线播放音乐和视频会消耗很多带宽。
要添加下面的行到你的 .htaccess 文件:
AddType application/octet-stream .mp3 .zip
#### 8. 为站点设置目录索引 ####
大部分网站开发者都知道第一个显示的页面是哪个,例如一个站点的首页,被命名为 index.html。我们大部分也见过这个。但是如何设置呢
.htaccess 文件提供了一种方式用于列出一个客户端请求访问网站的主页面时会顺序扫描的一些网页集合,相应地如果找到了列出的页面中的任何一个就会作为站点的主页面并显示给用户。
需要添加下面的行产生所需的效果。
DirectoryIndex index.html index.php yourpage.php
上面一行指定如果有任何访问首页的请求到来,首先会在目录中顺序搜索上面列出的网页:如果发现了 index.html 则显示为主页面,否则会找下一个页面,例如 index.php如此直到你在列表中输入的最后一个页面。
#### 9. 如何为文件启用 GZip 压缩以节省网站带宽 ####
繁忙的站点通常比只占少量空间的轻量级站点运行更慢,这是常见的现象。因为对于繁忙的站点需要时间加载巨大的脚本文件和图片以在客户端的 Web 浏览器上显示。
通常的机制是这样的,当浏览器请求一个 web 页面时,服务器提供给浏览器该页面,并在浏览器端显示该 web 页面,浏览器需要下载该页面并运行页面内的脚本。
这里 GZip 压缩所做的就是节省单个用户的服务时间而不用增加带宽。服务器上站点的源文件以压缩形式保存当用户请求到来的时候这些文件以压缩形式传送然后在客户端上解压LCTT 译注:原文此处有误)。这改善了带宽限制。
下面的行允许你压缩站点的源文件,但要求在你的服务器上安装 mod_deflate.c 模块。
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/html
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
#### 10. 处理文件类型 ####
服务器默认的有一些特定情况。例如:在服务器上运行 .php 文件,显示 .txt 文件。像这些我们可以以源代码形式只显示一些可执行 cgi 脚本或文件而不是执行它们LCTT 译注:这是为了避免攻击者通过上传恶意脚本,进而在服务器上执行恶意脚本进行破坏和窃取)。
要做到这点在 .htaccess 文件中有如下行。
RemoveHandler cgi-script .php .pl .py
AddType text/plain .php .pl .py
这些行告诉服务器只显示而不执行 .pl (perl 脚本)、.php (PHP 文件) 和 .py (Python 文件) 。
#### 11. 为 Apache 服务器设置时区 ####
从 .htaccess 文件可用于为服务器设置时区可以看出它的能力和重要性。这可以通过设置一个服务器为每个托管站点提供的一系列全局环境变量中的 TZ 完成。
由于这个原因,我们可以在网站上看到根据我们的时区显示的时间。也许服务器上其他拥有网站的人会根据他居住地点的位置设置时区。
下面的一行为服务器设置时区。
SetEnv TZ India/Kolkata
#### 12. 如果在站点上启用缓存控制 ####
浏览器很有趣的一个功能是,很多时间你可以看到,当多次同时打开一个网站和第一次打开相比前者会更快。但为什么会这样呢?事实上,浏览器在它的缓存中保存了一些通常访问的页面用于加快后面的访问。
但保存多长时间呢?这取决于你自己。例如,你的 .htaccess 文件中设置的缓存控制时间。.htaccess 文件指定了站点的网页可以在浏览器缓存中保存的时间,时间到期后需要重新验证缓存,页面可能会从缓存中删除然后在下次用户访问站点的时候重建。
下面的行为你的站点实现缓存控制。
<FilesMatch "\.(ico|png|jpeg|svg|ttf)$">
Header Set Cache-Control "max-age=3600, public"
</FilesMatch>
<FilesMatch "\.(js|css)$">
Header Set Cache-Control "public"
Header Set Expires "Sat, 24 Jan 2015 16:00:00 GMT"
</FilesMatch>
上面的行允许缓存 .htaccess 文件所在目录中的页面一小时。
#### 13. <files> 配置单个文件 ####
通常 .htaccess 文件中的内容会对该文件所在目录中的所有文件和子目录起作用,但是你也可以对特殊文件设置一些特殊权限,例如只禁止对某个文件的访问等等。
要做到这点,你需要在文件中以类似方式添加 \<Files> 标记:
<files conf.html="">
Order allow, deny
Deny from 188.100.100.0
</files>
这是一个禁止 IP 188.100.100.0 访问 conf.html 的简单例子,但是你也可以添加介绍过的 .htaccess 文件的任何功能包括将要介绍的功能例如缓存控制、GZip 压缩。
大部分服务器会用这个功能增强 .htaccess 文件的安全,这也是我们在浏览器上看不到 .htaccess 文件的原因。在后面的章节中会介绍如何给文件授权。
#### 14. 启用在 cgi-bin 目录以外运行 CGI 脚本 ####
通常服务器运行的 CGI 脚本都保存在 cgi-bin 目录中,但是你可以在你需要的目录运行 CGI 脚本,只需要在所需的目录中的 .htaccess 文件添加下面的行,如果没有该文件就创建一个,并添加下面的行:
AddHandler cgi-script .cgi
Options +ExecCGI
#### 15.如何用 .htaccess 在站点上启用 SSI ####
服务器端包括SSI顾名思义是和服务器部分相关的东西。这是什么呢通常当我们在站点上有很多页面的时候我们在主页上会有一个显示到其它页面链接的导航菜单我们可以启用 SSI 选项允许导航菜单中显示的所有页面完全包含在主页面中。
SSI 允许多个页面包含同样的内容,因此只需要编辑一个文件就行,从而可以节省很多磁盘空间。对于 .shtml 文件,服务器默认启用了该选项。
如果你想要对 .html 启用该选项,你需要添加下面的行:
AddHandler server-parsed .html
这样 html 文件中如下部分会被替换为 SSI。
<!--#inlcude virtual="gk/document.html"-->
#### 16. 如何防止网站列出目录列表 ####
为防止任何客户端在本地机器罗列服务器上的网站目录列表,添加下面的行到你不想列出的目录的文件中。
Options -Indexes
#### 17. 更改默认字符集和语言头 ####
.htaccess 文件允许你更改网站使用的字符集,例如 ASCII 或 UNICODEUTF-8 等,以及用于显示内容的默认语言。
在服务器的全局环境变量之后添加下面语句可以实现上述功能。
AddDefaultCharset UTF-8
DefaultLanguage en-US
#### 18. 重定向一个非 www URL 到 www URL ####
在开始解释之前,首先看看如何启用该功能,添加下列行到 .htaccess 文件。
RewriteEngine ON
RewriteCond %{HTTP_HOST} ^abc\.net$
RewriteRule (.*) http://www.abc.net/$1 [R=301,L]
上面的行启用重写引擎,然后在第二行检查所有涉及到主机 abc.net 或 环境变量 HTTP_HOST 为 “abc.net” 的 URL。
对于所有这样的 URL代码永久重定向它们(如果启用了 R=301 规则)到新 URL http://www.abc.net/$1其中 $1 是主机为 abc.net 的非 www URL。非 www URL 是大括号内的内容,并通过 $1 引用。
**重写 URL 的重定向规则**
重写功能简单的说,就是用短而易记的 URL 替换长而难以记忆的 URL。但是在开始这个话题之前这里有一些本文后面会使用的特殊字符的规则和约定。
**特殊符号:**
符号 含义
^ - 字符串开头
$ - 字符串结尾
| - 或 [a|b] a 或 b
[a-z] - a 到 z 的任意字母
+ - 之前字母的一次或多次出现
* - 之前字母的零次或多次出现
? - 之前字母的零次或一次出现
**常量和它们的含义:**
常量 含义
NC - 区分大小写
L - 最后的规则 停止处理后面规则
R - 临时重定向到新 URL
R=301 - 永久重定向到新 URL
F - 禁止发送 403 头给用户
P - 代理 - 获取远程内容代替部分并返回
G - Gone 不再存在
S=x - 跳过后面的 x 条规则
T=mime-type - 强制指定 MIME 类型
E=var:value - 设置环境变量 var 的值为 value
H=handler - 设置处理器
PT - Pass through - 用于 URL 还有额外的头
QSA - 将查询字符串追加到替换 URL
#### 19. 重定向整个站点到 https ####
下面的行会帮助你转换整个网站到 https
RewriteEngine ON
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
上面的行启用重写引擎,然后检查环境变量 HTTPS 的值。如果设置了那么重写所有网站页面到 https。
#### 20.一个自定义重写例子 ####
例如,重定向 url http://www.abc.net?p=100&q=20http://www.abc.net/10020pq
RewriteEngine ON
RewriteRule ^http://www.abc.net/([0-9]+)([0-9]+)pq$ ^http://www.abc.net?p=$1&q=$2
在上面的行中,$1 表示第一个括号,$2 表示第二个括号。
#### 21. 重命名 htaccess 文件 ####
为了防止入侵者和其他人查看 .htaccess 文件,你可以重命名该文件,这样就不能通过客户端浏览器访问。实现该目标的语句是:
AccessFileName htac.cess
#### 22. 如何为你的网站禁用图片盗链 ####
网站带宽消耗比较大的另外一个重要问题是盗链问题,这是其它站点用于显示你网站的图片而链接到你的网站的链接,这会消耗你的带宽。这问题也被成为 ‘带宽盗窃’。
一个常见现象是当一个网站要显示其它网站所包含的图片时,由于该链接需要从你的网站加载内容,消耗你站点的带宽而为其它站点显示图片。为了防止出现这种情况,比如对于 .gif、.jpeg 图片等,下面的代码行会有所帮助:
RewriteEngine ON
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpeg|png)$ - [F].
上面的行检查 HTTP_REFERER 是否没有设为空或没有设为你站点上的任何链接。如果是这样的话,你网页上的所有图片会用 403 禁止访问代替。
#### 23. 如何将用户重定向到维护页面 ####
如果你的网站需要进行维护并且你想向所有需要访问该网站的你的所有客户通知这个消息,对于这种情况,你可以添加下面的行到你的 .htaccess 文件,从而只允许管理员访问并替换所有访问 .jpg、.css、.gif、.js 等的页面内容。
RewriteCond %{REQUEST_URI} !^/admin/ [NC]
RewriteCond %{REQUEST_URI} !^((.*).css|(.*).js|(.*).png|(.*).jpg) [NC]
RewriteRule ^(.*)$ /ErrorDocs/Maintainence_Page.html [NC,L,U,QSA]
这些行检查请求 URL 是否包含任何例如以 /admin/ 开头的管理页面的请求,或任何到 .png, .jpg, .js, .css 页面的请求,对于任何这样的请求,用 ErrorDocs/Maintainence_Page.html 替换那个页面。
#### 24. 映射 IP 地址到域名 ####
名称服务器是将特定 IP 地址转换为域名的服务器。这种映射也可以在 .htaccess 文件中用以下形式指定。
# 为了将IP地址 L.M.N.O 映射到域名 www.hellovisit.com
RewriteCond %{HTTP_HOST} ^L\.M\.N\.O$ [NC]
RewriteRule ^(.*)$ http://www.hellovisit.com/$1 [L,R=301]
上面的行检查任何页面的主机是否包含类似 L.M.N.O 的 IP 地址,如果是的话第三行会通过永久重定向将页面映射到域名 http://www.hellovisit.com。
#### 25. FilesMatch 标签 ####
类似用于应用条件到单个文件的 <files> 标签,<FilesMatch> 能用于匹配一组文件并对该组文件应用一些条件,如下:
<FilesMatch \.(png|jpg)$”>
Order Allow, Deny
Deny from All
</FilesMatch>
### 结论 ###
.htaccess 文件能实现的小技巧还有很多。这告诉了我们这个文件有多么强大,通过该文件能给你的站点添加多少安全性、动态性以及其它功能。
我们已经在这篇文章中尽最大努力覆盖尽可能多的 htaccess 小技巧,但如果我们缺少了任何重要的技巧,或者你愿意告诉我们你的 htaccess 想法和技巧,你可以在下面的评论框中提交,我们也会在文章中进行介绍。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/apache-htaccess-tricks/
作者:[Gunjit Khera][a]
译者:[ictlyh](https://github.com/ictlyh)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/gunjitk94/
[1]:https://en.wikipedia.org/wiki/NCSA_HTTPd

View File

@ -1,12 +1,13 @@
20款优秀的Linux终端仿真器
20 款优秀的 Linux 终端仿真器
================================================================================
终端仿真器是一款用其它显示结构重现可视终端的计算机程序。换句话说就是终端仿真器能使哑终端看似像一台客户机连接上了服务器。终端仿真器允许最终用户像文本用户界面和命令行界面一样连接控制台和应用程序。
终端仿真器是一款用其它显示架构重现可视终端的计算机程序。换句话说就是终端仿真器能使哑终端看似像一台连接上了服务器的客户机。终端仿真器允许最终用户用文本用户界面和命令行来访问控制台和应用程序。LCTT 译注:终端仿真器原意指对大型机-哑终端方式的模拟,不过在当今的 Linux 环境中,通常指通过远程或本地方式连接的伪终端,俗称“终端”。)
![Linux Terminal Emulators](http://www.tecmint.com/wp-content/uploads/2014/01/Linux-Terminal-Emulators1.jpeg)
20款Linux终端仿真器
*20款Linux终端仿真器*
你能从开源世界中找到大量的终端仿真器来使用,有些拥有大量的特性而有些则反之。为了能更好地理解它们所能提供的质量,我们收集了一份不可思议的Linux终端仿真器清单。每一款都列出了它们各自的描述和特性以及软件界面截图和下载链接。
你能从开源世界中找到大量的终端仿真器,它们有些拥有大量的特性而有些则反之。为了能更好地了解它们的特性,我们收集了一份优秀的Linux终端仿真器清单。每一款都列出了它们各自的描述和特性以及软件界面截图和下载链接。
### 1. Terminator ###
@ -14,21 +15,21 @@ Terminator是一款先进且强大的终端仿真器它支持多终端窗口
#### Terminator的特性 ####
- 自定义外形和配色方案,根据你的需要设置尺寸。
- 使用插件来获取更多功能。
- 自定义配置和配色方案,根据你的需要设置尺寸。
- 使用插件来提供更多功能。
- 快捷键可以加快普通操作。
- 可以把终端窗口分裂成几个虚拟终端并把它们重新设置成你需要的尺寸。
- 可以把终端窗口分割成几个虚拟终端并把它们根据需要重新调整尺寸。
![Terminator Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/Terminator-Emulator.jpeg)
Terminator Terminal
*Terminator 终端*
- [Terminator Homepage][1]
- [Download and Installation Instructions][2]
- [Terminator 主页][1]
- [下载和安装指引][2]
### 2. Tilda ###
Tilda是一款漂亮的基于GTK+的下拉式终端敲击键你就可以呼出一个新的或隐藏着的Tilda窗口。你也可以添加你所选择的颜色来更改文本颜色和终端背景颜色。
Tilda是一款漂亮的下拉式终端,基于GTK+,一键单击你就可以呼出一个新的或隐藏着的Tilda窗口。你也可以你所选择的颜色来更改文本颜色和终端背景颜色。
#### Tilda的特性 ####
@ -38,72 +39,72 @@ Tilda是一款漂亮的基于GTK+的下拉式终端,敲击一个键你就可
![Tilda Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/Tilda-Emulator.jpeg)
Tilda Terminal
*Tilda 终端*
- [Tilda Homepage][3]
- [Tilda 主页][3]
### 3. Guake ###
Guake是一款基于python的下拉式终端诞生于GNOME桌面环境。就能调出再按一下就能隐藏。它的设计构思来源于FPS (第一人称射击) 游戏例如Quake其目标显而易见
Guake是一款基于python的下拉式终端诞生于GNOME桌面环境。一键调出再按一下就能隐藏。它的设计构思来源于FPS (第一人称射击) 游戏 Quake其主要目标是容易访问
Guake与Yakuaka和Tilda非常相似不过它是一个集上述二者的优点于一体的基于GTK的程序。Guake完全是用Python和小片的C写成的(全局热键部分)。
Guake与Yakuaka和Tilda非常相似不过它是一个集上述二者的优点于一体的基于GTK的程序。Guake完全是用Python和C的片段写成的(全局热键部分)。
![Guake Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/Guake-Terminal.jpeg)
Guake Terminal
*Guake 终端*
- [Guake Homepage][4]
- [Guake 主页][4]
### 4. Yakuake ###
Yakuake (Yet Another Kuake) 是一款基于KDE的下拉式终端仿真器它与Guake再功能上非常相似。它的射击构思也是受FPS游戏的启发例如Quake
Yakuake (Yet Another Kuake) 是一款基于KDE的下拉式终端仿真器它与Guake在功能上非常相似。它的设计构思也是受FPS游戏Quake的启发
Yakuake主要是一款KDE应用程序它能非常轻松地安装在KDE桌面上但是如果你试着将它安装在GNOME桌面上你将会安装大量的依赖包。
Yakuake从根本上说是一款KDE应用程序它能非常轻松地安装在KDE桌面上但是如果你试着将它安装在GNOME桌面上你将会安装大量的依赖包。
#### Yakuake的特性 ####
- 从屏幕顶端弹回顺畅
- 选项卡式界面
- 顺畅地从屏幕顶端弹出
- 标签式界面
- 可配置的尺寸和动画速度
- 可定制
![Yakuake Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/Yakuake-Terminal.jpeg)
Yakuake Terminal
*Yakuake 终端*
- [Yakuake Homepage][5]
- [Yakuake 主页][5]
### 5. ROXTerm ###
ROXterm又是一款轻量级终端仿真器旨在提供与GNOME终端相似的特性。它原本创造出来是为了通过不使用Gnome库从而拥有更少的占用空间和更快的启动速度并使用独立的小程序来建立配置界面(GUI), 但是随着时间的流逝,它的角色就转变为给那些高级用户带来更高层的特性。
ROXterm是又一款轻量级终端仿真器旨在提供与“GNOME终端”相似的特性。它原本创造出来是为了避免使用Gnome库从而更少占用空间和更快启动并使用独立的小程序来显示配置界面(GUI), 但是随着时间的流逝,它的角色就转变为给那些高级用户带来更高层的特性。
然而它比GNOME终端更加具有可制定性并且对于那些经常使用终端的高级用户更令人期望。它能和GNOME桌面环境完美结合并在终端中提供像拖拽项目那样的特性。
然而它比GNOME终端更加具有可制定性并且对于那些经常使用终端的高级用户更令人期望。它能和GNOME桌面环境完美结合并在终端中提供像拖拽项目那样的特性。
![Roxterm Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/Roxterm-Terminal.jpeg)
Roxterm Terminal
*Roxterm 终端*
- [ROXTerm Homepage][6]
- [ROXTerm 主页][6]
### 6. Eterm ###
Eterm是最轻量级的一款彩色终端仿真器是作为xterm的替代品而被设计出来。它是以一种选择自由的思想、避免臃肿、灵活性和自由在用户手中是触手可及的理念而开发出来的
Eterm是最轻量级的一款彩色终端仿真器是作为xterm的替代品而被设计出来。它是以一种自由选择的理念设计的,带来了更强大、灵活、用户自主把控的终端
![Eterm Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/Eterm-Terminal.jpeg)
Eterm Terminal
*Eterm 终端*
- [Eterm Homepage][7]
- [Eterm 主页][7]
### 7. Rxvt ###
代表着扩展虚拟终端的Rxvt是一款彩色终端仿真器为那些不需要一些特性例如Tektronix 4014仿真和toolkit-style可配置性的高级用户而生的xterm替代品。
Rxvt 的意思是扩展虚拟终端,它是一款彩色终端仿真器,是为那些不需要一些诸如Tektronix 4014仿真和toolkit-style可配置性等特性的高级用户而生的xterm替代品。
![Rxvt Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/Rxvt-Terminal.jpeg)
Rxvt Terminal
*Rxvt 终端*
- [Rxvt Homepage][8]
- [Rxvt 主页][8]
### 8. Wterm ###
@ -111,9 +112,9 @@ Wterm是另一款以rxvt项目为基础的轻量级彩色终端仿真器。它
![wterm Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/wterm-Terminal-.jpeg)
wterm Terminal
*wterm 终端*
- [Wterm Homepage][9]
- [Wterm 主页][9]
### 9. LXTerminal ###
@ -121,16 +122,16 @@ LXTerminal是一款基于VTE的终端仿真器默认运行于没有任何多
#### LXTerminal的特性 ####
- 多标签支持
- 支持普通命令如cp, cd, dir, mkdir, mvdir
- 多标签支持
- 支持常规命令如cp, cd, dir, mkdir, mvdir
- 隐藏菜单栏以保证足够界面空间
- 更改配色方案
![lxterminal Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/lxterminal-Terminal.jpeg)
lxterminal Terminal
*lxterminal 终端*
- [LXTerminal Homepage][10]
- [LXTerminal 主页][10]
### 10. Konsole ###
@ -147,85 +148,83 @@ Konsole是另一款强大的基于KDE的免费终端仿真器最初由Lars Do
- 终端中的活动通知警告
- 增量搜索
- 支持Dolphin文件管理器
- 普通文本和HTML格式输出出口
- 支持导出显示为普通文本和HTML格式
![Konsole Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/Konsole-Terminal.jpeg)
Konsole Terminal
*Konsole 终端*
- [Konsole Homepage][11]
- [Konsole 主页][11]
### 11. TermKit ###
TermKit是一款漂亮简洁的终端其目标是用在Google Chrome和Chromium中广泛被使用的WebKit渲染引擎在基于应用程序的命令行中构建出GUI视图。TermKit起初是为Mac和Windows设计的但是由于TermKit被Floby给fork并做了修改现在你可以将它安装在Linux发行版上并感受TermKit带来的魅力。
TermKit是一款漂亮简洁的终端其目标是用WebKit渲染引擎在基于应用程序的命令行中构建出GUI视图LCTT 译注这个描述比较模糊请参考截图或安装一个体验下WebKit渲染引擎在Google Chrome和Chromium中广泛使用。TermKit起初是为Mac和Windows设计的但是由于Floby对TermKit 构建了分支现在你可以将它安装在Linux发行版上并感受TermKit带来的魅力。
![TermKit Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/TermKit-Terminal.jpeg)
TermKit Terminal
*TermKit 终端*
- [TermKit Homepage][12]
- [TermKit 主页][12]
### 12. st ###
st是一款简单的X Window终端实现接口
st是一款简单的X Window终端。
![st terminal](http://www.tecmint.com/wp-content/uploads/2014/01/st-terminal.png)
st terminal
*st 终端*
- [st Homepage][13]
- [st 主页][13]
### 13. Gnome-Terminal ###
### 13. Gnome 终端 ###
GNOME终端是一款在GNOME桌面环境下的嵌入式终端仿真器由Havoc Pennington和其他一些人共同开发。它允许用户在GNOME环境下的同时使用一个真实的Linux shell来运行命令。GNOME终端是模拟的xterm终端仿真器并带来了一些相似的特性。
GNOME终端是一款在GNOME桌面环境下自带的终端仿真器由Havoc Pennington和其他一些人共同开发。它允许用户在GNOME环境下可以使用一个真实的Linux shell来运行命令。GNOME终端是模仿了xterm终端仿真器并有一些相似的特性。
Gnome终端支持多用户,用户可以为他们的账户创建多个用户,每个用户能自定义配置选项,如字体、颜色、背景图片、行为习惯等等并能分别给它们取名。它也支持鼠标事件、url探测、多标签等。
Gnome终端支持多配置文件,用户可以为他们的账户创建多个配置文件,每个配置文件能自定义配置选项,如字体、颜色、背景图片、行为习惯等等,并能分别给每个配置文件取名。它也支持鼠标事件、url探测、多标签等。
![Gnome Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/Gnome-terminal.jpg)
Gnome Terminal
*Gnome 终端*
- [Gnome Terminal][14]
- [Gnome 终端][14]
### 14. Final Term ###
Final Term是一款漂亮的开源终端仿真器在这一个界面里蕴藏着一些令人激动的功能和特性。虽然它仍然有待改进,但是它提供了一些重要的特性比如Semantic文本菜单、智能的命令行实现、GUI终端控制、全能的快捷键、彩色支持等等。以下动图抓取并演示了它们的一些特性点开来看看吧。
Final Term是一款漂亮的开源终端仿真器在这一个单独的界面里蕴藏着一些令人激动的特性和方便的功能。虽然它仍然有待改进,但是它提供了一些重要的特性比如“语义”文本菜单、智能的命令行补全、GUI终端控制、全能的快捷键、彩色支持等等。以下动图抓取并演示了它们的一些特性点开来看看吧。
![FinalTerm Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/FinalTerm.gif)
FinalTerm Terminal
*FinalTerm 终端*
- [Final Term][15]
### 15. Terminology ###
Terminology是一款新的现代化终端仿真器为Enlightenment桌面创造但也能用于其它桌面环境。它有一些独一无二的棒极了的特性这是其它终端仿真器所不具备的。
Terminology是一款新的现代化终端仿真器为Enlightenment桌面创造但也能用于其它桌面环境。它有一些独一无二的棒极了的特性这是其它终端仿真器所不具备的。
抛开这些特性terminology甚至还提供了你无法从其它仿真器看到的东西比如图像、视频和文档的缩略图预览它允许你从Terminology直接就能看到那些文件。
你可以来看看Terminology的开发人员制作的小视频(视频画质不太清晰但足以让你了解Terminology了)。
<iframe width="630" height="480" frameborder="0" allowfullscreen="" src="//www.youtube.com/embed/ibPziLRGvkg"></iframe>
你可以来看看Terminology的开发人员制作的小视频(视频画质不太清晰但足以让你了解Terminology了) https://www.youtube.com/ibPziLRGvkg
- [Terminology][16]
### 16. Xfce4 terminal ###
### 16. Xfce4 终端 ###
Xfce终端是一款轻量级的现代化终端仿真器它简单易用为Xfce桌面环境设计。它最新的一个版本有许多新的炫酷特性比如搜索会话、标签颜色转换器、像Guake或Yakuake一样的下拉式控制台等等。
Xfce终端是一款轻量级的现代化终端仿真器它简单易用为Xfce桌面环境设计。它最新的一个版本有许多新的炫酷特性,比如搜索对话框、标签颜色转换器、像Guake或Yakuake一样的下拉式控制台等等。
![Xfce Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/xfce-terminal.jpg)
Xfce Terminal
*Xfce 终端*
- [Xfce4 Terminal][17]
- [Xfce4 终端][17]
### 17. xterm ###
xterm应用程序是一款标准的在X Window系统上的终端仿真器。它保持了DEC VT102和Tektronix 4014让应用能直接使用X Window系统
xterm应用是一款标准的在X Window系统上的终端仿真器。它保持了对DEC VT102和Tektronix 4014终端的兼容以支持那些不能直接使用窗口系统的应用
![xterm Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/xterm.jpg)
xterm Terminal
*xterm 终端*
- [xterm][18]
@ -233,36 +232,36 @@ xterm Terminal
LilyTerm是一款基于libvte的开源终端仿真器这款不太出名的仿真器追求的是快速和轻量级。LilyTerm也包括一些关键特性
- 支持标签移动、着色以及标签重新排序
- 支持标签、彩色以及标签重新排序
- 通过快捷键管理标签
- 支持背景透明化和饱和度调整
- 支持为特定用户创建配置文件
- 支持用户创建配置文件
- 若干个自定义选项
- 广泛支持UTF-8
![Lilyterm Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/Lilyterm.jpg)
Lilyterm Terminal
*Lilyterm 终端*
- [LilyTerm][19]
### 19. Sakura ###
Sakura是另一款不知名的Unix风格终端仿真器按照命令行模式和基于文本的终端程序开发。Sakura基于GTK和livte自身特性不多不过还是有一些自定义选项比如多标签支持、自定义文本颜色、字体和背景图片、快速命令处理等等。
Sakura是另一款不知名的Unix风格终端仿真器是为命令行模式和基于文本的终端程序开发。Sakura基于GTK和livte自身特性不多不过还是有一些自定义选项比如多标签支持、自定义文本颜色、字体和背景图片、快速命令处理等等。
![Sakura Terminal](http://www.tecmint.com/wp-content/uploads/2014/01/sakura.jpg)
Sakura Terminal
*Sakura 终端*
- [Sakura][20]
### 20. rxvt-unicode ###
rxvt-unicode (也称为urxvt) 是另一个高度可定制、轻量级和快速的终端仿真器支持xft和unicode由Marc Lehmann开发。它有许多显著特性比如支持Unicode上的国际语言能显示多种字体类型并支持Perl扩展。
rxvt-unicode (也称为urxvt) 是另一个高度可定制、轻量级和快速的终端仿真器支持xft和unicode由Marc Lehmann开发。它有许多显著特性比如通过Unicode支持国际化语言能显示多种字体类型并支持Perl扩展。
![rxvt unicode](http://www.tecmint.com/wp-content/uploads/2014/01/rxvt-unicode.png)
rxvt unicode
*rxvt unicode*
- [rxvt-unicode][21]
@ -274,7 +273,7 @@ via: http://www.tecmint.com/linux-terminal-emulators/
作者:[Ravi Saive][a]
译者:[ZTinoZ](https://github.com/ZTinoZ)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,122 @@
如何在 Linux 上 使用 ONLYOFFICE 协同编辑文档
================================================================================
> “多年前由一些紧张兮兮的、带有强迫症的助理开发的 Bulletin只是一个放在共享文件夹中只有 Emily 和我可以访问的 Word 文档而已。同一时间我们只有一个人可以打开它并添加消息、想法,或者给条目列表上增加问题。然后我们再打印出更新后的版本并放到我桌子架上的剪贴板,并在完成时删除旧的内容。”(——《穿普拉达的女王》,劳伦·魏丝伯格著
直到今天人们仍然在使用这样的“协同编辑”,只有一个人可以打开共享文件,对其进行更改,然后告诉其它人什么时候修改了什么。
ONLYOFFICE 是一款集成了文档、电子邮件、事件、任务和客户关系管理工具的开源在线办公套件。
使用 ONLYOFFICE 办公套件,一组人可以同时编辑文本、电子表格或者在浏览器上进行展示。可以直接在他们的文档上留下评论并用其中集成的聊天工具和其他人沟通。最后,可以保存文档为 PDF 文件并打印。作为额外的增强功能,它还能浏览文档历史并在如果需要时恢复到之前的修订/版本。
在这篇教程中,我会介绍如何使用 [免费版 ONLYOFFICE][1] 部署你自己的在线办公套件,免费版 ONLYOFFICE 是 ONLYOFFICE 在 GNU AGPL v3 协议下发布的自托管版本。
### 在 Linux 上安装 ONLYOFFICE ###
安装 ONLYOFFICE 要求在你的 Linux 系统上要有 mono4.0.0 或更高版本、nodejs、libstdc++6、nginx 和 mysql-server。为了简化安装过程并避免依赖错误我使用 Docker 安装 ONLYOFFICE。在这种情况下只需要安装一种依赖 - [Docker][2]。
提醒一下Docker 是一个在软件容器中自动部署应用的开源项目。如果在你的 Linux 系统上 Docker 不可用,首先根据 [基于 Debian][3] 或 [基于 Red-Hat][4] 系统的 Docker 安装指令安装它。
注意,你需要 Docker 1.4.1 或更高版本。要检查安装的 Docker 版本,可以使用下面的命令。
$ docker version
在一个 Docker 容器中试用 ONLYOFFICE只需要执行下面的命令
$ sudo docker run -i -t -d --name onlyoffice-document-server onlyoffice/documentserver
$ sudo docker run -i -t -d -p 80:80 -p 443:443 --link onlyoffice-document-server:document_server onlyoffice/communityserver
这些命令会下载为了能正常运行带有所有所需依赖的 [官方 ONLYOFFICE Docker 镜像][5]。
也可以在 Linux 服务器上单独安装 [ONLYOFFICE 在线编辑器][6],并通过提供的 API 轻松地集成到你的站点或云应用。
### 运行自行托管的在线 Office ###
要打开你的在线 office在你浏览器的地址栏输入 localhosthttp://IP地址/)。会打开欢迎页面:
![](https://farm9.staticflickr.com/8815/18116525656_795821c73b_c.jpg)
输入一个密码并指定下次访问你的 office 所使用的电子邮件地址。
### 在线编辑文档 ###
首先点击 Document 链接打开 **the My Documents** 文件夹。
![](https://farm8.staticflickr.com/7781/17956640089_d3df0b18cd_c.jpg)
#### STEP 1. 选择需要编辑的文档 ####
要在这里新建一个新文档,点击左上角的 “Create” 按钮,从下拉列表中选择文件类型。要编辑保存在你硬盘中的文件,点击 **Create** 按钮旁边的 **Upload** 按钮上传文件到 **Document**
![](https://farm9.staticflickr.com/8836/17956640109_ed8be735df_c.jpg)
#### STEP 2. 共享文档 ####
如果你在 **My Documents** 文件夹中,用右边的 **Share** 按钮,或者如果你在文档中,用 **File >> Document Info ... >> Change Access Rights**
在打开的 **Sharing Settings** 窗口,点击左边的 **People outside portal** 链接,打开到文档的访问,并通过启用 **Full Access** 单选按钮给予完全访问权限。
最后,选择一种方式共享到你文档的链接,通过 email 或者你可用的一种社交网络Google+、Facebook 或 Twitter 发送。
![](https://farm8.staticflickr.com/7766/17522306273_c8a9022c75_c.jpg)
#### STEP 3. 开始协同编辑 ####
邀请的人只需要根据提供的链接就可以开始协同编辑文档。
它会自动用不用颜色的虚线将你的合作者编辑的文本段落标记出来。
![](https://farm8.staticflickr.com/7790/18139370292_7ef57aae8f_c.jpg)
只要你的其中一个协作者保存了他/她的更改,你会看到在顶部工具栏左上角出现了一个提示标签,表示这里有更新。
![](https://farm8.staticflickr.com/7778/18143984831_3dd42a9672_c.jpg)
点击 **Save** 图标保存更改并更新。然后会高亮所有的更新。
![](https://farm8.staticflickr.com/7796/17955172970_e53460b8a6_c.jpg)
#### STEP 4. 和协作者互动 ####
要写评论,用鼠标选择一个文本段落,右击并从上下文菜单中选择 **Add comment** 选项。
![](https://farm8.staticflickr.com/7771/17956640359_c4e2858dc8_c.jpg)
要和协作者实时互动,可以使用集成的聊天工具。**Chat** 面板会列出所有正在编辑文档的用户。点击左侧边栏的 **Chat** 图标打开它。在 **Chat** 面板的合适区域输入你的信息开始讨论。
![](https://farm8.staticflickr.com/7794/18116394026_d93b00e4f8_c.jpg)
### 有用的提示 ###
最后,这里有一些你充分利用 ONLYOFFICE 的有用提示。
#### Tip #1. 在云存储服务例如 ownCloud 上编辑文档 ####
如果你将文档存储在其它网络资源上,例如 Box、Dropbox、Google Drive、OneDrive、SharePoint 或 ownCloud你可以轻松地和 ONLYOFFICE 同步。
在打开的 Documents 模块,点击 **Add the account** 下面的其中一个图标Google、Box、DropBox、OneDrive、ownCloud 或 Add account并输入所需数据。
#### Tip #2. 在 iPad 上编辑文档 ####
要随时随地对文件进行修改,我使用 iPad 的 ONLYOFFICE Documents 应用。你可以从 [iTune][7] 下载并安装它,然后你需要输入你的 ONLYOFFICE 地址、email 和密码来访问你的文档。功能设置几乎一样。
为了评估 ONLYOFFICE 在线编辑器的功能,你可以使用供个人使用的 [云版本][8]。
--------------------------------------------------------------------------------
via: http://xmodulo.com/edit-documents-collaboratively-linux.html
作者:[Tatiana Kochedykova][a]
译者:[ictlyh](https://github.com/ictlyh)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/tatiana
[1]:http://www.onlyoffice.org/
[2]:http://xmodulo.com/recommend/dockerbook
[3]:http://xmodulo.com/manage-linux-containers-docker-ubuntu.html
[4]:http://xmodulo.com/docker-containers-centos-fedora.html
[5]:https://registry.hub.docker.com/u/onlyoffice/communityserver/
[6]:http://onlyoffice.org/sources#document
[7]:https://itunes.apple.com/us/app/onlyoffice-documents/id944896972
[8]:https://personal.onlyoffice.com/

View File

@ -0,0 +1,222 @@
适合于远程编辑以及更多环境的简洁文本编辑器
================================================================================
文本编辑器是用来编辑纯文本的软件。这种软件有许多用处,包括修改配置文件,编写程序源代码,记下一些想法或者甚至写一份购物列表。由于这种编辑器能都用于许多不同的方面,因此值得花些时间找一个最适合您喜好的编辑器。
不论编辑器有多么复杂,它们通常有一个共同的功能集,包括查找/替换文本,格式化文本,导入文件以及在文件中移动文本。
所有这些文本编辑器都是基于终端的应用,因此他们很适合在远程主机上编辑文件。文本编辑器通常也会提供一个图形化的用户界面,但依旧会保证快速和精简。
基于终端的应用程序在系统资源方面也是轻量级的在低配置机器上很有用比起它的图形化版本来也会更快、更高效由于它们在X需要重启时也不会停止工作因此非常适合编写脚本。
我选择了一些我最喜欢的开源文本编辑器,他们在使用系统资源方面都非常节俭。
### Textadept ###
![](http://www.linuxlinks.com/portal/content/reviews/Editors/Screenshot-Textadept.png)
Textadept是一款适合程序员的快速、精简、可扩展、跨平台的开源文本编辑器。这个开源程序由C和Lua写就并且于这些年间在速度和精简方面进行了优化。
Textadept是那些想要无限的扩展性且不愿牺牲速度或屈服于代码膨胀的程序员们的理想编辑器。
它也有一个用于终端的版本仅仅依赖ncurses适合在远程主机上进行编辑。
#### 功能包括: ####
- 轻量级
- 精简设计以最大化利用屏幕
- 自包含的执行文件 - 无需安装
- 全键盘驱动
- 无限制的分割视图GUI版本以您所好任意水平或垂直的分割编辑器窗口。请注意Textadep不是一个选项卡式的编辑器。
- 支持多达80种的编程语言
- 强大的代码片段和快捷键命令
- 代码自动补全和API查询
- 无与伦比的扩展性
- 书签
- 查找和替换
- 在文件中查找
- 基于缓存的单词补全
- 成熟的编程语言符号自动补全以及显示API文档的功能
- 主题:亮色、暗色、终端
- 使用词法分析器将名称放到缓冲中,如评论、字符串、关键词
- 支持会话
- 快速打开
- 许多可用的模块包括对Java、Python、Ruby和近期打开文件列表的支持
- 符合Gnome HIG用户接口的指导
- 支持编辑Lua代码。许多Textadept对象和Lua的标准库支持语法自动补全和LuaDoc。
---
- 网址: [foicica.com/textadept][1]
- 开发者: Mitchell and contributors
- 许可证: MIT License
- 版本号: 7.7
### Vim ###
![](http://www.linuxlinks.com/portal/content/reviews/Editors/Screenshot-vim.png)
vim是一个高级的文本编辑器它在'vi'强大的基础上,并拥有更全面的功能集。
这个编辑器对编程和编辑其他纯ASCII的文件十分有用。所有的命令都由普通的键盘按键提供能够使用十指来输入因而十分快捷。另外功能键可以由用户来定义并且可也以使用鼠标。
Vim通常被称作"程序员的编辑器"它十分适合于编程并被认为可以作为完整的集成开发环境。然而这个软件并不是仅仅面向程序员。Vim适合于各种文本编辑从编写email到修改配置文件。
Vim的界面基于文本界面下的命令行。尽管它的图形化版本gVim为常用的命令添加了菜单和工具栏但这个软件的整个功能依旧依赖于它的命令行模式。
#### 功能包括: ####
- 3 种模式:
- 命令模式
- 插入模式
- 命令行模式
- 无限制的撤销
- 多个窗口和缓冲区
- 平滑的插入模式
- 根据所编辑的文件的类型使用不同的颜色或风格进行语法高亮
- 交互命令
- 标记一行
- vi 行缓冲
- 移动代码块
- 块操作
- 命令行历史
- 扩展的正则表达式
- 可编辑压缩/打包文件 (gzip, bzip2, zip, tar)
- 文件名补全
- 标记跳转
- 折叠文本
- 缩进
- ctags和cscope整合
- 100%与vi的模式兼容
- 插件用于添加/扩展功能
- 宏
- vimscript, Vim的内部脚本
- Unicode支持
- 多语言支持
- 在线帮助支持
---
- 网址: [www.vim.org][2]
- 开发者: Bram Moolenaar
- 许可证: GNU GPL compatible (charityware)
- 版本号: 7.4
### ne ###
![](http://www.linuxlinks.com/portal/content/reviews/Editors/Screenshot-ne.png)
ne是一款全屏幕的开源文本编辑器。它像是一个比vi更容易学习的vi替代物并且可以在POSIX-兼容的系统中便携使用。
ne对于新手来说易于使用但也非常强大并有完全可配置的引导程序并且在资源使用上十分节约。
#### 功能包括: ####
- 三种用户界面: 控制键,命令行、菜单;按键和菜单都可配置
- 语法高亮
- 对于UTF-8文件的完全支持包括占据多列的字符宽字符
- 文档,剪切块,显示的维度和文件/行号长度都有编号,并且仅受制于机器的整型字长
- 简单的脚本语言,脚本可以用简单易理解的录制/播放的方式制作
- 无限制的撤销/重做功能(可以通过命令禁用)
- 基于被编辑的文件扩展名的自动个性化配置系统
- 使用您文档中的词语做字典来进行自动前缀补全
- 易用的文件存取功能
- 扩展的正则表达式可用于查找和替换类似emacs和vi
- 非常紧凑的内存模型,在加载和修改大型文件时十分快速
- 可编辑二进制文件
---
- 网址: [ne.di.unimi.it][3]
- 开发者: Sebastiano Vigna (original developer). Additional features added by Todd M. Lewis
- 许可证: GNU GPL v3
- 版本号: 2.5
----------
### Zile ###
![](http://www.linuxlinks.com/portal/content/reviews/Editors/Screenshot-Zile.png)
ZileZile Is Lossy EmacsEmacs精简版它是一个小型的Emacs的克隆版。Zile是一个可定制的自文档化实时显示的编辑器Zile被开发的尽可能像Emacs一样每个Emacs用户都会对Zile感到亲切。
Zile以它极小的RAM用量大约130KB以及快速开始编辑而闻名。它是支持8比特字符集的允许用于编写任何种类的文件。
#### 功能包括: ####
- 小型但快速、强大
- 多个缓冲区,允许多级的撤销
- 多窗口
- 以最小的缓冲区完成补全
- 自动填充 (自动换行)
- Registers
- 看起来像Emacs键序列、功能和变量名都与Emacs相同
- Killing
- Yanking
- 自动行末检测
---
- 网址: [www.gnu.org/software/zile][4]
- 开发者: Reuben Thomas, Sandro Sigala, David A. Capello
- 许可证: GNU GPL v2
- 版本号: 2.4.11
### nano ###
![](http://www.linuxlinks.com/portal/content/reviews/Editors/Screenshot-nano.png)
nano是基于curses库的文本编辑器。它是PicoPine电子邮件客户端编辑器的一个复刻版。
由于Pine套件的许可证问题诉讼案Pine并未以开源许可证发布并且也因为Pine缺少一些重要的功能nano项目于1999年发起。
nano致力于赶上Pico的功能和其易用性与此同时提供更多的功能但不集成Pine/Pico的邮件客户端。
nano像Pico一样是以键盘为导向的设计可以用控制键来控制。
#### 功能包括: ####
- 交互式的查找和替换
- 彩色语法高亮
- 转到行号和列号处
- 自动缩进
- 功能开关
- 支持UTF-8
- 混合型的文件类型自动转换
- 逐字输入模式
- 多个文件缓冲区
- 平滑滚动
- 括号匹配
- 自定义引用字符串
- 备份文件
- 国际化支持
- tab补全文件名
---
- 网址: [nano-editor.org][5]
- 开发者: Chris Allegretta, David Lawrence, Jordi Mallach, Adam Rogoyski, Robert Siemborski, Rocco Corsi, David Benbennick, Mike Frysinger
- 许可证: GNU GPL v3
- 版本号: 2.2.6
--------------------------------------------------------------------------------
via: http://www.linuxlinks.com/article/20141011073917230/TextEditors.html
作者Frazer Kline
译者:[wwy-hust](https://github.com/wwy-hust)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://foicica.com/textadept/
[2]:http://www.vim.org/
[3]:http://ne.di.unimi.it/
[4]:http://www.gnu.org/software/zile/
[5]:http://nano-editor.org/

View File

@ -0,0 +1,67 @@
Linux下优秀的音频编辑软件
================================================================================
不论您是一个音乐爱好者或只是一个要记录您导师的讲话的学生您都需要录制音频和编辑音频。长久以来这样的工作都要靠Macintosh如今那个时代已经过去现在Linux也可以胜任这些工作了。简而言之这里有一份不完全的音频编辑器软件列表适用于不同的任务和需求。
### 1. Audacity ###
![](https://farm9.staticflickr.com/8572/15405018653_83ba3e718d_c.jpg)
让我们从我个人最喜欢的软件开始。[Audacity][1]可以运行在Windows、Mac和Linux上。它是开源的且易于使用。你会觉得Audacity几乎是完美的。它可以让您在干净的界面上操作音频波形。简单地说您可以覆盖音轨、剪切和修改音轨、增加特效、执行高级的声音分析然后将它们导出到一大堆可用的格式。我喜欢它的原因是它将基本的功能和复杂的功能结合在一起并且保持一个简单的学习曲线。然而它并不是一个完全最优化的软件尤其是对于音乐家和专业人员。
### 2. Jokosher ###
![](https://farm8.staticflickr.com/7524/15998875136_82903a9b4a_c.jpg)
在不同的层次上,[Jokosher][2]更多的聚焦在多音轨方面。它使用Python和GTK+作为前端界面并使用GStreamer作为音频后端。Jokosher那易用的界面和它的扩展性给我留下了深刻的印象。也许编辑的功能并不是最先进的但它的提示十分清晰适合音乐家。例如我十分喜欢音轨和乐器的组合。简而言之如果您是一个音乐家那么它是在您转移到下一个软件前进行实践的好机会。
### 3. Ardour ###
![](https://farm9.staticflickr.com/8577/16024644385_d8cd8073a3_c.jpg)
接下来谈论一些复杂的工具,[Ardour][3]是一套完整的可以录制、编辑和混音的软件。这个设计吸引了所有的专业人员Ardour在声音和插件方面超出我的想象。如果您在寻找一头野兽并且不惧怕驯服它那么Ardour或许是一个不错的选择。再次它的界面和丰富的文档尤其是它首次启动时的配置工具都是它迷人魅力的一部分。
### 4. Kwave ###
![](https://farm8.staticflickr.com/7557/15402389884_633a8b04c5_c.jpg)
对于所有KDE的热爱者[KWave][4]绝对符合您对于设计和功能的想象。它有丰富的快捷键以及很多有趣的选项,例如内存管理。尽管很多特效很不错,但我们更应该关注那些用于音频剪切/粘贴的工具。可惜的是它无法与Audacity相比而更重要的是它的界面并没有那么吸引我。
### 5. Qtractor ###
![](https://farm8.staticflickr.com/7551/16022707501_68c39f37e5_c.jpg)
如果Kwave对您来说过于简单但基于Qt的程序却有些吸引力那么对您来说也许[Qtractor][5]是一个选项。它致力于做一个“对于家庭用户来说足够简单并且对专业人员来说足够强大的软件。”实际上它功能和选项的数量几乎是压倒性的。我最喜欢的当然是可定制的快捷键。除此之外Qtractor可能是我最喜欢的一个处理MIDI文件的工具。
### 6. LMMS ###
![](https://farm8.staticflickr.com/7509/15838603239_ef0ecbc8d2_c.jpg)
作为Linux多媒体工作室LMMS的直接目标是音乐制作。如果您之前没有什么经验并且不想浪费太多的时间那么请去别处吧。LMMS是其中一个复杂但强大的软件只有少数的人真正的掌握了它。它有太多的功能和特效以至于无法一一列出但如果我必须找一个我会说用来模拟Game Boy声音系统的Freeboy插件简直像魔术一样。然后去看看它那惊人的文档吧。
### 7. Traverso ###
![](https://farm8.staticflickr.com/7537/15838603279_70ee925057_c.jpg)
最后站在我面前的是Traverso它支持无限制的音轨计数并直接整合了CD烧录的功能。另外它对我来说是介于简单的软件和专业的软件之间的程序。它的界面是KDE样式的其键盘配置很简单。更有趣的是Traverso会监视您的系统资源以确定不会超过您的CPU或者硬件的能力。
总而言之能在Linux系统上看到这么多不同的应用程序是一件开心的事。它使得您永远可以找到最适合自己的那一款。虽然我最喜欢的应用是Audacity但我非常震惊于LMMS和Jokosher的设计。
我们有漏掉什么么您在Linux下使用哪一款软件呢原因是什么呢请留言让我们知道。
--------------------------------------------------------------------------------
via: http://xmodulo.com/good-audio-editing-software-linux.html
作者:[Adrien Brochard][a]
译者:[wwy-hust](https://github.com/wwy-hust)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/adrien
[1]:http://audacity.sourceforge.net/
[2]:https://launchpad.net/jokosher/
[3]:http://ardour.org/
[4]:http://kwave.sourceforge.net/
[5]:http://qtractor.sourceforge.net/qtractor-index.html

View File

@ -0,0 +1,154 @@
2015 年度开源项目新秀榜
================================================================================
黑鸭Black Duck软件公布了一份名叫“年度开源项目新秀”的报告介绍了由全球开源协会发起的10个最有趣、最活跃的新项目。
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_01-100564902-orig.jpeg)
### 年度开源项目新秀 ###
每年都有上千新的开源项目问世,但只有少数能够真正的吸引我们的关注。一些项目因为利用了当前比较流行的技术而发展壮大,有一些则真正地开启了一个新的领域。很多开源项目建立的初衷是为了解决一些生产上的问题,还有一些项目则是世界各地志同道合的开发者们共同发起的一个宏伟项目。
从2009年起开源软件管理公司黑鸭便发起了[年度开源项目新秀][1]这一活动,它的评选根据[Open Hub][2]网站即以前的Ohloh上的活跃度。今年我们很荣幸能够报道2015年10大开源项目新秀的得主和2名荣誉奖得主它们是从上千个开源项目中脱颖而出的。评选采用了加权评分系统得分标准基于项目的活跃度交付速度和几个其它因数。
开源俨然成为了产业创新的引擎就拿今年来说和Docker容器相关的开源项目在全球各地兴起这也不恰巧反映了企业最感兴趣的技术领域吗最后我们接下来介绍的项目将会让你了解到全球开源项目的开发者们的在思考什么这很快将会成为一个指引我们发展的领头羊。
### 2015年度开源项目新秀: DebOps ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_02-100564903-orig.jpeg)
[DebOps][3]收集打包了一套[Ansible][4]方案和规则Ansible是一种自动化运维工具可以从1个容器扩展到一个完整的数据中心。它的创始人Maciej Delmanowski将DebOps开源来保证项目长久进行从而更好的通过外部贡献者的帮助发展下去。
DebOps始创于波兰的一个不起眼大学校园里他们运营自己的数据中心一切工作都采用手工配置。有时系统崩溃而导致几天的宕机这时Delmanowski意识到一个配置管理系统是很有必要的。以Debian作为基础开始DebOps是一组配置一整个数据基础设施的Ansible方案。此项目已经在许多不同的工作环境下实现而创始者们则打算继续支持和改进这个项目。
###2015年度开源项目新秀: Code Combat ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_03-100564904-gallery.idge.jpg)
传统的纸笔学习方法已近不能满足技术学科了。然而游戏却有很多人都爱玩,这也就是为什么[CodeCombat][5]的创始人会去开发一款多人协同编程游戏来教人们如何编码。
刚开始CodeCombat是一个创业想法但其创始人决定取而代之创建一个开源项目。此想法在社区传播开来很快不少贡献者加入到项目中来。项目发起仅仅两个月后这款游戏就被接纳到Googles Summer of Code活动中。这款游戏吸引了大量玩家并被翻译成45种语言。CodeCombat希望成为那些想要一边学习代码同时获得乐趣的同学的风向标。
### 2015年度开源项目新秀: Storj ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_04-100564905-gallery.idge.jpg)
[Storj][6]是一个点对点的云存储网络可实现端到端加密保证用户不用依赖第三方即可传输和共享数据。基于比特币block chain技术和点对点协议Storj提供安全、私密、加密的云存储。
云数据存储的反对者担心成本开销和漏洞攻击。针对这两个担忧Storj提供了一个私有云存储市场用户可以通过Storjcoin X(SJCX) 购买交易存储空间。上传到Storj的文件会被粉碎、加密和存储到整个社区。只有文件所有者拥有密钥加密的信息。
在2014年举办的Texas Bitcoin Conference Hackathon会议上去中心化的云存储市场概念首次被提出并证明可行。在第一次赢得黑客马拉松活动后项目创始人们和领导团队利用开放论坛、Reddit、比特币论坛和社交媒体增长成了一个活跃的社区如今它们已成为影响Storj发展方向的一个重要组成部分。
### 2015年度开源项目新秀: Neovim ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_05-100564906-orig.jpg)
自1991年出现以来Vim已经成为数以百万计软件开发人员所钟爱的文本编辑器。 而[Neovim][6]就是它的下一个版本。
在过去的23年里软件开发生态系统经历了无数增长和创新。Neovim创始人Thiago de Arruda认为Vim缺乏当代元素跟不上时代的发展。在保留Vim的招牌功能的前提下Neovim团队同样在寻求改进和发展这个最受欢迎的文本编辑器的技术。早期众筹让Thiago de Arruda可以连续6个月时间投入到此项目。他相信Neovim社区会支持这个项目激励他继续开发Neovim。
### 2015年度开源项目新秀: CockroachDB ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_06-100564907-orig.jpg)
前谷歌员工开发了一个开源的大型企业数据存储项目[CockroachDB][8],它是一个可扩展的、跨地域复制且支持事务的数据存储的解决方案。
为了保证在线的百万兆字节流量业务的质量Google开发了Spanner系统这是一个可扩展的稳定的支持事务的系统。许多参与开发CockroachDB的团队现在都服务于开源社区。就像真正的蟑螂cockroach一样CockroachDB可以在没有数据头、任意节点失效的情况下正常运行。这个开源项目有很多富有经验的贡献者创始人们通过社交媒体、Github、网络、会议和聚会结识他们并鼓励他们参与其中。
### 2015年度开源项目新秀: Kubernetes ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_07-100564908-orig.jpg)
在将容器化软件到引入开源社区发展时,[Docker][9]是一匹黑马它创新了一套技术和工具。去年6月谷歌推出了[Kubernetes][10],这是一款开源的容器管理工具,用来加快开发和简化操作。
谷歌在它的内部运营上使用容器技术多年了。在2014年夏天的DockerCon上大会上谷歌这个互联网巨头开源了KubernetesKubernetes的开发是为了满足迅速增长的Docker生态系统的需要。通过和其它的组织、项目合作比如Red Hat和CoreOSKubernetes项目的管理者们推动它登上了Docker Hub的工具下载榜榜首。Kubernetes的开发团队希望扩大这个项目发展它的社区这样的话软件开发者就能花更少的时间在管理基础设施上而更多的去开发他们自己的APP。
### 2015年度开源项目新秀: Open Bazaar ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_08-100564909-orig.jpg)
OpenBazaar是一个使用比特币与其他人交易的去中心化的市场。OpenBazaar这一概念最早在编程马拉松hackathon活动中被提出它的创始人结合了BitTorent、比特币和传统的金融服务方式创造了一个不受审查的交易平台。OpenBazaar的开发团队在寻求新的成员而且不久以后他们将极度扩大Open Bazaar社区。Open Bazaar的核心是透明度其创始人和贡献者的共同目标是在商务交易中掀起一场革命让他们向着一个真实的、一个无控制的去中心化的市场奋进。
### 2015年度开源项目新秀: IPFS ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_09-100564910-orig.jpg)
IPFS 是一个面向全球的、点对点的分布式版本文件系统。它综合了GitBitTorrentHTTP的思想开启了一个新的数据和数据结构传输协议。
人们所知的开源它的本意用简单的方法解决复杂的问题这样产生许多新颖的想法但是那些强大的项目仅仅是开源社区的冰山一角。IFPS有一个非常激进的团队这个概念的提出是大胆的令人惊讶的有点甚至高不可攀。看起来一个点对点的分布式文件系统是在寻求将所有的计算设备连在一起。这个可能的 HTTP 替换品通过多种渠道维护着一个社区包括Git社区和超过100名贡献者的IRC。这个疯狂的想法将在2015年进行软件内部测试。
### 2015年度开源项目新秀: cAdvisor ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_10-100564911-orig.jpg)
[cAdvisor (Container Advisor)][13] 是一个针对在运行中的容器进行收集统计处理和输出信息的工具它可以给容器的使用者提供资源的使用情况和工作特性。对于每一个容器cAdvisor记录着资源的隔离参数资源使用历史资源使用历史对比框图网络状态。这些从容器输出的数据跨越主机传递。
cAdvisor可以在绝大多数的Linux发行版上运行并且支持包括Docker在内的多种容器类型。事实上它成为了一种容器的代理并被集成在了很多系统中。cAdvisor在DockerHub下载量也是位居前茅。cAdvisor的开发团队希望把cAdvisor改进到能够更深入地理解应用性能并且集成到集群系统。
### 2015年度开源项目新秀: Terraform ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_11-100564912-orig.jpg)
[Terraform][14]提供了一些常见设置来创建一个基础设施从物理机到虚拟机以及email服务器、DNS服务器等。这个想法包括从家庭个人机解决方案到公共云平台提供的服务。一旦建立好了以后Terraform可以让运维人员安全又高效地改变你的基础设施就如同配置一样。
Terraform.io的创始者工作在一个Devops模式的公司他找到了一个窍门把建立一个完整的数据中心所需的知识结合在一起可以从添加服务器到支持网络服务的功能齐备的数据中心。基础设施的描述采用高级的配置语法允许你把数据中心的蓝图按版本管理并且转换成多种代码。著名开源公司HashiCorp赞助开发这个项目。
### 荣誉奖: Docker Fig ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_12-100564913-orig.jpg)
[Fig][15]为[Docker][16]的使用提供了一个快速的分离的开发环境。Docker的移植只需要将配置信息放到一个简单的 fig.yml文件里。它会处理所有工作包括构建、运行端口转发分享磁盘和容器链接。
Orchard去年发起了Fig来创造一个使Docker工作起来的系统工具。它的开发像是为Docker设置开发环境为了确保用户能够为他们的APP准确定义环境在Docker中会运行数据库和缓存。Fig解决了开发者的一个难题。Docker全面支持这个开源项目最近[将买下][17]Orchard来扩张这个项目。
### 荣誉奖: Drone ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_13-100564916-orig.jpg)
[Drone][18]是一个基于Docker的持续集成平台而且它是用Go语言写的。Drone项目不满于现存的设置开发环境的技术和流程。
Drone提供了一个简单的自动测试和持续交付的方法简单选择一个Docker镜像来满足你的需求连接并提交至GitHub即可。Drone使用Docker容器来提供隔离的测试环境让每个项目完全自主控制它的环境没有传统的服务器管理的负担。Drone背后的100位社区贡献者强烈希望把这个项目带到企业和移动应用程序开发中。
### 开源新秀 ###
![](http://images.techhive.com/images/article/2015/01/open_source_rookies_14-100564941-orig.jpg)
参见:
- [InfoWorld2015年年度技术奖][21]
- [Bossies: 开源软件最高荣誉][22]
--------------------------------------------------------------------------------
via: http://www.infoworld.com/article/2875439/open-source-software/the-top-10-rookie-open-source-projects.html
作者:[Black Duck Software][a]
译者:[sevenot](https://github.com/sevenot)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.infoworld.com/author/Black-Duck-Software/
[1]:https://www.blackducksoftware.com/open-source-rookies
[2]:https://www.openhub.net/
[3]:https://github.com/debops/debops
[4]:http://www.infoworld.com/article/2612397/data-center/review--ansible-orchestration-is-a-veteran-unix-admin-s-dream.html
[5]:https://codecombat.com/
[6]:http://storj.io/
[7]:http://neovim.org/
[8]:https://github.com/cockroachdb/cockroach
[9]:http://www.infoworld.com/resources/16373/application-virtualization/the-beginners-guide-to-docker
[10]:http://kubernetes.io/
[11]:https://openbazaar.org/
[12]:http://ipfs.io/
[13]:https://github.com/google/cadvisor
[14]:https://www.terraform.io/
[15]:http://www.fig.sh/
[16]:http://www.infoworld.com/resources/16373/application-virtualization/the-beginners-guide-to-docker
[17]:http://www.infoworld.com/article/2608546/application-virtualization/docker-acquires-orchard-in-a-sign-of-rising-ambitions.html
[18]:https://drone.io/
[19]:http://www.infoworld.com/article/2683845/google-go/164121-Fast-guide-to-Go-programming.html
[20]:https://www.blackducksoftware.com/open-source-rookies
[21]:http://www.infoworld.com/article/2871935/application-development/infoworlds-2015-technology-of-the-year-award-winners.html
[22]:http://www.infoworld.com/article/2688104/open-source-software/article.html
[23]:http://www.infoworld.com/article/2854954/microsoft-windows/15-essential-open-source-tools-for-windows-admins.html

View File

@ -0,0 +1,138 @@
如何在 Linux 上使用 x2go 设置远程桌面
================================================================================
由于一切都迁移到了云上,作为提高职员生产力的一种方式,虚拟远程桌面在工业中越来越流行。尤其对于那些需要在多个地方和设备之间不停漫游的人,远程桌面可以让他们和工作环境保持无缝连接。远程桌面对于雇主同样有吸引力,可以在工作环境中提高敏捷性和灵活性,由于硬件整合、桌面安全加固等原因降低 IT 花费。
在 Linux 世界中,理所当然设置远程桌面有很多选择,支持许多协议(例如 RDP、RFB、NX 和服务器/客户端实现(例如 [TigerVNC][1]、RealVNC、FreeNX、x2go、X11vnc、TeamViewer 等等)。
这当中有个出色的产品叫做 [X2Go][2],它是一个基于 NX译者注通过计算机网络显示远程桌面环境的一种技术可参考 [Wiki][9])的远程桌面服务器和客户端的开源(GPLv2)实现。在这个教程中,我会介绍 **如何为 Linux VPS 使用 X2Go 设置远程桌面环境**
### X2Go 是什么? ###
X2Go 的历史要追溯到 NoMachine 的 NX 技术。NX 远程桌面协议的设计目的是通过利用主动压缩和缓存解决低带宽和高延迟的网络连接问题。后来NX 转为闭源,但 NX 库还是采用 GPL 协议。这导致出现了多种基于 NX 的远程桌面解决方案开源实现X2Go 就是其中之一。
和其它解决方案例如 VNC 相比X2Go 有哪些好处呢? X2Go 继承了 NX 技术的所有高级功能,很自然能在慢速网络连接上良好工作。另外,由于它内置的基于 SSH 的加密技术X2Go 保持了确保安全的良好业绩记录。不再需要[手动设置 SSH 隧道][4] 。X2Go 默认支持音频,这意味着远程桌面的音乐播放可以通过网络传送,并进入本地扬声器。在易用性方面,远程桌面上运行的应用程序可以在你的本地桌面中以一个独立窗口无缝呈现,会给你造成一种应用程序实际上在你本地桌面运行的错觉。正如你看到的,这些都是一些基于 VNC 的解决方案所缺少的[强大功能][5]。
### X2GO 的桌面环境兼容性 ###
和其它远程桌面服务器一样X2Go 服务器也有一些[已知的兼容性问题][6]。像 KDE 3/4、Xfce、MATE 和 LXDE 是对 X2Go 服务器最友好的桌面环境。但是,用其它桌面管理器效果可能有所不同。例如,已知 GNOME 3 之后的版本、KDE 5、Unity 和 X2Go 并不兼容。如果你的远程主机的桌面管理器和 X2Go 兼容,你可以继续以下的教程。
### 在 Linux 上安装 X2Go 服务器 ###
X2Go 由远程桌面服务器和客户端组件组成。让我们首先安装 X2Go 服务器。我假设你已经有一个和 X2Go 兼容的桌面管理器并且在远程主机上运行,我们会安装 X2Go 服务器到该远程主机。
注意系统启动后 X2Go 服务器组件没有需要单独启动的服务。你只需要保证开启了 SSH 服务并在正常运行。
#### Ubuntu 或 Linux Mint ####
配置 X2Go PPA 库。对于 Ubuntu 14.04 以及更高版本,有可用的 X2Go PPA。
$ sudo add-apt-repository ppa:x2go/stable
$ sudo apt-get update
$ sudo apt-get install x2goserver x2goserver-xsession
#### Debian (Wheezy) ####
$ sudo apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E
$ sudo sh -c "echo deb http://packages.x2go.org/debian wheezy main > /etc/apt/sources.list.d/x2go.list"
$ sudo sh -c "echo deb-src http://packages.x2go.org/debian wheezy main >> /etc/apt/sources.list.d/x2go.list"
$ sudo apt-get update
$ sudo apt-get install x2goserver x2goserver-xsession
#### Fedora ####
$ sudo yum install x2goserver x2goserver-xsession
#### CentOS/RHEL ####
首先启用 [EPEL 库][7] 然后运行:
$ sudo yum install x2goserver x2goserver-xsession
### 在 Linux 上安装 X2Go 客户端 ###
在将会连接到远程桌面的本地主机上,安装以下命令安装 X2Go 客户端。
#### Ubuntu 或 Linux Mint ####
配置 X2Go PPA 库。对于 Ubuntu 14.04 以及更高版本,有可用的 X2Go PPA。
$ sudo add-apt-repository ppa:x2go/stable
$ sudo apt-get update
$ sudo apt-get install x2goclient
Debian (Wheezy)
$ sudo apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E
$ sudo sh -c "echo deb http://packages.x2go.org/debian wheezy main > /etc/apt/sources.list.d/x2go.list"
$ sudo sh -c "echo deb-src http://packages.x2go.org/debian wheezy main >> /etc/apt/sources.list.d/x2go.list"
$ sudo apt-get update
$ sudo apt-get install x2goclient
#### Fedora ####
$ sudo yum install x2goclient
CentOS/RHEL
首先启用 [EPEL 库][7] ,然后运行:
$ sudo yum install x2goclient
### 用 X2Go 客户端连接到远程桌面 ###
现在可以连接到远程桌面了。在本地主机上,只需运行以下命令或者使用桌面启动器启动 X2Go 客户端。
$ x2goclient
输入远程主机的 IP 地址和 SSH 用户名称。同时,指定会话类型(例如,远程主机的桌面管理器)。
![](https://farm9.staticflickr.com/8730/16365755693_75f3d544e9_b.jpg)
如果需要的话,你可以自定义其它东西(通过点击其它的标签),例如连接速度、压缩、屏幕分辨率等等。
![](https://farm9.staticflickr.com/8699/16984498482_665b975eca_b.jpg)
![](https://farm9.staticflickr.com/8694/16985838755_1b7df1eb78_b.jpg)
当你初始化一个远程桌面连接的时候,会要求你登录。输入你的 SSH 登录名和密码。
![](https://farm9.staticflickr.com/8754/16984498432_1c8068b817_b.jpg)
成功登陆后,你会看到远程桌面屏幕。
![](https://farm9.staticflickr.com/8752/16798126858_1ab083ba80_c.jpg)
如果你想测试 X2Go 的无缝窗口功能,选择 "Single application" 会话类型,然后指定远处主机上可执行文件的路径。在该例子中,我选择远程 KDE 主机上的 Dolphin 文件管理器。
![](https://farm8.staticflickr.com/7584/16798393920_128c3af9c5_b.jpg)
你成功连接后,你会在本地桌面上看到一个远程应用窗口,而不是完整的远程桌面屏幕。
![](https://farm9.staticflickr.com/8742/16365755713_7b90cf65f0_c.jpg)
### 总结 ###
在这篇教程中,我介绍了如何在 [Linux VPS][8] 实例上设置 X2Go 远程桌面。正如你所看到的整个设置过程都非常简单如果你使用一个合适的桌面环境的话。尽管对于特定桌面仍有问题X2Go 是一个安全、功能丰富、快速并且免费的远程桌面解决方案。
X2Go 的什么功能最吸引你?欢迎分享你的观点。
--------------------------------------------------------------------------------
via: http://xmodulo.com/x2go-remote-desktop-linux.html
作者:[Dan Nanni][a]
译者:[ictlyh](https://github.com/ictlyh)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/nanni
[1]:http://ask.xmodulo.com/centos-remote-desktop-vps.html
[2]:http://wiki.x2go.org/
[3]:http://xmodulo.com/go/digitalocean
[4]:http://xmodulo.com/how-to-set-up-vnc-over-ssh.html
[5]:http://wiki.x2go.org/doku.php/doc:newtox2go
[6]:http://wiki.x2go.org/doku.php/doc:de-compat
[7]:https://linux.cn/article-2324-1.html
[8]:http://xmodulo.com/go/digitalocean
[9]:https://en.wikipedia.org/wiki/NX_technology

View File

@ -0,0 +1,111 @@
有哪些不错的命令行HTTP客户端
==============================================================================
“整体大于它的各部分之和”这是引自希腊哲学家和科学家的亚里士多德的名言。这句话特别切中Linux。在我看来Linux最强大的地方之一就是它的协作性。Linux的实用性并不仅仅源自大量的开源程序命令行。相反其协作性来自于这些程序的综合利用有时是结合成更大型的应用。
Unix哲学引发了一场“软件工具”的运动关注开发简洁基础干净模块化和扩展性好的代码并可以运用于其他的项目。这种哲学成为了许多的Linux项目的一个重要的元素。
好的开源开发者写程序为了确保该程序尽可能运行得好,并且同时能与其他程序很好地协作。目标就是使用者拥有一堆方便的工具,每一个力求干好一件事。许多程序能独立工作得很好。
这篇文章讨论3个开源命令行HTTP客户端。这些客户端可以让你使用命令行从互联网上下载文件。但同时他们也可以用于许多有意思的地方如测试调式和与HTTP服务器或web应用交互。对于HTTP架构师和API设计人员来说使用命令行操作HTTP是一个值得花时间学习的技能。如果你需要经常使用APIHTTPie和cURL就非常有价值。
###HTTPie###
![HTTPie in action](http://www.linuxlinks.com/portal/content/reviews/Internet/Screenshot-httpie.png)
HTTPie发音 aych-tee-tee-pie是一款开源的命令行HTTP客户端。它是一个命令行界面便于手工操作的类cURL工具。
该软件的目标是使得与Web服务器的交互尽可能的人性化。其提供了一个简单的http命令允许使用简单且自然的语句发送任意的HTTP请求并显示不同颜色的输出。HTTPie可以用于测试调试以及与HTTP服务器的常规交互。
#### 功能包括:####
- 生动而直观的语法格式
- 经过格式化的彩色终端输出
- 内建JSON支持
- 支持表单和文件上传
- 支持HTTPS代理和认证
- 任意数据请求
- 自定义请求头
- 持久会话
- 类Wget的下载
- 支持Python 2.62.7和3.x
- 支持LinuxMac OS X 和 Windows
- 支持插件
- 文档
- 单元测试覆盖
---
- 网站:[httpie.org][1]
- 开发者: Jakub Roztočil
- 证书: 开源
- 版本号: 0.9.2
###cURL###
![cURL in action](http://www.linuxlinks.com/portal/content/reviews/Internet/Screenshot-cURL.png)
cURL是一个开源的命令行工具用于使用URL语句传输数据支持DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS,IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET和TFTP等协议。
cURL支持SSL证书HTTP POSTHTTP PUTFTP上传基于表单的HTTP上传代理缓存用户名+密码的认证方式(Basic, Digest, NTLM, Negotiate, kerberos...),文件续传,代理通道和一些其他的有用功能。
#### 功能包括:####
- 支持配置文件
- 一个单独命令行请求多个URL
- 支持匹配: [0-13]{one, two, three}
- 一个命令上传多个文件
- 自定义最大传输速度
- 重定向了标准错误输出
- 支持Metalink
---
- 网站: [curl.haxx.se][2]
- 开发者: Daniel Stenberg
- 证书: MIT/X derivate license
- 版本号: 7.42.0
###Wget###
![Wget in action](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-Wget.png)
Wget是一个从网络服务器获取信息的开源软件。其名字源于World Wide Web 和 get。Wget支持HTTPHTTPS和FTP协议同时也可以通过HTTP代理获取信息。
Wget可以根据HTML页面的链接创建远程网络站点的本地副本完全重造源站点的目录结构。这种方式被称作“递归下载”。
Wget设计上增强了低速或者不稳定的网络连接。
功能包括:
- 使用REST和RANGE恢复中断的下载
- 使用文件名通配符,支持递归地对目录镜像
- 基于NLS的消息文件支持多语言
- 可选的转换下载文档里地绝对链接为相对链接,使得下载文档可以在本地相互链接
- 可以在大多数类UNIX操作系统和微软Windows上运行
- 支持HTTP代理
- 支持HTTP cookie
- 支持HTTP持久连接
- 无人照管/后台操作
- 当对远程镜像时,使用本地文件时间戳来决定是否需要重新下载文档
---
- 站点: [www.gnu.org/software/wget/][3]
- 开发者: Hrvoje Niksic, Gordon Matzigkeit, Junio Hamano, Dan Harkless, and many others
- 证书: GNU GPL v3
- 版本号: 1.16.3
--------------------------------------------------------------------------------
via: http://www.linuxlinks.com/article/20150425174537249/HTTPclients.html
作者Frazer Kline
译者:[wi-cuckoo](https://github.com/wi-cuckoo)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://httpie.org/
[2]:http://curl.haxx.se/
[3]:https://www.gnu.org/software/wget/

View File

@ -0,0 +1,70 @@
在 Ubuntu 中给你的照片加上 Instagram 风格的滤镜程序
================================================================================
拿起你的自拍杆跟我来。
### XnRetro 照片编辑器 ###
**XnRetro** 是一个可以让你快速给你照片添加“类 Instagram”效果的程序。
你肯定知道我说的这些效果:划痕、噪点、相框、过度处理、复古和怀旧色调(因为在这个数字过客的时代,我们一定知道无穷无尽的自拍永远也找不回怀旧的自己。)
无论你认为这些效果是愚蠢的艺术还是创作的捷径,这些滤镜非常流行,可以帮助那些平实无奇的照片添加个性。
![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/05/instagram-app.jpg)
*XnRetro是一个照片编辑应用*
#### XnRetro的功能 ####
**XnRetro 有下面那些功能**
- 20 种色彩滤镜
- 15 种光影效果(虚化、泄露等等)
- 28 种画框和边线
- 5 种插图 (带力度控制)
- 对比度、伽马校正、饱和度等图像调整
- 矩形修剪选项
![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/05/Screen-Shot-2015-05-10-at-23.30.01-e1431297068833.png)
*灯光效果调整*
(理论上)你可以保存编辑过的 .jpg 或者 .png 文件,并且直接在 app 中分享到社交媒体上。
我说“理论上”的意思是保存.jpg图像无法正常在 linux 版的程序上工作(你可以保存 .png 的图像)。相似问题还有,大多数内置的社交链接失效或者无法导出。
要使用**15 种光影效果**,你需要在 XnRetro 的light文件夹下将 .jpg 文件重新保存成 .png 文件。编辑light.xml来匹配新的文件名点击保存那么灯光效果就可以没有问题的加载进 XnRetro 了。
**XnRetro 值得安装么?**
XnRetro 并不是完美的。它看上去很老土、很难正确的安装,**并且已经几年没有更新了**。
但它还可以使用,除了保存 .jpg 文件外。同时也是那些像 Gimp 或者 Shotwell 的那些‘正规’的图片调整工具的一个灵活替代品。
虽然像 [Pixlr Touch Up][1] 和 [Polarr][2] 这样的 web 应用和 Chrome Apps 也提供相似的功能,但你也许正在寻找真正原生的解决方案。
习惯了 XnRetro 就很难离开它。
### 下载 Ubuntu 下的 XnRetro ###
XnRetro 没有可用的 .deb 安装包。它以二进制文件的形式发行这意味着你需要每次双击程序来运行。它也只有32位的版本。
你可以使用下面的 XnRetro下载链接。下载完成后你需要解压压缩包并进入。双击里面的xnretro程序。
- [下载 Linux 版 XnRetro (32位, tar.gz)][3]
--------------------------------------------------------------------------------
via: http://www.omgubuntu.co.uk/2015/05/instagram-photo-filters-ubuntu-desktop-app
作者:[Joey-Elijah Sneddon][a]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://plus.google.com/117485690627814051450/?rel=author
[1]:http://www.omgchrome.com/?s=pixlr
[2]:http://www.omgchrome.com/the-best-chrome-apps-of-2014/
[3]:http://www.xnview.com/en/xnretro/#downloads

View File

@ -1,6 +1,6 @@
Shell脚本使用rsync备份文件/目录
================================================================================
本文,我们带来了shell脚本用来使用rsync命令将你本地Linux机器上的文件/目录备份到远程Linux服务器上。使用该脚本实施备份会是一个交互的方式,你需要提供远程备份服务器的主机名/ip地址和文件夹位置。我们保留了一个独立文件在这个文件中你需要提供需要备份的文件/目录。我们添加了两个脚本,**第一个脚本**在每次拷贝完一个文件后询问密码如果你启用了ssh验证密钥,那么就不会询问密码),而第二个脚本中,则只会提示一次输入密码。
本文我们介绍一个shell脚本用来使用rsync命令将你本地Linux机器上的文件/目录备份到远程Linux服务器上。使用该脚本会以交互的方式实施备份,你需要提供远程备份服务器的主机名/ip地址和文件夹位置。我们使用一个单独的列表文件在这个文件中你需要列出要备份的文件/目录。我们添加了两个脚本,**第一个脚本**在每次拷贝完一个文件后询问密码如果你启用了ssh密钥验证,那么就不会询问密码),而第二个脚本中,则只会提示一次输入密码。
我们打算备份bckup.txtdataconfig.txtdocs和orcledb。
@ -12,7 +12,7 @@ Shell脚本使用rsync备份文件/目录
drwxr-xr-x. 2 root root 4096 May 15 10:45 docs
drwxr-xr-x. 2 root root 4096 May 15 10:44 oracledb
该文件包含了备份文件/目录的详情
bckup.txt文件包含了需要备份的文件/目录的详情
[root@Fedora21 tmp]# cat /tmp/bckup.txt
/tmp/oracledb
@ -24,46 +24,46 @@ Shell脚本使用rsync备份文件/目录
#!/bin/bash
#We will save path to backup file in variable
# 将备份列表文件的路径保存到变量中
backupf='/tmp/bckup.txt'
#Next line just prints message
# 输入一个提示信息
echo "Shell Script Backup Your Files / Directories Using rsync"
#next line check if entered value is not null, and if null it will reask user to enter Destination Server
# 检查是否输入了目标服务器,如果为空就再次提示用户输入
while [ x$desthost = "x" ]; do
#next line prints what userd should enter, and stores entered value to variable with name desthost
# 提示用户输入目标服务器地址并保存到变量
read -p "Destination backup Server : " desthost
#next line finishes while loop
# 结束循环
done
#next line check if entered value is not null, and if null it will reask user to enter Destination Path
# 检查是否输入了目标文件夹,如果为空就再次提示用户输入
while [ x$destpath = "x" ]; do
#next line prints what userd should enter, and stores entered value to variable with name destpath
# 提示用户输入目标文件夹并保存到变量
read -p "Destination Folder : " destpath
#next line finishes while loop
# 结束循环
done
#Next line will start reading backup file line by line
# 逐行读取备份列表文件
for line in `cat $backupf`
#and on each line will execute next
# 对每一行都进行处理
do
#print message that file/dir will be copied
# 显示要被复制的文件/文件夹名称
echo "Copying $line ... "
#copy via rsync file/dir to destination
# 通过 rsync 复制文件/文件夹到目标位置
rsync -ar "$line" "$desthost":"$destpath"
#this line just print done
# 显示完成
echo "DONE"
#end of reading backup file
# 结束
done
#### 运行带有输出结果的脚本 ####
@ -91,64 +91,65 @@ Shell脚本使用rsync备份文件/目录
#!/bin/bash
#We will save path to backup file in variable
# 将备份列表文件的路径保存到变量中
backupf='/tmp/bckup.txt'
#Next line just prints message
# 输入一个提示信息
echo "Shell Script Backup Your Files / Directories Using rsync"
#next line check if entered value is not null, and if null it will reask user to enter Destination Server
# 检查是否输入了目标服务器,如果为空就再次提示用户输入
while [ x$desthost = "x" ]; do
#next line prints what userd should enter, and stores entered value to variable with name desthost
# 提示用户输入目标服务器地址并保存到变量
read -p "Destination backup Server : " desthost
#next line finishes while loop
# 结束循环
done
#next line check if entered value is not null, and if null it will reask user to enter Destination Path
# 检查是否输入了目标文件夹,如果为空就再次提示用户输入
while [ x$destpath = "x" ]; do
#next line prints what userd should enter, and stores entered value to variable with name destpath
# 提示用户输入目标文件夹并保存到变量
read -p "Destination Folder : " destpath
#next line finishes while loop
# 结束循环
done
#next line check if entered value is not null, and if null it will reask user to enter password
# 检查是否输入了目标服务器密码,如果为空就再次提示用户输入
while [ x$password = "x" ]; do
#next line prints what userd should enter, and stores entered value to variable with name password. #To hide password we are using -s key
# 提示用户输入密码并保存到变量
# 使用 -s 选项不回显输入的密码
read -sp "Password : " password
#next line finishes while loop
# 结束循环
done
#Next line will start reading backup file line by line
# 逐行读取备份列表文件
for line in `cat $backupf`
#and on each line will execute next
# 对每一行都进行处理
do
#print message that file/dir will be copied
# 显示要被复制的文件/文件夹名称
echo "Copying $line ... "
#we will use expect tool to enter password inside script
# 使用 expect 来在脚本中输入密码
/usr/bin/expect << EOD
#next line set timeout to -1, recommended to use
# 推荐设置超时为 -1
set timeout -1
#copy via rsync file/dir to destination, using part of expect — spawn command
# 通过 rsync 复制文件/文件夹到目标位置,使用 expect 的组成部分 spawn 命令
spawn rsync -ar ${line} ${desthost}:${destpath}
#as result of previous command we expect “password” promtp
# 上一行命令会等待 “password” 提示
expect "*?assword:*"
#next command enters password from script
# 在脚本中提供密码
send "${password}\r"
#next command tells that we expect end of file (everything finished on remote server)
# 等待文件结束符(远程服务器处理完了所有事情)
expect eof
#end of expect pard
# 结束 expect 脚本
EOD
#this line just print done
# 显示结束
echo "DONE"
#end of reading backup file
# 完成
done
#### 运行第二个带有输出结果的脚本的屏幕截图 ####
@ -163,7 +164,7 @@ via: http://linoxide.com/linux-shell-script/shell-script-backup-files-directorie
作者:[Yevhen Duma][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,10 +1,10 @@
Linux有问必答 -- 如何在Linux中挂载LVM分区
Linux有问必答如何在Linux中直接挂载LVM分区
================================================================================
> **提问**: 我有一个USB盘包含了LVM分区。 我想要在Linux中访问这些LVM分区。我该如何在Linux中挂载LVM分区
LVM是逻辑卷管理工具它允许你使用逻辑卷和卷组的概念来管理磁盘空间。使用LVM相比传统分区最大的好处是弹性地用户和程序分配空间而不用考虑每个物理磁盘的大小。
LVM是逻辑卷管理工具它允许你使用逻辑卷和卷组的概念来管理磁盘空间。使用LVM相比传统分区最大的好处是弹性地用户和程序分配空间而不用考虑每个物理磁盘的大小。
在LVM中那些创建了逻辑分区的物理存储是传统的分区比如/dev/sda2/dev/sdb1。这些分区必须被初始化位“物理卷”并被标签“Linux LVM”来使它们可以在LVM中使用。一旦分区被标记被LVM分区你不能直接用mount命令挂载。
在LVM中那些创建了逻辑分区的物理存储是传统的分区比如/dev/sda2/dev/sdb1。这些分区必须被初始化为“物理卷 PV”并加上卷标“Linux LVM”来使它们可以在LVM中使用。一旦分区被标记被LVM分区你不能直接用mount命令挂载。
如果你尝试挂载一个LVM分区比如/dev/sdb2, 你会得到下面的错误。
@ -16,9 +16,9 @@ Linux有问必答 -- 如何在Linux中挂载LVM分区
![](https://farm8.staticflickr.com/7696/17749902190_0a6d36821f_b.jpg)
要正确地挂载LVM分区你必须挂载分区创建的“逻辑分区”。下面就是如何做的。
要正确地挂载LVM分区你必须挂载分区中创建的“逻辑卷”。下面就是如何做的。
=首先,用下面的命令检查可用的卷组:
首先,用下面的命令检查可用的卷组:
$ sudo pvs
@ -60,7 +60,9 @@ Linux有问必答 -- 如何在Linux中挂载LVM分区
![](https://farm8.staticflickr.com/7707/17938137591_cdb4cbfb43_b.jpg)
如果你想要挂载一个特定的逻辑卷使用“LV Path”下面的设备名/dev/vg_ezsetupsystem40a8f02fadd0/lv_home
*上图可以看到两个逻辑卷的名字lv_root和lv_home*
如果你想要挂载一个特定的逻辑卷使用如下的“LV Path”的设备名/dev/vg_ezsetupsystem40a8f02fadd0/lv_home
$ sudo mount /dev/vg_ezsetupsystem40a8f02fadd0/lv_home /mnt
@ -82,7 +84,7 @@ via: http://ask.xmodulo.com/mount-lvm-partition-linux.html
作者:[Dan Nanni][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/) 荣誉推出

View File

@ -0,0 +1,287 @@
27 个 Linux 下软件包管理工具 DNF 命令例子
================================================================================
DNF即Dandified YUM是基于RPM的Linux发行版的下一代软件包管理工具。它首先在Fedora 18中出现并且在最近发行的Fedora 22中替代了[YUM工具集][1]。
![](http://www.tecmint.com/wp-content/uploads/2015/05/linux-dnf-command-examples.jpg)
DNF致力于改善YUM的瓶颈即性能、内存占用、依赖解决、速度和许多其他方面。DNF使用RPM、libsolv和hawkey库进行包管理。尽管它并未预装在CentOS和RHEL 7中但您可以通过yum安装并同时使用二者。
您也许想阅读更多关于DNF的信息
- [使用DNF取代Yum背后的原因][2]
最新的DNF稳定版本是2015年5月11日发布的1.0在写这篇文章之前。它以及所有DNF之前版本主要由Python编写并以GPL v2许可证发布。
### 安装DNF ###
尽管Fedora 22官方已经过渡到了DNF但DNF并不在RHEL/CentOS 7的默认仓库中。
为了在RHEL/CentOS系统中安装DNF您需要首先安装和开启epel-release仓库。
# yum install epel-release
# yum install epel-release -y
尽管并不建议在使用yum时添上'-y'选项,因为最好还是看看什么将安装在您的系统中。但如果您对此并不在意,则您可以使用'-y'选项以自动化的安装而无需用户干预。
接下来使用yum命令从epel-realease仓库安装DNF包。
# yum install dnf
在您装完dnf后我会向您展示27个实用的dnf命令和例子以便帮您更容易和高效的管理基于RPM包的发行版。
### 1. 检查DNF版本 ###
检查您的系统上安装的DNF版本。
# dnf --version
![检查DNF版本](http://www.tecmint.com/wp-content/uploads/2015/05/Check-DNF-Version.gif)
### 2. 列出启用的DNF仓库 ###
dnf命令中的'repolist'选项将显示您系统中所有启用的仓库。
# dnf repolist
![检查所有开启的仓库](http://www.tecmint.com/wp-content/uploads/2015/05/Check-All-Enabled-Repositories.gif)
### 3. 列出所有启用和禁用的DNF仓库 ###
'repolist all'选项将显示您系统中所有启用/禁用的仓库。
# dnf repolist all
![列出所有启用/禁用的仓库](http://www.tecmint.com/wp-content/uploads/2015/05/Check-All-Repositories.gif)
### 4. 用DNF列出所有可用的且已安装的软件包 ###
'dnf list'命令将列出所有仓库中所有可用的软件包和您Linux系统中已安装的软件包。
# dnf list
![用DNF列出所有的软件包](http://www.tecmint.com/wp-content/uploads/2015/05/List-All-Packages.png)
### 5. 用DNF列出所有已安装的软件包 ###
尽管'dnf list'命令将列出所有仓库中所有可用的软件包和已安装的软件包。然而像下面一样使用'list installed'选项将只列出已安装的软件包。
# dnf list installed
![列出已安装的软件包](http://www.tecmint.com/wp-content/uploads/2015/05/List-Installed-Packages.png)
### 6. 用DNF列出所有可用的软件包 ###
类似的,可以用'list available'选项列出所有开启的仓库中所有可用的软件包。
# dnf list available
![用DNF列出可用的软件包](http://www.tecmint.com/wp-content/uploads/2015/05/List-Available-Packages.png)
### 7. 使用DNF查找软件包 ###
如果您不太清楚您想安装的软件包的名字,这种情况下,您可以使用'search'选项来搜索匹配该字符例如nano和字符串的软件包。
# dnf search nano
![通过关键字搜索软件包](http://www.tecmint.com/wp-content/uploads/2015/05/Search-Package.gif)
### 8. 查看哪个软件包提供了某个文件/子软件包? ###
dnf的选项'provides'能查找提供了某个文件/子软件包的软件包名。例如,如果您想找找哪个软件包提供了您系统中的'/bin/bash'文件,可以使用下面的命令
# dnf provides /bin/bash
![查找提供文件的软件包](http://www.tecmint.com/wp-content/uploads/2015/05/Find-Package-Sub-Package.gif)
### 9. 使用DNF获得一个软件包的详细信息 ###
如果您想在安装一个软件包前知道它的详细信息,您可以使用'info'来获得一个软件包的详细信息,例如:
# dnf info nano
![用DNF查看软件信息](http://www.tecmint.com/wp-content/uploads/2015/05/Check-Package-Information.gif)
### 10. 使用DNF安装软件包 ###
想安装一个叫nano的软件包只需运行下面的命令它会为nano自动的解决和安装所有的依赖。
# dnf install nano
![用DNF安装软件](http://www.tecmint.com/wp-content/uploads/2015/05/Install-Package-DNF.gif)
### 11. 使用DNF更新一个软件包 ###
您可能只想更新一个特定的包例如systemd并且保留系统内剩余软件包不变。
# dnf update systemd
![更新一个软件包](http://www.tecmint.com/wp-content/uploads/2015/05/Update-a-Package.gif)
### 12. 使用DNF检查系统更新 ###
检查系统中安装的所有软件包的更新可以简单的使用如下命令:
# dnf check-update
![检查系统更新](http://www.tecmint.com/wp-content/uploads/2015/05/Check-For-System-Update.gif)
### 13. 使用DNF更新系统中所有的软件包 ###
您可以使用下面的命令来更新整个系统中所有已安装的软件包。
# dnf update
# dnf upgrade
![更新系统](http://www.tecmint.com/wp-content/uploads/2015/05/Update-System.gif)
### 14. 使用DNF来移除/删除一个软件包 ###
您可以在dnf命令中使用'remove'或'erase'选项来移除任何不想要的软件包。
# dnf remove nano
# dnf erase nano
![移除系统中的软件](http://www.tecmint.com/wp-content/uploads/2015/05/Remove-Package.gif)
### 15. 使用DNF移除于依赖无用的软件包Orphan Packages ###
这些为了满足依赖安装的软件包在相应的程序删除后便不再需要了。可以用过下面的命令来将它们删除。
# dnf autoremove
![移除无用的依赖包](http://www.tecmint.com/wp-content/uploads/2015/05/Autoremove-Packages.gif)
### 16. 使用DNF移除缓存的软件包 ###
我们在使用dnf时经常会碰到过期的头部信息和不完整的事务它们会导致错误。我们可以使用下面的语句清理缓存的软件包和包含远程包信息的头部信息。
# dnf clean all
![移除DNF缓存](http://www.tecmint.com/wp-content/uploads/2015/05/Remove-Cache-Packages.gif)
### 17. 获得特定DNF命令的帮助 ###
您可能需要特定的DNF命令的帮助例如clean可以通过下面的命令来得到
# dnf help clean
![获得某一命令帮助](http://www.tecmint.com/wp-content/uploads/2015/05/Help-on-DNF-Command.gif)
### 18. 列出所有DNF的命令和选项 ###
要显示所有dnf的命令和选项只需要
# dnf help
![获得命令选项帮助](http://www.tecmint.com/wp-content/uploads/2015/05/DNF-Options.gif)
### 19. 查看DNF的历史记录 ###
您可以调用'dnf history'来查看已经执行过的dnf命令的列表。这样您便可以知道什么被安装/移除及其时间戳。
# dnf history
![查看历史记录](http://www.tecmint.com/wp-content/uploads/2015/05/Check-DNF-History.gif)
### 20. 显示所有软件包组 ###
'dnf grouplist'命令可以显示所有可用的或已安装的软件包,如果没有什么输出,则它会列出所有已知的软件包组。
# dnf grouplist
![列出所有软件包组](http://www.tecmint.com/wp-content/uploads/2015/05/List-All-Group-Packages.gif)
### 21. 使用DNF安装一个软件包组 ###
要安装一组由许多软件打包在一起的软件包组例如Educational Softaware只需要执行
# dnf groupinstall 'Educational Software'
![安装一个软件包组](http://www.tecmint.com/wp-content/uploads/2015/05/Install-Group-Packages.gif)
### 22. 更新一个软件包组 ###
可以通过下面的命令来更新一个软件包组例如Educational Software
# dnf groupupdate 'Educational Software'
![更新软件包组](http://www.tecmint.com/wp-content/uploads/2015/05/Update-Group-Package.gif)
### 23. 移除一个软件包组 ###
可以使用下面的命令来移除一个软件包组例如Educational Software
# dnf groupremove 'Educational Software'
![移除软件包组](http://www.tecmint.com/wp-content/uploads/2015/05/Remove-Group-Package.gif)
### 24. 从某个特定的仓库安装一个软件包 ###
DNF可以从任何特定的仓库比如 epel安装一个软件包例如phpmyadmin
# dnf --enablerepo=epel install phpmyadmin
![从特定的仓库安装软件](http://www.tecmint.com/wp-content/uploads/2015/05/Install-Package-From-Specific-Repo.gif)
### 25. 将已安装的软件包同步到稳定发行版 ###
'dnf distro-sync'将同步所有已安装的软件包到所有开启的仓库中最近的稳定版本。如果没有选择软件包,则会同步所有已安装的软件包。
# dnf distro-sync
![将包同步至稳定版](http://www.tecmint.com/wp-content/uploads/2015/05/Synchronize-Packages.gif)
### 26. 重新安装一个软件包 ###
'dnf reinstall nano'命令将重新安装一个已经安装的软件包例如nano
# dnf reinstall nano
![重新安装软件包](http://www.tecmint.com/wp-content/uploads/2015/05/Re-Install-Package.gif)
### 27. 降级一个软件包 ###
选项'downgrade'将会使一个软件包例如acpid回退到低版本。
# dnf downgrade acpid
示例输出
Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.
**我观察到**dnf不会按预想的那样降级一个软件包。这已做为一个bug被提交。
### 结论 ###
DNF是YUM管理器的优秀替代品。它试着自动做许多甚至不推荐有经验的Linux系统管理员做的工作。例如
- `--skip-broken`不被DNF识别并且DNF中没有其替代命令。
- 尽管您可能会运行dnf provides但再也没有'resolvedep'命令了。
- 没有'deplist'命令用来发现软件包依赖。
- 您排除一个仓库意味着在所有操作上排除该仓库而在yum中排除一个仓库只在安装和升级等时刻排除他们。
许多Linux用户对于Linux生态系统的走向不甚满意。首先[Systemd替换了init系统][3]v现在DNF将于不久后替换YUM首先是Fedora 22接下来是RHEL和CentOS。
您怎么看呢是不是发行版和整个Linux生态系统并不注重用户并且在朝着与用户愿望相悖的方向前进呢IT行业里有这样一句话 - “如果没有坏为什么要修呢System V和YUM都没有坏。
上面便是这篇文章的全部了。请在下方留言以让我了解您的宝贵想法。点赞和分享以帮助我们传播。谢谢!
--------------------------------------------------------------------------------
via: http://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/
作者:[Avishek Kumar][a]
译者:[wwy-hust](https://github.com/wwy-hust)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/avishek/
[1]:http://www.tecmint.com/20-linux-yum-yellowdog-updater-modified-commands-for-package-mangement/
[2]:http://www.tecmint.com/dnf-next-generation-package-management-utility-for-linux/
[3]:http://www.tecmint.com/systemd-replaces-init-in-linux/

View File

@ -1,10 +1,15 @@
如何在Linux中安装漂亮的扁平化Arc GTK+主题
如何在 Linux 中安装漂亮的 GTK+ 扁平化主题 Arc
================================================================================
> 易于理解的分步教程
**今天我们将向你介绍最新发布的GTK+主题它拥有透明和扁平元素并且与多个桌面环境和Linux发行版兼容。[这个主题叫Arc][1]。**
开始讲细节之前我建议你快速浏览一下下面的图这样你有会对这个主题就会有一个基本的概念了。同样你应该知道它目前可以工作在GTK+ 2.x、GTK+ 3.x、GNOME-Shell、 Budgie、 Unity和Pantheon用户界面它们都使用了GNOME栈。
开始讲细节之前我建议你快速浏览一下下面的图这样你有会对这个主题就会有一个基本的概念了。同样你应该知道它目前可以工作在GTK+ 2.x、GTK+ 3.x、GNOME-Shell、 Budgie、 Unity和Pantheon用户界面它们都使用了GNOME 体系。
![](http://i1-news.softpedia-static.com/images/news2/Here-s-How-to-Install-the-Beautiful-Arc-GTK-plus-Flat-Theme-on-Linux-483143-2.jpg)
![](http://i1-news.softpedia-static.com/images/news2/Here-s-How-to-Install-the-Beautiful-Arc-GTK-plus-Flat-Theme-on-Linux-483143-3.jpg)
![](http://i1-news.softpedia-static.com/images/news2/Here-s-How-to-Install-the-Beautiful-Arc-GTK-plus-Flat-Theme-on-Linux-483143-4.jpg)
同样、Arc主题的开发者告诉我们它已经成功地在Ubuntu 15.04Vivid Vervet、 Arch Linux、 elementary OS 0.3 Freya、 Fedora 21、 Fedora 22、 Debian GNU/Linux 8.0 (Jessie)、 Debian Testing、 Debian Unstable、 openSUSE 13.2、 openSUSE Tumbleweed和Gentoo测试过了。
@ -12,7 +17,7 @@
要构建Arc主题你需要先安装一些包比如autoconf、 automake、 pkg-config (对于Fedora则是pkgconfig)、基于Debian/Ubuntu-based发行版的libgtk-3-dev或者基于RPM的gtk3-devel、 git、 gtk2-engines-pixbuf和gtk-engine-murrine (对于Fedora则是gtk-murrine-engine)。
Arc主题还没有二进制包因此你需要从git仓库中取下最新的源码并编译。这样打开终端并运行下面的命令一行行地并在每行的末尾按下回车键并等待上一步完成来继续下一步。
Arc主题还没有二进制包因此你需要从git仓库中取下最新的源码并编译。这样打开终端并运行下面的命令一行行地输入,并在每行的末尾按下回车键并等待上一步完成来继续下一步。
git clone https://github.com/horst3180/arc-theme --depth 1 && cd arc-theme
git fetch --tags
@ -22,11 +27,7 @@ Arc主题还没有二进制包因此你需要从git仓库中取下最新的
就是这样此时你已经在你的GNU/Linux发行版中安装了Arc主题如果你使用GNOME可以使用GONME Tweak工具如果你使用Ubuntu的Unity可以使用Unity Tweak工具来激活主题。玩得开心但不要忘了在下面的评论栏里留下你的截图。
![](http://i1-news.softpedia-static.com/images/news2/Here-s-How-to-Install-the-Beautiful-Arc-GTK-plus-Flat-Theme-on-Linux-483143-2.jpg)
![](http://i1-news.softpedia-static.com/images/news2/Here-s-How-to-Install-the-Beautiful-Arc-GTK-plus-Flat-Theme-on-Linux-483143-3.jpg)
![](http://i1-news.softpedia-static.com/images/news2/Here-s-How-to-Install-the-Beautiful-Arc-GTK-plus-Flat-Theme-on-Linux-483143-4.jpg)
--------------------------------------------------------------------------------

View File

@ -0,0 +1,172 @@
12 个全球认可的 Linux 认证
================================================================================
大家好今天我们将会认识一些非常有价值的全球认可的Linux认证。Linux认证是不同的Linux专业机构在全球范围内进行的认证程序。Linux认证可以让Linux专业人才可以在服务器领域或者相关公司等等这些地方更容易获得Linux相关的工作。Linux认证评估一个人在Linux的各个领域里的专业程度。有很多不错的Linux专业机构提供不同的Linux认证。但是在公司谋取一份工作时全球仅有少数被非常认可的Linux认证含金量很高这些工作包括管理服务器虚拟化安装系统与软件配置程序应用支持和其他Linux操作系统相关的东西。随着全球使用Linux操作系统的服务器的增长拉动了对于Linux专业人才的需求。为了更好的证明Linux专业技术水平在全球看来更好的、著名的认证总是有着更高的优先级。
这里是一些全球认可的Linux认证我们接下来将会一一谈到。
### 1. CompTIA Linxu+ ###
CompTIA Linux+ 是LPILinux Professional InstituteLinux专业委员会主办的一个Linux认证在全世界范围内提供培训。其提供的Linux相关知识可以用于从事一大批Linux相关专业的工作如Linux管理员、高级网络管理员、系统管理员、Linux数据库管理员和Web管理员。如果任何人想从事安装和维护Linux操作系统该课程会帮助他达到认证要求并且通过提供对Linux系统更宽阔的认识能够为通过考试做好准备。LPI的CompTIA Linux+认证的主要目的就是提供给证书持有者足够扎实的关于安装软件、操作、管理和设备排障的知识。我们可以付出一定的费用、时间和努力完成CompTIA Linux+,同时获得三个业内认可的证书:**LPI LPIC-1**和**SUSE Certified Linux Administrator CLA**证书。
- **认证代码** : LX0-103LX0-1042015年3月30日启动或者LX0-101LX0-102
- 题目数量每次考试60道题
- 题目类型:多选
- 考试时长90分钟
- 要求A+Network+并且有至少12个月的Linux管理经验
- 分数线500 对于200-800的范围来说
- 语言:英语,将来会有德语,葡萄牙语,繁体中文,西班牙。
- 有效期:认证后三年有效
**注意**不同系列的考试不能合并。如果你考的是LX0-101那么你必须考LX0-102完成认证。同样的LX0-103和LX0-104又是一个系列。LX0-103和LX0-104系列是LX0-101和LX0-102系列的升级版。
### 2. LPIC ###
LPIC全称Linux专业委员会认证 Linux Professional Institute Certification是Linux专业委员会的一个Linux认证程序。这是一个多级别的认证程序要求在每个级别通过一系列通常是两个的认证考试。该认证有三个级别包括初级水平认证 **LPIC-1** ,高级水平认证 **LPIC-2**和最高水平认证 **LPIC-3**。前两个认证侧重于 **Linux系统管理**,而最后一个认证侧重一些专业技能,包括虚拟化和安全。为了得到 **LPIC-3** 认证,一个持有有效的 **LPIC-1** 与**LPIC-2** 认证的考生必须通过300复杂环境测试、303安全测试、304虚拟化测试和高可用性测试中的一个。**LPIC-1**认证按照证书持有者可以通过运行Linux使用命令行界面和基本的网络知识安装维护配置等任务而设计LPIC-2测试考生是否作为管理中小型混合网络的候选人。LPIC-3认证是为企业级Linux专业技能设计所设计代表了最高的专业水平和不针对特定 Linux 发行版的行业认证。
- **认证代码**LPIC-1101和102LPIC-2201和202和LPIC-3300303或者304
- 题目类型60个多项选择
- 考试时长90分钟
- 要求:无,建议有 Linux Essentials 认证
- 分数线500在200-800的范围内
- 语言LPIC-1英语德语意大利语葡萄牙语西班牙语现代汉语简体汉语繁体日语
- LPIC-2英语德语葡萄牙语日语
- LPIC-3英语日语
- 有效期:退休之后五年内仍然有效
### 3.Oracle Linux OCA ###
Oracle联合认证OCA为个人而定制适用于那些想证明其部署和管理Oracle Linux操作系统的知识牢固的人。该认证专业知识仅仅针对Oracle Linux发行版这个系统完全是为Oracle产品特别剪裁的可以运行Oracle设计的系统包括Oracle Exadata数据库服务器Oracle Exalytics In-Memory 服务器Oracle Exalogic 均衡云和Oracle数据库应用等。Oracle Linux的“坚不可摧企业内核”为企业应用带来了高性能、高扩展性和稳定性。OCA认证覆盖了如管理本地磁盘设备、管理文件系统、安装和移除Solaris包与补丁优化系统启动过程和系统进程。这是拿到OCP证书系列的第一步。OCA认证以其前身为Sun Certified Solaris AssociateSCSAS而为人所知。
- **认证代码**OCA
- 题目类型75道多项选择
- 考试时长120分钟
- 要求:无
- 分数线64%
- 有效期:永远有效
### 4. Oracle Linux OCP ###
Oracle专业认证(OCP)是Oracle公司为Oracle Linux提供的一个认证覆盖更多的进阶知识和技能对于一个Oracle Linux管理员来说。它囊括的知识有配置网络接口、管理交换分区配置、崩溃转储、管理软件、数据库和重要文件。OCP认证是技术性专业知识和专业技能的基准测试这些知识与技能需要在公司里广泛用于开发、部署和管理应用、中间件和数据库。Oracle Linux OCP的工作机会在增长这得益于工作市场和经济发展。根据考试纲领证书持有者有能力胜任安全管理、为Oracle 数据库准备Oracle Linux系统、排除故障和进行恢复操作、安装软件包、安装和配置内核模块、维护交换空间、完成用户和组管理、创建文件系统、配置逻辑卷管理LVM、文件分享服务等等。
- **认证代码**OCP
- 题目类型60至80道多项选择题
- 考试时长120分钟
- 要求Oracle Linux OCA
- 分数线64%
- 有效期:永远有效
### 5. RHCSA ###
RHCSA是红帽公司作为红帽认证系统工程师推出的一个认证程序。RHCSA们是指一些拥有在著名的红帽Linux环境下完成核心系统管理技能和能力的人。这是一个入门级的认证程序关注在系统管理上的实际胜任能力包括安装、配置一个红帽Linux系统接入一个可用的网络提供网络服务。一个红帽认证的系统管理员可以理解和使用基本的工具用以处理文件、目录、命令行环境和文档操作运行中的系统包括以不同的启动级别启动、识别进程、开启和停止虚拟机和控制服务使用分区和逻辑卷配置本地存储创建和配置文件系统和文件系统属性包括权限、加密、访问控制列表和网络文件系统部署配置和维护系统包括软件安装、更新和核心服务管理用户和组包括使用一个中心的目录用于验证安全性的工作包括基本的基本防火墙和SELinux配置。要获得RHCE和其他认证首先得认证过RHCSA。
- **认证代码**RHCSA
- 课程代码RH124RH134和RH199
- 考试代码EX200
- 考试时长21-22小时取决于选择的课程
- 要求无。有一些Linux基础知识更好
- 分数线300总分210过70%
- 有效期3年
### 6. RHCE ###
RHCE也叫做红帽认证工程师是一个中到高级水平的认证程序为一些想要学习更多技能和知识成为一个负责红帽企业Linux的高级系统管理员的RHCSA开设的RHCE应该有能力、知识和技能来配置静态路由、包过滤、NAT、设定内核运行参数、配置一个ISCSI初始化程序生成并发送系统用量报告、使用shell脚本自动完成系统维护任务、配置系统日志包括远程日志、提供网络服务如HTTP/HTTPS、FTP、NFS、SMB、SMTP、SSH和NTP等等。推荐希望获得更多高级水平的认证的RHCSA们、已经完成系统管理员III和III、或者已经完成RHCE 快速跟进培训的人们参加认证。
- **认证代码**RHCE
- 课程代码RH124RH134RH254和RH199
- 考试代码EX200和EX300
- 考试时长21-22个小时取决于所选课程
- 要求一个RHCSA证书
- 分数线300总分210过70%
- 有效期3年
### 7. RHCA ###
RHCA即红帽认证架构师是红帽公司的一个认证程序。它的关注点在系统管理的实际能力包括安装和配置一个红帽Linux系统并加入到一个可用网络中运行网络服务。RHCA是所有红帽认证中最高水平的认证。考生需要选择他们希望针对的领域或者选择合格的红帽认证的任意组合来创建一个他们自己的领域。这里有三个主要的领域数据中心、云和应用平台。精通数据中心领域的RHCA能够运行、管理数据中心而熟悉云的可以创建、配置和管理私有云和混合云、云应用平台以及使用红帽企业Linux平台的灵活存储方案精通应用平台集合的RHCA拥有技能如安装、配置和管理红帽JBoss企业应用平台和应用云应用平台和混合云环境借助红帽的OpenShift企业版使用红帽JBoss数据虚拟化技术从多个资源里组合数据。
- **认证代码**RHCA
- 课程代码CL210CL220.CL280RH236RH318RH413RH436RH442JB248和JB450
- 考试代码EX333EX401EX423或者EX318EX436和EX442
- 考试时长21-22个小时取决于所选课程
- 要求未过期的RHCE证书
- 分数线300总分210过70%
- 有效期3年
### 8. SUSE CLA ###
SUSE认证Linux管理员SUSE CLA是SUSE推出的一个初级认证关注点在SUSE Linux企业服务器环境下的日常任务管理。为了获得SUSE CLA认证不用必须完成课程任务只需要通过考试就能获得认证。SUSE CLA们能够、也有技术去使用Linux桌面、定位并利用帮助资源、管理Linux文件系统、用Linux Shell和命令行工作、安装SLE 11 SP22、管理系统安装、硬件、备份和恢复、用YaST管理Linux、Linux进程和服务、存储、配置网络、远程接入、SLE 11 SP2监控任务自动化和管理用户访问和安全工作。我们可以同时获得SUSE CLALPIC-1和CompTIA Linux认证因为SUSELinux Professional Institute和CompATI合作提供了这个同时获得三个Linux认证的机会。
- **认证代码**SUSE CLA
- 课程代码31153116
- 考试代码050-720050-710
- 问题类型:多项选择
- 考试时长90分钟
- 要求:无
- 分数线512
### 9. SUSE CLP ###
SUSE认证Linux专业人员CLP是一个认证程序为那些希望获得关于SUSE Linux企业服务器更多高级且专业的知识的人而服务。SUSE CLP是通过SUSE CLA认证后的下一步。应该通过CLA的考试并拥有证书然后通过完成CLP的考试才能获得CLP的认证。通过SUSE CLP认证的人员有能力完成安装和配置SLES 11系统、维护文件系统、管理软件包、进程、打印、配置基础网络服务、samba、Web服务器、使用IPv6、创建和运行bash shell脚本。
- **认证代码**SUSE CLP
- 课程代码31153116和3117
- 考试代码050-721050-697
- 考试类型:手写
- 考试时长180分钟
- 要求SUSE CLA 认证
### 10. SUSE CLE ###
SUSE认证Linux工程师(CLE)是一个工程师级别的高级认证为那些已经通过CLE考试的人准备。为了获得CLE认证人们需要已经获得SUSE CLA和CLP的认证。获得CLE认证的人员拥有架设复杂SUSE Linux企业服务器环境的技能。CLE认证过的人可以配置基本的网络服务、管理打印、配置和使用Open LDAP、samba、IPv6、完成服务器健康检测和性能调优、创建和执行shell脚本、部署SUSE Linux企业板、通过Xen实现虚拟化等等。
- **认证代码**SUSE CLE
- 课程代码3107
- 考试代码050-723
- 考试类型:手写
- 考试时长120分钟
- 要求SUSE CLP 10或者11证书
### 11. LFCS ###
Linux基金会认证系统管理员LFCS认证考生使用Linux和通过终端环境使用Linux的知识。LFCS是Linux基金会的一个认证程序为使用Linux操作系统工作的系统管理员和工程师准备。Linux基金会联合业内专家、Linux内核社区测试考生的核心领域、关键技能、知识和应用能力。通过LFCS认证的人员拥有一些技能、知识和能力包括在命令行下编辑和操作文件、管理和处理文件系统与存储的错误、聚合分区作为LVM设备、配置交换分区、管理网络文件系统、管理用户帐号/权限和属组、创建并执行bash shell脚本、安装/升级/移除软件包等等。
- **认证代码**LFCS
- 课程代码LFCS201LFCS220可选
- 考试代码LFCS 考试
- 考试时长2小时
- 要求:无
- 分数线74%
- 语言:英语
- 有效期:两年
### 12. LFCE ###
Linux基金会认证工程师LFCE是Linux基金会为Linux工程师推出的认证。相比于LFCS通过LFCE认证的人员在Linux方面拥有更大范围的技能。这是一个工程师级别的高级认证程序。LFCE认证的人具备一些网络管理方面的技能和能力如配置网络服务、配置包过滤、监控网络性能、IP流量、配置文件系统和文件服务、网络文件系统、从仓库安装/升级软件包、管理网络安全、配置iptables、http服务、代理服务、邮件服务等等。由于其为高级工程级别的认证程序所以普遍认为相比LFCS学习和通过的难度更大些。
- **认证代码**LFCE
- 课程代码LFS230
- 考试代码LFCE 考试
- 考试时长2小时
- 要求认证过LFCS
- 分数线72%
- 语言:英语
- 有效期2年
### 我们发现的情况(这仅仅是我们的观点)###
最近的调查表明在不同的高端招聘代理中称80%的Linux工作描述更倾向于红帽的认证。如果你是一个学生/新手并且想学习Linux那么我们建议选择越来越流行的Linux基金会认证或者CompTIA Linux也可以是一个选择。如果你已经了解了oracle或suse或者在他们的产品上工作那oracle/suse的认证会更好些如果你在公司里工作了这些认证会对你的职业生涯成长有帮助:-)
### 总结 ###
在这个世界上成千上万的大公司正在运行跑着Linux操作系统的服务器和主框架机为了在这些服务器上管理、配置和工作总是存在着对Linux技术/专业知识高度认证的需求。这些国际上承认的认证对某些人在Linux的职业生涯扮演很重要的角色。这些遍布全球的公司运行着Linux需要Linux工程师、系统管理员和已经获得认证且在Linux相关领域干得不错的人员。全球认可的Linux认证对于专业知识和职业生涯的辉煌都是重中之重所以好好准备考试并获得认证对于在Linux建立职业生涯是一个很好的选择。如果你有任何问题想法反馈请写在下方的评论框里让我们好知道哪些东西需要添加或者改进。谢谢:-)
--------------------------------------------------------------------------------
via: http://linoxide.com/linux-how-to/12-globally-recognized-linux-certifications/
作者:[Arun Pyasi][a]
译者:[wi-cuckoo](https://github.com/wi-cuckoo)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://linoxide.com/author/arunp/

View File

@ -1,12 +1,12 @@
Ubuntu中安装Unity 8桌面预览版
Ubuntu中安装Unity 8桌面预览版
================================================================================
![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/06/Unity_8.jpeg)
如果你一直关注新闻,那么Ubuntu将会切换到[Mir显示服务器][1],并随同发布[Unity 8][2]桌面。然而在尚未确定Unity 8是否会在[Ubuntu 15.10 Willy Werewolf][3]中部署到Mir上之前提供了一个Unity 8的预览版本供你体验和测试。通过官方PPA可以很容地**安装Unity 8到Ubuntu 14.04,14.10和15.04中**。
如果你一直关注新闻,那么就知道Ubuntu将会切换到带有[Unity 8][2]桌面的[Mir显示服务器][1]。然而,在尚未确定运行在 Mir 上的Unity 8是否会出现在[Ubuntu 15.10 Willy Werewolf][3]之前有了一个Unity 8的预览版本可供你体验和测试。通过官方PPA可以很容地**安装Unity 8到Ubuntu 14.04,14.10和15.04中**。
到目前为止,开发者已经可以通过[ISO][4]获得该Unity 8预览来进行测试。但是Canonical已经通过[LXC容器][5]发布了。通过该方法你可以获取Unity 8桌面会话让它作为任何一个桌面环境运行在Mir显示服务器上。就像你[在Ubuntu中安装Mate桌面][6]然后从LightDm登录屏幕选择桌面会话一样。
到目前为止,开发者已经可以通过[ISO][4]主要途径获得该Unity 8预览来进行测试。不过Canonical也通过[LXC容器][5]发布了它。通过该方法你可以使用Unity 8桌面会话让它像其它桌面环境一样运行在Mir显示服务器上。就像你[在Ubuntu中安装Mate桌面][6]然后从LightDm登录屏幕选择桌面会话一样。
好奇?想要试试Unity 8让我们来看怎样安装它吧。
想要试试Unity 8让我们来看怎样安装它吧。
**注意: 它是一个实验性预览,可能不是所有人都可以让它正确工作的。**
@ -16,7 +16,7 @@ Ubuntu中安装Unity 8桌面预览版
#### 步骤 1 安装Unity 8到Ubuntu 12.04和14.04 ####
如果你运行着Ubuntu 12.04和14.04那么你必须使用官方PPA来安装Unity 8。使用以下命令进行安装
如果你运行着Ubuntu 12.04和14.04那么你必须使用官方PPA来安装Unity 8。使用以下命令进行安装
sudo apt-add-repository ppa:unity8-desktop-session-team/unity8-preview-lxc
sudo apt-get update
@ -25,7 +25,7 @@ Ubuntu中安装Unity 8桌面预览版
#### 步骤 1 安装Unity 8到Ubuntu 14.10和15.04 ####
如果你运行着Ubuntu 14.10或15.04那么Unity 8 LXC已经在源中准备好。你只需要运行以下命令
如果你运行着Ubuntu 14.10或15.04那么Unity 8 LXC已经在源中准备好。你只需要运行以下命令
sudo apt-get update
sudo apt-get install unity8-lxc
@ -36,7 +36,7 @@ Ubuntu中安装Unity 8桌面预览版
sudo unity8-lxc-setup
它将花费一些时间来设置,所以,给点耐心吧。它会下载ISO然后解压缩接着完整最后一些必要的设置来让它工作。它也会安装一个LightDM的轻度修改版本。这一切都搞定后需要重启。
它将花费一些时间来设置,所以,耐心点。它会下载ISO然后解压缩接着完成最后一些必要的设置来让它工作。它也会安装一个LightDM的轻度修改版本。这一切都搞定后需要重启。
#### 步骤 3 选择Unity 8 ####
@ -50,13 +50,13 @@ Ubuntu中安装Unity 8桌面预览版
### 卸载Unity 8 LXC ###
如果你发现Unity 8毛病太多或者你不喜欢它那么你可以以相同的方式切换默认Unity版本。此外你也可以通过下面的命令移除Unity 8
如果你发现Unity 8毛病太多或者你不喜欢它那么你可以以相同的方式切换默认Unity版本。此外你也可以通过下面的命令移除Unity 8
sudo apt-get remove unity8-lxc
该命令会将Unity 8选项从LightDM屏幕移除但是配置仍然保留着。
以上就是你在Ubuntu中安装有Mir的Unity 8的全部过程试玩后请分享你关于Unity 8的想法哦
以上就是你在Ubuntu中安装有Mir的Unity 8的全部过程试玩后请分享你关于Unity 8的想法哦
--------------------------------------------------------------------------------
@ -64,7 +64,7 @@ via: http://itsfoss.com/install-unity-8-desktop-ubuntu/
作者:[Abhishek][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,37 +1,36 @@
如何在Ubuntu 15.04(Vivid Vervet)中安装nginx和google pagespeed
如何在 Ubuntu 15.04 中安装 nginx google pagespeed
================================================================================
Nginx (engine-x)是一个开源高性能http、反向代理和IMAP/POP3代理服务器。nginx杰出的功能有稳定、丰富的功能集、简单的配置和低资源消耗。nginx被用于一些高性能网站并在站长之间变得越来越流行。本教程会从源码构建一个带有google paespeed模块用于Ubuntu 15.04中的.deb包。
Nginx engine-x是一个开源的高性能 HTTP 服务器、反向代理和 IMAP/POP3 代理服务器。nginx 杰出的功能有稳定、丰富的功能集、简单的配置和低资源消耗。nginx 被用于一些高性能网站并在站长之间变得越来越流行。本教程会从源码构建一个带有 google paespeed 模块的用于 Ubuntu 15.04 的 nginx .deb 安装包。
pagespeed 是一个由 google 开发的 web 服务器模块来加速网站响应时间、优化 html 和减少页面加载时间。ngx_pagespeed 的功能如下:
pagespeed是一个由google开发的web服务器模块来加速网站响应时间、优化html和减少页面加载时间。ngx_pagespeed的功能如下
- 图像优化去除meta数据、动态剪裁、重压缩。
- CSS与JavaScript 放大、串联、内联、外联。
- 图像优化:去除元数据、动态缩放、重压缩。
- CSS 与 JavaScript 压缩、串联、内联、外联。
- 小资源内联
- 延迟图像与JavaScript加载
- HTML重写
- 图像与 JavaScript 延迟加载
- HTML 重写
- 缓存生命期插件
更多请见 [https://developers.google.com/speed/pagespeed/module/][1].
更多请见 [https://developers.google.com/speed/pagespeed/module/][1]
### 预备要求 ###
### 前置要求 ###
Ubuntu Server 15.04 64位
root 权限
- Ubuntu Server 15.04 64位
- root 权限
本篇我们将要:
- 安装必备包
- 安装带ngx_pagespeed的nginx
- 安装必备软件
- 安装带 ngx_pagespeed nginx
- 测试
#### 安装必备包 ####
sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev
sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev
#### 安装带ngx_pagespeed的nginx ####
### 安装带 ngx_pagespeed nginx ###
**第一步 - 添加nginx仓库**
#### 第一步 - 添加nginx仓库####
vim /etc/apt/sources.list.d/nginx.list
@ -51,7 +50,7 @@ sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev
sudo sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYNUMBER
sudo apt-get update
**第二步 - 从仓库下载nginx 1.8**
####第二步 - 从仓库下载 nginx 1.8####
sudo su
cd ~
@ -60,7 +59,7 @@ sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev
apt-get source nginx
apt-get build-dep nginx
**第三步 - 下载Pagespeed**
#### 第三步 - 下载 Pagespeed####
cd ~
mkdir -p ~/new/ngx_pagespeed/
@ -73,12 +72,12 @@ sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev
wget https://dl.google.com/dl/page-speed/psol/${ngx_version}.tar.gz
tar -xzf 1.9.32.3.tar.gz
**第三步 - 配置nginx来编译Pagespeed**
####第四步 - 配置 nginx 来编译 Pagespeed####
cd ~/new/nginx_source/nginx-1.8.0/debin/
vim rules
在CFLAGS `.configure`下添加模块:
两处 CFLAGS `.configure` 下添加模块:
--add-module=../../ngx_pagespeed/ngx_pagespeed-release-1.9.32.3-beta \
@ -86,27 +85,27 @@ sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev
![adding pagespeed to nginx](https://www.howtoforge.com/images/nginx_pagespeed_ubuntu_15_04/big/2.png)
**第五步 - 打包nginx包并安装**
####第五步 - 打包 nginx 软件包并安装####
cd ~/new/nginx_source/nginx-1.8.0/
dpkg-buildpackage -b
dpkg-buildpackage会编译 ~/new/ngix_source/成nginx.deb。打包完成后看一下目录
dpkg-buildpackage 会编译 ~/new/ngix_source/ 为 nginx.deb。打包完成后看一下目录
cd ~/new/ngix_source/
ls
![nginx builded with pagespeed](https://www.howtoforge.com/images/nginx_pagespeed_ubuntu_15_04/big/3.png)
接着安装nginx。
接着安装 nginx。
dpkg -i nginx_1.8.0-1~trusty_amd64.deb
![Install nginx](https://www.howtoforge.com/images/nginx_pagespeed_ubuntu_15_04/big/4.png)
#### 测试 ####
### 测试 ###
运行nginx -V测试nginx是否已经自带ngx_pagespeed。
运行 nginx -V 测试 nginx 是否已经自带 ngx_pagespeed。
nginx -V
@ -114,15 +113,15 @@ dpkg-buildpackage会编译 ~/new/ngix_source/成nginx.deb。打包完成后
### 总结 ###
稳定、快速、开源的nginx支持许多不同的优化模块。这其中之一是google开发的pagespeed。不像apachenginx模块不是动态加载的因此你必须在编译之前就选择需要的模块。
稳定、快速、开源的 nginx 支持许多不同的优化模块。这其中之一是 google 开发的pagespeed。不像 apachenginx 模块不是动态加载的,因此你必须在编译之前就选择需要的模块。
--------------------------------------------------------------------------------
via: https://www.howtoforge.com/tutorial/how-to-install-nginx-and-google-pagespeed-on-ubuntu-15-04/#step-build-nginx-package-and-install
via: https://www.howtoforge.com/tutorial/how-to-install-nginx-and-google-pagespeed-on-ubuntu-15-04/
作者Muhammad Arul
译者:[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/) 荣誉推出

View File

@ -1,29 +1,27 @@
在Ubuntu 15.04下安装Android Studio
PS 原MD文件有大段重复并且排版错误译者已修复
================================================================================
Android Studio是官方为了Android应用开发者而发布的IDE,它基于IntelliJ的IDEA。
![](http://www.ubuntugeek.com/wp-content/uploads/2015/05/23.png)
Android Studio是官方为了Android应用开发者而发布的IDE它基于IntelliJ的IDEA。
### Android Studio的功能 ###
灵活的基于Gradle的建构系统
- 灵活的基于Gradle的建构系统
针对不同手机编译多个版本的apk
- 针对不同手机编译多个版本的apk
代码模板功能构建出各种常用的应用
- 代码模板功能构建出各种常用的应用
支持拖动编辑主题的富布局编辑器
- 支持拖动编辑主题的富布局编辑器
lint工具可以捕捉到应用的性能、可用性、版本冲突或者其他问题
- lint工具可以捕捉到应用的性能、可用性、版本冲突或者其他问题
代码混淆和应用签名功能
内置 Google Cloud Platform 的支持可以轻易的融入Google Cloud Messaging 和 App Engine支持
还有更多
- 代码混淆和应用签名功能
- 内置 Google Cloud Platform 的支持可以轻易的融入Google Cloud Messaging 和 App Engine支持
- 还有更多
### 在 Ubuntu 15.04 上安装 Android Studio ###
@ -33,7 +31,6 @@ lint工具可以捕捉到应用的性能、可用性、版本冲突或者其他
sudo apt-get update
sudo apt-get install android-studio
如果要把Android Studio添加到启动栏你需要如下操作
打开Android Studio点击Configure选择Create Desktop Entry这样Android Studio应该在dash中创建快捷方式了。
@ -42,8 +39,6 @@ lint工具可以捕捉到应用的性能、可用性、版本冲突或者其他
![](http://www.ubuntugeek.com/wp-content/uploads/2015/05/12.png)
![](http://www.ubuntugeek.com/wp-content/uploads/2015/05/23.png)
![](http://www.ubuntugeek.com/wp-content/uploads/2015/05/31.png)
![](http://www.ubuntugeek.com/wp-content/uploads/2015/05/41.png)
@ -60,7 +55,7 @@ via: http://www.ubuntugeek.com/install-android-studio-on-ubuntu-15-04.html
作者:[ruchi][a]
译者:[NearTan](https://github.com/NearTan)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,433 @@
命令行艺术
================================================================================
![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](https://github.com/jlevy/the-art-of-command-line/raw/master/cowsay.png)
流畅地使用命令行是一个常被忽略的技能,或被认为是神秘的奥义。但是,它会以明显而微妙的方式改善你作为工程师的灵活度和生产力。这是我在 Linux 上工作时发现的有用的命令行使用小窍门和笔记的精粹。有些小窍门是很基础的,而有些是相当地特别、复杂、或者晦涩难懂。这篇文章不长,但是如果你可以使用并记得这里的所有内容,那么你就懂得很多了。
其中大部分[最初](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands)[出现](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix)在[Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know)上,但是考虑到兴趣所在,似乎更应该放到 Github 上,这里的人比我更能提出改进建议。如果你看到一个错误,或者更好的某种东西,请提交问题或 PR当然提交前请看看必读小节和已有的 PR/Issue。
## 必读
范围:
- 本文是针对初学者和专业人员的,选题目标是覆盖面广(全都很重要)、有针对性(大多数情况下都给出具体实例)而简洁(避免不必要内容以及你能在其它地方轻松找到的离题的内容)。每个小窍门在某种情形下都很必需的,或者能比替代品大大节省时间。
- 这是为 Linux 写的。绝大部分条目都可以同样应用到 MacOS或者甚至 Cygwin
- 主要针对交互式 Bash尽管大多数小窍门也可以应用到其它 shell以及常规 Bash 脚本。
- 包括了“标准的”UNIX 命令以及那些需要安装的软件包(它们很重要,值得安装)。
注意:
- 为了能在一篇文章内展示尽量多的东西,一些具体的信息会被放到引用页里。你可以使用 Google 来获得进一步的内容。(如果需要的话,)你可以使用 `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` 来安装这些新的程序。
- 使用 [Explainshell][1] 来获取命令、参数、管道等内容的解释。
## 基础
- 学习基本 Bash 技能。实际上,键入`man bash`,然后至少浏览一遍所有内容;它很容易理解,没那么长。其它 shell 也不错,但是 Bash 很强大,而且到处都可以找到(如果在你自己的笔记本上*只*学习 zsh、fish 之类,会在很多情形下受到限制,比如使用现存的服务器时)。
- 至少学好一种基于文本的编辑器。理想的一个是 Vim`vi`),因为在终端中编辑时随时都能找到它(即使大多数时候你在使用 Emacs、一个大型的 IDE、或一个现代的时髦编辑器
- 学习怎样使用 `man` 来阅读文档(好奇的话,用 `man man` 来列出分区号,比如 1 是常规命令5 是文件描述8 用于管理员)。用 `apropos` 找到帮助页。了解哪些命令不是可执行程序,而是 Bash 内置的,你可以用 `help``help -d` 得到帮助。
- 学习使用 `>``<` 来进行输出和输入重定向,以及使用 `|` 来管道重定向,学习关于 stdout 和 stderr 的东西。
- 学习 `*`(也许还有 `?``{`...`}` )文件通配扩展和应用,以及双引号 `"` 和单引号 `'` 之间的区别。(更多内容请参看下面关于变量扩展部分)。
- 熟悉 Bash 作业管理:`&` **ctrl-z** **ctrl-c** `jobs` `fg` `bg` `kill` 等等。
- 掌握`ssh`,以及通过 `ssh-agent``ssh-add` 等进行无密码验证的基础技能。
- 基本的文件管理:`ls` 和 `ls -l`(特别是,知道`ls -l`各个列的意义),`less` `head` `tail``tail -f`(或者更好的`less +F``ln` 和 `ln -s`(知道硬链接和软链接的区别,以及硬链接相对于软链接的优势),`chown``chmod``du`(用于查看磁盘使用率的快速摘要:`du -sk *`)。文件系统管理:`df` `mount``fdisk``mkfs``lsblk`。
- 基本的网络管理: `ip``ifconfig``dig`。
- 熟知正则表达式,以及各种使用`grep`/`egrep`的选项。`-i``-o``-A` 和 `-B` 选项值得掌握。
- 学会使用 `apt-get``yum` `dnf` 或 `pacman`(这取决于你的发行版)来查找并安装软件包。确保你可以用 `pip` 来安装基于 Python 的命令行工具(下面的一些东西可以很容易地通过 `pip` 安装)。
## 日常使用
- 在Bash中使用 **tab** 补完参数,使用 **ctrl-r** 来搜索命令历史。
- 在Bash中使用 **ctrl-w** 来删除最后的单词,使用 **ctrl-u** 来删除整行,返回行首。使用 **alt-b****alt-f** 来逐词移动,使用 **ctrl-k** 来清除到行尾的内容,以及使用 **ctrl-l** 清屏。参见 `man readline` 来查看 Bash 中所有默认的键盘绑定,有很多。例如,**alt-.** 可以循环显示先前的参数,而**alt-** 扩展通配。LCTT 译注:关于 Bash 下的快捷键,可以参阅: https://linux.cn/article-5660-1.html
- 另外,如果你喜欢 vi 风格的键盘绑定,可以使用 `set -o vi`
- 要查看最近用过的命令,请使用 `history` 。 有许多缩写形式,比如 `!$`(上次的参数)和`!!`(上次的命令),虽然使用 `ctrl-r``alt-.` 更容易些。LCTT 译注:关于历史扩展功能,可以参阅: https://linux.cn/article-5658-1.html
- 返回先前的工作目录: `cd -`
- 如果你命令输入到一半,但是改变主意了,可以敲 **alt-#** 来添加一个 `#` 到开头,然后将该命令作为注释输入(或者使用快捷键 **ctrl-a** **#****enter** 输入)。然后,你可以在后面通过命令历史来回到该命令。
- 使用 `xargs`(或 `parallel`),它很强大。注意,你可以控制每行(`-L`)执行多少个项目,以及并行执行(`-P`)。如果你不确定它是否会做正确的事情,可以首先使用 `xargs echo`。同时,使用 `-I{}` 也很方便。样例:
```bash
find . -name '*.py' | xargs grep some_function
cat hosts | xargs -I{} ssh root@{} hostname
```
- `pstree -p` 对于显示进程树很有帮助。
- 使用 `pgrep``pkill` 来按名称查找进程或给指定名称的进程发送信号(`-f` 很有帮助)。
- 掌握各种可以发送给进程的信号。例如,要挂起进程,可以使用 `kill -STOP [pid]`。完整的列表可以查阅 `man 7 signal`
- 如果你想要一个后台进程一直保持运行,使用 `nohup``disown`
- 通过 `netstat -lntp``ss -plat` 检查哪些进程在监听(用于 TCP对 UDP 使用 `-u` 替代 `-t`)。
- `lsof`来查看打开的套接字和文件。
- 在 Bash 脚本中,使用 `set -x` 调试脚本输出。尽可能使用严格模式。使用 `set -e` 在遇到错误时退出。也可以使用 `set -o pipefail`,对错误进行严格处理(虽然该话题有点微妙)。对于更复杂的脚本,也可以使用 `trap`
- 在 Bash 脚本中,子 shell写在括号中的是组合命令的便利的方式。一个常见的例子是临时移动到一个不同的工作目录
```bash
# 在当前目录做些事
(cd /some/other/dir; other-command)
# 继续回到原目录
```
- 注意,在 Bash 中有大量的各种各样的变量扩展。检查一个变量是否存在:`${name:?error message}`。例如如果一个Bash脚本要求一个单一参数只需写 `input_file=${1:?usage: $0 input_file}`。算术扩展:`i=$(( (i + 1) % 5 ))`。序列: `{1..10}`。修剪字符串:`${var%suffix}` 和 `${var#prefix}`。例如if `var=foo.pdf` ,那么 `echo ${var%.pdf}.txt` 会输出 `foo.txt`
- 命令的输出可以通过 `<(some command)` 作为一个文件来处理。例如,将本地的 `/etc/hosts` 和远程的比较:
```sh
diff /etc/hosts <(ssh somehost cat /etc/hosts)
```
- 了解 Bash 中的“嵌入文档”,就像在 `cat <<EOF ...` 中。
- 在 Bash 中,通过:`some-command >logfile 2>&1` 同时重定向标准输出和标准错误。通常,要确保某个命令不再为标准输入打开文件句柄,而是将它捆绑到你所在的终端,添加 `</dev/null` 是个不错的做法。
- `man ascii` 可以得到一个不错的ASCII表带有十六进制和十进制值两种格式。对于常规编码信息`man unicode``man utf-8` 和 `man latin1` 将很有帮助。
- 使用 `screen``tmux` 来复用屏幕,这对于远程 ssh 会话尤为有用,使用它们来分离并重连到会话。另一个只用于保持会话的最小可选方案是 `dtach`
- 在 ssh 中,知道如何使用 `-L``-D`(偶尔也用`-R`)来打开端口通道是很有用的,如从一台远程服务器访问网站时。
- 为你的 ssh 配置进行优化很有用;例如,这个 `~/.ssh/config` 包含了可以避免在特定网络环境中连接被断掉的情况的设置、使用压缩(这对于通过低带宽连接使用 scp 很有用),以及使用一个本地控制文件来开启到同一台服务器的多通道:
```
TCPKeepAlive=yes
ServerAliveInterval=15
ServerAliveCountMax=6
Compression=yes
ControlMaster auto
ControlPath /tmp/%r@%h:%p
ControlPersist yes
```
- 其它一些与 ssh 相关的选项对会影响到安全,请小心开启,如各个子网或主机,或者在信任的网络中:`StrictHostKeyChecking=no` `ForwardAgent=yes`
- 要获得八进制格式的文件的权限,这对于系统配置很有用而用 `ls` 又没法查看,而且也很容易搞得一团糟,可以使用像这样的东西:
```sh
stat -c '%A %a %n' /etc/timezone
```
- 对于从另一个命令的输出结果中交互选择值,可以使用[`percol`](https://github.com/mooz/percol)。
- 对于基于另一个命令(如`git`)输出的文件交互,可以使用`fpp` ([路径选择器](https://github.com/facebook/PathPicker))。
- 要为当前目录(及子目录)中的所有文件构建一个简单的 Web 服务器,让网络中的任何人都可以获取,可以使用:
`python -m SimpleHTTPServer 7777` (使用端口 7777 和 Python 2
## 处理文件和数据
- 要在当前目录中按名称定位文件,`find . -iname '*something*'`(或者相类似的)。要按名称查找任何地方的文件,使用 `locate something`(但请记住,`updatedb` 可能还没有索引最近创建的文件)。
- 对于源代码或数据文件进行的常规搜索(要比 `grep -r` 更高级),使用 [`ag`](https://github.com/ggreer/the_silver_searcher)。
- 要将 HTML 转成文本:`lynx -dump -stdin`。
- 对于 Markdown、HTML以及各种类型的文档转换可以试试 [`pandoc`](http://pandoc.org/)。
- 如果你必须处理 XML`xmlstarlet` 虽然有点老旧,但是很好用。
- 对于 JSON使用`jq`。
- 对于 Excel 或 CSV 文件,[csvkit](https://github.com/onyxfish/csvkit) 提供了 `in2csv``csvcut``csvjoin``csvgrep` 等工具。
- 对于亚马逊 S3 [`s3cmd`](https://github.com/s3tools/s3cmd) 会很方便,而 [`s4cmd`](https://github.com/bloomreach/s4cmd) 则更快速。亚马逊的 [`aws`](https://github.com/aws/aws-cli) 则是其它 AWS 相关任务的必备。
- 掌握 `sort``uniq`,包括 uniq 的 `-u``-d` 选项——参见下面的单行程序。
- 掌握 `cut``paste` 和 `join`,它们用于处理文本文件。很多人会使用 `cut`,但常常忘了 `join`
- 了解 `tee`,它会将 stdin 同时复制到一个文件和 stdout`ls -al | tee file.txt`
- 知道 locale 会以微妙的方式对命令行工具产生大量的影响,包括排序的顺序(整理)以及性能。大多数安装好的 Linux 会设置 `LANG` 或其它 locale 环境变量为本地设置,比如像 US English。但是你要明白如果改变了本地环境那么排序也将改变。而且 i18n 过程会让排序或其它命令的运行慢*好多倍*。在某些情形中(如像下面那样的设置操作或唯一性操作),你可以安全地整个忽略缓慢的 i18n 过程,然后使用传统的基于字节的排序顺序 `export LC_ALL=C`
- 了解基本的改动数据的 `awk``sed` 技能。例如,计算某个文本文件第三列所有数字的和:`awk '{ x += $3 } END { print x }'`。这可能比 Python 的同等操作要快3倍而且要短3倍。
- 在一个或多个文件中,替换所有出现在特定地方的某个字符串:
```sh
perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
```
- 要立即根据某个模式对大量文件重命名,使用 `rename`。对于复杂的重命名,[`repren`](https://github.com/jlevy/repren) 可以帮助你达成。
```sh
# 恢复备份的文件名 foo.bak -> foo:
rename 's/\.bak$//' *.bak
# 文件和目录的全名 foo -> bar:
repren --full --preserve-case --from foo --to bar .
```
- 使用 `shuf` 来从某个文件中打乱或随机选择行。
- 了解 `sort` 的选项。知道这些键是怎么工作的(`-t`和`-k`)。特别是,注意你需要写`-k1,1`来只通过第一个字段排序;`-k1`意味着根据整行排序。
- 稳定排序(`sort -s`会很有用。例如要首先按字段2排序然后再按字段1排序你可以使用 `sort -k1,1 | sort -s -k2,2`
- 如果你曾经需要在 Bash 命令行中写一个水平制表符(如,用于 -t 参数的排序),按**ctrl-v** **[Tab]**,或者写`$'\t'`(后面的更好,因为你可以复制/粘贴)。
- 对源代码进行补丁的标准工具是 `diff``patch`。 用 `diffstat` 来统计 diff 情况。注意 `diff -r` 可以用于整个目录,所以可以用 `diff -r tree1 tree2 | diffstat` 来统计(两个目录的)差异。
- 对于二进制文件,使用 `hd` 进行简单十六进制转储,以及 `bvi` 用于二进制编辑。
- 还是用于二进制文件,`strings`(加上 `grep` 等)可以让你找出一点文本。
- 对于二进制文件的差异delta 压缩),可以使用 `xdelta3`
- 要转换文本编码,试试 `iconv` 吧,或者对于更高级的用途使用 `uconv`;它支持一些高级的 Unicode 的东西。例如,这个命令可以转换为小写并移除所有重音符号(通过扩展和丢弃):
```sh
uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt
```
- 要将文件分割成几个部分,来看看 `split`(按大小分割)和 `csplit`(按格式分割)吧。
- 使用 `zless``zmore``zcat` 和 `zgrep` 来操作压缩文件。
## 系统调试
- 对于 Web 调试,`curl` 和 `curl -I` 很方便灵活,或者也可以使用它们的同行 `wget`,或者更现代的 [`httpie`](https://github.com/jakubroztocil/httpie)。
- 要了解磁盘、CPU、网络的状态使用 `iostat``netstat``top`(或更好的 `htop`)和(特别是)`dstat`。它们对于快速获知系统中发生的状况很好用。
- 对于更深层次的系统总览,可以使用 [`glances`](https://github.com/nicolargo/glances)。它会在一个终端窗口中为你呈现几个系统层次的统计数据,对于快速检查各个子系统很有帮助。
- 要了解内存状态,可以运行 `free``vmstat`看懂它们的输出结果吧。特别是要知道“cached”值是Linux内核为文件缓存所占有的内存因此要有效地统计“free”值。
- Java 系统调试是一件截然不同的事,但是对于 Oracle 系统以及其它一些 JVM 而言,不过是一个简单的小把戏,你可以运行 `kill -3 <pid>`然后一个完整的堆栈追踪和内存堆的摘要包括常规的垃圾收集细节这很有用将被转储到stderr/logs。
- 使用 `mtr` 作路由追踪更好,可以识别网络问题。
- 对于查看磁盘满载的原因,`ncdu` 会比常规命令如 `du -sh *` 更节省时间。
- 要查找占用带宽的套接字和进程,试试 `iftop``nethogs` 吧。
- Apache附带的`ab`工具对于临时应急检查网络服务器性能很有帮助。对于更复杂的负载测试,可以试试 `siege`
- 对于更仔细的网络调试,可以用 `wireshark``tshark` 或 `ngrep`
- 掌握 `strace``ltrace`。如果某个程序失败、挂起或崩溃,而你又不知道原因,或者如果你想要获得性能的大概信息,这些工具会很有帮助。注意,分析选项(`-c`)和使用 `-p` 关联运行进程。
- 掌握 `ldd` 来查看共享库等。
- 知道如何使用 `gdb` 来连接到一个运行着的进程并获取其堆栈追踪信息。
- 使用 `/proc`。当调试当前的问题时,它有时候出奇地有帮助。样例:`/proc/cpuinfo``/proc/xxx/cwd``/proc/xxx/exe``/proc/xxx/fd/``/proc/xxx/smaps`。
- 当调试过去某个东西为何出错时,`sar` 会非常有帮助。它显示了 CPU、内存、网络等的历史统计数据。
- 对于更深层的系统和性能分析,看看 `stap` ([SystemTap](https://sourceware.org/systemtap/wiki))[`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)) 和 [`sysdig`](https://github.com/draios/sysdig) 吧。
- 确认是正在使用的 Linux 发行版版本(支持大多数发行版):`lsb_release -a`。
- 每当某个东西的行为异常时(可能是硬件或者驱动器问题),使用`dmesg`。
## 单行程序
这是将命令连成一行的一些样例:
- 有时候通过 `sort`/`uniq` 对文本文件做交集、并集和差集运算时,这个例子会相当有帮助。假定 `a``b` 是已经进行了唯一性处理的文本文件。这会很快而且可以处理任意大小的文件总计可达数千兆字节。Sort不受内存限制不过如果 `/tmp` 放在一个很小的根分区的话,你可能需要使用 `-T` 选项。)也可参见上面关于`LC_ALL`的注解和 `-u` 选项(参见下面例子更清晰)。
```bash
cat a b | sort | uniq > c # c 是 a 和 b 的并集
cat a b | sort | uniq -d > c # c 是 a 和 b 的交集
cat a b b | sort | uniq -u > c # c 是 a 减去 b 的差集
```
- 使用 `grep . *` 来可视化查看一个目录中的所有文件的所有内容,例如,对于放满配置文件的目录: `/sys` `/proc` `/etc`
- 对某个文本文件的第三列中所有数据进行求和该例子可能比同等功能的Python要快3倍而且代码也少于其3倍
```sh
awk '{ x += $3 } END { print x }' myfile
```
- 如果想要查看某个文件树的大小/日期,该例子就像一个递归`ls -l`,但是比`ls -lR`要更容易读懂:
```sh
find . -type f -ls
```
- 只要可以,请使用 `xargs``parallel`。注意,你可以控制每行(`-L`)执行多少个项目,以及并行执行(`-P`)。如果你不确定它是否会做正确的事情,可以首先使用 `xargs echo`。同时,使用 `-I{}` 也很方便。样例:
```sh
find . -name '*.py' | xargs grep some_function
cat hosts | xargs -I{} ssh root@{} hostname
```
- 比如说,你有一个文本文件,如 Web 服务器的日志,在某些行中出现了某个特定的值,如 URL 中出现的 `acct_id` 参数。如果你想要统计有多少个 `acct_id` 的请求:
```sh
cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn
```
- 运行该函数来获得来自本文的随机提示解析Markdown并从中提取某个项目
```sh
function taocl() {
curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md |
pandoc -f markdown -t html |
xmlstarlet fo --html --dropdtd |
xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" |
xmlstarlet unesc | fmt -80
}
```
## 晦涩难懂,但却有用
- `expr`:实施算术或布林操作,或者求正则表达式的值
- `m4`:简单的宏处理器
- `yes`:大量打印一个字符串
- `cal`:漂亮的日历
- `env`:(以特定的环境变量设置)运行一个命令(脚本中很有用)
- `look`:查找以某个字符串开头的英文单词(或文件中的行)
- `cut ``paste` 以及 `join`:数据处理
- `fmt`:格式化文本段落
- `pr`:格式化文本为页/列
- `fold`:文本折行
- `column`:格式化文本为列或表
- `expand``unexpand`:在制表符和空格间转换
- `nl`:添加行号
- `seq`:打印数字
- `bc`:计算器
- `factor`:分解质因子
- `gpg`:加密并为文件签名
- `toe`terminfo 条目表
- `nc`:网络调试和数据传输
- `socat`:套接字中继和 tcp 端口转发(类似 `netcat`
- `slurm`:网络流量可视化
- `dd`:在文件或设备间移动数据
- `file`:识别文件类型
- `tree`:以树形显示目录及子目录;类似 `ls`,但是是递归的。
- `stat`:文件信息
- `tac`:逆序打印文件
- `shuf`:从文件中随机选择行
- `comm`:逐行对比分类排序的文件
- `hd`和`bvi`:转储或编辑二进制文件
- `strings`:从二进制文件提取文本
- `tr`:字符转译或处理
- `iconv `或`uconv`:文本编码转换
- `split `和`csplit`:分割文件
- `units`单位转换和计算将每双周fortnigh一浪furlong长度单位约201米转换为每瞬blink一缇twip一种和屏幕无关的长度单位参见 /usr/share/units/definitions.unitsLCTT 译注:这都是神马单位啊!)
- `7z`:高比率文件压缩
- `ldd`:动态库信息
- `nm`:目标文件的符号
- `ab`Web 服务器基准测试
- `strace`:系统调用调试
- `mtr`:用于网络调试的更好的路由追踪软件
- `cssh`:可视化并发 shell
- `rsync`:通过 SSH 同步文件和文件夹
- `wireshark``tshark`:抓包和网络调试
- `ngrep`:从网络层摘取信息
- `host``dig`DNS查询
- `lsof`:处理文件描述符和套接字信息
- `dstat`:有用的系统统计数据
- [`glances`](https://github.com/nicolargo/glances):高级,多个子系统概览
- `iostat`CPU和磁盘使用率统计
- `htop`top的改进版
- `last`:登录历史
- `w`:谁登录进来了
- `id`:用户/组身份信息
- `sar`:历史系统统计数据
- `iftop`或`nethogs`:按套接口或进程的网络使用率
- `ss`:套接口统计数据
- `dmesg`:启动和系统错误信息
- `hdparm`SATA/ATA 磁盘操作/改善性能
- `lsb_release`Linux 发行版信息
- `lsblk`:列出块设备,以树形展示你的磁盘和分区
- `lshw`:硬件信息
- `fortune``ddate` 和 `sl`:嗯,好吧,它取决于你是否认为蒸汽机车和 Zippy 引用“有用”
## 更多资源
- [超棒的shell](https://github.com/alebcay/awesome-shell): 一个shell工具和资源一览表。
- [严格模式](http://redsymbol.net/articles/unofficial-bash-strict-mode/) 用于写出更佳的shell脚本。
## 免责声明
除了非常小的任务外,其它都写出了代码供大家阅读。伴随力量而来的是责任。事实是,你*能*在Bash中做的并不意味着是你所应该做的
--------------------------------------------------------------------------------
via: https://github.com/jlevy/the-art-of-command-line
作者:[jlevy][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://github.com/jlevy
[1]:http://explainshell.com/

View File

@ -0,0 +1,61 @@
Linux 4.1 带来了什么新东西?
================================================================================
**一个新的Linux内核已经发布了 - 全世界为之心跳(我们想把它说的诗意一些)**
Linus Torvalds除了他不会有谁了在Linux邮件列表当然不会在别的地方中[宣布][1],在大概两个月后迎来了[第一个4.x系列的Linux内核的发布][2]。
像每次发布前那样Linux 4.1带来了很多的改变。它们包括了硬件兼容性、电源管理、文件系统性能、以及你从没听说过的处理器的技术修复。
Linux 4.1 已经进入将在10月发布的 Ubuntu 15.10 。
### Linux 4.1 有哪些新东西 ###
![Tux got mail](http://www.omgubuntu.co.uk/wp-content/uploads/2015/06/linux-kernel-4-11-350x200.jpg)
*Tux 收到了邮件*
这个标题只是说说而已,我们不是简单地将发布公告贴到这里。
我们会从(大量、冗长以及那些不明觉厉的的技术的)更改日志去挑选一些对桌面用户而言,不见得夸张但或许有用的亮点。
#### 电源管理 ####
你可以在Linux 4.1中找到的面向用户的一大特性是对 Intel 的 Cherry Trail 和 Bay Trai 芯片、Soc及Intel计算棒等设备的性能及能效的提升。
传闻建议是Linux 4.1给出了新的Intel硬件组合和更长电池寿命。这么多的进步自然不可能针对所有芯片它只对特定芯片和系统和高端的有用但仍旧是一个令人兴奋的消息。
**Linux 4.1 亮点包括:**
- ext4 有了文件系统层面的加密感谢Google
- 罗技游戏手柄lg4ff驱动改进了力反馈
- 东芝笔记本驱动进行了USB睡眠充电和背光改进
- Xbox One控制器支持Rumble
- Wacom平板驱动改进了电源报告
- 各种针对arm和x86设备电源管理改进
- Samsung Exynos 3250 电源管理改进
- 支持Bamboo平板
- 联想OneLink Pro Dock获得USB支持
- 支持Realtek 8723A、 8723B、 8761A、 8821 Wi-Fi网卡
### Ubuntu中安装Linux 4.1 ###
虽然这次发布的内核被标记为稳定但是Ubuntu用户并不需要迫切地安装它。
但如果你等不及了并且技术足够熟练,你可以从[Canonical的主干内核归档][3]中下载合适的软件包来安装Linux 4.1或者冒着风险使用第三方PPA
10月发布的Ubuntu 15.10 Wily Werewolf将会基于Ubuntu Kernel 4.1.xUbuntu内核是基于Linux内核加上Ubuntu没被上流接受的独有补丁
--------------------------------------------------------------------------------
via: http://www.omgubuntu.co.uk/2015/06/linux-4-1-kernel-new-features
作者:[Joey-Elijah Sneddon][a]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://plus.google.com/117485690627814051450/?rel=author
[1]:https://lkml.org/lkml/2015/6/22/8
[2]:http://www.omgubuntu.co.uk/2015/04/linux-kernel-4-0-new-features
[3]:http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=N;O=D

View File

@ -0,0 +1,285 @@
15 个有用的 MySQL/MariaDB 性能调整和优化技巧
================================================================================
MySQL 是一个强大的开源关系数据库管理系统(简称 RDBMS。它发布于 1995 年20年前。它采用结构化查询语言SQL这可能是数据库内容管理中最流行的选择。最新的 MySQL 版本是 5.6.25,于 2015 年 5 月 29 日发布。
关于 MySQL 一个有趣的事实是它的名字来自于 Michael WideniusMySQL 的创始人)的女儿“ My”。尽管有许多关于 MySQL 有趣的传闻,不过本文主要是向你展示一些有用的实践,以帮助你管理你的 MySQL 服务器。
![MySQL 性能优化](http://www.tecmint.com/wp-content/uploads/2015/06/MySQL-Performance-Tuning1.png)
*MySQL 性能优化*
2009 年 4 月MySQL 被 Oracle 收购。其结果是MySQL 社区分裂,创建了一个叫 MariaDB 的分支 。创建该分支的主要原因是为了保持这个项目可以在 GPL 下的自由。
今天MySQL 和 MariaDB 是用于类似 WordPress、Joomla、Magento 和其他 web 应用程序的最流行的 RDMS 之一(如果不是最多的)。
这篇文章将告诉你一些基本的,但非常有用的关于如何优化 MySQL/MariaDB 性能的技巧。注意,本文假定您已经安装了 MySQL 或 MariaDB。如果你仍然不知道如何在系统上安装它们你可以按照以下说明去安装
- [在 RHEL/CentOS 7 上安装 LAMP][1]
- [在 Fedora 22 上安装 LAMP][2]
- [在 Ubuntu 15.04 安装 LAMP][3]
- [在 Debian 8 上安装 MariaDB][4]
- [在 Gentoo Linux 上安装 MariaDB][5]
- [在 Arch Linux 上安装 MariaDB][6]
**重要提示** 在开始之前,不要盲目的接受这些建议。每个 MySQL 设置都是不同的,在进行任何更改之前需要慎重考虑。
你需要明白这些:
- MySQL/MariaDB 配置文件位于 `/etc/my.cnf`。 每次更改此文件后你需要重启 MySQL 服务,以使更改生效。
- 这篇文章使用 MySQL 5.6 版本。
### 1. 启用 InnoDB 的每张表一个数据文件设置 ###
首先,有一个重要的解释, InnoDB 是一个存储引擎。MySQL 和 MariaDB 使用 InnoDB 作为默认存储引擎。以前MySQL 使用系统表空间来保存数据库中的表和索引。这意味着服务器唯一的目的就是数据库处理,它们的存储盘不用于其它目的。
InnoDB 提供了更灵活的方式,它把每个数据库的信息保存在一个 `.ibd` 数据文件中。每个 .idb 文件代表它自己的表空间。通过这样的方式可以更快地完成类似 “TRUNCATE” 的数据库操作,当删除或截断一个数据库表时,你也可以回收未使用的空间。
这样配置的另一个好处是你可以将某些数据库表放在一个单独的存储设备。这可以大大提升你磁盘的 I/O 负载。
MySQL 5.6及以上的版本默认启用 `innodb_file_per_table`。你可以在 /etc/my.cnf 文件中看到。该指令看起来是这样的:
innodb_file_per_table=1
### 2. 将 MySQL 数据库数据存储到独立分区上 ###
**注意**:此设置只在 MySQL 上有效, 在 MariaDB 上无效。
有时候操作系统的读/写会降低你 MySQL 服务器的性能,尤其是如果操作系统和数据库的数据位于同一块磁盘上。因此,我建议你使用单独的磁盘(最好是 SSD用于 MySQL 服务。
要完成这步,你需要将新的磁盘连接到你的计算机/服务器上。对于这篇文章,我假定磁盘挂在到 /dev/sdb。
####下一步是准备新的分区:
# fdisk /dev/sdb
现在按 “N” 来创建新的分区。接着按 “P”使其创建为主分区。在此之后从 1-4 设置分区号。之后,你可以选择分区大小。这里按 enter。在下一步你需要配置分区的大小。
如果你希望使用全部的磁盘,再按一次 enter。否则你可以手动设置新分区的大小。准备就绪后按 “w” 保存更改。现在,我们需要为我们的新分区创建一个文件系统。这可以用下面命令轻松地完成:
# mkfs.ext4 /dev/sdb1
现在我们会挂载新分区到一个目录。我在根目录下创建了一个名为 “ssd” 的目录:
# mkdir /ssd/
挂载新分区到刚才创建的目录下:
# mount /dev/sdb1 /ssd/
你可以在 /etc/fstab 文件中添加如下行设置为开机自动挂载:
/dev/sdb1 /ssd ext3 defaults 0 0
####现在我们将 MySQL 移动到新磁盘中
首先停止 MySQL 服务:
# service mysqld stop
我建议你​​同时停止 Apache/nginx以防止任何试图写入数据库的操作
# service httpd stop
# service nginx stop
现在复制整个 MySQL 目录到新分区中:
# cp /var/lib/mysql /ssd/ -Rp
这可能需要一段时间,具体取决于你的 MySQL 数据库的大小。一旦这个过程完成后重命名 MySQL 目录:
# mv /var/lib/mysql /var/lib/mysql-backup
然后创建一个符号链接:
# ln -s /ssd/mysql /var/lib/mysql
现在启动你的 MySQL 和 web 服务:
# service mysqld start
# service httpd start
# service nginx start
以后你的数据库将使用新的磁盘访问。
### 3. 优化使用 InnoDB 的缓冲池 ###
InnoDB 引擎在内存中有一个缓冲池用于缓存数据和索引。这当然有助于你更快地执行 MySQL/MariaDB 查询语句。选择合适的内存大小需要一些重要的决策并对系统的内存消耗有较多的认识。
下面是你需要考虑的:
- 其它的进程需要消耗多少内存。这包括你的系统进程,页表,套接字缓冲。
- 你的服务器是否专门用于 MySQL 还是你运行着其它非常消耗内存的服务。
在一个专用的机器上,你可能会把 60-70 的内存分配给 `innodb_buffer_pool_size`。如果你打算在一个机器上运行更多的服务,你应该重新考虑专门用于 `innodb_buffer_pool_size` 的内存大小。
你需要设置 my.cnf 中的此项:
innodb_buffer_pool_size
### 4. 在 MySQL 中避免使用 Swappiness ###
“交换”是一个当系统移动部分内存到一个称为 “交换空间” 的特殊磁盘空间时的过程。通常当你的系统用完物理内存后就会出现这种情况,系统将信息写入磁盘而不是释放一些内存。正如你猜测的磁盘比你的内存要慢得多。
该选项默认情况下是启用的:
# sysctl vm.swappiness
vm.swappiness = 60
运行以下命令关闭 swappiness
# sysctl -w vm.swappiness=0
### 5. 设置 MySQL 的最大连接数 ###
`max_connections` 指令告诉你当前你的服务器允许多少并发连接。MySQL/MariaDB 服务器允许有 SUPER 权限的用户在最大连接之外再建立一个连接。只有当执行 MySQL 请求的时候才会建立连接,执行完成后会关闭连接并被新的连接取代。
请记住,太多的连接会导致内存的使用量过高并且会锁住你的 MySQL 服务器。一般小网站需要 100-200 的连接数,而较大可能需要 500-800 甚至更多。这里的值很大程度上取决于你 MySQL/MariaDB 的使用情况。
你可以动态地改变 `max_connections` 的值而无需重启MySQL服务器
# mysql -u root -p
mysql> set global max_connections = 300;
### 6. 配置 MySQL 的线程缓存数量 ###
`thread_cache_size` 指令用来设置你服务器缓存的线程数量。当客户端断开连接时,如果当前线程数小于 `thread_cache_size`,它的线程将被放入缓存中。下一个请求通过使用缓存池中的线程来完成。
要提高服务器的性能,你可以设置 `thread_cache_size` 的值相对高一些。你可以通过以下方法来查看线程缓存命中率:
mysql> show status like 'Threads_created';
mysql> show status like 'Connections';
你可以用以下公式来计算线程池的命中率:
100 - ((Threads_created / Connections) * 100)
如果你得到一个较低的数字,这意味着大多数 mysql 连接使用新的线程,而不是从缓存加载。在这种情况下,你需要增加 `thread_cache_size`
这里有一个好处是可以动态地改变 `thread_cache_size` 而无需重启 MySQL 服务。你可以通过以下方式来实现:
mysql> set global thread_cache_size = 16;
### 7. 禁用 MySQL 的 DNS 反向查询 ###
默认情况下当新的连接出现时MySQL/MariaDB 会进行 DNS 查询解析用户的 IP 地址/主机名。对于每个客户端连接,它的 IP 都会被解析为主机名。然后,主机名又被反解析为 IP 来验证两者是否一致。
当 DNS 配置错误或服务器出现问题时,这很可能会导致延迟。这就是为什么要关闭 DNS 的反向查询的原因,你可以在你的配置文件中添加以下选项去设定:
[mysqld]
# Skip reverse DNS lookup of clients
skip-name-resolve
更改后你需要重启 MySQL 服务。
### 8. 配置 MySQL 的查询缓存容量 ###
如果你有很多重复的查询并且数据不经常改变 请使用缓存查询。 人们常常不理解 `query_cache_size` 的实际含义而将此值设置为 GB 级,这实际上会降低服务器的性能。
背后的原因是,在更新过程中线程需要锁定缓存。通常设置为 200-300 MB应该足够了。如果你的网站比较小的你可以尝试给 64M 并在以后及时去增加。
在你的 MySQL 配置文件中添加以下设置:
query_cache_type = 1
query_cache_limit = 256K
query_cache_min_res_unit = 2k
query_cache_size = 80M
### 9. 配置临时表容量和内存表最大容量 ###
`tmp_table_size``max_heap_table_size` 这两个变量的大小应该相同,它们可以让你避免磁盘写入。`tmp_table_size` 是内置内存表的最大空间。如果表的大小超出限值将会被转换为磁盘上的 MyISAM 表。
这会影响数据库的性能。管理员通常建议在服务器上设置这两个值为每 GB 内存给 64M。
[mysqld]
tmp_table_size= 64M
max_heap_table_size= 64M
### 10. 启用 MySQL 慢查询日志 ###
记录慢查询可以帮助你定位数据库中的问题并帮助你调试。这可以通过在你的 MySQL 配置文件中添加以下值来启用:
slow-query-log = 1
slow-query-log-file = /var/lib/mysql/mysql-slow.log
long_query_time = 1
第一个变量启用慢查询日志,第二个告诉 MySQL 实际的日志文件存储位置。使用 `long_query_time` 来定义完成 MySQL 查询多少用时算长。
### 11. 检查 MySQL 的空闲连接 ###
空闲连接会消耗资源,可以的话应该被终止或者刷新。空闲连接是指处于 “sleep” 状态并且保持了很长一段时间的连接。你可以通过运行以下命令查看空闲连接:
# mysqladmin processlist -u root -p | grep “Sleep”
这会显示处于睡眠状态的进程列表。当代码使用持久连接到数据库时会出现这种情况。使用 PHP 调用 mysql_pconnect 可以打开这个连接,执行完查询之后,删除认证信息并保持连接为打开状态。这会导致每个线程的缓冲都被保存在内存中,直到该线程结束。
首先你要做的就是检查代码问题并修复它。如果你不能访问正在运行的代码,你可以修改 `wait_timeout` 变量。默认值是 28800 秒,而你可以安全地将其降低到 60
wait_timeout=60
### 12. 为 MySQL 选择正确的文件系统 ###
选择正确的文件系统对数据库至关重要。在这里你需要考虑的最重要的事情是 - 数据的完整性,性能和易管理性。
按照 MariaDB 的建议最好的文件系统是XFS、ext4 和 Btrfs。它们都是可以使用超大文件和大容量存储卷的企业级日志型文件系统。
下面你可以找到一些关于这三个文件系统的有用信息:
| 文件系统 | XFS | Ext4 | Btrfs |
|---------------|-----|------|-------|
| 文件系统最大容量 | 8EB | 1EB | 16EB |
| 最大文件大小 | 8EB | 16TB | 16EB |
我们的这篇文章详细介绍了 Linux 文件系统的利与弊: [Linux 文件系统解析][7]。
### 13. 设置 MySQL 允许的最大数据包 ###
MySQL 把数据拆分成包。通常一个包就是发送到客户端的一行数据。`max_allowed_packet` 变量定义了可以被发送的最大的包。
此值设置得过低可能会导致查询速度变得非常慢,然后你会在 MySQL 的错误日志看到一个错误。建议将该值设置为最大包的大小。
### 14. 测试 MySQL 的性能优化 ###
你应该定期检查 MySQL/MariaDB 的性能。这将帮助你了解资源的使用情况是否发生了改变或需要进行改进。
有大量的测试工具可用,但我推荐你一个简单易用的。该工具被称为 mysqltuner。
使用下面的命令下载并运行它:
# wget https://github.com/major/MySQLTuner-perl/tarball/master
# tar xf master
# cd major-MySQLTuner-perl-993bc18/
# ./mysqltuner.pl
你将收到有关 MySQL 使用的详细报告和推荐提示。下面是默认 MariaDB 安装的输出样例:
![MySQL 性能优化](http://www.tecmint.com/wp-content/uploads/2015/06/MySQL-Performance-Tuning.png)
### 15. 优化和修复 MySQL 数据库 ###
有时候 MySQL/MariaDB 数据库中的表很容易崩溃,尤其是服务器意外关机、文件系统突然崩溃或复制过程中仍然访问数据库。幸运的是,有一个称为 'mysqlcheck' 的免费开源工具,它会自动检查、修复和优化 Linux 中数据库的所有表。
# mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
# mysqlcheck -u root -p --auto-repair --check --optimize databasename
就是这些!我希望上述文章对你有用,并帮助你优化你的 MySQL 服务器。一如往常,如果你有任何疑问或评论,请在下面的评论部分提交。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/mysql-mariadb-performance-tuning-and-optimization/
作者:[Marin Todorov][a]
译者:[strugglingyouth](https://github.com/strugglingyouth)
校对:[ictlyh](https://github.com/ictlyh)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/marintodorov89/
[1]:http://www.tecmint.com/install-lamp-in-centos-7/
[2]:http://www.tecmint.com/install-lamp-linux-apache-mysql-php-on-fedora-22/
[3]:http://www.tecmint.com/install-lamp-on-ubuntu-15-04/
[4]:http://www.tecmint.com/install-mariadb-in-debian/
[5]:http://www.tecmint.com/install-lemp-in-gentoo-linux/
[6]:http://www.tecmint.com/install-lamp-in-arch-linux/
[7]:http://www.tecmint.com/linux-file-system-explained/

View File

@ -1,12 +1,12 @@
使用SNMP和Cacti监控Linux服务器
使用 SNMP Cacti 监控 Linux 服务器
================================================================================
SNMP或者叫简单网络管理协议用于收集设备内部发生的数据如负载、磁盘状态、带宽之类。像Cacti这样的网络监控工具用这些数据来生成图标以达到监控的目的。
SNMP简单网络管理协议用于收集设备内部发生的数据如负载、磁盘状态、带宽之类。像Cacti这样的网络监控工具用这些数据来生成图标以达到监控的目的。
在一个典型的Cacti和SNMP部署中会有一台或多台启用了SNMP的设备以及一台独立的用来从那些设备收集SNMP回馈的监控服务器。请记住所有需要监控的设备必须启用SNMP。在本教程中出于演示目的我们将在同一台Linux服务器上配置Cacti和SNMP。
### 在Debian或Ubuntu上配置SNMP ###
要安装SNMP代理snmpd到基于Debian的系统,请运行以下命令:
在基于Debian的系统上安装SNMP代理snmpd请运行以下命令
root@server:~# apt-get install snmpd
@ -16,10 +16,10 @@ SNMP或者叫简单网络管理协议用于收集设备内部发生的数
----------
# this will make snmpd listen on all interfaces
# 使snmpd 监听再所有接口上
agentAddress udp:161
# a read only community 'myCommunity' and the source network is defined
# 定义一个只读的 community 'myCommunity' 和源网络
rocommunity myCommunity 172.17.1.0/24
sysLocation Earth
@ -41,10 +41,10 @@ SNMP或者叫简单网络管理协议用于收集设备内部发生的数
----------
# A user 'myUser' is being defined with the community string 'myCommunity' and source network 172.17.1.0/24
# 定义一个使用 community 'myCommunity' 和源网络 172.17.1.0/24 的用户 'myUser'
com2sec myUser 172.17.1.0/24 myCommunity
# myUser is added into the group 'myGroup' and the permission of the group is defined
# 将 myUser 加到 'myGroup' 组,定义组权限
group myGroup v1 myUser
group myGroup v2c myUser
view all included .1
@ -69,7 +69,7 @@ SNMP可以通过运行snmpwalk命令进行测试。如果SNMP已经配置成功
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (2097) 0:00:20.97
~~ OUTPUT TRUNCATED ~~
~~ 输出截断 ~~
iso.3.6.1.2.1.92.1.1.2.0 = Gauge32: 1440
iso.3.6.1.2.1.92.1.2.1.0 = Counter32: 1
@ -79,9 +79,9 @@ SNMP可以通过运行snmpwalk命令进行测试。如果SNMP已经配置成功
### 配置带有SNMP的Cacti ###
在本教程中我们将在同一台Linux服务器上设置Cacti和SNMP。所以去[安装Cacti][2]到刚刚配置SNMP的Linux服务器上吧。
在本教程中我们将在同一台Linux服务器上设置Cacti和SNMP。所以到刚刚配置SNMP的Linux服务器上去[安装Cacti][2]吧。
安装完后Cacti网页接口可以通过“http://172.17.1.44/cacti”来访问当然在你的环境中请将IP地址换成你的服务器的地址。
安装完后Cacti网页界面可以通过“http://172.17.1.44/cacti ”来访问当然在你的环境中请将IP地址换成你的服务器的地址。
![](http://farm6.staticflickr.com/5512/10972747655_0298f6ce6c_z.jpg)
@ -99,7 +99,7 @@ SNMP可以通过运行snmpwalk命令进行测试。如果SNMP已经配置成功
Cacti将根据先前配置的SNMP字符串注册设备。在本教程中我们将只添加启用了SNMP的本地服务器。
要添加设备我们必须以管理员登录然后转到Cacti管理员面板中的控制台。点击控制台 > 设备。
要添加设备我们必须以管理员登录然后转到Cacti管理员面板中的控制台。点击 控制台 > 设备。
![](http://farm8.staticflickr.com/7411/10972747855_b464972e56_z.jpg)
@ -111,7 +111,7 @@ Cacti将根据先前配置的SNMP字符串注册设备。在本教程中
![](http://farm8.staticflickr.com/7400/10972747935_df03500de7_z.jpg)
由于设备已经添加,我们来指定想要创建的图表模板。你可以在该页的最后章节中找到本节内容。
现在设备已经添加,我们来指定想要创建的图表模板。你可以在该页面的最后部分中找到这块内容。
![](http://farm4.staticflickr.com/3773/10972747955_083101e6ab_z.jpg)
@ -123,7 +123,7 @@ Cacti将根据先前配置的SNMP字符串注册设备。在本教程中
![](http://farm8.staticflickr.com/7374/10972920484_ed6b33b8b8_z.jpg)
### 接口图表和64位计数器 ###
### 接口图表和64位计数器 ###
默认情况下Cacti在SNMP查询中使用32位计数器。32位计数器对于大多数带宽图表而言已经足够了但是对于超过100Mbps的带宽它就无能为力了。如果已经知道带宽会超过100Mbps建议你使用64位计数器。使用64位计数器一点也不麻烦。
@ -173,9 +173,9 @@ via: http://xmodulo.com/monitor-linux-servers-snmp-cacti.html
作者:[Sarmed Rahman][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/sarmed
[1]:http://xmodulo.com/install-configure-cacti-linux.html
[1]:https://linux.cn/article-4683-1.html

View File

@ -1,12 +1,12 @@
如何用Nagios监控服务
如何用 Nagios 监控通用服务
================================================================================
Nagios内置了很多脚本来监控服务。本篇会使用其中一些来检查通用服务如MySql、Apache、DNS等等。
为了保证本篇集中在系统监控,我们不会配置hostgroup或者模板它们已经在 [前面的教程][1]中覆盖了,它们可以满足这些条件了。
为了保证本篇集中在系统监控,我们不会在这里配置主机组或者模板,它们已经在 [前面的教程][1]中覆盖了,它们可以满足需要了。
### 在命令行中运行Nagios ###
通常建议在添加到Nagios前在命令行中运行Nagios服务检测脚本。它会给出执行是否成功以及脚本的输出将会看上去的样子。
通常建议在添加到Nagios前,先在命令行中运行Nagios服务检测脚本。它会给出执行是否成功以及脚本的输出将会看上去的样子。
这些脚本存储在 /etc/nagios-plugins/config/ ,可执行文件在 /usr/lib/nagios/plugins/。
@ -39,9 +39,9 @@ Nagios内置了很多脚本来监控服务。本篇会使用其中一些来检
- Server 1 (10.10.10.1) : MySQL, Apache2
- Server 2 (10.10.10.2) : Postfix, Apache2
- Server 3 (10.10.10.3): DNS
- Server 3 (10.10.10.3) : DNS
首先服务器被定义在了Nagios中。
首先,这些服务器被定义在了Nagios中。
root@nagios:~# vim /etc/nagios3/conf.d/example.cfg
@ -79,43 +79,43 @@ Nagios内置了很多脚本来监控服务。本篇会使用其中一些来检
开始检测MySQL时需要记住MySQL默认只监听回环接口127.0.0.1。这增加了数据库的安全。手动调节需要告诉MySQL该监听什么其他接口。下面是该怎么做。
这个设置在所有的MySQL服务器上已经做了
这个设置要在所有的MySQL服务器上完成
root@nagios:~# vim /etc/mysql/my.cnf
下面这行被注释掉了来监听所有接口。
下面这行被注释掉以监听所有网络接口。
#bind-address = 127.0.0.1
同样MySQL将不会运行任何主机来连接到它。在本机和任意主机都创建了用户nagios。这个用户接着在所有的数据库中被授予所有的权限这将在会用在监控中。
同样MySQL也不会让任意主机来连接它。需要为localhost和“任意”主机创建MySQL用户nagios接着在所有的数据库中为这个用户授予ALL权限这将在会用在监控中。
下面的设置对所有的MySQL服务器都已经设置。
root@nagios:~# mysql -u root p
## MySQL root password here ##
## MySQL root 密码 ##
'nagios@localhost'用户在MySQL服务器中创建了
在MySQL服务器中创建'nagios@localhost'用户。
mysql> CREATE USER 'nagios'@'localhost' IDENTIFIED BY 'nagios-pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'localhost';
'nagios@any-host'用户创建了。
创建'nagios@任意主机'用户。LCTT 译注实际上这两个是同一个用户只是分别授权给localhost和任意主机的访问因为它们所用的密码的同一个修改任何一个另外一个也相应变化。
mysql> CREATE USER 'nagios'@'%' IDENTIFIED BY 'nagios-pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'%';
mysql> FLUSH PRIVILEGES;
这使MySQL监听所有的接口同样接受来自用户'nagios'的进入接。
这使MySQL监听所有的网络接口,同样接受来自用户'nagios'的进入接。
请注意,这种变化可能有安全隐患,所以需要说几句话
请注意,这种修改可能有安全隐患,所以需要提示几点
- 这个设置将会暴露MySQL给所有的接口包括WAN。确保只有合法的网络访问是非常重要的。应该使用防火墙和TCP封装器等过滤器。
- MySQL用户nagios的密码应该非常强。如果只有几台Nagios服务器,那么应该创建'nagios@servername'用户而不是任意用户的'nagios@%'。
- 这个设置将会暴露MySQL给所有的接口包括外网。确保只有合法的网络访问是非常重要的。应该使用防火墙和TCP wrapper等过滤器。
- MySQL用户nagios的密码应该非常强。如果只有几台Nagios服务器,那么应该创建'nagios@服务器名'用户而不是任意用户的'nagios@%'。
#### 对MySQL的NAgios配置 ####
#### 对MySQL的Nagios配置 ####
用下面的来做一些调整。
按如下配置来做一些调整。
root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
@ -140,7 +140,7 @@ Nagios内置了很多脚本来监控服务。本篇会使用其中一些来检
;check_mysql!userName!userPassword!databaseName
}
这样,Nagios就可以同时监控MySQL服务器和数据库的可用性。
这样Nagios就可以同时监控MySQL服务器及其数据库的可用性。
### 监控Apache服务器 ###
@ -148,7 +148,7 @@ Nagios同样也可以监控Apache服务。
#### Apache监控需要 ####
- 监控apache是否可用
- 监控apache服务是否可用
这个任务非常简单因为Nagios有一个内置命令。
@ -167,7 +167,7 @@ Nagios同样也可以监控Apache服务。
### 监控DNS服务 ###
Nagios通过向DNS服务器查询一个完全合格域名FQDN,或者使用dig工具来查询。默认用于FQDN的是www.google.com但是这个可以按需改变。按照下面的文件修改来完成这个任务。
Nagios通过向DNS服务器查询一个完全限定域名FQDN或者使用dig工具来查询。默认用于查询的FQDN的是www.google.com但是这个可以按需改变。按照下面的文件修改来完成这个任务。
root@nagios:~# vim /etc/nagios-plugins/config/dns.cfg
@ -203,8 +203,7 @@ Nagios通过向DNS服务器查询一个完全合格域名FQDN,或者使用
### 监控邮件服务器 ###
Nagios可以监控不同的邮件服务组件如SMTP、POP、IMAP和mailq。之前提过server-2设置了后缀邮件服务。Nagios将被配置来监控SMTP和邮件队列。
Nagios可以监控不同的邮件服务组件如SMTP、POP、IMAP和mailq。之前提过server-2设置了Postfix邮件服务。Nagios将被配置来监控SMTP和邮件队列。
root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
@ -231,11 +230,11 @@ Nagios可以监控不同的邮件服务组件如SMTP、POP、IMAP和mailq。之
### 基于端口自定义监控程序 ###
让我们假设下面的自定义程序同样运行在网络中,监听一个特定的端口。
让我们假设如下定制程序同样运行在网络中,监听着一个特定的端口。
- 测试1号服务器自定义程序TCP端口 12345
- 测试1号服务器定制程序TCP端口 12345
过一些小的调整Nagios也可以帮助监控这个程序。
做一些小的调整Nagios也可以帮助我们监控这个程序。
root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
@ -248,12 +247,11 @@ Nagios可以监控不同的邮件服务组件如SMTP、POP、IMAP和mailq。之
check_command check_tcp!12345
}
结之前Nagios可以监控网络很多其他的方面。存储在/etc/nagios-plugins/config/中的脚本为Nagios很棒的能力。
在结之前的提示Nagios可以监控网络很多其他的方面。存储在/etc/nagios-plugins/config/中的脚本为Nagios提供了很棒的能力。
一些Nagios提供的脚本被仅限于本地服务器比如服务器负载、进程并发数量、登录用户数量等。这些检查可以提供Nagios服务器内有用的信息。
一些Nagios提供的脚本被限制在本地服务器。例子包含服务负载、进程并发数量、登录用户数量。这些检查可以提供Nagios服务器内有用的信息。
希望这篇有用。
希望这篇文章对你有用。
--------------------------------------------------------------------------------
@ -261,9 +259,9 @@ via: http://xmodulo.com/monitor-common-services-nagios.html
作者:[Sarmed Rahman][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://xmodulo.com/author/sarmed
[1]:http://xmodulo.com/install-configure-nagios-linux.html
[1]:https://linux.cn/article-2436-1.html

View File

@ -1,6 +1,6 @@
如何用Perl访问SQLite数据库
================================================================================
SQLite是一个零配置,无服务端,基于文件的事务文件系统。由于它的轻量级自包含和紧凑的设计所以当你想要集成数据库到你的程序中时SQLite是一个非常流行的选择。在这篇文章中我会展示如何用Perl脚本来创建和访问SQLite数据库。我演示的Perl代码片段是完整的所以你可以很简单地修改并集成到你的项目中。
SQLite是一个零配置、无服务端、基于文件的事务型数据库系统。由于它的轻量级自包含和紧凑的设计所以当你想要集成数据库到你的程序中时SQLite是一个非常不错的选择。在这篇文章中我会展示如何用Perl脚本来创建和访问SQLite数据库。我演示的Perl代码片段是完整的所以你可以很简单地修改并集成到你的项目中。
![](https://farm1.staticflickr.com/552/18444614631_9e7fce8243_c.jpg)
@ -44,25 +44,27 @@ SQLite是一个零配置无服务端基于文件的事务文件系统。
- 在表中更新行
- 在表中删除行
-
use DBI;
use strict;
# define database name and driver
# 定义数据库名称和驱动
my $driver = "SQLite";
my $db_name = "xmodulo.db";
my $dbd = "DBI:$driver:dbname=$db_name";
# sqlite does not have a notion of username/password
# sqlite 没有用户名密码的概念
my $username = "";
my $password = "";
# create and connect to a database.
# this will create a file named xmodulo.db
# 创建并连接到数据库
# 以下创建的文件名为 xmodulo.db
my $dbh = DBI->connect($dbd, $username, $password, { RaiseError => 1 })
or die $DBI::errstr;
print STDERR "Database opened successfully\n";
# create a table
# 创建表
my $stmt = qq(CREATE TABLE IF NOT EXISTS NETWORK
(ID INTEGER PRIMARY KEY AUTOINCREMENT,
HOSTNAME TEXT NOT NULL,
@ -76,7 +78,7 @@ SQLite是一个零配置无服务端基于文件的事务文件系统。
print STDERR "Table created successfully\n";
}
# insert three rows into the table
# 插入三行到表中
$stmt = qq(INSERT INTO NETWORK (HOSTNAME,IPADDRESS,OS,CPULOAD)
VALUES ('xmodulo', 16843009, 'Ubuntu 14.10', 0.0));
$ret = $dbh->do($stmt) or die $DBI::errstr;
@ -89,7 +91,7 @@ SQLite是一个零配置无服务端基于文件的事务文件系统。
VALUES ('puppy', 16843011, 'Ubuntu 14.10', 0.0));
$ret = $dbh->do($stmt) or die $DBI::errstr;
# search and iterate row(s) in the table
# 在表中检索行
$stmt = qq(SELECT id, hostname, os, cpuload from NETWORK;);
my $obj = $dbh->prepare($stmt);
$ret = $obj->execute() or die $DBI::errstr;
@ -104,7 +106,7 @@ SQLite是一个零配置无服务端基于文件的事务文件系统。
print "CPULOAD: ". $row[3] ."\n\n";
}
# update specific row(s) in the table
# 更新表中的某行
$stmt = qq(UPDATE NETWORK set CPULOAD = 50 where OS='Ubuntu 14.10';);
$ret = $dbh->do($stmt) or die $DBI::errstr;
@ -114,7 +116,7 @@ SQLite是一个零配置无服务端基于文件的事务文件系统。
print STDERR "A total of $ret rows updated\n";
}
# delete specific row(s) from the table
# 从表中删除某行
$stmt = qq(DELETE from NETWORK where ID=2;);
$ret = $dbh->do($stmt) or die $DBI::errstr;
@ -124,7 +126,7 @@ SQLite是一个零配置无服务端基于文件的事务文件系统。
print STDERR "A total of $ret rows deleted\n";
}
# quit the database
# 断开数据库连接
$dbh->disconnect();
print STDERR "Exit the database\n";
@ -164,7 +166,7 @@ via: http://xmodulo.com/access-sqlite-database-perl.html
作者:[Dan Nanni][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/) 荣誉推出

View File

@ -1,15 +1,14 @@
Linux服务器安全攻略
Linux 服务器安全技巧
================================================================================
> 一台服务器由大量功能各异的部件组成,这一点使得很难根据每个人的需求去提供定制的解决方案。这篇文章尽可能涵盖一些有所裨益的小技巧来帮助管理员保证服务器和用户安全。
毋庸置疑,对于系统管理员,提高服务器的安全性是最重要的事情之一。因此,也就有了许多针对这个话题而生的文章、博客和论坛帖子。
一台服务器由大量功能各异的部件组成,这一点使得很难根据每个人的需求去提供定制的解决方案。这篇文章尽可能涵盖一些有所裨益的小技巧来帮助管理员保证服务器和用户安全。
有一些常识是每个系统管理员都应该烂熟于心的,所以下面的几点在文将不会提及:
有一些常识是每个系统管理员都应该烂熟于心的,所以下面的几点在文将不会提及:
- 务必保证系统是**最新的**
- 经常更换密码 - 使用数字、阿拉伯字母和非阿拉伯字母的符号组合
- 经常更换密码 - 使用数字、字母和非字母的符号组合
- 给予用户**最小**的权限,满足他们日常使用所需即可
- 只安装那些真正需要的软件包
@ -17,7 +16,7 @@ Linux服务器安全攻略
### 更改SSH默认端口 ###
在搭建好一台全新的服务器后要做的第一件事情就是更改SSH的默认端口。这个小小的改动能够使你的服务器避免受到成千上万的暴力攻击(译注:不更改默认端口相当于黑客们知道你家的门牌号,这样他们只需要一把一把的试钥匙就可能打开你家的锁)。
在搭建好一台全新的服务器后要做的第一件事情就是更改SSH的默认端口。这个小小的改动能够使你的服务器避免受到成千上万的暴力攻击LCTT 译注:不更改默认端口相当于黑客们知道你家的门牌号,这样他们只需要一把一把的试钥匙就可能打开你家的锁)。
要更改默认的SSH端口先打开sshd_config文件
@ -35,7 +34,7 @@ Linux服务器安全攻略
接下来的一步是:
### 使用SSH密钥 ###
### 使用SSH密钥认证 ###
在通过SSH访问服务器时使用SSH密钥进行认证是尤其重要的。这样做为服务器增加了额外的保护确保只有那些拥有密钥的人才能访问服务器。
@ -43,7 +42,7 @@ Linux服务器安全攻略
ssh-keygen -t rsa
你会看到下面的输出,询问要将密钥写到哪一个文件,并且设置一个密码:
你会看到下面的输出,询问要将密钥写到哪一个文件,并且设置一个密码:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): my_key
@ -60,7 +59,7 @@ my_key
my_key.pub
接下来把my_key.pub拷贝到~/.ssh/authorized_key中
接下来把my\_key.pub拷贝到~/.ssh/authorized\_key中
cp my_key.pub ~/.ssh/authorized_keys
@ -72,7 +71,7 @@ my_key.pub
### 关闭SSH的密码认证 ###
既然已经有了SSH密钥那么关闭SSH的密码认证就安全了。再次打开并编辑sshd_config按如下设置
既然已经有了SSH密钥那么关闭SSH的密码认证就会更安全了。再次打开并编辑sshd_config按如下设置
ChallengeResponseAuthentication no
PasswordAuthentication no
@ -84,7 +83,7 @@ my_key.pub
/etc/sudoers/
可以使用如**visudo**这样的命令编辑文件,推荐使用这个命令,因为它会在关闭文件之前检查任何可能出现的语法错误。当你在编辑文件时出错了,这就很有用了。
推荐使用如**visudo**这样的命令编辑该文件,因为它会在关闭文件之前检查任何可能出现的语法错误。当你在编辑文件时出错了,这就很有用了。
接下来赋予某个用户root权限。在本文中使用用户**sysadmin**。确保在编辑后这个文件时使用的用户是系统已有的用户。找到下面这行:
@ -107,6 +106,8 @@ my_key.pub
(4) 这个用户可以使用的命令
LCTT 译注所以上面的配置是意思是root 用户可以在任何终端担任任何用户,执行任何命令。)
使用这个配置可以给用户访问一些系统工具的权限。
这时,可以放心保存文件了。
@ -135,7 +136,7 @@ my_key.pub
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
csf
cd csf
sh install.sh
只需等待安装程序完成然后编辑CSF的配置文件
@ -148,25 +149,25 @@ my_key.pub
下面要设置的就是服务器上允许通过的端口。在csf.conf中定位到下面的部分根据需要修改端口
# Allow incoming TCP ports
# 允许入站的 TCP 端口
TCP_IN = "20,21,25,53,80,110,143,443,465,587,993,995,16543"
# Allow outgoing TCP ports
# 允许出站的 TCP 端口
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995,16543"
# Allow incoming UDP ports
# 允许入站的 UDP 端口
UDP_IN = "20,21,53"
# Allow outgoing UDP ports
# To allow outgoing traceroute add 33434:33523 to this list
# 允许出站的 UDP 端口
# 要允许发出 traceroute 请求,请加 33434:33523 端口范围到该列表
UDP_OUT = "20,21,53,113,123"
请根据需要逐一设置推荐只使用那些需要的端口避免设置对端口进行大范围设置。此外也要避免使用不安全服务的不安全端口。比如只允许端口465和587来发送电子邮件取代默认的SMTP端口25.
请根据需要逐一设置推荐只使用那些需要的端口避免设置对端口进行大范围设置。此外也要避免使用不安全服务的不安全端口。比如只允许端口465和587来发送电子邮件取代默认的SMTP端口25LCTT 译注:前提是你的邮件服务器支持 SMTPS
**重要**:千万不要忘记允许自定义SHH端口。
**重要**:千万不要忘记允许自定义的 ssh 端口。
允许防火墙通过你的IP地址使其不被屏蔽这一点很重要。IP地址定义在下面的文件中
允许你的IP地址通过防火墙而绝不被屏蔽这一点很重要。IP地址定义在下面的文件中
/etc/csf/csf.ignore
被屏蔽的IP地址会出现在这个文件中
被屏蔽的IP地址会出现在这个文件中
/etc/csf/csf.deny
@ -184,13 +185,13 @@ my_key.pub
可以看到尝试通过暴力法登录的IP地址都被屏蔽了真是眼不见心不烦啊
#### 锁住账户 ####
### 锁住账户 ###
如果某个账户在很长一段时间内都不会被使用了,那么可以将其锁住以防止其它人访问。使用如下命令:
passwd -l accountName
当然这个账户依然可以被root用户使用。
当然这个账户依然可以被root用户使用LCTT 译注:可用 su 切换为该账号)
### 了解服务器上的服务 ###
@ -207,16 +208,18 @@ my_key.pub
然后使用下面的命令关闭服务:
chkconfig service off
systemctl disable service
在上面的例子中把“service”替换成真正想要停止的服务名称。实例如下
chkconfig httpd off
systemctl disable httpd
### 小结 ###
### 小结 ###
这篇文章的目的是涵盖一些通用的安全步骤以便帮助你保护服务器。你可以采取额外的方式去增强对服务器的保护。请记住保证服务器安全是你的责任,在维护服务器安全时尽量做出明智的选择,尽管并没有什么容易的方式去完成这件事情,而建立“完善的”安全需要花费大量的时间和测试直到达到想要的结果。
这篇文章的目的是涵盖一些通用的安全步骤以便帮助你保护服务器。你可以采取更多方式去增强对服务器的保护。请记住保证服务器安全是你的责任,在维护服务器安全时尽量做出明智的选择,尽管并没有什么容易的方式去完成这件事情,而建立“完善的”安全需要花费大量的时间和测试直到达到想要的结果。
--------------------------------------------------------------------------------
@ -224,7 +227,7 @@ via: http://www.linuxveda.com/2015/06/03/secure-linux-server/
作者:[Marin Todorow][a]
译者:[KayGuoWhu](https://github.com/KayGuoWhu)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,6 +1,6 @@
watch - 定期重复Linux / Unix命令
watch定期重复Linux / Unix命令
================================================================================
服务器管理员需要维护系统并保持更新和安全。每天需要尝试大量的指令。一些其他的活动存储在日志中。这些日志定期地更新。为了检车这些更新需要重复地执行命令。比如为了读取一个文件需要使用head、tail、cat等命令。这些命令需要重读地执行。watch命令可以用于定期地执行一个命令。
服务器管理员需要维护系统并保持更新和安全。每天需要运行大量的指令。有些系统进程会记录日志。这些日志不断更新。为了检查这些更新,需要重复地执行命令。比如,为了读取一个日志文件需要使用head、tail、cat等命令。这些命令需要重复地执行。而watch命令可以用于定期地执行一个命令。
### Watch 命令 ###
@ -8,45 +8,45 @@ watch是一个简单的命令只有几个选项。watch命令的基本语法
watch [-dhvt] [-n <seconds>] [--differences[=cumulative]] [--help] [--interval=<seconds>] [--no-title] [--version] <command>
watch命令默认每隔2秒执行后面的命令。这个时间根据的是命令执行结束到上次执行的间隔来算的。比如watch命令可以用于监测日志更新更新时在文件的后面追加新行因此tail命令可以用来检测文件的更新。这个命令会持续地运行直到你按下 CTRL + C回到提示符。
watch命令默认每隔2秒执行后面参数给出的命令。这个时间根据的是命令执行结束到上次执行的间隔来算的。比如watch命令可以用于监测日志更新更新是在文件的后面追加新的内容因此可以用tail命令来检测文件的更新LCTT 译注:可以直接使用 `tail -f` 主动跟踪某个文件的更新,而不用使用 watch。。这个命令会持续地运行直到你按下 `CTRL + C`回到提示符。
### 例子 ###
> 每两秒监测 errors/notices/warning 生成的情况。
每两秒监测 errors/notices/warning 生成的情况。
watch tail /var/log/messages
![tail messages](http://blog.linoxide.com/wp-content/uploads/2015/06/1.png)
> 用指定的时间监测磁盘的使用率。
按指定的时间间隔监测磁盘的使用率。
watch df -h
![df -h](http://blog.linoxide.com/wp-content/uploads/2015/06/2.png)
> 对磁盘管理员而言关注高I/O等待导致的磁盘操作尤其是mysql事务是很重要的。
对磁盘管理员而言关注高I/O等待导致的磁盘操作尤其是mysql事务是很重要的。
watch mysqladmin processlist
![processlist](http://blog.linoxide.com/wp-content/uploads/2015/06/3.png)
> 监测服务器负载和运行时间。
监测服务器负载和运行时间。
watch uptime
![uptime](http://blog.linoxide.com/wp-content/uploads/2015/06/10.png)
> 检测exim排队给用户发送通知队列的大小。
监测exim给用户发送通知的队列大小。
watch exim -bpc
![exim -bpc](http://blog.linoxide.com/wp-content/uploads/2015/06/9.png)
### 1) 掩饰循环 ###
### 1) 指定延迟 ###
watch [-n <seconds>] <command>
命令默认运行的间隔用-n改变下面的命令会在5秒后运行后面的命令
命令默认运行的时间间隔用-n改变下面的命令会在5秒后运行后面的命令
watch -n 5 date
@ -58,13 +58,11 @@ watch命令默认每隔2秒执行后面的命令。这个时间根据的是命
watch [-d or --differences[=cumulative]] <command>
#### 例子 1 ####
用下面的命令连续地输出时间病观察高亮出来的不同部分。
例子 1用下面的命令连续地输出时间并观察高亮出来的不同部分。
watch -n 15 -d date
第一次执行date的输出会被捕捉15后会会重复运行命令。
第一次执行date的输出会被记录15秒后会重复运行命令。
![Difference A](http://blog.linoxide.com/wp-content/uploads/2015/06/6.png)
@ -72,9 +70,7 @@ watch命令默认每隔2秒执行后面的命令。这个时间根据的是命
![Difference A](http://blog.linoxide.com/wp-content/uploads/2015/06/6b.png)
#### 例子 2 ####
让我们来体验一下两个连续的“uptime”命令输出的不同。
例子 2让我们来体验一下两个连续的“uptime”命令输出的不同。
watch -n 20 -d uptime
@ -112,13 +108,13 @@ watch命令默认每隔2秒执行后面的命令。这个时间根据的是命
![version](http://blog.linoxide.com/wp-content/uploads/2015/06/11.png)
**问题**
**不足**
不幸的是,在终端大小调整时,屏幕不能在下次运行前重画。所有用--difference高亮的内容也会在更新时丢失。
### 总结 ###
watch对系统管理员而言是一个非常强大的工具因为它可以用于监控、日志、运维、性能和系统运行时的吞吐量。人们可以非常简单地格式化和推延watch的输出。任何Linux命令/程序或脚本可以按照所需监测和连续输出。
watch对系统管理员而言是一个非常强大的工具因为它可以用于监控、日志、运维、性能和系统运行时的吞吐量。人们可以非常简单地格式化和推延watch的输出。任何Linux命令/程序或脚本可以按照所需监测和连续输出。
--------------------------------------------------------------------------------
@ -126,7 +122,7 @@ via: http://linoxide.com/linux-command/linux-watch-command/
作者:[Aun Raza][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/) 荣誉推出

View File

@ -1,22 +1,22 @@
如何在 Cacti 中合并两幅图片
================================================================================
[Cacti][1] 是一个很棒的开源网络监视系统,它广泛使用于图示网络元素,例如带宽、存储、处理器和内存使用。使用它的基于网络的接口,你可以轻松地创建和组织图。然而,默认并没有提供一些高级功能,例如合并图片、使用多个来源创建聚合图、迁移 Cacti 到另一台服务器。使用 Cacti 的这些功能你还需要一些经验。在该教程中,我们会看到如何在将两幅 Cacti 图片合并为一幅。
[Cacti][1] 是一个很棒的开源网络监视系统,它广泛使用于图形化地展示网络元素,例如带宽、存储、处理器和内存使用。使用它的基于Web 的界面,你可以轻松地创建和组织各种图表。然而,它默认并没有提供一些高级功能,例如合并图片、使用多个来源创建聚合图、迁移 Cacti 到另一台服务器。使用 Cacti 的这些功能你还需要一些经验。在该教程中,我们会看到如何在将两幅 Cacti 图片合并为一幅。
考虑这个例子。在过去的 6 个月中,客户端 A 连接到了交换机 A 的端口 5。端口 5 发生了错误,因此客户端迁移到了端口 6。由于 Cacti 为每个接口/元素使用不同的图,客户端的带宽历史会分成端口 5 和端口 6。结果是对于一个客户端我们有两幅图片 - 一幅是 6 个月的旧数据,另一幅保存了后续的数据。
看看这个例子。在过去的 6 个月中,客户端 A 连接到了交换机 A 的端口 5。端口 5 发生了错误,因此客户端迁移到了端口 6。由于 Cacti 为每个接口/元素使用不同的图,客户端的带宽历史会分成端口 5 和端口 6。结果是对于一个客户端我们有两幅图片 - 一幅是 6 个月的旧数据,另一幅保存了后续的数据。
在这种情况下,我们实际上可以合并两幅图片将旧数据加到新的图中,使得用一个单独的图为一个用户保存历史的和新数据。教程将会解释如何做到这一点。
在这种情况下,我们实际上可以合并两幅图片将旧数据加到新的图中,使得用一个单独的图为一个用户保存历史的和新数据。教程将会解释如何做到这一点。
Cacti 将每幅图片的数据保存在它自己的 RRD(round robin database,循环数据库) 文件中。当请求一幅图片时,根据保存在对应 RRD 文件中的值生成图。在 Ubuntu/Debian 系统中RRD 文件保存在 `/var/lib/cacti/rra`,在 CentOS/RHEL 系统中则是 `/var/www/cacti/rra`
Cacti 将每幅图片的数据保存在它自己的 RRDround robin database循环数据库文件中。当请求一幅图片时,根据保存在对应 RRD 文件中的值生成图。在 Ubuntu/Debian 系统中RRD 文件保存在 `/var/lib/cacti/rra`,在 CentOS/RHEL 系统中则是 `/var/www/cacti/rra`
合并图片背后的思想是更改这些 RRD 文件使得旧 RRD 文件中的值能追加到新的 RRD 文件中。
### 情景 ###
一个客户端的服务在 eth0 上运行了超过一年。由于硬件损坏,客户端迁移到了另一台服务器的 eth1 接口。我们想示新接口的带宽,同时保留超过一年的历史数据。只在一幅图中显示客户端
一个客户端的服务在 eth0 上运行了超过一年。由于硬件损坏,客户端迁移到了另一台服务器的 eth1 接口。我们想示新接口的带宽,同时保留超过一年的历史数据。该客户端希望只在一幅图中显示。
### 确定图的 RRD 文件 ###
图合并的首个步骤是确定和图关联的 RRD 文件。我们可以通过以调试模式打开图检查文件。要做到这点,在 Cacti 的菜单中: 控制台 > 管理图 > 选择图 > 打开图调试模式。
图合并的首个步骤是确定与图相关联的 RRD 文件。我们可以通过以调试模式打开图检查文件。要做到这点,在 Cacti 的菜单中: 控制台 > 管理图 > 选择图 > 打开图调试模式。
#### 旧图: ####
@ -26,14 +26,14 @@ Cacti 将每幅图片的数据保存在它自己的 RRD(round robin database,循
![](https://farm4.staticflickr.com/3674/18634036918_5c4118c4b9_c.jpg)
从样例输出(基于 Debian 系统)中,我们可以确定两幅图片的 RRD 文件:
从样例输出(基于 Debian 系统)中,我们可以确定两幅图片的 RRD 文件:
- **旧图** /var/lib/cacti/rra/old_graph_traffic_in_8.rrd
- **新图** /var/lib/cacti/rra/new_graph_traffic_in_10.rrd
### 准备脚本 ###
我们会用一个 [RRD 剪接脚本][2] 合并两个 RRD 文件。下载该 PHP 脚本,并安装 /var/lib/cacti/rra/rrdsplice.php (Debian/Ubuntu 系统) 或 /var/www/cacti/rra/rrdsplice.php (CentOS/RHEL 系统)。
我们会用一个 [RRD 剪接脚本][2] 合并两个 RRD 文件。下载该 PHP 脚本,并安装 /var/lib/cacti/rra/rrdsplice.php (Debian/Ubuntu 系统) 或 /var/www/cacti/rra/rrdsplice.php (CentOS/RHEL 系统)。
下一步,确认 Apache 用户拥有该文件。
@ -49,7 +49,7 @@ Cacti 将每幅图片的数据保存在它自己的 RRD(round robin database,循
chown($finrrd, "www-data");
在 CentOS 或 RHEL 系统中,运行下面的命令:
在 CentOS 或 RHEL 系统中,运行下面的命令即可
# chown apache:apache rrdsplice.php
@ -72,7 +72,7 @@ Cacti 将每幅图片的数据保存在它自己的 RRD(round robin database,循
![](https://farm6.staticflickr.com/5493/18821787015_6730164068_b.jpg)
总之,该教程显示了如何简单地将两幅 Cacti 图片合并为一幅。当服务迁移到另一个设备/接口,我们希望只处理一幅图片而不是两幅时,这个小技巧非常有用。该脚本非常方便,因为它可以不管源设备合并图片,例如 Cisco 1800 路由器和 Cisco 2960 交换机。
总之,该教程显示了如何简单地将两幅 Cacti 图片合并为一幅。当服务迁移到另一个设备/接口,我们希望只处理一幅图片而不是两幅时,这个小技巧非常有用。该脚本非常方便,因为它可以不管源设备是不是相同都可以合并图片,例如 Cisco 1800 路由器和 Cisco 2960 交换机。
希望这些能对你有所帮助。
@ -82,10 +82,10 @@ via: http://xmodulo.com/combine-two-graphs-cacti.html
作者:[Sarmed Rahman][a]
译者:[ictlyh](https://github.com/ictlyh)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/sarmed
[1]:http://xmodulo.com/install-configure-cacti-linux.html
[1]:https://linux.cn/article-5746-1.html
[2]:http://svn.cacti.net/viewvc/developers/thewitness/rrdsplice/rrdsplice.php

View File

@ -0,0 +1,127 @@
Linux命令行中的幽默
================================================================================
图形桌面总是很养眼的,它增强了可视化体验,有时也能够提升了某些软件的功能,让软件变得更有趣。但是,在命令行下工作也不需要总是很古板,如果您想在命令行下寻找些乐趣,那么有很多命令给您带来趣味。
Linux是个有趣的操作系统。它提供大量的小型开源工具从平淡无奇的软件到稀奇古怪的应用。正是这些工具的功能和琳琅满目的选择帮助Linux脱颖而出。让我们一起来看看下面这七个小工具吧。
### 七彩虹lolcat ###
![lolcat](http://www.linuxlinks.com/portal/content/reviews/Misc/Screenshot-lolcat.png)
lolcat是一个用于将文件或标准输入连接到标准输出类似常见的cat的程序但是它会为输出添加七彩的颜色。
lolcat通常和其他诸如toilet或figlet等生成文本的应用结合使用。这个软件不应被误认为是一个或多个猫的图像的宏。
lolcat由Moe编写。
网址: [github.com][1]
### 牛郎的牛cowsay ###
![cowsay](http://www.linuxlinks.com/portal/content/reviews/Misc/Screenshot-cowsay.png)
cowsay是一个可配置的开源软件它用ASCII码生成奶牛的图片并可以在对话气泡中显示消息。cowsay是用Perl写的。
cowsay并不仅仅只能显示奶牛。它能生成预先制作的图片或者其他动物包括鸭子、考拉、麋鹿、小马、绵羊、剑龙和火鸡以及奶酪、雪人和骷髅。
有一个叫cowthink的应用与对话的气泡不同它能在生成奶牛的同时生成思考的气泡。
功能包括:
- 让脚本变得更有趣
- Borg模式
- 可以更改奶牛看起来的样子,比如让奶牛看起来贪婪、偏执、固执、疲倦、古怪、年轻等
- 图形版变体xcowsay
网址: [nog.net][2]
### 傻狗doge ###
![doge](http://www.linuxlinks.com/portal/content/reviews/Misc/Screenshot-doge.png)
doge是一个简单的每日信息脚本它基于有些愚蠢但很有趣的doge的梗。它随机的打印一些在语法上有误的句子有时这些句子基于您电脑中的东西。
doge是一个在2013年非常流行的互联网潮流元素。这个梗通常由一幅日本柴犬的图片和彩色的文字组成。这些文字故意用一种蹩脚的语气写成了一些互联网的独白。
- 随机的用不同的颜色和蹩脚的英语写下随机的句子
- 终端中的柴犬效果非常棒
- 可以获得系统数据,比如主机名、运行中的程序、当前用户、$EDITOR
- 如果您安装了lolcat您可以用它作为点缀: `while true; do doge | lolcat -a -d 100 -s 100 -p 1; done`
- 支持标准输入: `ls /usr/bin | doge` 将显示一些 /usr/bin下的可执行文件。哇噢还有许多命令行的开关可以过滤词语以及控制词语的频率。
网址: [github.com/thiderman/doge][3]
### 水族箱ASCIIQuarium ###
![Asciiquarium](http://www.linuxlinks.com/portal/content/reviews/Misc/Screenshot-Asciiquarium.png)
ASCIIQuarium是一个以ASCII码方式画出的水族馆/海洋动画。享受生活在您电脑中水底的奇妙生物吧。
想运行ASCIIQuarium您需要安装Perl的curses包以及Term::Animation模块。请使用`sudo apt-get install libcurses-perl`来安装前者使用sudo cpan Term::Animation来安装后者。两个命令都需要在终端中运行。
功能包括:
- 五彩的鱼儿
- 有趣的动画,包括钓鱼钩
- 还有许多的天鹅、鸭子、海豚和船只
网址: [www.robobunny.com][4]
### 蒸汽机车sl ###
![sl](http://www.linuxlinks.com/portal/content/reviews/Misc/Screenshot-sl.png)
sl是一个有趣的终端应用它为那些意外的错将ls输成sl的用户显示一个动画。
我打字通常非常草率更喜欢速度而不是准确性。但错别字在命令行中是非常危险的。因此sl扮演了一个提醒者提醒我们注意错误输入的这种坏习惯。它总是会让人咯咯的笑。
功能包括:
- 使用 -F, 火车在飞翔
- 使用 -l, 显示一个小型的火车
- 使用 -a, 看上去发生了意外
网址: [github.com/mtoyoda/sl][5]
### 火焰aafire ###
![aafire](http://www.linuxlinks.com/portal/content/reviews/Misc/Screenshot-aafire.png)
aafire在终端中显示燃烧的ASCII火焰。它展示了aalib库的强大能力一个ascii艺术库显示出来。
网址: [aa-project.sourceforge.net/aalib][6]
### 矩阵CMatrix ###
![CMatrix](http://www.linuxlinks.com/portal/content/reviews/Misc/Screenshot-CMatrix.png)
CMatrix是一个基于ncurses的程序它模拟《黑客帝国》一部电影中的画面。如果您在一个山洞里度过了上个15年那么您可能不知道这部1999年的美国科幻电影主角为 Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss, Hugo Weaving和 Joe Pantoliano。
它可以在终端设置为132x300的情况下工作并且可以以同样的速率进行滚动或者以用户定义的速度进行异步的滚动。
功能包括:
- 修改文本颜色
- 使用粗体字符
- 异步滚动
- 使用老式的滚动效果
- 屏幕保护程序模式
网址: [www.asty.org/cmatrix][7]
--------------------------------------------------------------------------------
via: http://www.linuxlinks.com/article/20150614112018846/Humor.html
译者:[wwy-hust](https://github.com/wwy-hust)
校对:[Caroline](https://github.com/carolinewuyan)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[1]:https://github.com/busyloop/lolcat
[2]:https://web.archive.org/web/20120225123719/http://www.nog.net/%7Etony/warez/cowsay.shtml
[3]:https://github.com/thiderman/doge
[4]:http://www.robobunny.com/projects/asciiquarium/html/
[5]:https://github.com/mtoyoda/sl
[6]:http://aa-project.sourceforge.net/aalib/
[7]:http://www.asty.org/cmatrix/

View File

@ -1,11 +1,11 @@
在Ubuntu下用不同方式安装Node.JS
在Ubuntu下安装Node.JS的不同方式
================================================================================
如果你要在Ubuntu 15.04上安装Node.js的话这篇教程对你来说肯定很重要。Node.js根本上来说就是一个运行在服务端上的封装好了输入输出流的javascript程序。Node.js巧妙的使用单线程的event loop来处理异步IO。同时它在平台层面上面向系统拥有非常实用的文件读写网络操作功能。所以这篇文章将展示在Ubuntu 15.04 server上不同的安装Node.Js的方式。
如果你要在Ubuntu 15.04上安装Node.js的话这篇教程对你来说肯定很重要。Node.js从本质上来说就是一个运行在服务端上的封装好了输入输出流的javascript程序。Node.js巧妙的使用单线程的事件循环来处理高吞吐量和非阻塞IO。同时它也是一个提供了通过操作系统读写文件和网络操作功能的平台层。所以这篇文章将展示在Ubuntu 15.04 server上不同的安装Node.Js的方式。
### 安装Node.JS 的方法###
有许多不同的方法安装Node.JS我们可以选择其一。通过本篇文章我们将手把手带着你在Ubuntu 15.04上安装Node.Js在此之前请卸载旧版本的包以免发生包冲突。
有许多安装Node.JS的不同的方法我们可以选择其一。通过本篇文章我们将手把手带着你在Ubuntu 15.04上安装Node.Js在此之前请卸载旧版本的包以免发生包冲突。
- 从源代码安装Node.JS
- 用包管理器安装Node.JS
@ -14,7 +14,7 @@
### 1) 从源代码安装Node.JS ###
让我们开始从源代码安装Node.JS之前请确认系统上的所有的依赖包都已经更新到最新版本。然后跟着以下步骤来开始安装
让我们开始从源代码安装Node.JS之前请确认系统上的所有的依赖包都已经更新到最新版本。然后跟着以下步骤来开始安装
#### 步骤1: 升级系统 ####
@ -33,7 +33,7 @@
#### 步骤3: 开始安装 ####
现在我们进入源代码的目录然后运行.configuration文件
现在我们进入源代码的目录,然后运行.configure文件
![NodeJS Configure](http://blog.linoxide.com/wp-content/uploads/2015/06/13.png)
@ -43,9 +43,9 @@
root@ubuntu-15:~/node-v0.12.4# ./configure
root@ubuntu-15:~/node-v0.12.4# make install
### 安装后测试 ###
#### 安装后测试 ####
只要运行一上面的命令就顺利安装好了Node.JS现在我们来确认一下版本信息和测试以下Node.JS是否可以运行输出。
只要运行一上面的命令就顺利安装好了Node.JS现在我们来确认一下版本信息和测试以下Node.JS是否可以运行输出。
root@ubuntu-15:~/node-v0.12.4# node -v
v0.12.4
@ -73,7 +73,7 @@
#### 步骤1: 用curl获取源代码 ####
在我们用curl获取源代码之前我们必须先升级操作系统然后用curl命令获取NodeSource添加到本地仓库。
在我们用curl获取源代码之前我们必须先升级操作系统然后用curl命令获取NodeSource添加到本地仓库。
root@ubuntu-15:~#apt-get update
root@ubuntu-15:~# curl -sL https://deb.nodesource.com/setup | sudo bash -
@ -98,14 +98,13 @@ curl将运行以下任务
![NodeJS Install](http://blog.linoxide.com/wp-content/uploads/2015/06/31.png)
#### STEP 3: Installing Build Essentials Tool ####
#### 步骤3: 安装一些必备的工具 ####
通过以下命令来安装编译安装一些我们必需的本地插件。
root@ubuntu-15:~# apt-get install -y build-essential
### 通过Node.JS Shell来测试 ###
#### 通过Node.JS Shell来测试 ####
测试Node.JS的步骤与之前使用源代码安装相似通过以下node命令来确认Node.JS是否完全安装好:
@ -127,7 +126,7 @@ curl将运行以下任务
>
root@ubuntu-15:~#
### 使用NodeJS应用进行简单的测试 ###
#### 使用NodeJS应用进行简单的测试 ####
REPL是一个Node.js的shell任何有效的JavaScript代码都能在REPL下运行通过。所以让我们看看在Node.JS下的REPL是什么样子吧。
@ -163,9 +162,9 @@ REPL是一个Node.js的shell任何有效的JavaScript代码都能在REPL下
![REPL Manual](http://blog.linoxide.com/wp-content/uploads/2015/06/4.png)
### 使用NodeJS的包管理器 ###
#### 使用NodeJS的包管理器 ####
NPM是一个提供给node脚本连续运行的命令行工具它能通过package.json来安装和管理依赖包。最开始从初始化命令init开始
NPM是一个提供给node脚本持续生命力的命令行工具它能通过package.json来安装和管理依赖包。最开始从初始化命令init开始
root@ubuntu-15:~# npm init
@ -192,14 +191,14 @@ clone仓库之后通过运行.config命令来编译生成完整的安装包
![Configure Node](http://blog.linoxide.com/wp-content/uploads/2015/06/7.png)
运行make install命令之后耐心等待几分钟程序将会安装好Node.JS
运行make install命令之后耐心等待几分钟程序将会安装好Node.JS
root@ubuntu-15:~/node# make install
root@ubuntu-15:~/node# node -v
v0.13.0-pre
### 测试Node.JS ###
#### 测试Node.JS ####
root@ubuntu-15:~/node# node
> a = [1,2,3,4,5,6,7]
@ -217,7 +216,7 @@ clone仓库之后通过运行.config命令来编译生成完整的安装包
在最后一种方法中我们我们将用NVM来比较容易安装Node.JS。安装和配制Node.JS这是最好的方法之一它可以供我们选择要安装的版本。
在安装之前,请确认本机以前的安装包已经被卸载
在安装之前,请确认本机以前的安装包已经被卸载
#### 步骤1: 安装依赖包 ####
@ -230,11 +229,11 @@ clone仓库之后通过运行.config命令来编译生成完整的安装包
#### 步骤2: 修改Home环境 ####
用curl从NVM下载必需的包到用户的home目录之后我们需要修改bash的配文件添加NVM之后只要重新登录中断或者用如下命令更新即可
用curl从NVM下载必需的包到用户的home目录之后我们需要修改bash的配文件添加NVM之后只要重新登录中断或者用如下命令更新即可
root@ubuntu-15:~# source ~/.profile
现在我们可以用NVM来设置默认的NVM的版本或者用如下命令来指定之前版本
现在我们可以用NVM来设置默认的NVM的版本或者用如下命令来指定之前版本:
root@ubuntu-15:~# nvm ls
root@ubuntu-15:~# nvm alias default 0.12.4
@ -257,7 +256,7 @@ via: http://linoxide.com/ubuntu-how-to/setup-node-js-ubuntu-15-04-different-meth
作者:[Kashif Siddique][a]
译者:[NearTan](https://github.com/NearTan)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,186 @@
没有 LinusLinux 的未来是什么样子?
==============================================================================
![](http://i2.wp.com/www.linuxveda.com/wp-content/uploads/2015/06/linus-torvalds-painting.jpg)
这次采访是《Linux For You》杂志在2007年进行的现在我们发表在这里是为了存档的目的。
**Q对于 Linux 内核,未来的计划/道路/提升是怎样的?**
Linus我从来没有太多的预见性 — 与其从宏大的计划上看未来,我倾向于从一个相对短的时间框架,比如“几个月之后的事情”。我是一个忠实的‘细节成败论’的信仰者,如果你抓住了细节,再大的问题也会大事化小,小事化无。
所以,对于五年后内核会是什么样,我真的没有任何远见 — 仅仅是希望我们能够持续专注于Linux的发展。实际上对于我个人来说我最担心的事情之一甚至不是技术问题而是确保这个过程正常这样人们才可以相互协作好。
**Q你怎么看 Linux 和 Solaris 之间的关系在未来的发展?它会如何使用户受益?**
Linus我并没有看到太多交叉的地方除了我认为 Solaris 会使用更多的 Linux 用户空间工具对我自己来说并没有太多关注这个因为我真的只关心内核。Linux 桌面比起传统 Solaris 桌面好多了,而且我希望 Solaris 移植越来越多的 Linux 的东西,朝着一个更加类 Linux 的模式前进。LCTT 译注:时至今日,我们还需要讨论 Solaris 吗?/cry ,但是当时,整个开源社区确实期望接受 Solaris 一些遗产。)
从纯内核方面讲许可证的存在意味着没有太多的合作空间但是如果这种情况发生改变将会变得很有趣。Sun 已经声称将在 GPLv2 或 v3下授权 Solaris如果这种许可证的差异消失那么会导致一些有趣的技术出现。但对此我持观望态度。
**Q现在 GPL v3 已经完成并发布了,你是否预见有什么情况会鼓励你开始移植内核到 Solaris 上去?或者,从你的角度看,它是否很糟糕以至于你从来没考虑过它?**
Linus我觉得相比于早先的草稿v3 有了很多提高,并且我也不认为它是一个糟糕的许可证。我只是认为它没有 GPLv2 一样‘伟大’。
所以,如果没有 GPLv2我觉得自己将会使用 GPLv3。不过既然我已经有了一个更好的选择我为什么还要考虑它呢
这就是说,我始终秉承实用主义精神,并且我认为“ GPLv3 不像 GPLv2 一样好”这件事并不是一个‘非黑即白’的问题。这就像是一个天平,如果 GPLv3 有了其他的优点作为砝码,很有可能那些优点会让我对 GPLv3 更偏爱一些。
恕我直言,我到现在还并没有看到任何优点,但是如果 Solaris 真的在 GPLv3 下发布,可能避免不必要的许可证不兼容性这一条就分量足够了,足以值得我们去尝试将 Linux 的内核重新在 GPLv3 许可证下发布。不过,请不要误解,我认为这是不大可能的。但是我确实想澄清我本质上并不是一个许可证偏执者。我认为 GPLv2 是毫无疑问的好许可证但是许可证并不是一切。LCTT 译注事实上Solaris/OpenSolaris 最终也没采用 GPL 许可协议发布,而 20100年之后已经没有什么动静了。而 Linux 内核最终也没有更换到 GPLv3 上。)
总的来说,我使用很多其他许可证下的程序。我可能没有把任何一个我自己做的项目放在 BSD或 X11—MIT许可证下但是我认为它是一个伟大的许可证对于其他项目来说它可能是最佳的选择。
**Q目前有没有任何你想特别提出作为 Linux 内核的关键贡献者的印度人?**
LCTT 译注:本篇访谈中提到多次印度,是因为访谈者是印度人。)
Linus我不得不承认我并没有与来自印度的任何人直接合作过尽管我已经非常有意识地努力建立一个规模庞大的内核开发团队这样我不用总是独自工作。
我相信大多数人的社交基本上是受限制的,只对很少的人十分了解(比如你最亲近的家人和朋友),我也努力构造这样一个开发模型来改变这种状况:通过一个‘开发者网络’,人们可以在此互动,可能是与一批你信任的人,而且那些人反过来与他们信任的一群人互动。
所以,我偶然会与上百个发给我一两个不确定的补丁的开发者联系。我试着去建立一些由我熟知的人组成的小团体,我认为那就是人们工作的方式,当然也是我喜欢工作的方式。
同时坦白地说我甚至不知道许多与我一起工作的人生活在哪里。地理位置成了十分次要的东西。所以我很确信与我工作最紧密的前10—15个人中没有印度的可能这话稍后传到公众耳里然后被指出确实有一些人来自那里
**Q因为 Linux 的内核开发对你依赖如此严重,你如何计划组织或重组,让它在没有你的情况下继续发展,假设你决定花更多的时间在你自己的生活和家庭上面的话?**
Linus现在 Linux 比我重要得多,为了今天这一步我已经工作了很长时间。是的,我仍然十分密切地参与其中,而且我对其有着想当大的日常影响,我最终会是这样一个人——在某种程度上,扮演着许多内核开发活跃者的中心;但是,我不会说 Linux “严重依赖”于我。
所以,如果我得了心脏病并且明天就死了(很高兴没这种可能:我显然在任何方面都很健康),人们肯定会注意到,但是有成千上万的人为内核工作,并且不止一两个人能够毫无困难地接替我的角色。
**Q印度是软件工程师的主要产地之一但是我们没有在 Linux 领域做太多贡献。你觉得为什么印度人没有积极参与Linux如果我们鼓励印度人参与并为 Linux 做更大的贡献,你觉得如何?你会乐意用你个人作为榜样激励印度工程师吗?**
Linus对我来说这确实是一个不好回答的问题。参与开源取决于两方面的基础条件信息流和文化用你的话说是互联网和教育我甚至不知道这其中哪个是最大的障碍。
在很多方面,至少在那些印度讲英语文化的地方,参与 Linux 和其他开源项目是相对容易的,如果仅仅是由于语言门槛的话。这当然比起亚洲的许多地方,甚至欧洲的一些地方要容易些。
当然,这只是一些人,并不等同于印度的大部分群体,而且我自己关于印度的情况也知道不多,甚至没法不太负责的猜测最好的途径是什么。我猜一个热情的本地用户社区会是最好的途径,而且我猜测你们已经拥有这样的社区了。
至于我的‘偶像’形象,我自己不以为然。我不是一个伟大的公众演讲者,而且我最近些年已经避免出游,因为被看做符号化的‘偶像’让我很不自在。我就是一个工程师而已,而且我仅仅是喜欢我做的事情,并与社会上其他人一起工作。
**Q什么样的理由会让你考虑去访问印度**
Linus如前一个回答中提到我十分讨厌公开演讲所以我才想避免开会等等这些事。我更愿意某天去印度度个假但是如果我这样做我可能悄悄地干 — 出行之前不告诉任何人仅仅作为一个游客去游览印度LCTT 译注:所以 Linus 不来中国的道理是同样的,除非在中国召开一次世界性的 LinuxCon。
**Q最近你好像在抨击 Subversion 与 CVS质问他们的架构基础。现在你已经从 Subversion 和 CVS 社区那里得到回应,你是否改变了看法,还是说并没有被说服?**
Linus因为我发现这个争论很有趣所以我想做一个强硬的声明。换句话说我确实喜欢争论。并不是不经思考的但是我确实想要让争论更热烈些而不仅仅是完全的柏拉图式的。
做出强硬的争论有时会引来一个非常合理的反驳,然后我会很高兴地说:“噢,好吧,你是对的。”
但是话说回来,对 SVN/CVS 并不会发生这种情况。我怀疑很多人并不是真的很喜欢 CVS所以我真的不觉得会有谁坚持认为 CVS 就是一切,而不是一个老旧系统。要是我知道之前就有人这样认为的话,我就不会那么不礼貌地反对 SVN这么说没错 — 我真的不是一个非常礼貌的家伙!),我不相信任何人会认为 SVN 是‘好的’。
我认为SVN 就是一个‘还好’的经典案例。人们过去经常使用 SVN并且它也还好地广泛使用但是它的还好就如 DOS 与 Windows 的‘还好’一样。不是什么伟大的技术,只是普遍适用而已,同时它对人们来说运行良好,看着十分熟悉。但是很少有人以此为傲,或者对其感到兴奋。
Git从另外方面讲其身后有一些UNIX 哲学’,这和 UNIX 无关。实质上,就像原始的 UNIX在它身后有一个基本理念。对 UNIX 来说,最底层的哲学就是,“所有东西只是一个文件”。对 Git 来说,“则是每个东西只是内容寻址数据库中的一个对象”。
**Q现在如此多的发行是好事还是坏事选择是很有意思的但是选择太多了就是干扰。相较于这么多的人每天花费数小时去构建成百上千的发行版如果人们可以一起来支持少数的发行版这样在企业级市场去挑战微软是不是更容易些呢对此你怎么看**
Linus我认为多个发行版是开源不可回避的部分。它会造成困惑吗当然。它会变得低效率吗是的。但是我喜欢拿它与政治比较民主也有那些令人困惑的选择往往没有任何一个选择是你真正想要的。而且有时候如果你不需要操心选举、不同党派和联合等等方面的困惑的话你可能会感觉事情更加容易一些更有效率一些。
但是最后我想说,选择可能会导致低效率,但是它也让每个人至少保留了‘所谓的’诚信。我们可能都希望我们的政治家更诚信,我们也希望不同的发行版可以让我们有一天有其他的选择,而如果没有选择的话,事情可能会更糟。
**Q为什么你觉得 CFS 比 SD 更好?**
Linus一部分原因是我与 Ingo [Molnar] 工作过很长一段时间,也就是说,我了解他,并且知道他会对发生的任何问题非常负责。那种品质是非常重要的。
但是一部分原因就简单的与用户有关,大多数人实际上表示 CFS 比 SD 好。包括许多 3D 游戏方面(这是人们声称 SD 最强的一点)。
尽管如此,我认为并不是任何一段代码都十分‘完美’。最好的情况是,想成为 SD 支持者的人会努力提高 SD从而通过其它方式取得了平衡 — 而我们会保持两个阵营都尝试有趣的事情,因为内部的竞争会刺激他们。
**Q在 Google 的一次关于 Git 的访谈中,有人问你如何将当前集中存放的超大代码库迁移到 git 上,而不用将开发工作停止六个月。你对此的回答是什么?**
Linus啊哈那个问题我在现场没有听清楚在录音里问题会听得更清楚些当我回头去听录制的音频注意到了我没有回答他的问题但是我觉得这问题他问过。
无论如何,我们确实有很多导入的工具,所以你实际上可以仅仅是将一个大的项目从任何其他的早期的 SCM (源代码控制系统)导入到 git 里,但问题显然不是经常以导入动作本身结束,而是需要‘习惯’这种新模式!
坦白来说,我认为关于如何‘习惯它’没有任何其他答案,而只能是去开始使用和尝试它。显然,你不会冒险率先导入你现有的最大、最重要的项目,那确实会导致工作停顿下来,然后使得每个人都很不高兴。
所以没有任何理智健全的人会拥护在一夜之间将一切移到 git 上去,并强迫人们改变他们的环境。是的,你需要从公司里的小项目开始,可能是一些由一个小组主要控制和维护的项目,然后开始转移其到 git。这是你能让人们习惯这种模式的方式你应该以一个核心的组开始他们知道 git 如何工作,如何在公司里面使用它。
接着,你就会铺展开来。并不需要一次到位。你会导入越来越多的项目 — 甚至是在你公司里采用‘单一大型仓库’模式;那个仓库基本上是作为许多模块的集合,因为让每个人去检查每件事不是一个可执行的工作模型(除非这个‘每件事’并不非常大)。
所以,你基本上只会一次转移一个模块,直到你发现使用 git 是如此酸爽,这时你可以移植余下的所有(或者‘余下’的太旧了,没有人用了)。
git 最赞的一个功能是,它实际上可以同很多其他 SCM 相处很好。很多 git 用户使用它的时候,与他们一起工作的人并没有发现,因为他们看到 git 的结果,会联想到一些传统的 SCM 上去。
**QLinux 用了你在 Transmeta全美达上实现备用指令集的经验吗[Transmeta Crusoe 芯片看起来像一个非常轻量级的 CPU — 记得有一台 Burroughs B1000 解释器,它实际上实现了多个虚拟机。有的用于系统软件,有的用于 Cobol还有的用于 Fortran如果没错的话那么人们可以在芯片上实现 Burroughs 6/7000 或者 HP3000 类似的堆栈架构,或适用于 JVM 的指令集等等。LCTT 译注Linus 于 1997-2003 期间就职于全美达)]**
Linus我们确实有一些备选的结构集合不过我不打算谈论太多这个我可以说的是我们已经做了一个混合结构集合的公开演示。我们有一个技术展示在那里你同时可以跑 x86 指令和 Java 字节码(实际上,它是一个轻量的扩展 pico—javaiirc
我想我们展示的这个应用会在 Linux 上运行 DOOM这里 Linux 的部分是一个完全标准 x86 发行版。但是 DOOM 的二进制程序是一个特定的编译版本,它实际上编译为 pico-java 代码。而 CPU 最终以相同的方式来运行它们——从 JIT 到原生 VLIW 指令集。
(选择 DOOM 的原因仅仅是其源代码可用,并且游戏的核心部分非常小,足以很容易拿它来做一个验证 — 而且它也显然看起来十分有趣。)
有更多的事情是在内部运作,但是我不能谈论他们。而且实际上,就我个人而言,对 Java 不怎么感冒。
**Q386BSD 衍生了 NetBSDFreeBSD 和 OpenBSD在 Linux 出现之前已经发展不错了,但是 Linux 传播比 386BSD 及其衍生者更为广泛。这在多大程度上左右你对许可证的选择,这个选择的发展过程是怎样的?你不认为比起 GPLv2 来,是 GPLv3 创造了发展空间,迄今为止,让 Linux 比 BSD 变得更好?**
Linus我认为这不仅是一个许可证问题也是一个社区及人格问题。BSD 的许可证总是鼓励分叉,但是这也意味着,如果某些人取得了成功并做了商业性的分叉,他并不需要将他的修改返回来。因此,哪怕实际上这种事情没有(而实际上,这种事情的确发生了,比如 BSDi人们也难以建立彼此信任。
相比之下GPLv2 也鼓励分叉,但是它不仅仅鼓励分叉出去,它也鼓励(并‘要求’)能够融合回来。所以,我们现在达到了新的层次的信任:你‘知道’每个人都被许可证所约束,所以每个人都不会占你便宜。
所以在我看来GPLv2 作为许可证来说,它允许人们在要求总是回馈贡献的前提下,在另外的方面取得了最大可能的自由。没有人能阻止你对源代码的改进。
那么BSD 许可证是更‘自由’的吗?是的,毫无疑问。但是我不会在我在意的任何项目里面使用 BSD 许可证,因为我不仅仅想要自由,我也想要信任,可以让我总是能使用其他人为我的项目所写的代码。
所以对于我来说GPLv2 最终在‘尽可能自由’上取得了完美的平衡,这样,我们做到了让每个人都能信任,他们总是可以取得源代码并使用它。
这就是为什么我认为 GPLv3 最终并没多大意思,它不再是那种‘返回源代码’的信任;它退化成了‘我写了这些代码,所以我能控制你如何使用它’。
换言之,我只是觉得 GPLv3 太狭隘和自私了。我认为 GPLv2 在‘自由’和‘信任’之间取得伟大的平衡。它不如 BSD 许可证自由,但是它让你安心回馈,而且它符合我认为的‘以德报德’:我给你源代码,你也回馈我源代码。
而 GPLv3 试着控制源代码的‘使用’。现在它就是“我给你我的源代码,如果你使用它的话,你就准备好让我对你的设备动手动脚吧”,看见了没?在我看来,不但小气,而且小心眼。
**Q-rt 代码树的功能正在缓慢而稳定地逐渐集成到主线代码中。你对将剩余的 -rt 树合并到主线代码的看法是什么?(我说的不是 CFS**
Linus: 我不能保证来自 -rt 的一切‘都’会被合并进入标准内核(有一些部分肯定不适合常规的内核),不过是的,这些年来我们实际上将它的大部分都集成进去了,剩下的部分最终以后也会合并进去。
我提倡高效工作,但是我同时也很保守。我退回了一些激进的合并请求,只是因为我需要确保它们对我们所有人都有意义,不仅仅是用于极端情况下的实时环境,而且也对并不需要这种环境的‘普通’用户有用。这解释了为什么这个过程相当缓慢却稳定不断地合并代码,因为它需要足够稳定和有意义。
顺便说一句,这不仅仅是针对 -rt ,它也出现在许多开发中。-rt 出现这种情况是因为它是更‘直接’的内核项目,而且也是因为它的一个主要开发者直接参与到了常规内核开发。通常其它功能的迁移(安全、虚拟内核变化、虚拟化,等等)也遵循类似的方式:他们针对特定的环境进行开发,然后这些功能片段缓慢而稳步地合并到标准内核。
**Q我对 Linux 内核所支持的文件系统发展很感兴趣。你觉得 Reiser4、XFS4、ZFS 以及 Oracle 的新项目哪个更有前途?这些天 ZFS 有不少新闻Reiser4 也发布了很不错的性能基准测试XFS4 正紧随其后,而 Oracle 发布的那个也有很多像 Sun 的 ZFS 一样的特性。我们将走向何方呢?以你的观点来看,哪个文件系统更有前途?**
Linus 实际上,就在昨天我们发现了一个 git 的性能问题,有一个用户发现他采用 ZFS 要比 UFS 慢一个数量级(不是在 Linux 下git 已经得到了许多关注,甚至是来自内核开发团队之外)。所以,我认为许多‘新文件系统’的拥护者部分原因是因为他们了解到旧文件系统的不足,然后(有点不切实际地)期望一个‘崭新的、改进的’文件系统能使一切都完美。
最后,这是一个永无止境的领域,看看谁是最终的赢家——也许并不需要(看起来不需要)一个赢家。几乎总是这样,对文件系统的选择最终取决于负载和环境。
相比你提到的这些文件系统,我个人对基于闪存的硬盘很快就可以供甚至是‘普通’用户使用的这个事实更感到兴奋。当然,它们仍然很昂贵(而且相当的小),但是基于闪存的存储和传统硬盘的性能完全不可同日而语,我怀疑它们最终将对文件系统的设计有巨大的影响。而现在,多数文件系统的设计都是在考虑如何处理硬盘延迟。
**Q操作系统变得越来越不重要。你说过好几次用户根本不应该看见操作系统。应用更为重要。基于浏览器的应用如 Google 的办公软件影响力越来越大。你认为操作系统将走向何方?**
Linus我并不真的认可浏览器 OS因为我认为人们总是需要在本地做一些事情。也许是因为安全或者仅仅是因为隐私的原因。而且即便当到处可以接入时它也并不是无处不在
所以我认为整个Web OS这件事有一部分是真实的但是另外一部分人们也许忘记了操作系统已经存在了几十年它已经相当稳定而且它的发展是有目共睹的。人们真的不应该期望操作系统有魔法般的变化现在已经不是操作系统刚刚起步的六十年代甚至连硬件也和过去完全不同了
所以,别指望一场革命。我认为操作系统将在很大程度上继续它们所擅长的,当然,我们也会进步,但是我不认为会从根本上改变。也许会发生巨变的是界面和操作系统顶层的那些东西(当然,操作系统下面的硬件也会继续进步),这显然才是人们所关心的。
至于操作系统?它显然是应该尽可能隐藏起来的东西。你真的不应该在意它,除非你特别想知道在机器里面真正在发生什么。
**Q最近我听说你正在使用一台 PPC G4/5 作为个人计算机,你使用它来做什么?为什么呢?**
Linus我最终放弃了那台 PowerPC因为没有人能在这台工作站上做到更多特别是自从 x86-64 开始变得越来越强大了。所以这些天,我在用一台标准的 PC里面是一个普通的 Core 2 Duo CPU。
在其它架构下运行是非常有趣的alpha 作为我的主要架构运行了好几年,所以这并不是第一次),但是这种 CPU 得当成商品买得到才行。我认为,唯一能取代 x86 架构的,也许未来十年并不需要使用 x86 作为主要架构,我认为或许是 ARM这得益于移动设备市场的发展。
**QLinux 对你意味着什么?一种业余爱好、哲学、人生意义、工作、最好的操作系统,还是什么?**
Linus它是所有的这一切。它是爱好而且是具有深刻意义的爱好。最好的爱好是你真的非常在意它。这些日子里它显然也是我的工作我非常高兴工作和兴趣能合二为一。
我不了解所谓的‘哲学’,我并不真的是因为深层次的道德或哲学的原因才做的 Linux但是可以肯定的是对开源的深层思考是我非常重视的。所以我并不是因为什么明确的理由做 Linux也不能说是它在激励我但是我的确在思考开源是如何工作。
**Q微软的黑衣人有没有和你交谈过**
Linus我从来没有真正和微软交谈过没有。我偶尔会和一些微软的人出现再同一个会议上我比以前参加的会议更多了但是我从来和他们没有任何关系。我认为彼此都很谨慎吧。
--------------------------------------------------------------------------------
via: http://www.linuxveda.com/2015/06/17/what-happens-to-linux-after-linus/
作者:[Swapnil Bhartiya][a]
译者:[wi-cuckoo](https://github.com/wi-cuckoo)[wxy](https://github.com/wxy)
校对mahua, [wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.linuxveda.com/author/arnieswap/

Some files were not shown because too many files have changed in this diff Show More