2015年12月

日志文件导航器(Logfile Navigator,简称 lnav),是一个基于 curses 的,用于查看和分析日志文件的工具。和文本阅读器/编辑器相比, lnav 的好处是它充分利用了可以从日志文件中获取的语义信息,例如时间戳和日志等级。利用这些额外的语义信息, lnav 可以处理像这样的事情:来自不同文件的交错的信息;按照时间生成信息直方图;支持在文件中导航的快捷键。它希望使用这些功能可以使得用户可以快速有效地定位和解决问题。

lnav 功能

支持以下日志文件格式:

Syslog、Apache 访问日志、strace、tcsh 历史以及常见的带时间戳的日志文件。读入文件的时候回自动检测文件格式。

直方图视图:

以时间区划来显示日志信息数量。这对于大概了解在一长段时间内发生了什么非常有用。

过滤器:

只显示那些匹配或不匹配一些正则表达式的行。对于移除大量你不感兴趣的日志行非常有用。

即时操作:

在你输入到时候会同时完成检索;当添加了新日志行的时候会自动加载和搜索;加载行的时候会应用过滤器;另外,还会在你输入 SQL 查询的时候检查其正确性。

自动显示后文:

日志文件视图会自动往下滚动到新添加到文件中的行。只需要向上滚动就可以锁定当前视图,然后向下滚动到底部恢复显示后文。

按照日期顺序排序行:

从所有文件中加载的日志行会按照日期进行排序。使得你不需要手动从不同文件中收集日志信息。

语法高亮:

错误和警告会用红色和黄色显示。高亮还可用于: SQL 关键字、XML 标签、Java 文件行号和括起来的字符串。

导航:

有快捷键用于跳转到下一个或上一个错误或警告,按照指定的时间向后或向前翻页。

用 SQL 查询日志:

每个日志文件行都相当于数据库中的一行,可以使用 SQL 进行查询。可以使用的列取决于查看的日志文件类型。

命令和搜索历史:

会自动保存你之前输入的命令和搜素,因此你可以在会话之间使用它们。

 压缩文件:

会实时自动检测和解压压缩的日志文件。

在 ubuntu 15.10 上安装 lnav

打开终端运行下面的命令

sudo apt-get install lnav

使用 lnav

如果你想使用 lnav 查看日志,你可以使用下面的命令,默认它会显示 syslogs

lnav

如果你想查看特定的日志,那么需要指定路径。如果你想看 CPU 日志,在你的终端里运行下面的命令

lnav /var/log/cups


via: http://www.ubuntugeek.com/lnav-ncurses-based-log-file-viewer.html

作者:ruchi 译者:ictlyh 校对:wxy

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

PRISM

如果你监听过 HTTP/2 连接的建立过程,你也许会注意到在每个连接建立时都会发送一条这样的报文。如下:

即以下文本:

PRI * HTTP2.0

SM

如果将 HTTP2.0 以及换行从其中去掉,那么我们就得到了“PRISM”!——这是什么?是斯诺登所揭露的 NSA 的“棱镜计划”!只要是 HTTP/2.0 连接,都会在一开头就发送这样的报文。

是你的 HTTP/2.0 连接被 NSA 监控了么?不是!这条消息代表了你的服务器真正支持了 HTTP/2.0,它是一个用于识别的魔法字符串。

它在 RFC7540 Section 3.5 中描述如下:

在 HTTP/2 中,每个端点都需要发送一个连接引语作为所用协议的最终确认,并用于建立 HTTP/2 连接的初始设置。客户端和服务器发送不同的连接引语。

客户端的连接引语以24个字节开始,以16进制表示如下:

0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a

即以下列字符串开始: “PRI * **HTTP/2.0

SM

”**。

事实上,这个魔法字符串原本是“FOOBA”:在 2013/5/29 发布的 draft-ietf-httpbis-http2-03 中它还是这个样子:“**FOO * HTTP/2.0

BA

**”。

而在同年6月份斯诺登事件沸沸扬扬之后,7/8发布的 draft-ietf-httpbis-http2-04 中就变成了“**PRI * HTTP/2.0

SM

**”。

所以,你知道了吧?这个古怪的字符串是互联网工程任务组(IETF)对 NSA 的嘲讽。

在 Linux 中创建分区或新的文件系统通常意味着一件事:安装 Gnome Parted 分区编辑器(GParted)。对于大多数 Linux 用户而言,这是唯一的办法。不过,你是否考虑过在终端创建这些分区和文件系统?当然可以!以下就是方法!

使用 CFdisk 创建一个基本的 Linux 分区

以下是如何在命令行中创建一个基本的 Linux 分区的正确方案。要做的第一件事就是先打开你的终端。若你已打开,你需要找到你想要创建分区的磁盘。这可以使用一个简单的命令来找到。

lsblk

cfdisk-lsblk

当你运行了 lsblk,你应该会看到当前系统上每个磁盘的详细列表。看看这个列表,然后找出你想要使用的磁盘。在本文中,我将使用 sdb 来进行演示。

在终端输入这个命令。它会显示一个功能强大的基于终端的分区编辑程序。

sudo cfdisk /dev/sdb

cfdisk-empty-layout

注意: 使用在 lsblk 命令输出的你想要使用的磁盘来替换 sdb。

当输入此命令后,你将进入分区编辑器中,然后访问你想改变的磁盘。

由于磁盘分区的不同,这取决于用户的需求,这部分的指南将在 如何建立一个分离的 Linux home/root 分区布局。

首先,需要创建根分区。这需要根据磁盘的字节数来进行分割。我测试的磁盘是 32 GB。

在 CFdisk 中使用键盘上的方向键选择需要分配的空间。你找到后,请使用箭头键选择 [ NEW ],然后按 Enter 键。

cfdisk-create-root-partition

该程序会要求你输入分区大小。一旦你指定好大小后,按 Enter 键。这将被称为根分区(或 /dev/sdb1)。

接下来该创建 home 分区(/dev/sdb2)了。你需要在 CFdisk 中再选择一些空闲分区。使用箭头选择 [ NEW ] 选项,然后按 Enter 键。输入你的 home 分区的大小,然后按 Enter 键来创建它。

cfdisk-create-home-partition

最后,需要创建交换分区。像前两次一样,先找一些空闲分区,并使用箭头选择 [ NEW ] 选项。之后,算下你 Linux 想使用多大的交换分区。

注意: 交换分区通常和计算机的内存差不多大。

cfdisk-specify-partition-type-swap

现在,创建了交换分区,该指定其类型。使用上下箭头来选择它。之后,使用左右箭头选择 [ TYPE ] 。找到 Linux swap 选项,然后按 Enter 键。

cfdisk-write-partition-table

所有分区创建后。然后就是将其写入到磁盘。使用右箭头键,选择 [ WRITE ] 选项,然后按 Enter 键。这将直接将新创建的分布写入到磁盘中。

使用 mkfs 创建文件系统

有时候,你并不需要一个整个重新分区,你只想要创建一个文件系统而已。你可以在终端直接使用 mkfs 命令来实现。

cfdisk-mkfs-list-partitions-lsblk

首先,找出你要使用的磁盘。在终端输入 lsblk 找出来。它会打印出列表,之后只要找到你想创建文件系统的分区或盘符。

在这个例子中,我将使用第二个硬盘的 /dev/sdb1 作为第一个分区。可以对 /dev/sdb 使用 mkfs(这将会使用整个分区)。

cfdisk-mkfs-make-file-system-ext4

要在一个特定的分区上创建新文件系统,只需输入

sudo mkfs.ext4 /dev/sdb1

在终端。应当指出的是,mkfs.ext4 可以换成任何你想要使用的的文件系统。

结论

虽然使用图形工具编辑文件系统和分区更容易,但终端可以说是更有效的。终端的加载速度更快,点击几个按钮即可。GParted 和其它工具一样,它也是一个完整的工具。我希望在本教程的帮助下,你会明白如何在终端中高效的编辑文件系统。

你是否更喜欢使用基于终端的方法在 Linux 上编辑分区?不管是不是,请在下面告诉我们。


via: https://www.maketecheasier.com/create-file-systems-partitions-terminal-linux/

作者:Derrik Diener 译者:strugglingyouth 校对:wxy

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

要记住,当一扇门在你面前关闭的时候,另一扇门就会打开。 肯·汤普森 ( Ken Thompson ) 和 丹尼斯·里奇 ( Dennis Richie ) 两个人就是这句名言很好的实例。他们俩是20世纪最优秀的信息技术专家之二,因为他们创造了最具影响力和创新性的软件之一: UNIX。

用于推广 UNIX,以车牌形式出现

(题图来自:wikimedia.org,CC BY-SA 3.0)

UNIX 系统诞生于贝尔实验室

UNIX 最开始的名字是 UNICS (UNiplexed Information and Computing Service),它有一个大家庭,并不是从石头缝里蹦出来的。UNIX的祖父是 CTSS (Compatible Time Sharing System),它的父亲是 Multics (MULTiplexed Information and Computing Service),这个系统能支持大量用户通过交互式 分时 ( timesharing ) 的方式使用大型机。

UNIX 诞生于 1969 年,由肯·汤普森以及后来加入的丹尼斯·里奇共同完成。这两位优秀的研究员和科学家在一个通用电器 GE和麻省理工学院的合作项目里工作,项目目标是开发一个叫 Multics 的交互式分时系统。

Multics 的目标是整合分时技术以及当时其他先进技术,允许用户在远程终端通过电话(拨号)登录到主机,然后可以编辑文档,阅读电子邮件,运行计算器,等等。

在之后的五年里,AT&T 公司为 Multics 项目投入了数百万美元。他们购买了 GE-645 大型机,聚集了贝尔实验室的顶级研究人员,例如肯·汤普森、 Stuart Feldman、丹尼斯·里奇、 道格拉斯·麦克罗伊 ( M. Douglas McIlroy ) 、 Joseph F. Ossanna 以及 Robert Morris。但是项目目标太过激进,进度严重滞后。最后,AT&T 高层决定放弃这个项目。

贝尔实验室的管理层决定停止这个让许多研究人员无比纠结的操作系统上的所有遗留工作。不过要感谢汤普森,里奇和一些其他研究员,他们把老板的命令丢到一边,并继续在实验室里满怀热心地忘我工作,最终孵化出前无古人后无来者的 UNIX。

UNIX 的第一声啼哭是在一台 PDP-7 微型机上,它是汤普森测试自己在操作系统设计上的点子的机器,也是汤普森和 里奇一起玩 Space and Travel 游戏的模拟器。

“我们想要的不仅是一个优秀的编程环境,而是能围绕这个系统形成团体。按我们自己的经验,通过远程访问和分时主机实现的公共计算,本质上不只是用终端输入程序代替打孔机而已,而是鼓励密切沟通。”丹尼斯·里奇说。

UNIX 是第一个靠近理想的系统,在这里程序员可以坐在机器前自由摆弄程序,探索各种可能性并随手测试。在 UNIX 整个生命周期里,它吸引了大量因其他操作系统限制而投身过来的高手做出无私贡献,因此它的功能模型一直保持上升趋势。

UNIX 在 1970 年因为 PDP-11/20 获得了首次资金注入,之后正式更名为 UNIX 并支持在 PDP-11/20 上运行。UNIX 带来的第一次用于实际场景中是在 1971 年,贝尔实验室的专利部门配备来做文字处理。

UNIX 上的 C 语言革命

丹尼斯·里奇在 1972 年发明了一种叫 “C” 的高级编程语言 ,之后他和肯·汤普森决定用 “C” 重写 UNIX 系统,来支持更好的移植性。他们在那一年里编写和调试了差不多 100,000 行代码。在迁移到 “C” 语言后,系统可移植性非常好,只需要修改一小部分机器相关的代码就可以将 UNIX 移植到其他计算机平台上。

UNIX 第一次公开露面是 1973 年丹尼斯·里奇和肯·汤普森在 操作系统原理 ( Operating Systems Principles ) 上发表的一篇论文,然后 AT&T 发布了 UNIX 系统第 5 版,并授权给教育机构使用,之后在 1975 年第一次以 $20.000 的价格授权企业使用 UNIX 第 6 版。应用最广泛的是 1980 年发布的 UNIX 第 7 版,任何人都可以购买授权,只是授权条款非常严格。授权内容包括源代码,以及用 PDP-11 汇编语言写的及其相关内核。反正,各种版本 UNIX 系统完全由它的用户手册确定。

UNIX 分支演化

UNIX 分支演化

(来自 wikipedia.org,CC BY-SA 3.0)

AIX 系统

在 1983 年,微软计划开发 Xenix 作为 MS-DOS 的多用户版继任者,他们在那一年花了 $8,000 搭建了一台拥有 512 KB 内存以及 10 MB硬盘并运行 Xenix 的 Altos 586。而到 1984 年为止,全世界 UNIX System V 第二版的安装数量已经超过了 100,000 。在 1986 年发布了包含因特网域名服务的 4.3BSD,而且 IBM 宣布 AIX 系统的安装数已经超过 250,000。AIX 基于 Unix System V 开发,这套系统拥有 BSD 风格的根文件系统,是两者的结合。

AIX 第一次引入了 日志文件系统 (JFS) 以及集成LVM( 逻辑卷管理器 ( Logical Volume Manager ) )。IBM 在 1989 年将 AIX 移植到自己的 RS/6000 平台。2001 年发布的 5L 版是一个突破性的版本,提供了 Linux 友好性以及支持 Power4 服务器的逻辑分区。

在 2004 年发布的 AIX 5.3 引入了支持APV( 高级电源虚拟化 ( Advanced Power Virtualization ) )的虚拟化技术,支持对称多线程、微分区,以及共享处理器池。

在 2007 年,IBM 同时发布 AIX 6.1 和 Power6 架构,开始加强自己的虚拟化产品。他们还将高级电源虚拟化重新包装成 PowerVM。

这次改进包括被称为 WPARs 的负载分区形式,类似于 Solaris 的 zones/Containers,但是功能更强。

HP-UX 系统

HP-UX( 惠普 UNIX ( Hewlett-Packard’s UNIX ) ) 源于 System V 第 3 版。这套系统一开始只支持 PA-RISC HP 9000 平台。HP-UX 第 1 版发布于 1984 年。

HP-UX 第 9 版引入了 SAM,一个基于字符的图形用户界面 (GUI),用户可以用来管理整个系统。在 1995 年发布的第 10 版,调整了系统文件分布以及目录结构,变得有点类似 AT&T SVR4。

第 11 版发布于 1997 年。这是 HP 第一个支持 64 位寻址的版本。不过在 2000 年重新发布成 11i,因为 HP 为特定的信息技术用途,引入了 操作环境 ( operating environments ) 和 分级应用 ( layered applications ) 的 捆绑组 ( bundled groups ) 。

在 2001 年发布的 11.20 版宣称支持 安腾 ( Itanium ) 系统。HP-UX 是第一个使用 ACLs( 访问控制列表 ( Access Control Lists ) )管理文件权限的 UNIX 系统,也是首先支持内建 逻辑卷管理器 ( Logical Volume Manager ) 的系统之一。

如今,HP-UX 因为 HP 和 Veritas 的合作关系使用了 Veritas 作为主文件系统。

HP-UX 目前的最新版本是 11iv3, update 4。

Solaris 系统

Sun 的 UNIX 版本是 Solaris,用来接替 1992 年创建的 SunOS。SunOS 一开始基于 BSD( 伯克利软件发行版 ( Berkeley Software Distribution ) )风格的 UNIX,但是 SunOS 5.0 版以及之后的版本都是基于重新包装为 Solaris 的 Unix System V 第 4 版。

SunOS 1.0 版于 1983 年发布,用于支持 Sun-1 和 Sun-2 平台。随后在 1985 年发布了 2.0 版。在 1987 年,Sun 和 AT&T 宣布合作一个项目以 SVR4 为基础将 System V 和 BSD 合并成一个版本。

Solaris 2.4 是 Sun 发布的第一个 Sparc/x86 版本。1994 年 11 月份发布的 SunOS 4.1.4 版是最后一个版本。Solaris 7 是首个 64 位 Ultra Sparc 版本,加入了对文件系统元数据记录的原生支持。

Solaris 9 发布于 2002 年,支持 Linux 特性以及 Solaris 卷管理器 ( Solaris Volume Manager ) 。之后,2005 年发布了 Solaris 10,带来许多创新,比如支持 Solaris Containers,新的 ZFS 文件系统,以及 逻辑域 ( Logical Domains ) 。

目前 Solaris 最新的版本是 第 10 版,最后的更新发布于 2008 年。 (LCTT 译注:据微信网友 @atoningfang涛 指出,Solaris 11.3#Version_history) 才是当前最新版本,发布于 2015/8/26。)

Linux

到了 1991 年,用来替代商业操作系统的 自由 ( free ) 操作系统的需求日渐高涨。因此,Linus Torvalds 开始构建一个自由的操作系统,最终成为 Linux。Linux 最开始只有一些 “C” 文件,并且使用了阻止商业发行的授权。Linux 是一个类 UNIX 系统但又不尽相同。

2015 年发布了基于 GNU Public License (GPL)授权的 3.18 版。IBM 声称有超过 1800 万行开源代码开源给开发者。

如今 GNU Public License 是应用最广泛的自由软件授权方式。根据开源软件原则,这份授权允许个人和企业自由分发、运行、通过拷贝共享、学习,以及修改软件源码。

UNIX vs. Linux:技术概要

  • Linux 鼓励多样性,Linux 的开发人员来自各种背景,有更多不同经验和意见。
  • Linux 比 UNIX 支持更多的平台和架构。
  • UNIX 商业版本的开发人员针对特定目标平台以及用户设计他们的操作系统。
  • Linux 比 UNIX 有更好的安全性,更少受病毒或恶意软件攻击。截止到现在,Linux 上大约有 60-100 种病毒,但是没有任何一种还在传播。另一方面,UNIX 上大约有 85-120 种病毒,但是其中有一些还在传播中。
  • 由于 UNIX 命令、工具和元素很少改变,甚至很多接口和命令行参数在后续 UNIX 版本中一直沿用。
  • 有些 Linux 开发项目以自愿为基础进行资助,比如 Debian。其他项目会维护一个和商业 Linux 的社区版,比如 SUSE 的 openSUSE 以及红帽的 Fedora。
  • 传统 UNIX 是纵向扩展,而另一方面 Linux 是横向扩展。

via: http://www.unixmen.com/brief-history-aix-hp-ux-solaris-bsd-linux/

作者:M.el Khamlichi 译者:zpl1025 校对:Caroline

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

nvidia-logo-1

NVIDIA 358.16 —— NVIDIA 358 系列的第一个稳定版本已经发布,并对 358.09 中(测试版)做了一些修正,以及一些小的改进。

NVIDIA 358 增加了一个新的 nvidia-modeset.ko 内核模块,可以配合 nvidia.ko 内核模块工作来调用 GPU 显示引擎。在以后发布版本中,nvidia-modeset.ko 内核驱动程序将被用于模式设置接口的基础,该接口由内核的直接渲染管理器(DRM)所提供。

新的驱动程序也有新的 GLX 协议扩展,以及在 OpenGL 驱动中分配大量内存的系统内存分配新机制。新的 GPU GeForce 805A 和 GeForce GTX 960A 都支持。NVIDIA 358.16 也支持 X.Org 1.18 服务器和 OpenGL 4.3。

如何在 Ubuntu 中安装 NVIDIA 358.16 :

请不要在生产设备上安装,除非你知道自己在做什么以及如何才能恢复。

对于官方的二进制文件,请到 nvidia.com/object/unix.html 查看。

对于那些喜欢 Ubuntu PPA 的,我建议你使用 显卡驱动 PPA。到目前为止,支持 Ubuntu 16.04, Ubuntu 15.10, Ubuntu 15.04, Ubuntu 14.04。

1. 添加 PPA.

通过按 Ctrl+Alt+T 快捷键来从 Unity 桌面打开终端。当打启动应用后,粘贴下面的命令并按回车键:

sudo add-apt-repository ppa:graphics-drivers/ppa

nvidia-ppa

它会要求你输入密码。输入密码后,密码不会显示在屏幕上,按 Enter 继续。

2. 刷新并安装新的驱动程序

添加 PPA 后,逐一运行下面的命令刷新软件库并安装新的驱动程序:

sudo apt-get update

sudo apt-get install nvidia-358 nvidia-settings

(如果需要的话,) 卸载:

开机从 GRUB 菜单进入恢复模式,进入根控制台。然后逐一运行下面的命令:

重新挂载文件系统为可写:

mount -o remount,rw /

删除所有的 nvidia 包:

apt-get purge nvidia*

最后返回菜单并重新启动:

reboot

要禁用/删除显卡驱动 PPA,点击系统设置下的软件和更新,然后导航到其他软件标签。


via: http://ubuntuhandbook.org/index.php/2015/11/install-nvidia-358-16-driver-ubuntu-15-10/

作者:Ji m 译者:strugglingyouth 校对:wxy

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