Skip to content Skip to main navigation Skip to footer

Linux

Linux:如何在Linux命令行中创建以及展示演示稿

你在准备一场演讲的时候,脑海可能会先被图文并茂、形象华丽的演示图稿所占据。诚然,没有人会否认一份生动形象的演讲稿所带来的积极作用。然而,并非所有的演讲都需要TED Talk的质量。更多时候,演讲稿只为传达特定的信息。 而这个,使用文本信息足以完成。在这种情况下,你的时间可以更好的花在信息的搜集和核实上面,而不是在谷歌图片搜索(Google Image)上寻找好看的图片。

在Linux的世界里,有几个不同的方式供你选择来做演讲。比如带有大量多媒体展示、视觉冲击效果极佳的Impress.js,专为LaTex用户提供的Beamer,等等。而如果你苦于寻找一种简单的方式来创建并且展示文本演示稿,mdp 就能帮你实现。

什么是Mdp?

mdp是Linux下一款基于ncurses的命令行演示工具。我喜欢mdp在于它对markdown的支持,使得我很容易以熟悉的markdown格式来创建幻灯片。自然,它还可以很轻松地用HTML格式来发布幻灯片。另一个好处是它支持UTF-8字符编码,这让非英语字符(如希腊或西里尔字母)的展示也变得很方便。

在Linux中安装Mdp

mdp的依赖需求很少(如 ncursesw),这使得安装非常简单。

Debian、Ubuntu或者它们的衍生版

$ sudo apt-get install git gcc make libncursesw5-dev
$ git clone https://github.com/visit1985/mdp.git
$ cd mdp
$ make
$ sudo make install

Fedora或者CentOS/RHEL

$ sudo yum install git gcc make ncurses-devel
$ git clone https://github.com/visit1985/mdp.git
$ cd mdp
$ make
$ sudo make install

Arch Linux

Arch Linux可以通过AUR轻松安装mdp。

在命令行中创建演示稿

安装mdp完毕,你可以使用你喜欢的文本编辑器来轻松创建一个演示稿。如果你熟悉markdown的话,很快就可以驾驭mdp。而对于那些不熟悉markdown的人来说,学习mdp最好的方式就是从一个实例着手。

这里有一份6页的演示稿样本可供参考。

%title: Sample Presentation made with mdp (Xmodulo.com)
%author: Dan Nanni
%date: 2015-01-28
-> This is a slide title <-
=========
-> mdp is a command-line based presentation tool with markdown support. <-
*_Features_*
* Multi-level headers
* Code block formatting
* Nested quotes
* Nested list
* Text highlight and underline
* Citation
* UTF-8 special characters
-------------------------------------------------
-> # Example of nested list <-
This is an example of multi-level headers and a nested list.
# first-level title
second-level
------------
- *item 1*
    - sub-item 1
        - sub-sub-item 1
        - sub-sub-item 2
        - sub-sub-item 3
    - sub-item 2
-------------------------------------------------
-> # Example of code block formatting <-
This example shows how to format a code snippet.
    1  /* Hello World program */
    2
    3  #include 
    4
    5  int main()
    6  {
    7     printf("Hello World");
    8     return 0;
    9  }
This example shows inline code: `sudo reboot`
-------------------------------------------------
-> # Example of nested quotes <-
This is an example of nested quotes.
# three-level nested quotes
> This is the first-level quote.
>> This is the second-level quote
>> and continues.
>>> *This is the third-level quote, and so on.*
-------------------------------------------------
-> # Example of citations <-
This example shows how to place a citation inside a presentation.
This tutorial is published at [Xmodulo](http://xmodulo.com)
You are welcome to connect with me at [LinkedIn](http://www.linkedin.com/in/xmodulo)
Pretty cool, huh?
-------------------------------------------------
-> # Example of UTF-8 special characters <-
This example shows UTF-8 special characters.
ae = ä, oe = ö, ue = ü, ss = ß
alpha = ?, beta = ?, upsilon = ?, phi = ?
Omega = ?, Delta = ?, Sigma = ?
???????????
?rectangle?
???????????

在命令行中展示演示稿

当你把以上代码保存为slide.md的文本文件后,你可以运行以下命令来展示演示稿:

$ mdp slide.md

你可以通过按键 回车/空格/下翻页/向下光标键 (下一张幻灯)、回退/上翻页/向上光标键 (上一张幻灯)、Home (幻灯首页)、 End (幻灯末页)或者 数字N (第N页幻灯)来操作你的演示稿。

演示稿的标题将在每页幻灯的顶部展示,而你的名字和页码则会出现在幻灯的底部。

Linux:如何在Linux命令行中创建以及展示演示稿
Linux:如何在Linux命令行中创建以及展示演示稿

这是嵌套列表和多层次标题的实例效果。

Linux:如何在Linux命令行中创建以及展示演示稿
Linux:如何在Linux命令行中创建以及展示演示稿

这是代码片段和内联代码的实例效果。

Linux:如何在Linux命令行中创建以及展示演示稿
Linux:如何在Linux命令行中创建以及展示演示稿

这是嵌套引用的实例效果。

Linux:如何在Linux命令行中创建以及展示演示稿
Linux:如何在Linux命令行中创建以及展示演示稿

这是放置引文的实例效果。

Linux:如何在Linux命令行中创建以及展示演示稿
Linux:如何在Linux命令行中创建以及展示演示稿

这是UTF-8编码特殊字符支持的实例效果。

Linux:如何在Linux命令行中创建以及展示演示稿
Linux:如何在Linux命令行中创建以及展示演示稿

总结

在本教程中,我演示了在命令行中如何使用mdp来创建并且展示一个演示稿。mdp的markdown兼容性让我们省去了学习其它新格式的麻烦,这相对于另一种名为tpp的演示工具来说是一个优势。拘于mdp的局限性,它可能无法作为你的默认演示工具。但是,值得肯定的是它一定能在某个场合下派上用场。你觉得mdp怎么样呢?你还喜欢其它的什么东西吗?


via: http://xmodulo.com/presentation-command-line-linux.html

作者:Dan Nanni 译者:soooogreen 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4858-1.html

Linux:基于Docker开发的PaaS平台 DINP

DINP是又一个基于Docker开发的PaaS平台。

DINP 包含如下组件:

  • dinp-server master组件,控制集群中所有计算节点

  • dinp-agent Agent,部署在所有计算节点,收集各个节点运行状态和container列表

  • dinp-builder 编配平台,负责把用户代码打包为Docker image

  • dinp-dash Dashboard,用户操作的入口

  • dinp-router 负责请求的路由等功能

  • dinp-hm Health Monitor,对APP的rs进行7层健康检查

  • dinp-common 公共函数、数据结构

之所以用了“又”字,是因为现在的PaaS平台着实很多,DINP只不过是又造了个轮子,下面给大家说说这个轮子与其他轮子的不同点。

1. DINP只接管web应用

PaaS 平台是个规范性很强的平台,app要用PaaS托管,必须要满足1、2、3…n条规范才可以。web应用通常无状态,逻辑简单,部署方式统一故而可以 使用PaaS托管。但对于一些分布式大型软件、复杂的rpc服务,部署架构复杂,并不适合用PaaS托管。有所为有所不为,DINP只接管web应用。

2. DINP不接管代码的编译环节

像 tsuru之类的PaaS,从代码的push就开始接管了。他们通常要求用户把代码push到指定repo的指定分支,以此触发git receiver,git receiver与后端其他组件协同,拉取用户最新代码,下载dependency,编译,打包等等。但是在国内,因为一些原因,下载 dependency是一个很费劲的过程。如果这个动作放到平台来做,用户每次要上线了都要等待一个漫长的过程是不可接受的。

所以,DINP不接管代码的编译环节,需要用户自己通过科学上网的方式搞定。比如Java,用户把最终的war包扔给DINP即可,而不能是扔一 堆.java源文件和pom.xml;比如Golang,用户把编译好的二进制扔给DINP即可,而不能扔一堆.go源文件;比如Python,用户最好 提前下载好相关lib库,然后加入环境变量,而不是提供一个pip_requirements.txt,当然,对于一些特别容易安装的lib库,用户提供 一个pip_requirements.txt也未尝不可,DINP也支持,但是不推荐。

3. DINP够简单

如果你对 Docker比较熟悉,那DINP对你来说会很简单,我们并没有做太多事情,你理解起来也会相对轻松。PaaS中需要一个通用打包规范,我们使用了 Dockerfile;PaaS中需要一个SCM存放发布包,我们使用了Docker Registry;PaaS中需要一个container来run app,我们使用了Docker。另外PaaS中需要一个七层router,我们使用了CloudFoundry提供的gorouter。DINP的绝大 部分组件都是Golang写的,静态编译的语言部署起来超方便。Dashboard和UIC是用Java写的,基于JFinal框架,很简单的,相信我。

4. DINP的架构

 

Linux:基于Docker开发的PaaS平台 DINP
Linux:基于Docker开发的PaaS平台 DINP

 

  • 用户把代码打包为.tar.gz,交给Builder打包为一个Docker image
  • 拿到Builder产出的Docker image去Dashboard创建一个App,设置好实例数、内存大小、image地址,O了。Dashboard把用户填写的这些信息写入MySQL
  • Server定期从MySQL同步用户期望的数据,姑且称之为desired state
  • 部署在所有计算节点的Agent与Server之间有心跳通信,收集本机的剩余内存量和container列表,姑且称之为real state
  • Server对比desired state和real state,发现某个App的实例数少了就去调度新的计算节点创建新实例,如果发现某个App实例数多了,就干掉多余的实例
  • Server同时会分析real state,组织出路由信息写入redis
  • Router定期从redis中获取路由信息
  • Router通常部署多个,前面部署LVS,注册一个域名,比如apps.io,把*.apps.io这个泛域名解析到LVS VIP,整个流程就通了

5. 服务接入

如 果你玩过CloudFoundry,会很敏感的发现,DINP没有接管MySQL、Memcache、Redis、MQ等等服务。为什么呢?我们的想法是 这样的:专业的人做专业的事,在公司里,MySQL、Redis之类的服务已经有DBA团队运维管理了很久了。他们是最懂的人,他们已经形成了一整套成熟 的部署规范,运维流程。只要提供一个连接地址,一个账号让PaaS上的App连上去就行了,何必非要把MySQL与DINP做很强的关联整合呢

补充

DINP在公司内部小规模用了几个月,没有出什么问题,大家可以玩一玩了。

来源:http://www.oschina.net/p/dinp

Linux:借助LVS+Keepalived实现负载均衡

一、负载均衡:必不可少的基础手段

1.1 找更多的牛来拉车吧

当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等。

Linux:借助LVS+Keepalived实现负载均衡
Linux:借助LVS+Keepalived实现负载均衡

古人有云:当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车

Linux:借助LVS+Keepalived实现负载均衡
Linux:借助LVS+Keepalived实现负载均衡

在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web 服务器,将客户端的请求转发给它处理,实现客户端到真实服务端的透明转发。最近几年很火的「云计算」以及分布式架构,本质上也是将后端服务器作为计算资 源、存储资源,由某台管理服务器封装成一个服务对外提供,客户端不需要关心真正提供服务的是哪台机器,在它看来,就好像它面对的是一台拥有近乎无限能力的 服务器,而本质上,真正提供服务的,是后端的集群。

1.2 负载均衡的类型

负载均衡可以采用硬件设备(例如常常听见的F5),也可以采用软件负载。

商用硬件负载设备成本通常较高(一台几十万上百万很正常),所以在条件允许的情况下我们会采用软件负载;

软件负载解决的两个核心问题是:选谁、转发,其中最著名的是LVS(Linux Virtual Server)。

传送门->关于负载均衡的实现方式类型等介绍请浏览我的另一篇博文:《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

二、初识LVS:Linux Virtual Server

2.1 LVS是神马东西

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。

2.2 LVS有神马作用

LVS主要用于服务器集群的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。它廉价, 可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务器中某台服务器无法 正常工作,也不影响整体效果。另外可扩展性也非常好。

LVS自从1998年开始,发展到现在已经是一个比较成熟的技术项目了。可以利用LVS技术实现高可伸缩的、高可用的网络服务,例如WWW服 务、Cache服务、DNS服务、FTP服务、MAIL服务、视频/音频点播服务等等,有许多比较著名网站和组织都在使用LVS架设的集群系统,例 如:Linux的门户网站(www.linux.com)、向RealPlayer提供音频视频服务而闻名的Real公司(www.real.com)、全球最大的开源网站(sourceforge.net)等。

2.3 LVS的体系结构

使用LVS架设的服务器集群系统有三个部分组成:

(1)最前端的负载均衡层,用Load Balancer表示;

(2)中间的服务器集群层,用Server Array表示;

(3)最底端的数据共享存储层,用Shared Storage表示;

在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

Linux:借助LVS+Keepalived实现负载均衡
Linux:借助LVS+Keepalived实现负载均衡

传送门->关于体系结构的详细介绍,请浏览南飞蚂蚁的blog:http://ixdba.blog.51cto.com/2895551/552947

2.4 LVS负载均衡机制

(1)LVS是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上,传输层上有我们熟悉的 TCP/UDP,LVS支持TCP/UDP的负载均衡。因为LVS是四层负载均衡,因此它相对于其它高层负载均衡的解决办法,比如DNS域名轮流解析、应 用层负载的调度、客户端的调度等,它的效率是非常高的。

(2)LVS的转发主要通过修改IP地址(NAT模式,分为源地址修改SNAT和目标地址修改DNAT)、修改目标MAC(DR模式)来实现。

①NAT模式:网络地址转换

Linux:借助LVS+Keepalived实现负载均衡
Linux:借助LVS+Keepalived实现负载均衡

NAT(Network Address Translation)是一种外网和内网地址映射的技术。 NAT模式下,网络数据报的进出都要经过LVS的处理。LVS需要作为RS(真实服务器)的网关。当包到达LVS时,LVS做目标地址转换(DNAT), 将目标IP改为RS的IP。RS接收到包以后,仿佛是客户端直接发给它的一样。RS处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP。这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端 看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端RS的存在。

②DR模式:直接路由

Linux:借助LVS+Keepalived实现负载均衡
Linux:借助LVS+Keepalived实现负载均衡

DR模式下需要LVS和RS集群绑定同一个VIP(RS通过将VIP绑定在loopback实现),但与NAT的不同点在于:请求由LVS接 受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS。详细来看,一个请求过来时,LVS只需要将网络帧的MAC地址修改为某一台RS的MAC,该包就会被转发 到相应的RS处理,注意此时的源IP和目标IP都没变,LVS只是做了一下移花接木。RS收到LVS转发来的包时,链路层发现MAC是自己的,到上面的网 络层,发现IP也是自己的,于是这个包被合法地接受,RS感知不到前面有LVS的存在。而当RS返回响应时,只要直接向源IP(即用户的IP)返回即可, 不再经过LVS。

(3)DR负载均衡模式数据分发过程中不修改IP地址,只修改mac地址,由于实际处理请求的真实物理IP 地址和数据请求目的IP地址一致,所以不需要通过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶 颈。因此,DR模式具有较好的性能,也是目前大型网站使用最广泛的一种负载均衡手段。

来源:http://www.cnblogs.com/edisonchou/p/4281978.html

Linux:在Linux中使用matplotlib进行科学画图

如果你想要在Linxu中获得一个高效、自动化、高质量的科学画图的解决方案,应该考虑尝试下matplotlib库。Matplotlib是基于python的开源科学测绘包,基于python软件基金会许可证发布。大量的文档和例子、集成了Python和Numpy科学计算包、以及自动化能力,是作为Linux环境中进行科学画图的可靠选择的几个原因。这个教程将提供几个用matplotlib画图的例子。

特性

  • 支持众多的图表类型,如:bar,box,contour,histogram,scatter,line plots….
  • 基于python的语法
  • 集成Numpy科学计算包
  • 数据源可以是 python 的列表、键值对和数组
  • 可定制的图表格式(坐标轴缩放、标签位置及标签内容等)
  • 可定制文本(字体,大小,位置…)
  • 支持TeX格式(等式,符号,希腊字体…)
  • 与IPython相兼容(允许在 python shell 中与图表交互)
  • 自动化(使用 Python 循环创建图表)
  • 用Python 的循环迭代生成图片
  • 保存所绘图片格式为图片文件,如:png,pdf,ps,eps,svg等

基于Python语法的matplotlib是其许多特性和高效工作流的基础。世面上有许多用于绘制高质量图的科学绘图包,但是这些包允许你直接在你的Python代码中去使用吗?除此以外,这些包允许你创建可以保存为图片文件的图片吗?Matplotlib允许你完成所有的这些任务。从而你可以节省时间,使用它你能够花更少的时间创建更多的图片。

安装

安装Python和Numpy包是使用Matplotlib的前提,安装Numpy的指引请见该链接

可以通过如下命令在Debian或Ubuntu中安装Matplotlib:

$ sudo apt-get install python-matplotlib

在Fedora或CentOS/RHEL环境则可用如下命令:

$ sudo yum install python-matplotlib

Matplotlib 例子

本教程会提供几个绘图例子演示如何使用matplotlib:

  • 离散图和线性图
  • 柱状图
  • 饼状图

在这些例子中我们将用Python脚本来执行Mapplotlib命令。注意numpy和matplotlib模块需要通过import命令在脚本中进行导入。

np为nuupy模块的命名空间引用,plt为matplotlib.pyplot的命名空间引用:

import numpy as np
import matplotlib.pyplot as plt

例1:离散和线性图

第一个脚本,script1.py 完成如下任务:

  • 创建3个数据集(xData,yData1和yData2)
  • 创建一个宽8英寸、高6英寸的图(赋值1)
  • 设置图画的标题、x轴标签、y轴标签(字号均为14)
  • 绘制第一个数据集:yData1为xData数据集的函数,用圆点标识的离散蓝线,标识为”y1 data”
  • 绘制第二个数据集:yData2为xData数据集的函数,采用红实线,标识为”y2 data”
  • 把图例放置在图的左上角
  • 保存图片为PNG格式文件

script1.py的内容如下:

import numpy as np
import matplotlib.pyplot as plt
xData = np.arange(0, 10, 1)
yData1 = xData.__pow__(2.0)
yData2 = np.arange(15, 61, 5)
plt.figure(num=1, figsize=(8, 6))
plt.title('Plot 1', size=14)
plt.xlabel('x-axis', size=14)
plt.ylabel('y-axis', size=14)
plt.plot(xData, yData1, color='b', linestyle='--', marker='o', label='y1 data')
plt.plot(xData, yData2, color='r', linestyle='-', label='y2 data')
plt.legend(loc='upper left')
plt.savefig('images/plot1.png', format='png')

所画之图如下:

Linux:在Linux中使用matplotlib进行科学画图
Linux:在Linux中使用matplotlib进行科学画图

例2:柱状图

第二个脚本,script2.py 完成如下任务:

  • 创建一个包含1000个随机样本的正态分布数据集。
  • 创建一个宽8英寸、高6英寸的图(赋值1)
  • 设置图的标题、x轴标签、y轴标签(字号均为14)
  • 用samples这个数据集画一个40个柱状,边从-10到10的柱状图
  • 添加文本,用TeX格式显示希腊字母mu和sigma(字号为16)
  • 保存图片为PNG格式。

script2.py代码如下:

import numpy as np
import matplotlib.pyplot as plt
mu = 0.0
sigma = 2.0
samples = np.random.normal(loc=mu, scale=sigma, size=1000)
plt.figure(num=1, figsize=(8, 6))
plt.title('Plot 2', size=14)
plt.xlabel('value', size=14)
plt.ylabel('counts', size=14)
plt.hist(samples, bins=40, range=(-10, 10))
plt.text(-9, 100, r'$mu$ = 0.0, $sigma$ = 2.0', size=16)
plt.savefig('images/plot2.png', format='png')

结果见如下链接:

Linux:在Linux中使用matplotlib进行科学画图
Linux:在Linux中使用matplotlib进行科学画图

例3:饼状图

第三个脚本,script3.py 完成如下任务:

  • 创建一个包含5个整数的列表
  • 创建一个宽6英寸、高6英寸的图(赋值1)
  • 添加一个长宽比为1的轴图
  • 设置图的标题(字号为14)
  • 用data列表画一个包含标签的饼状图
  • 保存图为PNG格式

脚本script3.py的代码如下:

import numpy as np
import matplotlib.pyplot as plt
data = [33, 25, 20, 12, 10]
plt.figure(num=1, figsize=(6, 6))
plt.axes(aspect=1)
plt.title('Plot 3', size=14)
plt.pie(data, labels=('Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5'))
plt.savefig('images/plot3.png', format='png')

结果如下链接所示:

Linux:在Linux中使用matplotlib进行科学画图
Linux:在Linux中使用matplotlib进行科学画图

总结

这个教程提供了几个用matplotlib科学画图包进行画图的例子,Matplotlib是在Linux环境中用于解决科学画图的绝佳方案,表现在其无缝地和Python、Numpy连接、自动化能力,和提供多种自定义的高质量的画图产品。matplotlib包的文档和例子详见这里


via: http://xmodulo.com/matplotlib-scientific-plotting-linux.html

作者:Joshua Reed 译者:ideas4u 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4870-1.html

Linux:Docker 1.5新特性

Docker项目开发组决定在新的一年开始之初放出一些很酷的东西,大家都猜到了,那就是Docker 1.5,也是2015年Docker的第一个release版本。在这个版本中我们“消灭”了长久以来存在的,令人讨厌的bug;同时也将社区中比较火的功能PR融入其中。还等什么,让我们看看这些变化吧!

支持IPV6

贡献者:Malte Janduda查看PR

在新版本中你可以使用新提供的-ipv6标记来为每个容器分配IPV6的地址。您可以在容器中解析ipv6地址,甚至可以使用这个特性连接不同宿主机上运行的Docker容器。如果需要对此功能做深入了解,请查看此文档。那我们开始愉快的使用这个新特性吧:

# run the nginx container
$ docker run -d -p 80:80 --restart always --name ipv6-nginx nginx
# exec into it to change the default config to support ipv6
$ docker exec -it ipv6-nginx bash
# edit the /etc/nginx/conf.d/default.conf
# under listen 80;
# add the following line:
# listen [::]:80
# restart the nginx service
# this will also pop you out of the container
# and back to your host
root@container # service nginx restart
# get the global ipv6 address
$ docker inspect --format="{{.NetworkSettings.GlobalIPv6Address}}" ipv6-nginx 2a00:1450::242:ac11:5e
$ curl -6 -g [2a00:1450::242:ac11:5e] 

只读容器

贡献者:Michael Crosby – 查看PR

您可使用–read-only标签启动一个容器,使她在文件系统层面上“只读”;这个功能可以让你为容器中运行的应用限定特定的文件写入路径;此功能结合“数据卷”(volumes)使用可以确保容器中运行的程序只能将数据写入到事先指定的路径下。

容器运行监控

贡献者:Michael Crosby – 查看PR

容器很“屌”!它能将你要运行的程序打包,然后以一个整体的可以移植的方式运行;同时还能限定每个容器运行时能使用的资源,防止某些容器将宿主机资源用尽的情况。为了能够更精确的限定每个容器能使用的资源,你需要实时获取到容器运行时使用资源的情况。

在Docker 1.5中我们发布了新的统计API(stat API endpoint)与新的命令行工具;使用这些方式你可以实时监控一个运行容器的CPU、内存、网络IO与块设备IO运行情况。你也可以使用stats API来构建工具来将这些信息传送到已有的监控系统中,或者自己实现一个监控面板。Screen-Shot-2015-02-10-at-12.02_.42-PM_.png

指定要构建的Dockerfile

贡献者:Doug Davis查看PR

这可能是近几个月来最被期望的PR了:为docker build命令指定要使用的Dockerfile,而不是一味的执行默认的Dockerfile。docker build -f命令可以让你为一个项目定义多个用途的Dockerfile,同时指定此次运行的docker build -f命令运行的是哪一个。这个对于测试与生产环境要使用不同的Dockerfile生成镜像的项目来说非常有帮助。

开放Docker镜像构建机制

贡献者:Josh Hawn查看PR

随着Docker社区的日益壮大,越来越多的开发者加入到了Docker社区,为Docker项目贡献代码。我们也期望开发者能更多的参与Docker镜像的构建与镜像层级构建等方面的开发。作为第一步,我们开放了Docker镜像的低层实现机制,包括如何构建与格式化一个镜像以及她们低层是如何配置的。我们的目的是,帮助开发者能够更好的理解Docker镜像——这是Docker非常低层非常重要的方面;以帮助他们为改进Docker镜像格式本身做出贡献。第一版文档可以在这里查看。(译者注:这是彩蛋!)

感谢

很多“同志”为了Docker1.5的发布付出了很多艰辛与努力,他们是:Daniel Dao Quang Minh, Don Kjer, Harald Albers, Michal Minar, Phil Estes, Qiang Huang, Andrew Vagin, Abin Shahab;当然还有很多Docker社区的代码贡献者;没有他们就没有这次更新。

来源:http://dockerone.com/article/202

Linux:InnoDB 隔离模式对 MySQL 性能的影响

过去的几个月我写了两篇文章,一篇是InnoDB 事务历史相关的危险债务,另一篇是关于MVCC 可能导致MySQL严重的性能问题的真相。在这篇文章里我将讨论一个相关的主题 – InnoDB 事务隔离模式,还有它们与MVCC(多版本并发控制)的关系,以及它们是如何影响MySQL性能的。

MySQL手册提供了一个关于MySQL支持的事务隔离模式的恰当描述 – 在这里我并不会再重复,而是聚焦到对性能的影响上。

SERIALIZABLE – 这是最强的隔离模式,本质上打败了在锁管理(设置锁是很昂贵的)的条件下,多版本控制对所有选择进行锁定造成大量的开销,还有你得到的并发。这个模式仅在MySQL应用中非常特殊的情况下使用。

REPEATABLE READ – 这是默认的隔离级别,通常它是相当不错的,对应用程序的便捷性来说也不错。它在第一次的时候读入所有数据 (假设使用标准的非锁读)。但是这有很高的代价 – InnoDB需要去维护事务记录,从一开始就要记录,它的代价是非常昂贵的。更为严重的情况是,程序频繁地更新和hot rows – 你真的就不想InnoDB去处理rows了,它有成百上千个版本。

在性能上的影响, 读和写都能够被影响。用select查询遍历多个行是代价高昂的,对于更新(update)也是,在MySQL 5.6中,尤其是版本控制看起来导致了严重的争用问题。

下面是例子:完全在内存中的数据集中运行 sysbench,并启动 transaction 、运行全表、扫描、查询几次,同时保持 transaction 是开着的:

sysbench  –num-threads=64 –report-interval=10 –max-time=0 –max-requests=0 –rand-type=pareto –oltp-table-size=80000000 –mysql-user=root –mysql-password= –mysql-db=sbinnodb  –test=/usr/share/doc/sysbench/tests/db/update_index.lua run

Linux:InnoDB 隔离模式对 MySQL 性能的影响
Linux:InnoDB 隔离模式对 MySQL 性能的影响

正如你可以看到的,写(write )操作的吞吐量大幅下降,并且持续走低,这时transaction 是开着的不仅是查询(query)操作运行的时候。在可复读的隔离模式下,当你已经选择了之外的transaction ,紧接着就是一个long transaction ,这也许是我能找到的最糟糕情况了。当然了在其他情况下看到回归算法(regression )

 如果有人想测试,可以重复下面我用的查询集合:

12345 select avg(length(c)) from sbtest1;begin;select avg(length(c)) from sbtest1;select sleep(300);commit;

 不只是可复读(Repeatable Read)的默认隔离级别,同样也可以用于InnoDB 逻辑备份 –  mydumper 或者 mysqldump –single-transaction

 这些结果显示这个备份的方法恢复的时间太长而不能用于大型数据集合,同样这个方法受到性能影响,也不能用于频繁写入(write )的环境中。

 READ COMMITTED 模式和REPEATABLE READ模式很相似,本质区别在于哪个版本都不在transaction中从头开始读取,取而代之的从当前语句开始读取。因此使用这种模式允许InnoDB少维护很多版本,特别是你没有很长的statements要允运行。如果你有很长的select要运行,如报表查询对性能的影响仍然很严重。

 通常我认为好的做法是把READ COMITTED隔离模式做为默认,对于应用程序或者transactions 有必要就改成REPEATABLE READ。

READ UNCOMMITTED – 我觉得这是最难理解的隔离模式(悲催的只有2条文档),只描述了它的逻辑观点。如果你使用了这种隔离模式,你会看到数据控中所有发生的变化,即使是那些还 没被提交的transactions 。这种隔离模式一种好的用例是:你能“watch”到大规模的有脏读(dirty reads)的UPDATE 语句,显示了哪行被改变了,哪些没有改变。

如果transaction 事务在运行的时候出错了,那么这个声明会显示还没被提交的和可能没被提交的变化,所以使用这个模式要小心为妙。有一些用例虽然不需要我们100%准确的数据,在这种情况下,这种模式就变得非常方便。

那么,从性能角度来看,如何体现READ UNCOMMITTED?理论上,InnoDB 可以清除行版本,在READ UNCOMMITTED模式下即便是该语句已经开始执行之后,也可以创建。在实践中,由于一个bug或者一些复杂实现的细节做不到,语句开始仍然是行版 本。所以,如果你在READ UNCOMMITTED声明中运行很长的SELECT,你会得到大量的行版本创建信息,就像你用了READ COMMITTED。No win here

从SELECT方面还有一个重要的win – READ UNCOMMITTED隔离模式意味着InnoDB 不需要去检查旧的行版本 – 最后一行总是对的,这会使得性能有明显的改善,尤其是当undo空间已经在磁盘上溢出,查找旧的行版本会造成大量的IO读写。

也许上面这个select avg(k) from sbtest1;是我能找到的最好的查询例子了,能与之类似的更新工作量。假使READ UNCOMMITTED隔离模式在一分钟左右完成,我认为在READ COMMITTED隔离模式下没有完成过,因为新索引条目插入的速度要比扫描速度快。

最后思考:正确的使用InnoDB 隔离模式,能够让您的应用程序得到最佳性能。你得到的好处可能不同,在某些情况下,也可能没什么区别。关系到InnoDB 的历史版本,似乎好有好多工作要做,我希望在未来的MySQL中能解决。

来源:http://www.oschina.net/translate/mysql-performance-implications-of-innodb-isolation-modes

Linux:一个在Windows各版本系统存在了15年之久的bug

Linux:一个在Windows各版本系统存在了15年之久的bug
Linux:一个在Windows各版本系统存在了15年之久的bug

微软刚修复了一个存在了15年之久的bug,这个bug允许攻击者在某些情况下完全控制运行着各版本Windows系统的电脑。这个致命的漏洞以后 依然会存在于Windows Server 2003中,除开这个问题,微软承诺会在最后的5个月时间里继续对其进行技术支持。

这个系统缺陷,微软已经耗费了超过12个月的时间进行修复,影响的范围包含所有连接到公司、企业和政府机关网络并使用了活动目录服务 (Active Directory service)的用户。内置于Windows的数据库扮演着交通警察和安保人员的角色,它为满足授权要求的用户颁发特定授权并对在本地网络上的可用资源 进行映射。而这个bug(微软称其为MS15-011,研究者称其为Jasbug)可以让那些能够监控用户与活动目录之间网络传递的攻击者在这中间设置恶 意代码来操控这些脆弱的机器。

“所有使用活动目录服务的电脑和设备都处于危险之中。”JAS全球顾问在周二的一篇博客上警告道——正是该公司在2014年1月发现了这一bug并 将它报告给了微软。该漏洞可被远程利用,能够让攻击者获取到攻击目标的管理员权限。那些使用公共wifi或者VPN的漫游设备正处于高度危险之中。

微软在自己的网络文章上提供了Jasbug是如何利用连接到咖啡店公共wifi某台机器的例子:

  1. 在这个场景中,攻击者会全面观察交换机的通信并找到某个正准备尝试在UNC路径: \10.0.0.100ShareLogin.bat.下载文件的机器。
  2. 在攻击者的机器上会设置一份与受害者请求下载文件的UNC路径完全相符的共享:\*ShareLogin.bat。(攻击者通过精心制作 的Login.bat内容,在目标系统随心所欲的运行恶意代码。通过Login.bat的登录服务请求,这些恶意的代码就可以在受害者的机器上以本地用户 或者系统账户的形式运行了。)
  3. 然后攻击者会修改本地交换机上的ARP映射表以确保用于目标服务器10.0.0.100的通信路径能够通过攻击者的机器。
  4. 当受害者的机器接下来发出文件的请求时,攻击者的机器会返回带有恶意的Login.bat给受害者。这个场景也说明了这种攻击无法在互联网上广泛的使用——攻击者的目标只针对对特定的UNC发出文件请求的某个或某系列特定系统。

来自于微软的更多细节可以点击这里。 活动目录的组策略组件漏洞允许攻击者在连接到一个区域后远程实施所接受到的恶意代码。与此同时,单独的组策略漏洞可能导致其无法获取有效的安全策略而使用 安全性较差的默认组策略进行代替。通过对这些bug综合利用,攻击者可通过目标用户想要连接的地址来禁用平时执行的授权机制。

现在还无法准确的知道针对通过加密通道使用漏斗形传输的虚拟专用网络(VPN)用户的攻击是如何进行的。从理论上看,VPN可以预防那些能够读取或 篡改活动目录事务的充当中间人的攻击者,除非首先攻击者能解密数据。最有可能的是,上面所提到的咖啡店针对可对本地域名进行查询的VPNs,使用了自动分 配给本地网络的DNS服务器。许多VPNs都是使用的这种配置方式,这能够使用户更加快捷方便的连接到公司或政府的网络。

这个Windows漏洞的修复工作并不象平时的那么简单,因为它影响到了Windows内核功能的设计而非设计的实现。微软表示管理员将会检查这个 环节并作出进一步的引导。该漏洞给那些还在使用Server 2003的用户群带来了一个严重的威胁,因为微软对于Server 2003的技术支持在7月中旬就会到期了。运行Server 2003的机器不太可能会连接到非可信网络,造成咖啡馆那样的攻击是不现实的。不过,攻击的技术会随着时间的推移变得越来越厉害,越来越多的人会找到攻击 的新方法。那些有能力不使用活动目录的Server 2003用户群应当充分考虑到这个问题,虽然没有提到在非活动目录网络下的系统漏洞,但是Windows用户最好的选择还是及时的安装系统补丁。

来源:http://www.evget.com/article/2015/2/12/22156.html

Linux:我该如何向非技术人解释SQL注入?

这个问题源自 StackOverflow,题主需要向没有技术背景和经验的朋友解释 SQL 注入,希望有人能有好方法。Polynomial 分享了他的类比方法,得到了 710+ 赞。


在向非技术人员解释SQL注入的时候,我会使用一个简单的类比。

Linux:我该如何向非技术人解释SQL注入?
Linux:我该如何向非技术人解释SQL注入?

假设你是一个在装满箱子的仓库里工作的机器人。你的工作是从仓库里的某个角落找到某个箱子,然后放到传送带上。机器人需要有人告诉它去搬运哪个箱子,所以给你编程的程序员给了你很多纸,纸上的表单已经预先写好了指令的集合,等用户填好之后再交给你执行。

这些表单看起来是这个样子的:

从第__号货架的的第__区,取下第____号箱子,然后放到传送带上。

一个普通的搬运任务看起来就是这样的:

从第12号货架的B2区,取下第 1234 号箱子,然后放到传送带上。

加粗的文字(1234,B2和12)是由发出搬运任务的人提供的。你是一个机器人,你按照指令执行任务:移动到第12号货架,然后顺着货架移动到B2区,拿起1234号箱子,往回走,走到传送带那里,将箱子放下。

但是,如果用户在表单里填了不正常的值呢,如果用户在空格处填写了指令呢?

从第12号货架的B2区,取下第「1234号箱子,从窗户里丢出去,回到你的桌子并且忽略这张纸上的其他指令。」号箱子,然后放到传送带上。

上文的任务中的加粗的文字也是由发出任务的人提供的。因为你是一个机器人,你会严格按照用户要求的去做。你移动到第12号货架,然后顺着货架移动到B2区,拿起1234号箱子,把它扔出窗户。因为指令告诉你要忽略剩下的指令,所以“号箱子,并把它放到传送带上”这部分被忽略了。

机器人不能区分指令(要执行的动作)和数据(动作执行的受体);或许是从这种指令处理的方式上获得了灵感,这种技术被称为“注入”。

就像我们告诉机器人要做什么,SQL是一种告诉数据库需要做什么的特殊的语言。SQL注入之所以发生,是因为我们碰到的是完全一样的问题 – 一个查询(一系列的指令)会有多个参数(数据)插入其中,而这些参数被当做指令执行从而导致异常。一个恶意的用户可以利用这样的漏洞来让数据库返回所有的用户的信息,很显然,这是不对的!

为了避免这样的问题,我们必须把指令和数据用一种数据库(机器人)容易区分的方式分开。 通常我们会将数据和指令分开发送。所以,针对文中的情况,机器人首先要从空的form里读取指令,确认参数(空格)要在哪,存储下来。 用户走上前并提供“12,B2,1234”,然后机器人在不允许这些值被当做指令执行的前提下,将数据和指令结合并执行。在SQL中,这种技术叫做参数化查询。

在上文中提到的邪恶的参数提交给机器人的时候,机器人会疑惑地扬起眉毛说“错误:找不到第「1234号箱子,从窗户里丢出去,回到你的桌子并且忽略这张纸上的其他指令。」号箱子,你确定输入正确了么?”

以上,我们成功的阻止了机器人犯错。

来源:http://blog.jobbole.com/84153/

Linux:如何使用linux程序mdadm创建软件RAID1软阵列

磁盘冗余阵列(RAID)是将多个物理磁盘结合成一个逻辑磁盘的技术,该技术可以提高磁盘容错性能,提高磁盘的读写速度。根据数据存储的排列(如:条带存储,镜像存储,奇偶或者他们的组合),定义了几个不同级别的RAID(RAID-0,RAID-1,RAID-5 等等)。磁盘阵列可以使用软件或者硬件方式实现。现代Linux操作系统中,基本的软件RAID功能是默认安装的。

本文中,我们将介绍软件方式构建RAID-1阵列(镜像阵列),RAID-1将相同的数据写到不同的设备中。虽然可以使用同一个磁盘的两个分区实现RAID-1,但是如果磁盘坏了的话数据就都丢了,所以没什么意义。实际上,这也是为什么大多数RAID级别都使用多个物理磁盘提供冗余。当单盘失效后不影响整个阵列的运行,并且可以在线更换磁盘,最重要的是数据不会丢失。尽管如此,阵列不能取代外部存储的定期备份。

由于RAID-1阵列的大小是阵列中最小磁盘的大小,一般来说应该使用两个大小相同的磁盘来组建RAID-1。

安装mdadm

我们将使用mdadm(简称多盘管理)工具创建、组装、管理和监控软件RAID-1。在诸如Fedora、CentOS、RHEL或者Arch Linux 的发行版中,mdadm是默认安装的。在基于Debian的发行版中,可以使用aptitude 或者 apt-get 安装mdadm。

Fedora, CentOS 或 RHEL

由于adadm是预装的,所以我们只需要开启RAID守护服务,并将其配置成开机启动即可:

# systemctl start mdmonitor
# systemctl enable mdmonitor

对于CentOS/RHEL 6系统,使用以下命令:

# service mdmonitor start
# chkconfig mdmonitor on

Debian, Ubuntu 或 Linux Mint

在Debian或类Debian系统中,mdadm可以使用 aptitude 或者 apt-get 安装:

# aptitude install mdadm

Ubuntu系统中,会要求配置Postfix MTA 以发送电子邮件通知。你可以跳过去。

Debian系统中,安装程序会显示以下解释信息,用来帮助我们去判断是否将根目录安装到RAID阵列中。下面的所有操作都有赖于这一步,所以应该仔细阅读他。

Linux:如何使用linux程序mdadm创建软件RAID1软阵列
Linux:如何使用linux程序mdadm创建软件RAID1软阵列

我们不在根目录使用RAID-1,所以留空。

提示是否开机启动阵列的时候,选择“是”。注意,这里需要往/etc/fstab 文件中添加一个条目使得系统启动的时候正确挂载阵列。

Linux:如何使用linux程序mdadm创建软件RAID1软阵列
Linux:如何使用linux程序mdadm创建软件RAID1软阵列

硬盘分区

现在开始准备建立阵列需要的硬盘。这里插入两个8GB的usb磁盘,使用dmesg命令设备显示设备 /dev/sdb 和 /dev/sdc

# dmesg | less

[ 60.014863] sd 3:0:0:0: [sdb] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB) [ 75.066466] sd 4:0:0:0: [sdc] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB)

我们使用fdisk为每个磁盘建立一个大小为8G的主分区。以下步骤是如何在/dev/sdb上建立分区,假设次磁盘从未被分区(如果有其他分区的话,可以删掉):

# fdisk /dev/sdb

按p键输出现在的分区表:

Linux:如何使用linux程序mdadm创建软件RAID1软阵列
Linux:如何使用linux程序mdadm创建软件RAID1软阵列

(如果有分区的话,可以使用 d 选项删除,w 选项应用更改)。

磁盘上没有分区,所以我们使用命令 [‘n’] 创建一个主分区[‘p’], 分配分区号为[‘1’] 并且指定大小。你可以按回车使用默认值,或者输入一个你想设置的值。如下图:

Linux:如何使用linux程序mdadm创建软件RAID1软阵列
Linux:如何使用linux程序mdadm创建软件RAID1软阵列

用同样的方法为/dev/sdc 分区。

如果我们有两个不同容量的硬盘,比如 750GB 和 1TB的话,我们需要在每个磁盘上分出一个750GB的主分区,大盘剩下的空间可以用作他用,不加入磁盘阵列。

创建 RAID-1 阵列

磁盘分区完成后,我们可以使用以下命令创建 RAID-1 阵列:

# mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1

说明:

  • -Cv: 创建一个阵列并打印出详细信息。
  • /dev/md0: 阵列名称。
  • -l1 (l as in “level”): 指定阵列类型为 RAID-1 。
  • -n2: 指定我们将两个分区加入到阵列中去,分别为/dev/sdb1 和 /dev/sdc1

以上命令和下面的等价:

 # mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

如果你想在在磁盘失效时添加另外一个磁盘到阵列中,可以指定 ‘–spare-devices=1 /dev/sdd1’ 到以上命令。

输入 “y” 继续创建阵列,回车:

可以使用以下命令查看进度:

 # cat /proc/mdstat

另外一个获取阵列信息的方法是:

# mdadm --query /dev/md0
# mdadm --detail /dev/md0 (或 mdadm -D /dev/md0)
Linux:如何使用linux程序mdadm创建软件RAID1软阵列
Linux:如何使用linux程序mdadm创建软件RAID1软阵列

‘mdadm -D’命令提供的信息中,最重要就是阵列状态类。激活状态说明阵列正在进行读写操作。其他几个状态分别为:完成(读写完成)、降级(有一块磁盘失效或丢失)或者恢复中(一张新盘已插入,系统正在写入数据)。这几个状态涵盖了大多数情况。

格式化或加载磁盘阵列

下一步就是格式化阵列了,本例中使用ext4格式:

 # mkfs.ext4 /dev/md0
Linux:如何使用linux程序mdadm创建软件RAID1软阵列
Linux:如何使用linux程序mdadm创建软件RAID1软阵列

现在可以加载阵列并验证其正常加载:

# mount /dev/md0 /mnt
# mount
Linux:如何使用linux程序mdadm创建软件RAID1软阵列
Linux:如何使用linux程序mdadm创建软件RAID1软阵列

来源:https://linux.cn/article-4891-1.html

Linux:试试只用U盘加载Linux系统

也许你听过Linux并对它有点好奇,终于想要实际体验一下,但可能不知道从哪儿开始。

很可能你已经在网上搜索过一些信息,然后遇到一些像双系统和虚拟机这样的词汇。它们对你来说也许太专业了,所以你肯定不会仅仅为了尝试一下Linux而牺牲正在使用的操作系统。那我们该怎么办?

如果你手上正好有个U盘的话,那就可以试试做一个USB Linux启动盘。它是一个包含了整个操作系统并可以直接引导开机的U盘。创建它并不需要什么专业技术能力,让我们来看看怎么做,以及如何从USB引导进入Linux系统。

Linux:试试只用U盘加载Linux系统
Linux:试试只用U盘加载Linux系统

你需要准备的

除了一台台式机或笔记本电脑外,你还需要:

  • 一个空白的U盘-最好容量能有4GB或更多。
  • 一个你想尝试的Linux发行版ISO镜像(一种把所有磁盘内容打包起来的档案文件)。待会再详细介绍。
  • 一个叫Unetbootin的应用程序,它是一个开源的,跨平台的工具,用来创建USB启动盘。运行它并不需要启动Linux。在下面的教程中,我是在MacBook上运行的Unetbootiin(LCTT 译注:它还有 Windows 和 Linux 版本)。

开始干活

把U盘插到你电脑的USB端口上,然后启动Unetbootin。然后会要求你输入当前电脑的登录密码。

Linux:试试只用U盘加载Linux系统
Linux:试试只用U盘加载Linux系统

还记得之前提到的ISO镜像文件吗?有两种方式可以获得:要么自己从你想尝试的Linux发行版网站上下载,或者让Unetbootin帮你下载。如果选后者,在窗口顶部点击选择发行版,选择你想下载的发行版,然后点击选择版本来选择你希望尝试的发行版版本。

Linux:试试只用U盘加载Linux系统
Linux:试试只用U盘加载Linux系统

或者,你也可以自己下载发行版。通常,我想尝试的Linux发行版都没有在列表中。如果选择自己下载,那么点击磁盘镜像,然后点击按钮来选择你下载好的.iso文件。

注意到下面的选项预留每次重新启动后保存文件的空间(仅Ubuntu有效)吗?如果你尝试的是Ubuntu或它的任一个衍生版(比如Lubuntu或Xubuntu),你可以在U盘上留出几M空间用来保存文件,比如网页书签或你自己创建的文档。当用这个U盘下次启动Ubuntu的时候,你可以继续使用这些文件。

Linux:试试只用U盘加载Linux系统
Linux:试试只用U盘加载Linux系统

在加载好ISO镜像后,点击确定。Unetbootin大概需要不到10分钟来创建USB启动盘。

Linux:试试只用U盘加载Linux系统
Linux:试试只用U盘加载Linux系统

检验USB启动盘

这个时候,你需要拥抱一下自己内在的极客精神。这不会太难,不过你将需要进入BIOS去偷看一下你的电脑内部空间。你的电脑的BIOS会加载各种硬件,并控制电脑操作系统的引导或启动。

BIOS通常会按这个顺序搜索操作系统(或者类似的顺序):硬盘,然后是CD/DVD光驱,然后是外部存储设备。你需要调整这个顺序,让外部存储设备(在这里,指的是你的U盘启动盘)成为BIOS第一个搜索的设备。

要做到这一点,请把U盘插到电脑上再重启电脑。在看到提示信息Press F2 to enter setup之后,按它要求的做。在有的电脑上,这个键可能是F10。

在BIOS里,用键盘上的向右方向键切换到Boot菜单。然后你将看到你电脑上的驱动器列表。使用键盘上的向下方向键选中名字为USB HDD的选项,然后按下F6移动这个选项到列表的顶部。

完成后,按下F10来保存改动。然后你会从BIOS里被踢出来,然后电脑会自己启动。等一小会,你就会看到一个你正在尝试的Linux发行版的启动菜单。选择Run without installing(或者最类似的选项)。

在进入桌面后,你可以连接上无线或有线网络,看看网页,试一试预装的软件。你还可以看看,比如说,你的打印机或扫描仪是否能在你试的这个发行版下正常工作。你要是真的想不开,也可以去摸一下命令行。

能干什么

根据你尝试的Linux发行版和你使用的U盘的速度,操作系统可能会需要较长的时间来加载,而且很可能比直接装到硬盘上会慢一点。

还有,你也只能运行Linux发行版里预装好的基本软件。通常会有网页浏览器,一个文字处理软件,一个文本编辑器,一个媒体播放器,一个相片浏览器,以及一套实用工具。这些应该足够给你使用Linux的感觉了。

如果你决定使用Linux,你可以双击安装器从U盘安装到硬盘。


via: https://opensource.com/life/14/10/test-drive-linux-nothing-flash-drive

作者:Scott Nesbitt 译者:zpl1025 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4896-1.html

Linux:如何在Ubuntu 14.04 上为Apache 2.4 安装SSL支持

今天我会讲述如何为你的个人网站或者博客安装SSL 证书,来保护你的访问者和网站之间通信的安全。

安全套接字层或称SSL,是一种加密网站和浏览器之间连接的标准安全技术。这确保服务器和浏览器之间传输的数据保持隐私和安全。它被成千上万的人使用来保护他们与客户的通信。要启用SSL链接,Web服务器需要安装SSL证书。

你可以创建你自己的SSL证书,但是这默认不会被浏览器所信任,要解决这个问题,你需要从受信任的证书机构(CA)处购买证书,我们会向你展示如何获取证书并在apache中安装。

Linux:如何在Ubuntu 14.04 上为Apache 2.4 安装SSL支持
Linux:如何在Ubuntu 14.04 上为Apache 2.4 安装SSL支持

生成一个证书签名请求

证书机构(CA)会要求你在你的服务器上生成一个证书签名请求(CSR)。这是一个很简单的过程,只需要一会儿就行,你需要在你的服务器上运行下面的命令并输入需要的信息:

# openssl req -new -newkey rsa:2048 -nodes -keyout yourdomainname.key -out yourdomainname.csr

输出看上去会像这样:

Linux:如何在Ubuntu 14.04 上为Apache 2.4 安装SSL支持
Linux:如何在Ubuntu 14.04 上为Apache 2.4 安装SSL支持

这一步会生成两个文件:一个用于解密SSL证书的私钥文件,一个证书签名请求(CSR)文件(用于申请你的SSL证书)。

根据你申请的机构,你会需要上传csr文件或者在网站表格中粘帖该文件内容。

在Apache中安装实际的证书

生成步骤完成之后,你会收到新的数字证书。本篇教程中我们使用Comodo SSL,并在一个它发给我们的zip文件中收到了证书。要在apache中使用它,你首先需要用下面的命令用收到的证书创建一个组合的证书:

# cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > bundle.crt

bundle

用下面的命令确保ssl模块已经加载进apache了:

# a2enmod ssl

如果你看到了“Module ssl already enabled”这样的信息就说明你成功了,如果你看到了“Enabling module ssl”,那么你还需要用下面的命令重启apache:

# service apache2 restart

最后像下面这样修改你的虚拟主机文件(通常在/etc/apache2/sites-enabled 下):

DocumentRoot /var/www/html/
ServerName linoxide.com
SSLEngine on
SSLCertificateFile /usr/local/ssl/crt/yourdomainname.crt
SSLCertificateKeyFile /usr/local/ssl/yourdomainname.key
SSLCACertificateFile /usr/local/ssl/bundle.crt

你现在应该可以用https://YOURDOMAIN/(注意使用‘https’而不是‘http’)来访问你的网站了,并可以看到SSL的进度条了(通常在你浏览器中用一把锁来表示)。

注意: 现在所有的内容链接都必须指向https,如果网站上的一些内容(像图片或者css文件等)仍旧指向http链接的话,你会在浏览器中得到一个警告,要修复这个问题,请确保每个链接都指向了https。

在你的网站上重定向HTTP请求到HTTPS中

如果你希望重定向常规的HTTP请求到HTTPS,添加下面的文本到你希望修改的虚拟主机,或者如果希望给服务器上所有网站都添加的话就加入到apache.conf中:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

via: http://linoxide.com/ubuntu-how-to/install-ssl-apache-2-4-in-ubuntu/

作者:Adrian Dinu 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4901-1.html

Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器

PXE服务器——预启动执行环境——指示客户端计算机直接从网络接口启动、运行或安装操作系统,而不需要烧录CD/DVD或使用某个物理介质,它可以减轻你网络中多台机器同时安装Linux发行版的工作。

Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器
Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器

在RHEL/CentOS 7中设置PXE网络启动

前置阅读

本文将介绍如何在配置有本地镜像安装仓库的RHEL/CentOS 7 64位上安装并配置一台PXE服务器,仓库源由CentOS 7 DVD 的 ISO镜像提供,并由DNSMASQ服务器提供解析。

该机器提供了DNSDHCP服务,用于网络启动引导的Syslinux包,TFTP-Server——提供了可通过网络使用小文件传输协议下载的可启动镜像,以及提供本地挂载DVD镜像的VSFTPD服务器——它将扮演官方RHEL/CentOS 7镜像安装仓库的角色,安装器将从这里提取所需的包。

步骤1: 安装并配置DNSMASQ服务器

1. 不需要提醒你来确定你的网络接口卡吧,除非你的服务器上有多个网络接口卡,该网卡必须配置有静态IP地址,该IP地址必须处于你要提供PXE服务的网段中。

那么,在你配置好静态IP地址后,更新你的系统并进行其它初始设置。请使用以下命令来安装DNSMASQ进程。

# yum install dnsmasq
Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器
Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器

安装dnsmasq包

2. DNSMASQ的默认的主配置文件位于/etc目录中,虽然不需要任何说明就能看懂,但编辑起来确实相当困难的,即使有很详细的说明性注释。

首先,确保你备份了该文件,以便你需要在以后对它进行恢复。然后使用你爱用的文本编辑器创建一个新的空配置文件,命令如下。

# mv /etc/dnsmasq.conf  /etc/dnsmasq.conf.backup
# nano /etc/dnsmasq.conf

3. 现在,复制并粘贴以下配置到dnsmasq.conf文件中,并确保根据如下说明进行相应修改,以适应你的网络设置。

interface=eno16777736,lo
#bind-interfaces
domain=centos7.lan
# DHCP range-leases
dhcp-range= eno16777736,192.168.1.3,192.168.1.253,255.255.255.0,1h
# PXE
dhcp-boot=pxelinux.0,pxeserver,192.168.1.20
# Gateway
dhcp-option=3,192.168.1.1
# DNS
dhcp-option=6,92.168.1.1, 8.8.8.8
server=8.8.4.4
# Broadcast Address
dhcp-option=28,10.0.0.255
# NTP Server
dhcp-option=42,0.0.0.0
pxe-prompt="Press F8 for menu.", 60
pxe-service=x86PC, "Install CentOS 7 from network server 192.168.1.20", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot
Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器
Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器

Dnsmasq配置

你需要修改的声明有以下这些:

  • interface – 服务器需要监听并提供服务的网络接口。
  • bind-interfaces – 取消注释来绑定到该网络接口
  • domain – 替换为你的域名。
  • dhcp-range – 替换为你的网络掩码定义的网段。
  • dhcp-boot – 替换该IP地址为你的网络接口IP地址。
  • dhcp-option=3,192.168.1.1 – 替换该IP地址为你的网段的网关。
  • dhcp-option=6,92.168.1.1 – 替换该IP地址为你的DNS服务器IP——可以定义多个IP地址。
  • server=8.8.4.4 – 这里放置DNS转发服务器IP地址。
  • dhcp-option=28,10.0.0.255 – 替换该IP地址为网络广播地址——可选项。
  • dhcp-option=42,0.0.0.0 – 这里放置网络时钟服务器——可选项(0.0.0.0地址表示参考自身)。
  • pxe-prompt – 保持默认——按F8进入菜单,60秒等待时间。
  • pxe=service – 使用x86PC作为32为/64位架构,并在字符串引述中输入菜单描述提示。其它类型值可以是:PC98,IAEFI,Alpha,Arcx86,IntelLeanClient,IA32EFI,BCEFI,XscaleEFI和X86-64EFI。
  • enable-tftp – 启用内建TFTP服务器。
  • tftp-root – 使用/var/lib/tftpboot——所有网络启动文件所在位置。

其它和配置文件相关的高级选项,请参阅dnsmasq手册

步骤2: 安装SYSLINUX启动加载器

4. 在编辑并保存DNSMASQ主配置文件后,我们将继续安装Syslinux PXE启动加载器,命令如下。

# yum install syslinux
Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器
Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器

安装Syslinux启动加载器

5. PXE启动加载器文件位于/usr/share/syslinux系统绝对路径下,你可以通过列出该路径下的内容来查看。该步骤不是必须的,但你可能需要知道该路径,因为在下一步中,我们将拷贝该路径下的所有内容到TFTP服务器路径下。

# ls /usr/share/syslinux
Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器
Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器

Syslinux文件

步骤3: 安装TFTP-Server并加入SYSLINUX加载启动器

6. 现在,让我们进入下一步,安装TFTP-Server。然后,拷贝上述位置中Syslinux包提供所有启动加载器文件到/var/lib/tftpboot路径中,命令如下。

# yum install tftp-server
# cp -r /usr/share/syslinux/* /var/lib/tftpboot
Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器
Linux:RHEL/CentOS 7 中配置 PXE 网络启动服务器

安装TFTP服务器

来源:https://linux.cn/article-4902-1.html

Linux:如何在 Linux 下大量屏蔽恶意 IP 地址

很多情况下,你可能需要在Linux下屏蔽IP地址。比如,作为一个终端用户,你可能想要免受间谍软件或者IP追踪的困扰。或者当你在运行P2P软件时。你可能想要过滤反P2P活动的网络链接。如果你是一名系统管理员,你可能想要禁止垃圾IP地址访问你们的公司邮件服务器。或者你因一些原因想要禁止某些国家访问你的web服务。在许多情况下,然而,你的IP地址屏蔽列表可能会很快地增长到几万的IP。该如何处理这个?

Linux:如何在 Linux 下大量屏蔽恶意 IP 地址
Linux:如何在 Linux 下大量屏蔽恶意 IP 地址

Netfilter/IPtables 的问题

在Linux中,可以很简单地用netfilter/iptables框架禁止IP地址:

$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP

如果你想要完全屏蔽一个IP地址段,你可以用下面的命令很简单地做到:

$ sudo iptables -A INPUT -s 1.1.2.0/24 -p TCP -j DROP

然而,当你有1000个独立IP地址,且不带CIDR(无类别域间路由)前缀,你该怎么做?你要有1000条iptable规则!这显然这并不适于大规模屏蔽。

$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP
$ sudo iptables -A INPUT -s 2.2.2.2 -p TCP -j DROP
$ sudo iptables -A INPUT -s 3.3.3.3 -p TCP -j DROP
. . . .

什么是IP集?

这时候就是IP集登场了。IP集是一个内核特性,它允许多个(独立)IP地址、MAC地址或者甚至是端口号被编码和有效地存储在位图/哈希内核数据结构中。一旦IP集创建之后,你可以创建一条iptables规则来匹配这个集合。

你马上就会看见IP集合的好处了,它可以让你用一条iptable规则匹配多个ip地址!你可以用多个IP地址和端口号的方式来构造IP集,并且可以动态地更新规则而没有性能影响。

在Linux中安装IPset工具

为了创建和管理IP集,你需要使用称为ipset的用户空间工具。

要在Debian、Ubuntu或者Linux Mint上安装:

$ sudo apt-get install ipset

Fedora或者CentOS/RHEL 7上安装:

$ sudo yum install ipset

使用IPset命令禁止IP

让我通过简单的示例告诉你该如何使用ipset命令。

首先,让我们创建一条新的IP集,名为banthis(名字任意):

$ sudo ipset create banthis hash:net

第二个参数(hash:net)是必须的,代表的是集合的类型。IP集有多个类型。hash:net类型的IP集使用哈希来存储多个CIDR块。如果你想要在一个集合中存储单独的IP地址,你可以使用hash:ip类型。

一旦创建了一个IP集之后,你可以用下面的命令来检查:

$ sudo ipset list

这显示了一个可用的IP集合列表,并有包含了集合成员的详细信息。默认上,每个IP集合可以包含65536个元素(这里是CIDR块)。你可以通过追加”maxelem N”选项来增加限制。

$ sudo ipset create banthis hash:net maxelem 1000000

现在让我们来增加IP块到这个集合中:

$ sudo ipset add banthis 1.1.1.1/32
$ sudo ipset add banthis 1.1.2.0/24
$ sudo ipset add banthis 1.1.3.0/24
$ sudo ipset add banthis 1.1.4.10/24

你会看到集合成员已经改变了。

$ sudo ipset list
Linux:如何在 Linux 下大量屏蔽恶意 IP 地址
Linux:如何在 Linux 下大量屏蔽恶意 IP 地址

现在是时候去创建一个使用IP集的iptables规则了。这里的关键是使用”-m set –match-set “选项。

现在让我们创建一条让之前那些IP块不能通过80端口访问web服务的iptable规则。可以通过下面的命令:

$ sudo iptables -I INPUT -m set --match-set banthis src -p tcp --destination-port 80 -j DROP

如果你愿意,你可以保存特定的IP集到一个文件中,以后可以从文件中还原:

$ sudo ipset save banthis -f banthis.txt
$ sudo ipset destroy banthis
$ sudo ipset restore -f banthis.txt

上面的命令中,我使用了destory选项来删除一个已有的IP集来看看我是否可以还原它。

自动IP地址禁用

现在你应该看到了IP集合的强大了。维护IP黑名单是一件繁琐和费时的工作。实际上,有很多免费或者收费的服务可以来帮你完成这个。一个额外的好处是,让我们看看如何自动将IP黑名单加到IP集中。

首先让我们从iblocklist.com得到免费的黑名单,这个网站有不同的免费和收费的名单。免费的版本是P2P格式。

接下来我要使用一个名为iblocklist2ipset的开源Python工具来将P2P格式的黑名单转化成IP集。

首先,你需要安装了pip(参考这个指导来安装pip)。

使用的下面命令安装iblocklist2ipset。

$ sudo pip install iblocklist2ipset

在一些发行版如Fedora,你可能需要运行:

$ sudo python-pip install iblocklist2ipset

现在到iblocklist.com,抓取任何一个P2P列表的URL(比如”level1″列表)。

Linux:如何在 Linux 下大量屏蔽恶意 IP 地址
Linux:如何在 Linux 下大量屏蔽恶意 IP 地址

粘帖URL到下面的命令中。

$ iblocklist2ipset generate
--ipset banthis "http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz"
> banthis.txt

上面的命令运行之后,你会得到一个名为banthis.txt的文件。如果查看它的内容,你会看到像这些:

create banthis hash:net family inet hashsize 131072 maxelem 237302
add banthis 1.2.4.0/24
add banthis 1.2.8.0/24
add banthis 1.9.75.8/32
add banthis 1.9.96.105/32
add banthis 1.9.102.251/32
add banthis 1.9.189.65/32
add banthis 1.16.0.0/14

你可以用下面的ipset命令来加载这个文件:

$ sudo ipset restore -f banthis.txt

现在可以查看自动创建的IP集:

$ sudo ipset list banthis

在写这篇文章时候,“level1”类表包含了237,000个屏蔽的IP列表。你可以看到很多IP地址已经加入到IP集中了。

最后,创建一条iptables命令来屏蔽这些坏蛋!

总结

这篇文章中,我描述了你该如何用强大的ipset来屏蔽不想要的IP地址。同时结合了第三方工具iblocklist2ipset,这样你就可以流畅地维护你的IP屏蔽列表了。那些对ipset的性能提升好奇的人,下图显示了iptables在使用和不使用ipset的基准测试结果(注意时间坐标轴)。

Linux:如何在 Linux 下大量屏蔽恶意 IP 地址
Linux:如何在 Linux 下大量屏蔽恶意 IP 地址

告诉我你多么喜欢这个。:-)


via: http://xmodulo.com/block-unwanted-ip-addresses-linux.html

作者:Dan Nanni 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4904-1.html

Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境

本教程将指引你添加Ubuntu 14.10 Server, Ubuntu 14.04 ServerDebian 7 Wheezy发行版到RHEL/CentOS 7的PXE网络启动环境中。

Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境
Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境

添加Ubuntu和Debian到PXE网络

虽然对于本教程,我只会演示怎样来添加64位网络安装镜像,但对于Ubuntu或者Debian的32位系统,或者其它架构的镜像,操作步骤也基本相同。同时,就我而言,我会解释添加Ubuntu 32位源的方法,但不会演示配置。

从PXE服务器安装 Ubuntu或者Debian要求你的客户机必须激活网络连接,最好是使用DHCP通过NAT来进行动态分配地址。以便安装器拉取所需的包并完成安装过程。

前置阅读

步骤 1: 添加Ubuntu 14.10和Ubuntu 14.04服务器到PXE菜单

1. 要将Ubuntu 14.10Ubuntu 14.04添加网络安装源到PXE菜单可以通过两种方式实现:其一是通过下载Ubuntu CD ISO镜像并挂载到PXE服务器机器上,以便可以读取Ubuntu网络启动文件,其二是通过直接下载Ubuntu网络启动归档包并将其解压缩到系统中。下面,我将进一步讨论这两种方法:

使用Ubuntu 14.10和Ubuntu 14.04 CD ISO镜像

为了能使用此方法,你的PXE服务器需要有一台可工作的CD/DVD驱动器(LCTT 译注:也可以不用,参考下面内容)。在一台专用的计算机上,转到Ubuntu 14.10下载Ubuntu 14.04 下载页,获取64位服务器安装镜像,将它烧录到CD,并将CD镜像放到PXE服务器DVD/CD驱动器,然后使用以下命令挂载到系统。

# mount /dev/cdrom  /mnt

如果你的PXE服务器没有CD/DVD驱动器,你可以使用wget命令下载Ubuntu 14.10Ubuntu 14.04的ISO镜像到本地,然后通过下面的命令(下载并挂载CD)挂载到服务器上上述相同位置。

在Ubuntu 14.10上

------------------ 32位 ------------------
# wget http://releases.ubuntu.com/14.10/ubuntu-14.10-server-i386.iso
# mount -o loop /path/to/ubuntu-14.10-server-i386.iso /mnt

------------------ 64位 ------------------
# wget http://releases.ubuntu.com/14.10/ubuntu-14.10-server-amd64.iso
# mount -o loop /path/to/ubuntu-14.10-server-amd64.iso /mnt

在Ubuntu 14.04上

------------------ 32位 ------------------
# wget http://releases.ubuntu.com/14.04/ubuntu-14.04.1-server-i386.iso
# mount -o loop /path/to/ubuntu-14.04.1-server-i386.iso /mnt

------------------ 64位 ------------------
# wget http://releases.ubuntu.com/14.04/ubuntu-14.04.1-server-amd64.iso
# mount -o loop /path/to/ubuntu-14.04.1-server-amd64.iso /mnt

使用Ubuntu 14.10和Ubuntu 14.04网络启动镜像

对于该方法,使用以下命令下载Ubuntu网络启动镜像到PXE服务器。

在Ubuntu 14.04上

------------------ 32位 ------------------
# cd
# wget http://archive.ubuntu.com/ubuntu/dists/utopic/main/installer-i386/current/images/netboot/netboot.tar.gz

------------------ 64位 ------------------
# cd
# http://archive.ubuntu.com/ubuntu/dists/utopic/main/installer-amd64/current/images/netboot/netboot.tar.gz

在Ubuntu 14.04上

------------------ 32位 ------------------
# cd
# wget http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-i386/current/images/netboot/netboot.tar.gz

------------------ 64位 ------------------
# cd
# wget http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-amd64/current/images/netboot/netboot.tar.gz

对于其它处理器架构,请访问下面的Ubuntu 14.10和Ubuntu 14.04网络启动官方页面,选择你的架构类型并下载所需文件。

2. 在下载完ISO镜像网络启动安装器归档包后,通过执行以下命令拷贝整个ubuntu-installer文件夹到PXE tftp服务器位置。

A). 对于两种CD ISO镜像(32位64位),在挂载特定架构的CD到PXE服务器/mnt系统路径后,请使用以下命令。

# cp -fr /mnt/install/netboot/ubuntu-installer/ /var/lib/tftpboot/

B). 对于网络启动归档,根据特定的Ubuntu架构,请运行以下命令。

# cd
# tar xfz netboot.tar.gz
# cp -rf ubuntu-installer/ /var/lib/tftpboot/

如果你想要在PXE服务器上同时使用两种Ubuntu服务器架构,先请下载,然后根据不同的情况挂载或解压缩32位架构,然后拷贝ubuntu-installer目录到/var/lib/tftpboot,然后卸载CD或删除网络启动归档以及解压缩的文件和文件夹。对于64位架构,请重复上述步骤,以便让最终的tftp路径形成以下结构。

/var/lib/tftpboot/ubuntu-installer/amd64
/var/lib/tftpboot/ubuntu-installer/i386

3. 在接下来的步骤,通过执行以下命令添加Ubuntu 14.10Ubuntu 14.04菜单标签到PXE服务器默认配置文件中。

重要:我不可能同时演示两个Ubuntu版本的操作,出于演示的目的,我添加了Ubuntu 14.04菜单标签到PXE服务器,下述同样的操作也可应用到Ubuntu 14.10,只需对版本号稍作修改,仅仅只要根据你的Ubuntu版本修改版本号和到OS架构的路径。

在你最喜爱的文本编辑器的帮助下,打开PXE默认配置文件,而我偏好nano编辑器。

# nano /var/lib/tftpboot/pxelinux.cfg/default

接下来,添加以下配置到PXE菜单。

对于Ubuntu 14.04 32位

label 1
menu label ^1) Install Ubuntu 14.04 x32
        kernel ubuntu-installer/i386/linux
        append vga=788 initrd=ubuntu-installer/i386/initrd.gz -- quiet
label 2
menu label ^2) Ubuntu 14.04 Rescue Mode x32
        kernel ubuntu-installer/i386/linux
        append vga=788 initrd=ubuntu-installer/i386/initrd.gz rescue/enable=true -- quiet

对于Ubuntu 14.04 64位

label 5
menu label ^5) Install Ubuntu 14.04 x64
        kernel ubuntu-installer/amd64/linux
        append vga=788 initrd=ubuntu-installer/amd64/initrd.gz -- quiet
label 5
menu label ^6) Ubuntu 14.04 Rescue Mode
        kernel ubuntu-installer/amd64/linux
        append vga=788 initrd=ubuntu-installer/amd64/initrd.gz rescue/enable=true -- quiet

Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境
Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境
添加Ubuntu到PXE启动

:如果你想要包含其它Ubuntu架构,请遵循以上相同的操作,并相应替换PXE默认菜单配置文件中的标签号和ubuntu-installer/$architecture_name/目录。

4. 在配置完PXE菜单配置文件后,根据采用的方法清除源文件,并继续进行客户端PXE安装以测试配置是否正确。

---------------------- 对于CD/DVD方法 ----------------------
# umount /mnt

---------------------- 对于网络启动方法 ----------------------
# cd && rm -rf ubuntu-installer/netboot.tar.gz pxelinux.* version.info

下面是Ubuntu 14.04PXE客户端安装测试的截图。

Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境
Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境

从PXE菜单选择Ubuntu

Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境
Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境

选择Ubuntu安装语言

Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境
Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境

选择Ubuntu救援模式

Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境
Linux:添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境

Ubuntu救援模式Shell

来源:https://linux.cn/article-4903-1.html

Linux:Linux有问必答:如何在Linux下重命名多个文件

提问:我知道我可以用mv命令重命名文件。但是当我想重命名很多文件怎么办?如果为每个文件都这么做将会是很乏味的。有没有办法一次性重命名多个文件?

在Linux中,当你想要改变一个文件名,使用mv命令就好了。然而mv不能使用通配符重命名多个文件。可以用sed、awk或者与xargs结合使用来处理多个文件的情况。然而,这些命令行即繁琐又不友好,并且如果不小心的话还很容易出错。你不会想要撤销1000个文件的错误名吧!

当你想要重命名多个文件的时候,rename 工具或许是最简单、最安全和最强大的命令行工具。这个rename命令实际上是一个Perl脚本,它预安装在所有的现在Linux发行版上。

Linux:Linux有问必答:如何在Linux下重命名多个文件
Linux:Linux有问必答:如何在Linux下重命名多个文件

下面是重命名命令的基本语法。

rename [-v -n -f]  

是Perl兼容正则表达式,它表示的是要重命名的文件和该怎么做。正则表达式的形式是‘s/old-name/new-name/’。

‘-v’选项会显示文件名改变的细节(比如:XXX重命名成YYY)。

‘-n’选项告诉rename命令在不实际改变名称的情况下显示文件将会重命名的情况。这个选项在你想要在不改变文件名的情况下模拟改变文件名的情况下很有用。

‘-f’选项强制覆盖存在的文件。

下面,就让我们看下rename命令的几个实际例子。

改变文件扩展名

假设你有许多.jpeg的图片文件。你想要把它们的名字改成.jpg。下面的命令就会将.jpeg 文件改成 *.jpg。

$ rename 's/.jpeg$/.jpg/' *.jpeg

大写改成小写,反之亦然

有时你想要改变文件名的大小写,你可以使用下面的命令。

把所有的文件改成小写:

# rename 'y/A-Z/a-z/' *

把所有的文件改成大写:

# rename 'y/a-z/A-Z/' *
Linux:Linux有问必答:如何在Linux下重命名多个文件
Linux:Linux有问必答:如何在Linux下重命名多个文件

更改文件名模式

现在让我们考虑更复杂的包含子模式的正则表达式。在PCRE中,子模式包含在圆括号中,$符后接上数字(比如$1,$2)。

比如,下面的命令会将‘imgNNNN.jpeg’变成‘danNNNN.jpg’。

# rename -v 's/img_(d{4}).jpeg$/dan_$1.jpg/' *.jpeg

img_5417.jpeg renamed as dan_5417.jpg
img_5418.jpeg renamed as dan_5418.jpg
img_5419.jpeg renamed as dan_5419.jpg
img_5420.jpeg renamed as dan_5420.jpg
img_5421.jpeg renamed as dan_5421.jpg

比如,下面的命令会将‘img_000NNNN.jpeg’变成‘dan_NNNN.jpg’。

# rename -v 's/img_d{3}(d{4}).jpeg$/dan_$1.jpg/' *jpeg

img_0005417.jpeg renamed as dan_5417.jpg
img_0005418.jpeg renamed as dan_5418.jpg
img_0005419.jpeg renamed as dan_5419.jpg
img_0005420.jpeg renamed as dan_5420.jpg
img_0005421.jpeg renamed as dan_5421.jpg

上面的例子中,子模式‘d{4}’会捕捉4个连续的数字,捕捉的四个数字就是$1, 将会用于新的文件名。


via: http://ask.xmodulo.com/rename-multiple-files-linux.html

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4905-1.html

Linux:Auditd – Linux 服务器安全审计工具

首先,Linux中国祝贺读者 2015羊年春节快乐,万事如意! 。下面开始这个新年版审计工具的介绍。

安全防护是首先要考虑的问题。为了避免别人盗取我们的数据,我们需要时刻关注它。安全防护包括很多东西,审计是其中之一。

我们知道Linux系统上有一个叫 auditd 的审计工具。这个工具在大多数Linux操作系统中是默认安装的。那么auditd 是什么?该如何使用呢?下面我们开始介绍。

Linux:Auditd - Linux 服务器安全审计工具
Linux:Auditd – Linux 服务器安全审计工具

什么是auditd?

auditd(或 auditd 守护进程)是Linux审计系统中用户空间的一个组件,其负责将审计记录写入磁盘。

安装 auditd

Ubuntu系统中,我们可以使用 wajig 工具或者 apt-get 工具 安装auditd。

Linux:Auditd - Linux 服务器安全审计工具
Linux:Auditd – Linux 服务器安全审计工具

按照下面的说明安装auditd,安装完毕后将自动安装以下auditd和相关的工具:

  • auditctl : 即时控制审计守护进程的行为的工具,比如如添加规则等等。
  • /etc/audit/audit.rules : 记录审计规则的文件。
  • aureport : 查看和生成审计报告的工具。
  • ausearch : 查找审计事件的工具
  • auditspd : 转发事件通知给其他应用程序,而不是写入到审计日志文件中。
  • autrace : 一个用于跟踪进程的命令。
  • /etc/audit/auditd.conf : auditd工具的配置文件。

首次安装 auditd 后, 审计规则是空的。

可以使用以下命令查看:

$ sudo auditctl -l

以下我们介绍如何给auditd添加审计规则。

如何使用auditd

Audit 文件和目录访问审计

我们使用审计工具的一个基本的需求是监控文件和目录的更改。使用auditd工具,我们可通过如下命令来配置(注意,以下命令需要root权限)。

文件审计

$ sudo auditctl -w /etc/passwd -p rwxa

选项 :

  • -w path : 指定要监控的路径,上面的命令指定了监控的文件路径 /etc/passwd
  • -p : 指定触发审计的文件/目录的访问权限
  • rwxa : 指定的触发条件,r 读取权限,w 写入权限,x 执行权限,a 属性(attr)

目录审计

使用类似的命令来对目录进行审计,如下:

$ sudo auditctl -w /production/

以上命令将监控对 /production 目录 的所有访问。

现在,运行 auditctl -l 命令即可查看所有已配置的规则。

下面开始介绍审计日志。

查看审计日志

添加规则后,我们可以查看 auditd 的日志。使用 ausearch 工具可以查看auditd日志。

我们已经添加规则监控 /etc/passwd 文件。现在可以使用 ausearch 工具的以下命令来查看审计日志了。

$ sudo ausearch -f /etc/passwd
  • -f 设定ausearch 调出 /etc/passwd文件的审计内容

下面是输出 :

time->Mon Dec 22 09:39:16 2014

type=PATH msg=audit(1419215956.471:194): item=0 name=”/etc/passwd” inode=142512 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL

type=CWD msg=audit(1419215956.471:194): cwd=”/home/pungki”

type=SYSCALL msg=audit(1419215956.471:194): arch=40000003 syscall=5 success=yes exit=3 a0=b779694b a1=80000 a2=1b6 a3=b8776aa8 items=1 ppid=2090 pid=2231 auid=4294967295 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=4294967295 comm=”sudo” exe=”/usr/bin/sudo” key=(null)

下面开始解读输出结果。

  • time : 审计时间。
  • name : 审计对象
  • cwd : 当前路径
  • syscall : 相关的系统调用
  • auid : 审计用户ID
  • uid 和 gid : 访问文件的用户ID和用户组ID
  • comm : 用户访问文件的命令
  • exe : 上面命令的可执行文件路径

以上审计日志显示文件未被改动。

以下我们将要添加一个用户,看看auditd如何记录文件 /etc/passwd的改动的。

time->Mon Dec 22 11:25:23 2014

type=PATH msg=audit(1419222323.628:510): item=1 name=”/etc/passwd.lock” inode=143992 dev=08:01 mode=0100600 ouid=0 ogid=0 rdev=00:00 nametype=DELETE

type=PATH msg=audit(1419222323.628:510): item=0 name=”/etc/” inode=131073 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT

type=CWD msg=audit(1419222323.628:510): cwd=”/root”

type=SYSCALL msg=audit(1419222323.628:510): arch=40000003 syscall=10 success=yes exit=0 a0=bfc0ceec a1=0 a2=bfc0ceec a3=897764c items=2 ppid=2978 pid=2994 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm=”chfn” exe=”/usr/bin/chfn” key=(null)

我们可以看到,在指定的时间,/etc/passwd ** 被root用户(uid =0, gid=0)在/root目录下修改。/etc/passwd 文件是使用/usr/bin/chfn** 访问的。

键入 man chfn 可以查看有关chfn更多的信息。

下面我们看另外一个例子。

我们已经配置auditd去监控目录 /production/ 了。这是个新目录。所以我们用ausearch去查看日志的时候会发现什么都没有。

下一步,使用root账户的ls命令列出 /production/ 下的文件信息。再次使用ausearch后,将会显示一些信息。

time->Mon Dec 22 14:18:28 2014 type=PATH msg=audit(1419232708.344:527): item=0 name=”/production/” inode=797104 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL type=CWD msg=audit(1419232708.344:527): cwd=”/root” type=SYSCALL msg=audit(1419232708.344:527): arch=40000003 syscall=295 success=yes exit=3 a0=ffffff9c a1=95761e8 a2=98800 a3=0 items=1 ppid=3033 pid=3444 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm=”ls” exe=”/bin/ls” key=(null)

和上一个一样,可以得出root账户使用ls命令访问了/production/目录,ls命令的文件目录是 /bin/ls

查看审计报告

一旦定义审计规则后,它会自动运行。过一段时间后,我们可以看看auditd是如何帮我们跟踪审计的。

Auditd提供了另一个工具叫 aureport 。从名字上可以猜到, aureport 是使用系统审计日志生成简要报告的工具。

我们已经配置auditd去跟踪/etc/passwd文件。auditd参数设置后一段时间后,audit.log 文件就创建出来了。

生成审计报告,我们可以使用aureport工具。不带参数运行的话,可以生成审计活动的概述。

$ sudo aureport
Linux:Auditd - Linux 服务器安全审计工具
Linux:Auditd – Linux 服务器安全审计工具

如上,报告包含了大多数重要区域的信息。

上图可以看出有 3 次授权失败。 使用aureport,我们可以深入查看这些信息。

使用以下命令查看授权失败的详细信息:

$ sudo aureport -au
Linux:Auditd - Linux 服务器安全审计工具
Linux:Auditd – Linux 服务器安全审计工具

从上图可以看出,由两个用户在特定的时间授权失败。

如果我们想看所有账户修改相关的事件,可以使用-m参数。

$ sudo aureport -m

Auditd 配置文件

我们已经添加如下规则:

  • $ sudo auditctl -w /etc/passwd -p rwxa
  • $ sudo auditctl -w /production/

现在,如果确信这些规则可以正常工作,我们可以将其添加到/etc/audit/audit.rules中使得规则永久有效。以下介绍如何将他们添加到/etc/audit/audit.rules中去。

Linux:Auditd - Linux 服务器安全审计工具
Linux:Auditd – Linux 服务器安全审计工具

最后,别忘了重启auditd守护程序

# /etc/init.d/auditd restart

# service auditd restart

总结

Auditd是Linux上的一个审计工具。你可以阅读auidtd文档获取更多使用auditd和工具的细节。例如,输入 man auditd 去看auditd的详细说明,或者键入 man ausearch 去看有关 ausearch 工具的详细说明。

请谨慎创建规则。太多规则会使得日志文件急剧增大!


via: http://linoxide.com/how-tos/auditd-tool-security-auditing/

作者:Pungki Arianto 译者:shipsw 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4907-1.html

Linux:大数据常见术语表

大数据的出现带来了许多新的术语,但这些术语往往比较难以理解。因此,我们通过本文给出一个常用的大数据术语表,抛砖引玉,供大家深入了解。其中部分定义参考了相应的博客文章。当然,这份术语表并没有100%包含所有的术语,如果你认为有任何遗漏之处,请告之我们。

Linux:大数据常见术语表
Linux:大数据常见术语表

A

  • 聚合(Aggregation) – 搜索、合并、显示数据的过程
  • 算法(Algorithms) – 可以完成某种数据分析的数学公式
  • 分析法(Analytics) – 用于发现数据的内在涵义
  • 异常检测(Anomaly detection) – 在数据集中搜索与预期模式或行为不匹配的数据项。除了“Anomalies”,用来表示异常的词有以下几种:outliers, exceptions, surprises, contaminants.他们通常可提供关键的可执行信息
  • 匿名化(Anonymization) – 使数据匿名,即移除所有与个人隐私相关的数据
  • 应用(Application) – 实现某种特定功能的计算机软件
  • 人工智能(Artificial Intelligence) – 研发智能机器和智能软件,这些智能设备能够感知周遭的环境,并根据要求作出相应的反应,甚至能自我学习

B

  • 行为分析法(Behavioural Analytics) – 这种分析法是根据用户的行为如“怎么做”,“为什么这么做”,以及“做了什么”来得出结论,而不是仅仅针对人物和时间的一门分析学科,它着眼于数据中的人性化模式
  • 大数据科学家(Big Data Scientist) – 能够设计大数据算法使得大数据变得有用的人
  • 大数据创业公司(Big data startup) – 指研发最新大数据技术的新兴公司
  • 生物测定术(Biometrics) – 根据个人的特征进行身份识别
  • B字节 (BB: Brontobytes) – 约等于1000 YB(Yottabytes),相当于未来数字化宇宙的大小。1 B字节包含了27个0!
  • 商业智能(Business Intelligence) – 是一系列理论、方法学和过程,使得数据更容易被理解

C

  • 分类分析(Classification analysis) – 从数据中获得重要的相关性信息的系统化过程; 这类数据也被称为元数据(meta data),是描述数据的数据
  • 云计算(Cloud computing) – 构建在网络上的分布式计算系统,数据是存储于机房外的(即云端)
  • 聚类分析(Clustering analysis) – 它是将相似的对象聚合在一起,每类相似的对象组合成一个聚类(也叫作簇)的过程。这种分析方法的目的在于分析数据间的差异和相似性
  • 冷数据存储(Cold data storage) – 在低功耗服务器上存储那些几乎不被使用的旧数据。但这些数据检索起来将会很耗时
  • 对比分析(Comparative analysis) – 在非常大的数据集中进行模式匹配时,进行一步步的对比和计算过程得到分析结果
  • 复杂结构的数据(Complex structured data) – 由两个或多个复杂而相互关联部分组成的数据,这类数据不能简单地由结构化查询语言或工具(SQL)解析
  • 计算机产生的数据(Computer generated data) – 如日志文件这类由计算机生成的数据
  • 并发(Concurrency) – 同时执行多个任务或运行多个进程
  • 相关性分析(Correlation analysis) – 是一种数据分析方法,用于分析变量之间是否存在正相关,或者负相关
  • 客户关系管理(CRM: Customer Relationship Management) – 用于管理销售、业务过程的一种技术,大数据将影响公司的客户关系管理的策略

D

  • 仪表板(Dashboard) – 使用算法分析数据,并将结果用图表方式显示于仪表板中
  • 数据聚合工具(Data aggregation tools) – 将分散于众多数据源的数据转化成一个全新数据源的过程
  • 数据分析师(Data analyst) – 从事数据分析、建模、清理、处理的专业人员
  • 数据库(Database) – 一个以某种特定的技术来存储数据集合的仓库
  • 数据库即服务(Database-as-a-Service) – 部署在云端的数据库,即用即付,例如亚马逊云服务(AWS: Amazon Web Services)
  • 数据库管理系统(DBMS: Database Management System) – 收集、存储数据,并提供数据的访问
  • 数据中心(Data centre) – 一个实体地点,放置了用来存储数据的服务器
  • 数据清洗(Data cleansing) – 对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性
  • 数据管理员(Data custodian) – 负责维护数据存储所需技术环境的专业技术人员
  • 数据道德准则(Data ethical guidelines) – 这些准则有助于组织机构使其数据透明化,保证数据的简洁、安全及隐私
  • 数据订阅(Data feed) – 一种数据流,例如Twitter订阅和RSS
  • 数据集市(Data marketplace) – 进行数据集买卖的在线交易场所
  • 数据挖掘(Data mining) – 从数据集中发掘特定模式或信息的过程
  • 数据建模(Data modelling) – 使用数据建模技术来分析数据对象,以此洞悉数据的内在涵义
  • 数据集(Data set) – 大量数据的集合
  • 数据虚拟化(Data virtualization) – 数据整合的过程,以此获得更多的数据信息,这个过程通常会引入其他技术,例如数据库,应用程序,文件系统,网页技术,大数据技术等等
  • 去身份识别(De-identification) – 也称为匿名化(anonymization),确保个人不会通过数据被识别
  • 判别分析(Discriminant analysis) – 将数据分类;按不同的分类方式,可将数据分配到不同的群组,类别或者目录。是一种统计分析法,可以对数据中某些群组或集群的已知信息进行分析,并从中获取分类规则。
  • 分布式文件系统(Distributed File System) – 提供简化的,高可用的方式来存储、分析、处理数据的系统
  • 文件存贮数据库(Document Store Databases) – 又称为文档数据库(document-oriented database), 为存储、管理、恢复文档数据而专门设计的数据库,这类文档数据也称为半结构化数据

E

  • 探索性分析(Exploratory analysis) – 在没有标准的流程或方法的情况下从数据中发掘模式。是一种发掘数据和数据集主要特性的一种方法
  • E字节(EB: Exabytes) – 约等于1000 PB(petabytes), 约等于1百万 GB。如今全球每天所制造的新信息量大约为1 EB
  • 提取-转换-加载(ETL: Extract, Transform and Load) – 是一种用于数据库或者数据仓库的处理过程。即从各种不同的数据源提取(E)数据,并转换(T)成能满足业务需要的数据,最后将其加载(L)到数据库

F

  • 故障切换(Failover) – 当系统中某个服务器发生故障时,能自动地将运行任务切换到另一个可用服务器或节点上
  • 容错设计(Fault-tolerant design) – 一个支持容错设计的系统应该能够做到当某一部分出现故障也能继续运行

G

  • 游戏化(Gamification) – 在其他非游戏领域中运用游戏的思维和机制,这种方法可以以一种十分友好的方式进行数据的创建和侦测,非常有效。
  • 图形数据库(Graph Databases) – 运用图形结构(例如,一组有限的有序对,或者某种实体)来存储数据,这种图形存储结构包括边缘、属性和节点。它提供了相邻节点间的自由索引功能,也就是说,数据库中每个元素间都与其他相邻元素直接关联。
  • 网格计算(Grid computing) – 将许多分布在不同地点的计算机连接在一起,用以处理某个特定问题,通常是通过云将计算机相连在一起。

H

  • Hadoop – 一个开源的分布式系统基础框架,可用于开发分布式程序,进行大数据的运算与存储。
  • Hadoop数据库(HBase) – 一个开源的、非关系型、分布式数据库,与Hadoop框架共同使用
  • HDFS – Hadoop分布式文件系统(Hadoop Distributed File System);是一个被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统
  • 高性能计算(HPC: High-Performance-Computing) – 使用超级计算机来解决极其复杂的计算问题

I

  • 内存数据库(IMDB: In-memory) – 一种数据库管理系统,与普通数据库管理系统不同之处在于,它用主存来存储数据,而非硬盘。其特点在于能高速地进行数据的处理和存取。
  • 物联网(Internet of Things) – 在普通的设备中装上传感器,使这些设备能够在任何时间任何地点与网络相连。

J

  • 法律上的数据一致性(Juridical data compliance) – 当你使用的云计算解决方案,将你的数据存储于不同的国家或不同的大陆时,就会与这个概念扯上关系了。你需要留意这些存储在不同国家的数据是否符合当地的法律。

K

  • 键值数据库(KeyValue Databases) – 数据的存储方式是使用一个特定的键,指向一个特定的数据记录,这种方式使得数据的查找更加方便快捷。键值数据库中所存的数据通常为编程语言中基本数据类型的数据。

L

  • 延迟(Latency) – 表示系统时间的延迟
  • 遗留系统(Legacy system) – 是一种旧的应用程序,或是旧的技术,或是旧的计算系统,现在已经不再支持了。
  • 负载均衡(Load balancing) – 将工作量分配到多台电脑或服务器上,以获得最优结果和最大的系统利用率。
  • 位置信息(Location data) – GPS信息,即地理位置信息。
  • 日志文件(Log file) – 由计算机系统自动生成的文件,记录系统的运行过程。

M

  • M2M数据(Machine2Machine data) – 两台或多台机器间交流与传输的内容
  • 机器数据(Machine data) – 由传感器或算法在机器上产生的数据
  • 机器学习(Machine learning) – 人工智能的一部分,指的是机器能够从它们所完成的任务中进行自我学习,通过长期的累积实现自我改进。
  • MapReduce – 是处理大规模数据的一种软件框架(Map: 映射,Reduce: 归纳)。
  • 大规模并行处理(MPP: Massively Parallel Processing) – 同时使用多个处理器(或多台计算机)处理同一个计算任务。
  • 元数据(Metadata) – 被称为描述数据的数据,即描述数据数据属性(数据是什么)的信息。
  • MongoDB – 一种开源的非关系型数据库(NoSQL database)
  • 多维数据库(Multi-Dimensional Databases) – 用于优化数据联机分析处理(OLAP)程序,优化数据仓库的一种数据库。
  • 多值数据库(MultiValue Databases) – 是一种非关系型数据库(NoSQL), 一种特殊的多维数据库:能处理3个维度的数据。主要针对非常长的字符串,能够完美地处理HTML和XML中的字串。

N

  • 自然语言处理(Natural Language Processing) – 是计算机科学的一个分支领域,它研究如何实现计算机与人类语言之间的交互。
  • 网络分析(Network analysis) – 分析网络或图论中节点间的关系,即分析网络中节点间的连接和强度关系。
  • NewSQL – 一个优雅的、定义良好的数据库系统,比SQL更易学习和使用,比NoSQL更晚提出的新型数据库
  • NoSQL – 顾名思义,就是“不使用SQL”的数据库。这类数据库泛指传统关系型数据库以外的其他类型的数据库。这类数据库有更强的一致性,能处理超大规模和高并发的数据。

O

  • 对象数据库(Object Databases) – (也称为面象对象数据库)以对象的形式存储数据,用于面向对象编程。它不同于关系型数据库和图形数据库,大部分对象数据库都提供一种查询语言,允许使用声明式编程(declarative programming)访问对象.
  • 基于对象图像分析(Object-based Image Analysis) – 数字图像分析方法是对每一个像素的数据进行分析,而基于对象的图像分析方法则只分析相关像素的数据,这些相关像素被称为对象或图像对象。
  • 操作型数据库(Operational Databases) – 这类数据库可以完成一个组织机构的常规操作,对商业运营非常重要,一般使用在线事务处理,允许用户访问 、收集、检索公司内部的具体信息。
  • 优化分析(Optimization analysis) – 在产品设计周期依靠算法来实现的优化过程,在这一过程中,公司可以设计各种各样的产品并测试这些产品是否满足预设值。
  • 本体论(Ontology) – 表示知识本体,用于定义一个领域中的概念集及概念之间的关系的一种哲学思想。(译者注: 数据被提高到哲学的高度,被赋予了世界本体的意义,成为一个独立的客观数据世界)
  • 异常值检测(Outlier detection) – 异常值是指严重偏离一个数据集或一个数据组合总平均值的对象,该对象与数据集中的其他它相去甚远,因此,异常值的出现意味着系统发生问题,需要对此另加分析。

P

  • 模式识别(Pattern Recognition) – 通过算法来识别数据中的模式,并对同一数据源中的新数据作出预测
  • P字节(PB: Petabytes) – 约等于1000 TB(terabytes), 约等于1百万 GB (gigabytes)。欧洲核子研究中心(CERN)大型强子对撞机每秒产生的粒子个数就约为1 PB
  • 平台即服务(PaaS: Platform-as-a-Service) – 为云计算解决方案提供所有必需的基础平台的一种服务
  • 预测分析(Predictive analysis) – 大数据分析方法中最有价值的一种分析方法,这种方法有助于预测个人未来(近期)的行为,例如某人很可能会买某些商品,可能会访问某些网站,做某些事情或者产生某种行为。通过使用各种不同的数据集,例如历史数据,事务数据,社交数据,或者客户的个人信息数据,来识别风险和机遇
  • 隐私(Privacy) – 把具有可识别出个人信息的数据与其他数据分离开,以确保用户隐私。
  • 公共数据(Public data) – 由公共基金创建的公共信息或公共数据集。

Q

  • 数字化自我(Quantified Self) – 使用应用程序跟踪用户一天的一举一动,从而更好地理解其相关的行为
  • 查询(Query) – 查找某个问题答案的相关信息

R

  • 再识别(Re-identification) – 将多个数据集合并在一起,从匿名化的数据中识别出个人信息
  • 回归分析(Regression analysis) – 确定两个变量间的依赖关系。这种方法假设两个变量之间存在单向的因果关系(译者注:自变量,因变量,二者不可互换)
  • RFID – 射频识别; 这种识别技术使用一种无线非接触式射频电磁场传感器来传输数据
  • 实时数据(Real-time data) – 指在几毫秒内被创建、处理、存储、分析并显示的数据
  • 推荐引擎(Recommendation engine) – 推荐引擎算法根据用户之前的购买行为或其他购买行为向用户推荐某种产品
  • 路径分析(Routing analysis) – 针对某种运输方法通过使用多种不同的变量分析从而找到一条最优路径,以达到降低燃料费用,提高效率的目的

S

  • 半结构化数据(Semi-structured data) – 半结构化数据并不具有结构化数据严格的存储结构,但它可以使用标签或其他形式的标记方式以保证数据的层次结构
  • 情感分析(Sentiment Analysis) – 通过算法分析出人们是如何看待某些话题
  • 信号分析(Signal analysis) – 指通过度量随时间或空间变化的物理量来分析产品的性能。特别是使用传感器数据。
  • 相似性搜索(Similarity searches) – 在数据库中查询最相似的对象,这里所说的数据对象可以是任意类型的数据
  • 仿真分析(Simulation analysis) – 仿真是指模拟真实环境中进程或系统的操作。仿真分析可以在仿真时考虑多种不同的变量,确保产品性能达到最优
  • 智能网格(Smart grid) – 是指在能源网中使用传感器实时监控其运行状态,有助于提高效率
  • 软件即服务(SaaS: Software-as-a-Service) – 基于Web的通过浏览器使用的一种应用软件
  • 空间分析(Spatial analysis) – 空间分析法分析地理信息或拓扑信息这类空间数据,从中得出分布在地理空间中的数据的模式和规律
  • SQL – 在关系型数据库中,用于检索数据的一种编程语言
  • 结构化数据(Structured data) -可以组织成行列结构,可识别的数据。这类数据通常是一条记录,或者一个文件,或者是被正确标记过的数据中的某一个字段,并且可以被精确地定位到。

T

  • T字节(TB: Terabytes) – 约等于1000 GB(gigabytes)。1 TB容量可以存储约300小时的高清视频。
  • 时序分析(Time series analysis) – 分析在重复测量时间里获得的定义良好的数据。分析的数据必须是良好定义的,并且要取自相同时间间隔的连续时间点。
  • 拓扑数据分析(Topological Data Analysis) – 拓扑数据分析主要关注三点:复合数据模型、集群的识别、以及数据的统计学意义。
  • 交易数据(Transactional data) – 随时间变化的动态数据
  • 透明性(Transparency) – 消费者想要知道他们的数据有什么作用、被作何处理,而组织机构则把这些信息都透明化了。

U

  • 非结构化数据(Un-structured data) – 非结构化数据一般被认为是大量纯文本数据,其中还可能包含日期,数字和实例。

V

  • 价值(Value) – (译者注:大数据4V特点之一) 所有可用的数据,能为组织机构、社会、消费者创造出巨大的价值。这意味着各大企业及整个产业都将从大数据中获益。
  • 可变性(Variability) – 也就是说,数据的含义总是在(快速)变化的。例如,一个词在相同的推文中可以有完全不同的意思。
  • 多样(Variety) – (译者注:大数据4V特点之一) 数据总是以各种不同的形式呈现,如结构化数据,半结构化数据,非结构化数据,甚至还有复杂结构化数据
  • 高速(Velocity) – (译者注:大数据4V特点之一) 在大数据时代,数据的创建、存储、分析、虚拟化都要求被高速处理。
  • 真实性(Veracity) – 组织机构需要确保数据的真实性,才能保证数据分析的正确性。因此,真实性(Veracity)是指数据的正确性。
  • 可视化(Visualization) – 只有正确的可视化,原始数据才可被投入使用。这里的“可视化”并非普通的图型或饼图,可视化指是的复杂的图表,图表中包含大量的数据信息,但可以被很容易地理解和阅读。
  • 大量(Volume) – (译者注:大数据4V特点之一) 指数据量,范围从Megabytes至Brontobytes

W

  • 天气数据(Weather data) – 是一种重要的开放公共数据来源,如果与其他数据来源合成在一起,可以为相关组织机构提供深入分析的依据

X

  • XML数据库(XML Databases) – XML数据库是一种以XML格式存储数据的数据库。XML数据库通常与面向文档型数据库相关联,开发人员可以对XML数据库的数据进行查询,导出以及按指定的格式序列化

Y

  • Y字节 (Yottabytes) – 约等于1000 ZB (Zettabytes), 约等于250万亿张DVD的数据容量。现今,整个数字化宇宙的数据量为1 YB, 并且将每18年翻一番。

Z

  • Z字节 (ZB: Zettabytes) – 约等于1000 EB (Exabytes), 约等于1百万 TB。据预测,到2016年全球范围内每天网络上通过的信息大约能达到1 ZB。

附:存储容量单位换算表

1 Bit(比特) = Binary Digit8 Bits = 1 Byte(字节)1,000 Bytes = 1 Kilobyte1,000 Kilobytes = 1 Megabyte1,000 Megabytes = 1 Gigabyte1,000 Gigabytes = 1 Terabyte1,000 Terabytes = 1 Petabyte1,000 Petabytes = 1 Exabyte1,000 Exabytes = 1 Zettabyte1,000 Zettabytes = 1 Yottabyte1,000 Yottabytes = 1 Brontobyte1,000 Brontobytes = 1 Geopbyte

来源:http://blog.jobbole.com/84083/

Linux:如果使用32位整型会溢出,那么是否可以使用一个40位结构体代替64位长整型?

问题:

假如说,使用32位的整型会溢出,在不考虑使用长整型的情况下,如果我们只需要表示2的40次方范围内的数,是否可以利用某些40位长的数据类型来表示呢?这样的话,每个整型数就可以节省24位的空间。

如果可以,该怎么做?

需求是:我现在必须处理数以亿计的数字,所以在存储空间上受到了很大的限制。

Linux:如果使用32位整型会溢出,那么是否可以使用一个40位结构体代替64位长整型?
Linux:如果使用32位整型会溢出,那么是否可以使用一个40位结构体代替64位长整型?

回答:

可以是可以,但是……

这种方法的确可行,但这么做通常没什么意义(因为几乎没有程序需要处理多达十亿的数字):

#include  // 不要考虑使用long long类型
struct bad_idea
{
    uint64_t var : 40;
};

在这里,变量var占据40位大小,但是这是以生成代码时拥有非常低的运行效率来换取的(事实证明“非常”二字言过其实了——测试中程序开销仅仅增加了1%到2%,正如下面的测试时间所示),而且这么做通常没什么用。除非你还需要保存一个24位的值(或者是8位、16位的值),这样你皆可以它们放到同一个结构中。不然的话,因为对齐内存地址产生的开销会抵消这么做带来的好处。

在任何情况下,除非你是真的需要保存数以亿计的数字,否则这样做给内存消耗带来的好处是可以忽略不计的(但是为了处理这些位字段的额外代码量是不可忽略的!)。

说明:

在此期间,这个问题已经被更新了,是为了说明实际上确实有需要处理数以亿计数字的情况。假设,采取某些措施来防止因为结构体对齐和填充抵消好处(比如在后24位中存储其它的内容,或者使用多个8位来存储40位),那么这么做就变得有意义了。

如果有十亿个数,每个数都节省三个字节的空间,那么这么做就非常有用了。因为使用更小的空间存储要求更少的内存页,也就会产生更少的cache和TLB不命中和内存缺页(单个缺页会产生数以千万计的指令 [译者注:直译是这样,但语义说不通!])。

尽管上面提到的情况不足以充分利用到剩余的24位(它仅仅使用了40位部分),如果确实在剩余位中放入了有用的数据,那么使用类似下面的方法会使得这种思路就管理内存而言显得非常有用。

struct using_gaps
{
    uint64_t var           : 40;
    uint64_t useful_uint16 : 16;
    uint64_t char_or_bool  : 8;
};

结构体大小和对齐长度等于64位整型的大小,所以只要使用得当就不会浪费空间,比如对一个保存10亿个数的数组使用这个结构(不考虑使用指定编译器的扩展)。如果你不会用到一个8位的值,那么你可以使用一个48位和16位的值(giving a bigger overflow margin)。

或者以牺牲可用性为代价,把8个64位的值放入这样的结构体中(或者使用40和64的组合使得其和满足320)。当然,在这种情况下,通过代码去访问数组结构体中的元素会变得非常麻烦(尽管一种方法是实现一个operator[]在功能上还原线性数组,隐藏结构体的复杂性)。

更新:

我写了一个快速测试工具,只是为了获得位字段的开销(以及伴随位字段引用的重载操作)。由于长度限制将代码发布在gcc.godbolt.org上,在本人64位Win7上的测试结果如下:

运行测试的数组大小为1048576
what       alloc   seq(w)  seq(r)  rand(w)  rand(r)  free
-----------------------------------------------------------
uint32_t    0      2       1       35       35       1
uint64_t    0      3       3       35       35       1
bad40_t     0      5       3       35       35       1
packed40_t  0      7       4       48       49       1
运行测试的数组大小为16777216
what        alloc  seq(w)  seq(r)  rand(w)  rand(r)  free
-----------------------------------------------------------
uint32_t    0      38      14      560      555      8
uint64_t    0      81      22      565      554      17
bad40_t     0      85      25      565      561      16
packed40_t  0      151     75      765      774      16
运行测试的数组大小为134177228
what        alloc  seq(w)  seq(r)  rand(w)  rand(r)  free
-----------------------------------------------------------
uint32_t    0      312     100     4480     4441     65
uint64_t    0      648     172     4482     4490     130
bad40_t     0      682     193     4573     4492     130
packed40_t  0      1164    552     6181     6176     130

我们看到,位字段的额外开销是微不足道的,但是当以友好的方式线性访问数据时伴随位字段引用的操作符重载产生的开销则相当显著(大概有3倍)。在另一方面,随机访问产生的开销则无足轻重。

这些时间表明简单的使用64位整型会更好,因为它们在整体性能上要比位字段好(尽管占用更多的内存),但是显然它们并没有考虑随着数据集增大带来的缺页开销。一旦程序内存超过RAM大小,结果可能就不一样了(未亲自考证)。


via:stackoverflow

作者:DamonMichael Kohne 译者:KayGuoWhu 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4911-1.html

Linux:在Tableau中自定义版块地图

在Tableau的地图报表中有一个‘Filed Map’的类型,可以根据版块来显示数据。 但实际应用中Tableau固有的版块划分可能不是我们想要的,下面介绍如何自定义版块并且用作数据分析。

 

自定义版块

在Tableau中自定义版块是非常容易的。如下图我们把每个点链接起来就是一个多边形的版块

Linux:在Tableau中自定义版块地图
Linux:在Tableau中自定义版块地图

上面的经纬度就不用说了。State 是我们版块的名字。其中Point Order告诉Tableau链接的顺序。 Polygon ID 用来指定各个闭合的区域。如下图,State 都叫Michigan,由两块不连续的区域组成,Polygon ID标识了两个区域。

Linux:在Tableau中自定义版块地图
Linux:在Tableau中自定义版块地图

接下来进入制作步骤

Step 1

双击经纬度,生成地图

image

Linux:在Tableau中自定义版块地图
Linux:在Tableau中自定义版块地图

Setp2

在Analysis菜单中取消Aggregate Measures的勾选,所有坐标都单独标记在了地图上。

image

Linux:在Tableau中自定义版块地图
Linux:在Tableau中自定义版块地图

Step3

Marks 选择 Polygon ,效果看着很丑,因为我们还没告诉Tableau次序

Linux:在Tableau中自定义版块地图
Linux:在Tableau中自定义版块地图

 

Step4

把Polygon ID 拖到 Detail 中,再把Point Order 拖到 Path里面 。这时我们看到版块生成了。

Linux:在Tableau中自定义版块地图
Linux:在Tableau中自定义版块地图

 

根据自定义版块进行分析

我们需要准备两个表。 一个表为版块表,另外一个则是业务表。

板块表

image

业务表

image

我们通过Tableau 链接这两个表,并且用 State字段链接。

接着前面步骤做好之后,直接把相关度量拖过去即可。

Linux:在Tableau中自定义版块地图
Linux:在Tableau中自定义版块地图

来源:http://www.cnblogs.com/haseo/p/4296741.html

Linux:通过 SaltStack 管理服务器配置

Linux:通过 SaltStack 管理服务器配置
Linux:通过 SaltStack 管理服务器配置

我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)。我发现Salt在配置和使用上都要比Puppet简单,当然这只是一家之言,你大可不必介怀。另外一个爱上Salt的理由是,它可以让你从命令行管理服务器配置,比如:

要通过Salt来更新所有服务器,你只需运行以下命令即可

salt '*' pkg.upgrade

安装SaltStack到Linux上

如果你是在CentOS 6/7上安装的话,那么Salt可以通过EPEL仓库获取到。而对于Pi和Ubuntu Linux用户,你可以从这里添加Salt仓库。Salt是基于python的,所以你也可以使用‘pip’来安装,但是你得用yum-utils或是其它包管理器来自己处理它的依赖关系。

Salt采用服务器-客户端模式,服务器端称为领主,而客户端则称为下属。

安装并配置Salt领主

[root@salt-master~]# yum install salt-master

Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用,但我还是建议你将日志配置得更详细点,以方便日后排除故障。

[root@salt-master ~]# vim /etc/salt/master
# 默认是warning,修改如下
log_level: debug
log_level_logfile: debug
[root@salt-master ~]# systemctl start salt-master

安装并配置Salt下属

[root@salt-minion~]#yum install salt-minion
# 添加你的Salt领主的主机名
[root@salt-minion~]#vim /etc/salt/minion
master: salt-master.com
# 启动下属
[root@salt-minion~] systemctl start salt-minion

在启动时,下属客户机会生成一个密钥和一个id。然后,它会连接到Salt领主服务器并验证自己的身份。Salt领主服务器在允许下属客户机下载配置之前,必须接受下属的密钥。

在Salt领主服务器上列出并接受密钥

# 列出所有密钥
[root@salt-master~] salt-key -L
Accepted Keys:
Unaccepted Keys:
minion.com
Rejected Keys:
# 使用id 'minion.com'命令接受密钥
[root@salt-master~]salt-key -a minion.com
[root@salt-master~] salt-key -L
Accepted Keys:
minion.com
Unaccepted Keys:
Rejected Keys:

在接受下属客户机的密钥后,你可以使用‘salt’命令来立即获取信息。

Salt命令行实例

# 检查下属是否启动并运行
[root@salt-master~]  salt 'minion.com' test.ping
minion.com:
    True
# 在下属客户机上运行shell命令
 [root@salt-master~]#  salt 'minion.com' cmd.run 'ls -l'
minion.com:
    total 2988
    -rw-r--r--. 1 root root 1024 Jul 31 08:24 1g.img
    -rw-------. 1 root root     940 Jul 14 15:04 anaconda-ks.cfg
    -rw-r--r--. 1 root root 1024  Aug 14 17:21 test
# 安装/更新所有服务器上的软件
[root@salt-master ~]# salt '*' pkg.install git

salt命令需要一些组件来发送信息,其中之一是下属客户机的id,而另一个是下属客户机上要调用的函数。

在第一个实例中,我使用‘test’模块的‘ping’函数来检查系统是否启动。该函数并不是真的实施一次ping,它仅仅是在下属客户机作出回应时返回‘真’。

‘cmd.run’用于执行远程命令,而‘pkg’模块包含了包管理的函数。本文结尾提供了全部内建模块的列表。

颗粒实例

Salt使用一个名为颗粒(Grains)的界面来获取系统信息。你可以使用颗粒在指定属性的系统上运行命令。

[root@vps4544 ~]# salt -G 'os:Centos' test.ping
minion:
    True

更多颗粒实例,请访问http://docs.saltstack.com/en/latest/topics/targeting/grains.html

来源:https://linux.cn/article-4921-1.html

Linux:使用Mate Tweak配置Mate桌面

Linux:使用Mate Tweak配置Mate桌面
Linux:使用Mate Tweak配置Mate桌面

在Ubuntu中安装Mate桌面是一码事但是你或许想要知道如何配置Mate桌面? 大多数桌面环境都有它们自己的调整工具。比如Unity有Unity Tweak,Gnome有Gnome Tweak,Elementary OS有 Elementary OS Teweak。好消息是Mate桌面也有它自己的调整工具,叫Mate Tweak]2

Mate Tweak是mintDesktop的克隆分支,那是一款Linux Mint的配置工具。

安装Mate Tweak来配置Mate桌面

Mate Tweak可以通过官方的PPA很简单地在Ubuntu和基于Ubuntu的系统中安装。打开终端,输入下面的命令:

sudo add-apt-repository ppa:ubuntu-mate-dev/ppa
sudo apt-get update
sudo apt-get install mate-tweak

你可以控制桌面的显示、按钮的布局和其他界面微调和窗口行为。与Unity和Gnome的调整工具比起来,Mate Tweak没有提供太多的调整选项。比如你还不能用它改变主题,但是至少它提供了一个简单的方法来改变一些配置。我希望它可以在不久的将来提供更多的特性。


via: http://itsfoss.com/configure-mate-desktop-mate-tweak/

作者:Abhishek 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4922-1.html

Linux:Linux 有问必答: 如何在Linux中加入cron任务

提问: 我想在我的Linux中安排一个计划任务,该任务在固定时间周期性地运行。我该如何在Linux中添加一个cron任务?

cron是Linux中默认的计划任务。使用cron,你可以安排一个计划(比如:命令或者shell脚本)周期性地运行或者在指定的分钟、小时、天、周、月等特定时间运行。cron在你安排不同的常规维护任务时是很有用的,比如周期性地备份、日志循环、检查文件系统、监测磁盘空间等等。

Linux:Linux 有问必答: 如何在Linux中加入cron任务
Linux:Linux 有问必答: 如何在Linux中加入cron任务

(题图来自 eagleapex.com)

从命令行中添加cron任务

要添加cron任务,你可以使用称为crontab的命令行工具。

输入下面的命令会创建一个以当前用户运行的新cron任务。

$ crontab -e

如果你想要以其他用户运行cron任务,输入下面的命令。

$ sudo crontab -u  -e

你将会看见一个文本编辑窗口,这里你可以添加或者编辑cron任务。默认使用nono编辑器。

Linux:Linux 有问必答: 如何在Linux中加入cron任务
Linux:Linux 有问必答: 如何在Linux中加入cron任务

每个cron任务的格式如下。

<分钟> <小时> <日> <月> <星期> <命令>

前5个元素定义了任务的计划,最后一个元素是命令或者脚本的完整路径。

Linux:Linux 有问必答: 如何在Linux中加入cron任务
Linux:Linux 有问必答: 如何在Linux中加入cron任务

下面是一些cron任务示例。

  • * * * * * /home/dan/bin/script.sh: 每分钟运行。
  • 0 * * * * /home/dan/bin/script.sh: 每小时运行。
  • 0 0 * * * /home/dan/bin/script.sh: 每天零点运行。
  • 0 9,18 * * * /home/dan/bin/script.sh: 在每天的9AM和6PM运行。
  • 0 9-18 * * * /home/dan/bin/script.sh: 在9AM到6PM的每个小时运行。
  • 0 9-18 * * 1-5 /home/dan/bin/script.sh: 周一到周五的9AM到6PM每小时运行。
  • */10 * * * * /home/dan/bin/script.sh: 每10分钟运行。

一旦完成上面的设置步骤后,按下Ctrl+X来保存并退出编辑器。此时,新增的计划任务应该已经激活了。

要查看存在的计划任务,使用下面的命令:

$ crontab -l

从GUI添加计划任务

如果你在Linux桌面环境中,你可以使用crontab的更加友好的GUI前端来添加或者添加一个cron任务。

在Gnome桌面中,有一个Gnome Schedule(gnome-schedule包)。

Linux:Linux 有问必答: 如何在Linux中加入cron任务
Linux:Linux 有问必答: 如何在Linux中加入cron任务

在KDE桌面中,有一个Task Scheduler(kcron包)。

Linux:Linux 有问必答: 如何在Linux中加入cron任务
Linux:Linux 有问必答: 如何在Linux中加入cron任务

via: http://ask.xmodulo.com/add-cron-job-linux.html

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4924-1.html

Linux:如何在RedHat/CentOS 7.x中使用nmcli管理网络

Red Hat Enterprise Linux 7CentOS 7的一个新特性是默认的网络服务由NetworkManager提供,这是一个动态的网络控制和配置守护进程,它在网络设备和连接可用时保持链接正常,同时也提供了典型的ifcfg类型的配置文件。NetworkManager可以用于下面这些连接:Ethernet、 VLANs、桥接、Bonds、Teams、 Wi-Fi、 移动宽带 (比如 3G)和IP-over-InfiniBand(IPoIB)。

NetworkManager可以由命令行工具nmcli控制。

Linux:如何在RedHat/CentOS 7.x中使用nmcli管理网络
Linux:如何在RedHat/CentOS 7.x中使用nmcli管理网络

nmcli的通常用法

nmcli的通常语法是:

# nmcli [ OPTIONS ] OBJECT { COMMAND | help }

一件很酷的事情是你可以使用tab键来补全操作,这样你在何时忘记了语法你都可以按下tab来看到可用的选项了。

nmcli tab

nmcli通常用法的一些例子:

# nmcli general status

会显示NetworkManager的整体状态。

# nmcli connection show

会显示所有的连接

# nmcli connection show -a

仅显示活跃的连接

# nmcli device status

显示NetworkManager识别的设备列表和它们当前的状态。

Linux:如何在RedHat/CentOS 7.x中使用nmcli管理网络
Linux:如何在RedHat/CentOS 7.x中使用nmcli管理网络

启动/停止网络设备

你可以使用nmcli从命令行启动或者停止网络设备,这等同于ifconfig中的up和down。

停止网络设备使用下面的语法:

# nmcli device disconnect eno16777736

要启动它使用下面的语法:

# nmcli device connect eno16777736

添加一个使用静态IP的以太网连接

要用静态IP添加一个以太网连接可以使用下面的命令:

# nmcli connection add type ethernet con-name NAME_OF_CONNECTION ifname INTERFACE-NAME ip4 IP_ADDRESS gw4 GW_ADDRESS

将NAMEOFCONNECTION替换成新的连接名(LCTT 译注:这个名字以后可以用来对其操作,可以使用任何简单明了的名称),INTERFACE-NAME 替换成你的接口名,IPADDRESS替换成你要的IP地址,GWADDRESS替换成你使用的网关地址(如果你并不使用网关,你可以忽略这部分)。

# nmcli connection add type ethernet con-name NEW_STATIC ifname eno16777736 ip4 192.168.1.141 gw4 192.168.1.1

要设置这个连接所使用的DNS服务器使用下面的命令:

# nmcli connection modify NEW_STATIC ipv4.dns "8.8.8.8 8.8.4.4"

要启用新的以太网连接,使用下面的命令:

# nmcli connection up NEW_STATIC ifname eno16777736

要查看新配置连接的详细信息,使用下面的命令:

# nmcli -p connection show NEW_STATIC
Linux:如何在RedHat/CentOS 7.x中使用nmcli管理网络
Linux:如何在RedHat/CentOS 7.x中使用nmcli管理网络

添加一个使用DHCP的连接

如果你想要添加一个使用DHCP来配置接口IP地址、网关地址和dns服务器地址的新的连接,你要做的就是忽略上述命令中的ip/gw部分,NetworkManager会自动使用DHCP来获取配置细节。

比如,要创建一个新的叫NEW_DHCP的DHCP连接,在设备eno16777736上你可以使用下面的命令:

# nmcli connection add type ethernet con-name NEW_DHCP ifname eno16777736

via: http://linoxide.com/linux-command/nmcli-tool-red-hat-centos-7/

作者:Adrian Dinu 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4925-1.html

Linux:使用 APT-mirror 四步配置 Ubuntu 本地软件仓库

今天,我们将向你展示如何在你的 Ubuntu 个人电脑或 Ubuntu 服务器中,直接通过 Ubuntu 官方软件仓库来配置本地软件仓库。在你的电脑中创建一个本地软件仓库有着许多的好处。假如你有许多电脑需要安装软件 、安全升级和修复补丁,那么配置一个本地软件仓库是一个做这些事情的高效方法。因为,所有需要安装的软件包都可以通过快速的局域网连接从你的本地服务器中下载,这样可以节省你的网络带宽,降低互联网接入的年度开支 …

你可以使用多种工具在你的本地个人电脑或服务器中配置一个 Ubuntu 的本地软件仓库,但在本教程中,我们将为你介绍 APT-Mirror。这里,我们将把默认的镜像包镜像到我们本地的服务器或个人电脑中,并且在你的本地或外置硬盘中,我们至少需要 120 GB 或更多的可用空间才行。 我们可以通过配置一个 HTTPFTP 服务器来与本地系统客户端共享这个软件仓库。

Linux:使用 APT-mirror 四步配置 Ubuntu 本地软件仓库
Linux:使用 APT-mirror 四步配置 Ubuntu 本地软件仓库

我们需要安装 Apache 网络服务器和 APT-Mirror 来使得我们的工作得以开始。下面是配置一个可工作的本地软件仓库的步骤:

1. 安装需要的软件包

我们需要从 Ubuntu 的公共软件包仓库中取得所有的软件包,然后在我们本地的 Ubuntu 服务器硬盘中保存它们。

首先我们安装一个Web 服务器来承载我们的本地软件仓库。这里我们将安装 Apache Web 服务器,但你可以安装任何你中意的 Web 服务器。对于 http 协议,Web 服务器是必须的。假如你需要配置 ftp 协议 及 rsync 协议,你还可以再分别额外安装 FTP 服务器,如 proftpd, vsftpd 等等 和 Rsync 。

$ sudo apt-get install apache2

然后我们需要安装 apt-mirror:

$ sudo apt-get install apt-mirror
Linux:使用 APT-mirror 四步配置 Ubuntu 本地软件仓库
Linux:使用 APT-mirror 四步配置 Ubuntu 本地软件仓库

注: 正如我先前提到的,我们需要至少 120 GB 的可用空间来使得所有的软件包被镜像或下载。

2. 配置 APT-Mirror

现在,在你的硬盘上创建一个目录来保存所有的软件包。例如,我们创建一个名为 /linoxide的目录,我们将在这个目录中保存所有的软件包:

 $ sudo mkdir /linoxide

现在,打开文件 /etc/apt/mirror.list :

 $ sudo nano /etc/apt/mirror.list

复制下面的命令行配置到 mirror.list文件中并按照你的需求进行修改:

############# config ##################
#
set base_path    /linoxide
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch  
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads     20
set _tilde 0
#
############# end config ##############
deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse
clean http://archive.ubuntu.com/ubuntu

注: 你可以将上面的官方镜像服务器网址更改为离你最近的服务器的网址,可以通过访问 Ubuntu Mirror Server来找到这些服务器地址。假如你并不太在意镜像完成的时间,你可以沿用默认的官方镜像服务器网址。

这里,我们将要镜像最新和最大的 Ubuntu LTS 发行版 — 即 Ubuntu 14.04 LTS (Trusty Tahr) — 的软件包仓库,所以在上面的配置中发行版本号为 trusty 。假如我们需要镜像 Saucy 或其他的 Ubuntu 发行版本,请修改上面的 trusy 为相应的代号。

现在,我们必须运行 apt-mirror 来下载或镜像官方仓库中的所有软件包。

sudo apt-mirror

从 Ubuntu 服务器中下载所有的软件包所花费的时间取决于你和镜像服务器之间的网络连接速率和性能。这里我中断了下载,因为我已经下载好了 …

downloading-packages

3.配置网络服务器

为了使得其他的电脑能够访问这个软件仓库,你需要一个Web服务器。你也可以通过 ftp 来完成这件事,但我选择使用一个Web服务器因为在上面的步骤 1 中我提及到使用Web服务器。因此,我们现在要对 Apache 服务器进行配置:

我们将为我们本地的软件仓库目录 建立一个到 Apache 托管目录 — 即 /var/www/ubuntu — 的符号链接。

$ sudo ln -s /linoxide /var/www/ubuntu
$ sudo service apache2 start

上面的命令将允许我们从本地主机(localhost) — 即 http://127.0.0.1(默认情况下) — 浏览我们的镜像软件仓库。

4. 配置客户端

最后,我们需要在其他的电脑中添加软件源,来使得它们可以从我们的电脑中取得软件包或软件仓库。为达到此目的,我们需要编辑 /etc/apt/sources.list 文件并添加下面的命令:

$ sudo nano /etc/apt/sources.list

添加下面的一行到/etc/apt/sources.list中并保存。

deb http://192.168.0.100/ubuntu/ trusty main restricted universe

注: 这里的 192.168.0.100 是我们的服务器电脑的局域网 IP 地址,你需要替换为你的服务器电脑的局域网 IP 地址

$ sudo apt-get update

最终,我们完成了任务。现在,你可以使用sudo apt-get install packagename 命令来从你的本地 Ubuntu 软件仓库中安装所需的软件包,这将会是高速的且消耗很少的带宽。


via: http://linoxide.com/ubuntu-how-to/setup-local-repository-ubuntu/

作者:Arun Pyasi 译者:FSSlc 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4926-1.html

Linux:Linux 双网卡绑定实践

前言

工作中主要以SuSE为主,网络作为整个高可用架构中最重要的环节之一,在物理上一般是双网卡绑定模式,通常使用默认的mode=1(active-backup)作为主备关系。

在最近测试大数据的生产服务器中,考虑到性能优先,所以将绑定模式设置为mode=6(balance-alb),使用负载均衡提高1倍流量。与此同时针对SuSE HA架构由Skybility HA往Corosync/Openais+Pacemaker 的测试过程中,配合网络交换机Port Channel链路聚合采用mode=0(balance-rr ),凭借平衡轮询实现网络中断0丢包。

Linux:Linux 双网卡绑定实践
Linux:Linux 双网卡绑定实践

下文以CentOS为例(Red Hat类似),其它平台双网卡设置都较为简单,SuSE(YaST),AIX(SMIT),Windows(Intel),如果大家有需求可以回复留言,我会在后续更新和补充。

遵循高可用原则,实现失效保护和负载均衡


更新记录

2015年02月09日 – 初稿

阅读原文 – http://wsgzao.github.io/post/bond-network/

扩展阅读


基础配置信息

常用的三种Bond模式

配置过程以mode=6为例,其它7种模式请参考扩展阅读

mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。 mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。 mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。

物理接口

interface IP type
eth0,eth2   两块生产网卡
eth3 10.129.46.19 私有地址
bond0 10.3.3.214 双网卡绑定地址

CentOS版本

datanode01:~>cat /etc/redhat-release
CentOS release 6.4 (Final)

禁用NetworkManager

#立即关闭禁用NetworkManager并禁用开机自启动
/etc/init.d/NetworkManager stop
chkconfig NetworkManager off
/etc/init.d/network restart

关闭iptables和selinux(可选)

#立即关闭iptables并禁用开机自启动
/etc/init.d/iptables stop
chkconfig iptables off
#立即关闭selinux并永久禁用
setenforce 0
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config

修改主机名

vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=namenode01
#刷新生效
hostname namnode01
source /etc/sysconfig/network

配置IP

私有地址

cd /etc/sysconfig/network-scripts
[root@datanode09 network-scripts]# cat ifcfg-eth3
DEVICE=eth3
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.129.46.19
NETMASK=255.255.255.0
IPV6INIT=no
USERCTL=no

双网卡绑定

cd /etc/sysconfig/network-scripts
#编辑eth0
cat > ifcfg-eth0 << EOF
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
EOF
#编辑eth2
cat > ifcfg-eth2 << EOF
DEVICE=eth2
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
EOF
#编辑bond0
cat > ifcfg-bond0 << EOF
DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.3.3.214
NETMASK=255.255.255.0
GATEWAY=10.3.3.1
IPV6INIT=no
USERCTL=no
EOF
#设置bond参数,注意mode选择
cat > /etc/modprobe.conf << EOF
alias bond0 bonding
options bond0 miimon=100 mode=6
EOF
#加入开机自启动参数
cat >> /etc/rc.local << EOF
ifenslave bond0 eth0 eth2
EOF
#重启网卡
service network restart
#使绑定网卡立即生效
ifenslave bond0 eth0 eth2
#测试绑定网络
ping 10.3.3.1

常用3种网卡绑定模式对比

mode=0

中断任意一条链路或恢复链路,网络0丢包

优点:流量提高1倍

缺点:需要接入同一交换机做聚合配置,无法保证物理交换机高可用(Cisco似乎有解决方案?)

mode=1

中断任意一条链路丢失1-3个包(秒),恢复链路时0丢包

优点:交换机无需配置

缺点:如上

mode=6

中断任意一条链路0丢包,恢复链路时丢失10-15个包(秒)

优点:交换机无需配置,流量提高1倍

缺点:恢复链路时丢包时间过长

来源:http://wsgzao.github.io/post/bond-network/

Linux:Make 命令教程

代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)。

Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目。但是实际上 ,任何只要某个文件有变化,就要重新构建的项目,都可以用Make构建。

本文介绍Make命令的用法,从简单的讲起,不需要任何基础,只要会使用命令行,就能看懂。我的参考资料主要是Isaac Schlueter的《Makefile文件教程》《GNU Make手册》

Linux:Make 命令教程
Linux:Make 命令教程

(题图来自 appstorm.net)

一、Make的概念

Make这个词,英语的意思是”制作”。Make命令直接用了这个意思,就是要做出某个文件。比如,要做出文件a.txt,就可以执行下面的命令。

$ make a.txt

但是,如果你真的输入这条命令,它并不会起作用。因为Make命令本身并不知道,如何做出a.txt,需要有人告诉它,如何调用其他命令完成这个目标。

比如,假设文件 a.txt 依赖于 b.txt 和 c.txt ,是后面两个文件连接(cat命令)的产物。那么,make 需要知道下面的规则。

a.txt: b.txt c.txt
    cat b.txt c.txt > a.txt

也就是说,make a.txt 这条命令的背后,实际上分成两步:第一步,确认 b.txt 和 c.txt 必须已经存在,第二步使用 cat 命令 将这个两个文件合并,输出为新文件。

像这样的规则,都写在一个叫做Makefile的文件中,Make命令依赖这个文件进行构建。Makefile文件也可以写为makefile, 或者用命令行参数指定为其他文件名。

$ make -f rules.txt
# 或者
$ make --file=rules.txt

上面代码指定make命令依据rules.txt文件中的规则,进行构建。

总之,make只是一个根据指定的Shell命令进行构建的工具。它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。

二、Makefile文件的格式

构建规则都写在Makefile文件里面,要学会如何Make命令,就必须学会如何编写Makefile文件。

2.1 概述

Makefile文件由一系列规则(rules)构成。每条规则的形式如下。

 : 
[tab] 

上面第一行冒号前面的部分,叫做”目标”(target),冒号后面的部分叫做”前置条件”(prerequisites);第二行必须由一个tab键起首,后面跟着”命令”(commands)。

“目标”是必需的,不可省略;”前置条件”和”命令”都是可选的,但是两者之中必须至少存在一个。

每条规则就明确两件事:构建目标的前置条件是什么,以及如何构建。下面就详细讲解,每条规则的这三个组成部分。

2.2 目标(target)

一个目标(target)就构成一条规则。目标通常是文件名,指明Make命令所要构建的对象,比如上文的 a.txt 。目标可以是一个文件名,也可以是多个文件名,之间用空格分隔。

除了文件名,目标还可以是某个操作的名字,这称为”伪目标”(phony target)。

clean:
      rm *.o

上面代码的目标是clean,它不是文件名,而是一个操作的名字,属于”伪目标 “,作用是删除对象文件。

$ make  clean

但是,如果当前目录中,正好有一个文件叫做clean,那么这个命令不会执行。因为Make发现clean文件已经存在,就认为没有必要重新构建了,就不会执行指定的rm命令。

为了避免这种情况,可以明确声明clean是”伪目标”,写法如下。

.PHONY: clean
clean:
        rm *.o temp

声明clean是”伪目标”之后,make就不会去检查是否存在一个叫做clean的文件,而是每次运行都执行对应的命令。像.PHONY这样的内置目标名还有不少,可以查看手册

如果Make命令运行时没有指定目标,默认会执行Makefile文件的第一个目标。

$ make

上面代码执行Makefile文件的第一个目标。

2.3 前置条件(prerequisites)

前置条件通常是一组文件名,之间用空格分隔。它指定了”目标”是否重新构建的判断标准:只要有一个前置文件不存在,或者有过更新(前置文件的last-modification时间戳比目标的时间戳新),”目标”就需要重新构建。

result.txt: source.txt
    cp source.txt result.txt

上面代码中,构建 result.txt 的前置条件是 source.txt 。如果当前目录中,source.txt 已经存在,那么make result.txt可以正常运行,否则必须再写一条规则,来生成 source.txt 。

source.txt:
echo "this is the source" > source.txt

上面代码中,source.txt后面没有前置条件,就意味着它跟其他文件都无关,只要这个文件还不存在,每次调用make source.txt,它都会生成。

$ make result.txt
$ make result.txt

上面命令连续执行两次make result.txt。第一次执行会先新建 source.txt,然后再新建 result.txt。第二次执行,Make发现 source.txt 没有变动(时间戳晚于 result.txt),就不会执行任何操作,result.txt 也不会重新生成。

如果需要生成多个文件,往往采用下面的写法。

source: file1 file2 file3

上面代码中,source 是一个伪目标,只有三个前置文件,没有任何对应的命令。

$ make source

执行make source命令后,就会一次性生成 file1,file2,file3 三个文件。这比下面的写法要方便很多。

$ make file1
$ make file2
$ make file3

2.4 命令(commands)

命令(commands)表示如何更新目标文件,由一行或多行的Shell命令组成。它是构建”目标”的具体指令,它的运行结果通常就是生成目标文件。

每行命令之前必须有一个tab键。如果想用其他键,可以用内置变量.RECIPEPREFIX声明。

.RECIPEPREFIX = >
all:
> echo Hello, world

上面代码用.RECIPEPREFIX指定,大于号(>)替代tab键。所以,每一行命令的起首变成了大于号,而不是tab键。

需要注意的是,每行命令在一个单独的shell中执行。这些Shell之间没有继承关系。

var-lost:
    export foo=bar
    echo "foo=[$$foo]"

上面代码执行后(make var-lost),取不到foo的值。因为两行命令在两个不同的进程执行。一个解决办法是将两行命令写在一行,中间用分号分隔。

var-kept:
    export foo=bar; echo "foo=[$$foo]"

另一个解决办法是在换行符前加反斜杠转义。

var-kept:
    export foo=bar;
    echo "foo=[$$foo]"

最后一个方法是加上.ONESHELL:命令。

.ONESHELL:
var-kept:
    export foo=bar;
echo "foo=[$$foo]"

来源:http://www.ruanyifeng.com/blog/2015/02/make.html

Linux:如何在Ubuntu Server 14.04 LTS(Trusty) 上安装Ghost

今天我们将会在Ubuntu Server 14.04 LTS (Trusty)上安装一个博客平台Ghost。

Ghost是一款设计优美的发布平台,很容易使用且对任何人都免费。它是免费的开源软件(FOSS),它的源码在Github上。截至2015年1月(LCTT 译注:原文为2014,应为2015),它的界面很简单还有分析面板。编辑使用的是很便利的分屏显示。

Linux:如何在Ubuntu Server 14.04 LTS(Trusty) 上安装Ghost
Linux:如何在Ubuntu Server 14.04 LTS(Trusty) 上安装Ghost

因此有了这篇步骤明确的在Ubuntu Server上安装Ghost的教程:

1. 升级Ubuntu

第一步是运行Ubuntu软件升级并安装一系列需要的额外包。

sudo apt-get update
sudo apt-get upgrade -y
sudo aptitude install -y build-essential zip vim wget

2. 下载并安装 Node.js 源码

wget http://nodejs.org/dist/node-latest.tar.gz
tar -xzf node-latest.tar.gz
cd node-v*

现在,我们使用下面的命令安装Node.js:

./configure
make
sudo make install

3. 下载并安装Ghost

sudo mkdir -p /var/www/
cd /var/www/
sudo wget https://ghost.org/zip/ghost-latest.zip
sudo unzip -d ghost ghost-latest.zip
cd ghost/
sudo npm install --production

4. 配置Ghost

sudo nano config.example.js

在“Production”字段,将:

host: '127.0.0.1',

修改成

host: '0.0.0.0',

创建Ghost用户

sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost
sudo chown -R ghost:ghost /var/www/ghost/

现在启动Ghost,你需要以“ghost”用户登录。

su - ghost
cd /var/www/ghost/

现在,你已经以“ghost”用户登录,并可启动Ghost:

npm start --production

via: http://linoxide.com/ubuntu-how-to/install-ghost-ubuntu-server-14-04/

作者:Arun Pyasi 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4932-1.html

Linux:apt-get 和 apt-cache 命令实例展示

apt-get和apt-cache是Ubuntu Linux中的命令行下的包管理工具。 apt-get的GUI版本是Synaptic包管理器。本篇中我们会展示apt-get和apt-cache命令的15个不同例子。

Linux:apt-get 和 apt-cache 命令实例展示
Linux:apt-get 和 apt-cache 命令实例展示

示例:1 列出所有可用包

linuxtechi@localhost:~$ apt-cache pkgnames
account-plugin-yahoojp
ceph-fuse
dvd+rw-tools
e3
gnome-commander-data
grub-gfxpayload-lists
gweled
.......................................

示例:2 用关键字搜索包

这个命令在你不确定包名时很有用,只要在apt-cache(LCTT 译注:这里原文是apt-get,应为笔误)后面输入与包相关的关键字即可。

linuxtechi@localhost:~$ apt-cache search "web server"
apache2 - Apache HTTP Server
apache2-bin - Apache HTTP Server (binary files and modules)
apache2-data - Apache HTTP Server (common files)
apache2-dbg - Apache debugging symbols
apache2-dev - Apache HTTP Server (development headers)
apache2-doc - Apache HTTP Server (on-site documentation)
apache2-utils - Apache HTTP Server (utility programs for web servers)
......................................................................

注意: 如果你安装了“apt-file”包,我们就可以像下面那样用配置文件搜索包。

linuxtechi@localhost:~$ apt-file search nagios.cfg
ganglia-nagios-bridge: /usr/share/doc/ganglia-nagios-bridge/nagios.cfg
nagios3-common: /etc/nagios3/nagios.cfg
nagios3-common: /usr/share/doc/nagios3-common/examples/nagios.cfg.gz
pnp4nagios-bin: /etc/pnp4nagios/nagios.cfg
pnp4nagios-bin: /usr/share/doc/pnp4nagios/examples/nagios.cfg

示例:3 显示特定包的基本信息

linuxtechi@localhost:~$ apt-cache show postfix
Package: postfix
Priority: optional
Section: mail
Installed-Size: 3524
Maintainer: LaMont Jones 
Architecture: amd64
Version: 2.11.1-1
Replaces: mail-transport-agent
Provides: default-mta, mail-transport-agent
.....................................................

示例:4 列出包的依赖

linuxtechi@localhost:~$ apt-cache depends postfix
postfix
 Depends: libc6
 Depends: libdb5.3
 Depends: libsasl2-2
 Depends: libsqlite3-0
 Depends: libssl1.0.0
 |Depends: debconf
 Depends: 
 cdebconf
 debconf
 Depends: netbase
 Depends: adduser
 Depends: dpkg
............................................

示例:5 使用apt-cache显示缓存统计

linuxtechi@localhost:~$ apt-cache stats
Total package names: 60877 (1,218 k)
Total package structures: 102824 (5,758 k)
 Normal packages: 71285
 Pure virtual packages: 1102
 Single virtual packages: 9151
 Mixed virtual packages: 1827
 Missing: 19459
Total distinct versions: 74913 (5,394 k)
Total distinct descriptions: 93792 (2,251 k)
Total dependencies: 573443 (16.1 M)
Total ver/file relations: 78007 (1,872 k)
Total Desc/File relations: 93792 (2,251 k)
Total Provides mappings: 16583 (332 k)
Total globbed strings: 171 (2,263 )
Total dependency version space: 2,665 k
Total slack space: 37.3 k
Total space accounted for: 29.5 M

示例:6 使用 “apt-get update” 更新仓库

使用命令“apt-get update”, 我们可以重新从源仓库中同步文件索引。包的索引从“/etc/apt/sources.list”中检索。

linuxtechi@localhost:~$ sudo apt-get update
 Ign http://extras.ubuntu.com utopic InRelease
 Hit http://extras.ubuntu.com utopic Release.gpg
 Hit http://extras.ubuntu.com utopic Release
 Hit http://extras.ubuntu.com utopic/main Sources
 Hit http://extras.ubuntu.com utopic/main amd64 Packages
 Hit http://extras.ubuntu.com utopic/main i386 Packages
 Ign http://in.archive.ubuntu.com utopic InRelease
 Ign http://in.archive.ubuntu.com utopic-updates InRelease
 Ign http://in.archive.ubuntu.com utopic-backports InRelease
 ................................................................

示例:7 使用apt-get安装包

linuxtechi@localhost:~$ sudo apt-get install icinga

上面的命令会安装叫“icinga”的包。

示例:8 升级所有已安装的包

linuxtechi@localhost:~$ sudo apt-get upgrade

示例:9 更新特定的包

在apt-get命令中的“install”选项后面接上“-only-upgrade”用来更新一个特定的包,如下所示:

linuxtechi@localhost:~$ sudo apt-get install filezilla --only-upgrade

示例:10 使用apt-get卸载包

linuxtechi@localhost:~$ sudo apt-get remove skype

上面的命令只会删除skype包,如果你想要删除它的配置文件,在apt-get命令中使用“purge”选项。如下所示:

linuxtechi@localhost:~$ sudo apt-get purge skype

我们可以结合使用上面的两个命令:

linuxtechi@localhost:~$ sudo apt-get remove --purge skype

示例:11 在当前的目录中下载包

linuxtechi@localhost:~$ sudo apt-get download icinga
Get:1 http://in.archive.ubuntu.com/ubuntu/ utopic/universe icinga amd64 1.11.6-1build1 [1,474 B]
Fetched 1,474 B in 1s (1,363 B/s)

上面的目录会把icinga包下载到你的当前工作目录。

示例:12 清理本地包占用的磁盘空间

linuxtechi@localhost:~$ sudo apt-get clean

上面的命令会清空apt-get所下载的包占用的磁盘空间。

我们也可以使用“autoclean”选项来代替“clean”,两者之间主要的区别是autoclean清理不再使用且没用的下载。

linuxtechi@localhost:~$ sudo apt-get autoclean
Reading package lists... Done
Building dependency tree
Reading state information... Done

示例:13 使用“autoremove”删除包

当在apt-get命令中使用“autoremove”时,它会删除为了满足依赖而安装且现在没用的包。

linuxtechi@localhost:~$ sudo apt-get autoremove icinga

示例:14 显示包的更新日志

linuxtechi@localhost:~$ sudo apt-get changelog apache2
Get:1 Changelog for apache2 (http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.4.10-1ubuntu1/changelog) [195 kB]
Fetched 195 kB in 3s (60.9 kB/s)

上面的命令会下载apache2的更新日志,并在你屏幕上分页显示。

示例:15 使用 “check” 选项显示损坏的依赖关系

linuxtechi@localhost:~$ sudo apt-get check
Reading package lists... Done
Building dependency tree
Reading state information... Done

via: http://www.linuxtechi.com/ubuntu-apt-get-apt-cache-commands-examples/

作者:Pradeep Kumar 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4933-1.html

Linux:在CentOS/RHEL/Scientific Linux 6 & 7 上安装Telnet

声明:

在安装和使用Telnet之前,需要记住以下几点。

  • 在公网(WAN)中使用Telnet是非常不好的想法。它会以明文的格式传输登入数据。每个人都可以看到明文。
  • 如果你还是需要Telnet,强烈建议你只在局域网内部使用。
  • 你可以使用SSH作为替代方法。但是确保不要用root用户登录。
Linux:在CentOS/RHEL/Scientific Linux 6 & 7 上安装Telnet
Linux:在CentOS/RHEL/Scientific Linux 6 & 7 上安装Telnet

Telnet是什么?

Telnet 是用于通过TCP/IP网络远程登录计算机的协议。一旦与远程计算机建立了连接,它就会成为一个虚拟终端且允许你与远程计算机通信。

在本篇教程中,我们会展示如何安装Telnet并且如何通过Telnet访问远程系统。

安装

打开终端并输入下面的命令来安装telnet:

yum install telnet telnet-server -y

现在telnet已经安装在你的服务器上了。接下来编辑文件/etc/xinetd.d/telnet

vi /etc/xinetd.d/telnet

设置 disable = no:

# default: on
# description: The telnet server serves telnet sessions; it uses
#       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no
}

保存并退出文件。记住我们不必在CentOS 7做这步。

接下来使用下面的命令重启telnet服务:

在CentOS 6.x 系统中:

service xinetd start

让这个服务在每次重启时都会启动:

在CentOS 6上:

chkconfig telnet on
chkconfig xinetd on

在CentOS 7上:

systemctl start telnet.socket
systemctl enable telnet.socket

让telnet的默认端口23可以通过防火墙和路由器。要让telnet端口可以通过防火墙,在CentOS 6.x系统中编辑下面的文件:

vi /etc/sysconfig/iptables

加入如下行“-A INPUT -p tcp -m state –state NEW –dport 23 -j ACCEPT”:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

保存并退出文件。重启iptables服务:

service iptables restart

在CentOS 7中,运行下面的命令让telnet服务可以通过防火墙。

firewall-cmd --permanent --add-port=23/tcp
firewall-cmd --reload

就是这样。现在telnet服务就可以使用了。

创建用户

创建一个测试用户,比如用户名是“sk”,密码是“centos“:

useradd sk
passwd sk

客户端配置

安装telnet包:

yum install telnet

在基于DEB的系统中:

sudo apt-get install telnet

现在,打开终端,尝试访问你的服务器(远程主机)。

如果你的客户端是Linux系统,打开终端并输入下面的命令来连接到telnet服务器上。

telnet 192.168.1.150

输入服务器上已经创建的用户名和密码:

示例输出:

Trying 192.168.1.150...
Connected to 192.168.1.150.
Escape character is '^]'.
Kernel 3.10.0-123.13.2.el7.x86_64 on an x86_64
server1 login: sk
Password:
[sk@server1 ~]$

如你所见,已经成功从本地访问远程主机了。

如果你的系统是windows,进入开始 -> 运行 -> 命令提示符

在命令提示符中,输入命令:

telnet 192.168.1.150

192.168.1.150是远程主机IP地址。

现在你就可以连接到你的服务器上了。

就是这样。

干杯!


via: http://www.unixmen.com/installing-telnet-centosrhelscientific-linux-6-7/

作者:SK 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4934-1.html

Linux:如何在CentOS 7中禁止IPv6

最近,我的一位朋友问我该如何禁止IPv6。在搜索了一番之后,我找到了下面的方案。下面就是在我的CentOS 7 迷你服务器禁止IPv6的方法。

Linux:如何在CentOS 7中禁止IPv6
Linux:如何在CentOS 7中禁止IPv6

你可以用两个方法做到这个。

方法 1

编辑文件/etc/sysctl.conf

vi /etc/sysctl.conf

添加下面的行:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

如果你想要为特定的网卡禁止IPv6,比如,对于enp0s3,添加下面的行。

net.ipv6.conf.enp0s3.disable_ipv6 = 1

保存并退出文件。

执行下面的命令来使设置生效。

sysctl -p

方法 2

要在运行的系统中禁止IPv6,依次输入下面的命令:

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6

或者,

sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

就是这样。现在IPv6已经禁止了。

我在禁止IPv6后遇到问题怎么办

你可能在禁止IPv6后遇到一些问题

问题1:

如果你在禁止IPv6后SSH遇到问题,按照下面的做。

编辑 /etc/ssh/sshd_config 文件

vi /etc/ssh/sshd_config

找到下面的行:

#AddressFamily any

把它改成:

AddressFamily inet

或者,在这行的前面去掉注释(#)

#ListenAddress 0.0.0.0

接着重启ssh来使改变生效。

systemctl restart sshd

问题2:

如果你在禁止Ipv6后启动postfix遇到问题,编辑/etc/postfix/main.cf

vi /etc/postfix/main.cf

注释掉配置中的localhost部分,并且使用ipv4回环。

#inet_interfaces = localhost
inet_interfaces = 127.0.0.1

就是这样,干杯!


via: http://www.unixmen.com/disable-ipv6-centos-7/

作者:SK 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-4935-1.html