分类 技术 下的文章

Linux内核拥有许多可以配置的特性,接下来我们还有许多要配置。

下一个可以配置的特性是x86的随机数生成器(x86 architectural random number generator (ARCH\_RANDOM))。记住,我们现在配置的是针对AMD64系统的内核代码。这个随机数生成器使用Intel x86的RDRAND指令。这并不通用,所以为了一个更轻量的内核我禁用了它。

接着,我们可以启用或者禁用"Supervisor Mode Access Prevention (X86\_SMAP)"。这是Intel处理器使用的安全特性。SMAP在一些条件下只允许内核访问用户空间。这个有助于保护用户空间。如果启用,这里有一点性能和内核大小的开销,但是开销很小。由于我是用的是AMD系统,所以我禁用了这个特性。

开发者可以启用"EFI runtime service support (EFI)"。只有在有EFI固件的系统上启用它。拥有这个特性,内核可以使用的EFI服务。EFI是一个操作系统和硬件如何交流的规范,所以EFI固件是使用这个规范的硬件代码。因为我没有EFI固件,所以我禁用了它。

这是一个应该被启用的有用的安全方式(Enable seccomp to safely compute untrusted bytecode (SECCOMP))。这个安全特性在使用非可信的字节码的数值计算(执行大量计算的软件)中使用。字节码(可移植代码)是一种被解释器有效读取的代码。字节码不是源代码,但它也不是汇编或者二进制代码。非可信的代码是一种可能导致系统/数据损坏的代码。可能会破坏系统或者毁坏数据的非可信的代码通过seccomp被隔离在独立的地址空间中。这是通过文件描述符传输的方法。通常上,最好启用这个安全特性,即使会有一些性能开销,除非你在制作一个需要榨干性能的内核。

这里是另外一个安全特性(Enable -fstack-protector buffer overflow detection (CC\_STACKPROTECTOR))。缓冲溢出是数据被写在超出了它的内存界限而进入了邻近的内存中。这是一个安全威胁。一些恶意软件使用缓冲区溢出来破坏系统。启用这个会使用GCC选项 "-fstack-protector"。GCC是一个Linux编译器,在你配置完成后用它来编译内核。这个编译器参数会在返回地址前在栈上加入一个canary值(特殊的安全代码)。这个值会在返回前被验证。当内存溢出发生时,canary值会得到覆盖消息。这时,会导致内核崩溃。如许多人知道的那样,内核错误意味着系统将要崩溃,但是这比系统被入侵或者数据永久损害的好。发生内核错误,系统会重启,但是如果缓冲溢出则可能导致系统被入侵。一个简单的重启无法修复破坏(译注:但也不会更坏)。你必须用GCC 4.2或者更高版本支持这个参数的GCC来编译内核。

提示:要知道你使用的版本号,在命令行内键入"gcc --version"。

在这之后,我们可以配置定时器频率。配置工具建议使用250Hz,所以我们使用这个值。

Timer frequency

  1. 100 HZ (HZ\_100)
  1. 250 HZ (HZ\_250)
  1. 300 HZ (HZ\_300)
  2. 1000 HZ (HZ\_1000)

choice[1-4?]: 2

使用1000Hz通常来讲对许多系统而言太快了。定时器频率决定着定时器中断被使用的频率。这有助于在时间线上的系统操作。程序并不是随机地执行一条命令,相反它们会等到定时器中断结束。这保持着有组织和结构的处理。频率为100Hz的定时器中断之间的时间是10ms,250Hz是4ms,1000Hz是1ms。现在许多开发者会马上想到1000Hz是最好的。好吧,这取决于你对开销的要求。一个更大的定时器频率意味着更多的能源消耗和更多的能源被利用(在定时器上),产生更多的热量。更多的热量意味着硬件损耗的更快。

注意:如果某个特定的特性对你并不重要或者你不确定该选择什么,就使用配置工具选择的默认值。比如,就我现在正在配置的内核而言,使用哪个定时器对我并不重要。总的来说,如果你没有特别的原因去选择任何一个选项时,就使用默认值。

下面这个有趣的系统调用可能会对一些用户有用(kexec system call (KEXEC))。kexec调用会关闭当前内核去启动另外一个或者重启当前内核。硬件并不会关闭,并且这个调用可以无需固件的帮助工作。bootloader是不执行的(bootloader是启动操作系统的软件) 。这个重启发生在操作系统级别上而不是硬件上。使用这个系统调用会快于执行一个标准的关机或者重启,这会保持硬件在加电状态。这个系统调用并不能工作在所有系统上。为了更高性能,启用这个热启动功能。

为了使用kexec,对重启后要使用的内核使用如下命令替换""。同样,使用之前我们讲过的内核参数替换"" (我会在以后的文章中更深入的讨论。)

kexec -l --append="” 

特别地,我这里输入:

kexec -l /boot/vmlinuz-3.8.0-27-generic –append="root=/dev/sda1" 

注意:硬件有时不需要重置,所以这不依赖于kexec。

下面,我们有一个适用于kexec的调试特性(kernel crash dumps (CRASH\_DUMP))。当kexec被调用时,一个崩溃信息(crash dump)会生成。除非你有必要调试kexec,否则这个并不必要。我禁用了这个特性。

再者,我们有另外一个kexec特性(kexec jump (KEXEC\_JUMP))。kexec跳允许用户在原始内核和kexec启动的内核之间切换。

最好对内核启动地址使用默认值(Physical address where the kernel is loaded (PHYSICAL\_START) [0x1000000])。

下一个内核选项(Build a relocatable kernel (RELOCATABLE))允许内核放在内存的任何地方。内核文件会增大10%,但是超出部分会在执行时从内存移除。许多人也许想知道这为什么很重要。在2.6.20内核前,救援内核(rescue kernel)必须被配置和编译运行在不同的内存地址上。当这个特性发明后,开发者不必再编译两个内核。救援内核不会在第一个已加载的内核的地方加载,因为该块内存已被占用或者发生了错误。(如果你正在使用救援内核,那么明显第一个内核发生了错误)

下面这个特性应该在可以增加CPU数量的系统中启用,除非你有特别的理由不去这么做(Support for hot-pluggable CPUs (HOTPLUG\_CPU))。配置工具会自动启用这个特性。在这个特性下,你可以在一个拥有很多处理器的系统上激活/停用一个CPU,这并不是说在系统中插入新的CPU,所有的CPU必须已经安装在系统中。

下面的选项会让我们选择设置上面的特性是否默认启用(Set default setting of cpu0*hotpluggable (BOOTPARAM*HOTPLUG\_CPU0))。为了性能最好禁用这个特性直到需要的时候。

接着的这个调试特性允许开发者调试CPU热插拔特性(Debug CPU0 hotplug (DEBUG\_HOTPLUG\_CPU0))。我禁用了它。

为了兼容旧版本的glibc(

如果系统内核被用于一个缺乏完整功能的bootloader上,那么启用这个特性(Built-in kernel command line (CMDLINE\_BOOL))。这允许用户在内核自身上使用一条命令行(译注:及其参数),那么管理员可以修复内核问题。如果bootloader已经有了一条命令行(像grub),那么这个特性不必启用。

现在我们可以配置ACPI和电源了。首先,我们被要求选择系统是否可以挂起到内存(Suspend to RAM and standby (SUSPEND))。高级配置和电源接口(ACPI)是一种对于设备配置和电源管理的开放标准。挂起系统会将数据放在内存上,同时硬件进入一种低功耗的状态。系统不会完全关机。如果用户需要计算机进入一个低功耗的状态,但是希望保留当前已打开程序时是非常有用的。关闭一个系统会完全关闭系统电源并且清理内存。

下面,我们可以启用睡眠(Hibernation (aka 'suspend to disk') (HIBERNATION))。睡眠就像挂起模式,但是内存中所有数据被保存到硬盘上,并且设备完全关闭。这允许用户在电源恢复后继续使用他们已打开的程序。

这里,我们可以设置默认的恢复分区(Default resume partition (PM\_STD\_PARTITION))。很少有开发者和管理员需要这个特性。当系统从睡眠中恢复时,他会加载默认的恢复分区。

在这之后,我们可以启用"Opportunistic sleep (PM\_AUTOSLEEP)"。这会让内核在没有活跃的唤醒调用被调用时进入挂起或者睡眠状态。这意味着空闲的系统将会进入挂起模式以节省电源。我启用了这个特性。

接下来,是询问关于"User space wakeup sources interface (PM\_WAKELOCKS)"。启用这个特性将会允许唤醒源对象被激活、停用,并通过基于sysfs接口由用户空间创建。唤醒源对象会追踪唤醒事件源。

sysfs是位于/sys/的虚拟文件系统。这个虚拟文件系统包含了关于设备的信息。当进入/sys/时,它似乎是硬盘的一部分,但是这个并不是一个真正的挂载点。这些文件实际存在于内存中。这与/proc/是同一个概念。

注意:"/sysfs/"是一个文件夹,而"/sysfs"则可以是一个根目录下名为"sysfs"的文件。许多Linux用户会混淆这两种命名约定。

如果启用了上面的选项,那么你可以设置"Maximum number of user space wakeup sources (0 = no limit) (PM\_WAKELOCKS\_LIMIT)"。最好选择默认,那么你就可以启用垃圾收集器(Garbage collector for user space wakeup sources (PM\_WAKELOCKS\_GC))。垃圾收集是一种内存管理方式。

注意: 在需要更多内存的系统中,通常最好在大多数情况下尽可能启用垃圾收集。不然内存会消耗得更快且杂乱。

下一个电源选项关于IO设备(Run-time PM core functionality (PM\_RUNTIME))。这个选项允许IO硬件在运行时进入低功耗状态。硬件必须支持这个才行,不是所有硬件都支持。

与其他许多内核组件一样,如果启用了(Power Management Debug Support),电源管理代码同样有调试支持。我禁用了这个选项。

注意: 注意这些我引用/显示的配置工具上的选项或问题不再显示选项代码(括号间所有的大写字母)。这是因为我没有使用基于ncurses的配置工具(make menuconfig)而是使用默认工具去得到选项、设置和问题。记住,"make config"缺乏保存当前进度的能力。

在这之后,配置工具会启用"ACPI (Advanced Configuration and Power Interface) Support"。最好允许这个电源管理规范。通常配置工具会启用这个特性。

为了允许向后兼容,启用"Deprecated /proc/acpi files"。新的实现使用更新的在/sys下的实现。我禁用了这个选项。一个相似的问题询问关于"Deprecated power /proc/acpi directories"。通常上,如果你禁用了这些文件,你不再需要这些文件夹,所以我禁用了他们。一些旧的程序可能会使用这些文件和文件夹。如果你在给旧的的Linux系统上编译一个新的内核,最好启用这个选项。

下面,我们有另外一个文件接口可以启用或者禁用(EC read/write access through)。这会在/sys/kernek/debug/ec下创建一个嵌入式控制器接口。嵌入式控制器通常在笔记本中读取传感器,内核代码通过系统的BIOS表提供的ACPI代码访问嵌入式控制器。

这里有另外一个可以启用或者禁用的向后兼容特性 (Deprecated /proc/acpi/event support)。acpi守护进程可能会读取/proc/api/event来管理ACPI生成的驱动。不同于这个接口,守护进程使用netlink事件或者输入层来得到送给用户空间的事件,acpi守护进程管理ACPI事件。

下一个选项允许开发者启用一个特性,它会通知内核现在使用的是交流电源(AC Adapter)还是电池。下一个选项从/proc/acpi/battery/ (Battery)中提供电池信息。

为了内核在电源/睡眠按钮按下或者盖子合上时不同表现,启用这个“按钮”选项(Button)。这些事件在/proc/acpi/event/中控制。比如这样的行为,如果在用户账户的电源选项启用了挂起,当笔记本电脑的盖子关闭后系统将会挂起。

下一个ACPI扩展是针对显卡的(Video)。

ACPI风扇控制可以被启用/禁用(Fan)。最好启用ACPI风扇管理,这有助于节能。

我们正在进一步配置内核中,但在接下来的文章中还有更多要做。


via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-5.4424/

译者:geekpi 校对:wxy

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

当你在本地网络监控网络流量,根据流量大小、监控平台/接口、数据库类型等等,可以有许多不同的选择。

ntopng是一套开源(遵循GPLv3协议)网络流量分析解决方案,提供基于web界面的实时网络流量监控。支持跨平台,包括Linux和MacOS X。ntopng类似于RMON远端网络监控代理,具有内置的Web服务能力,使用Redis键值服务按时间序列存储统计信息。你可以在任何指定的监控服务器上安装ntopng,只需使用任一web浏览器,就能实时访问服务器上的流量报告了。

本教程就来介绍如何使用ntopng在Linux上配置基于Web的网络流量监控系统

ntopng的特性

  • 从数据流级别与协议级别对本地网络流量进行实时分析
  • 支持域、AS(自制系统)与VLAN级别的统计分析
  • 支持IP地址地理定位
  • 支持基于“服务探索”(例如Google、Facebook)的深度报文检测(DPI)
  • 历史流量分析(例如分别按照小时、日、周、月、年进行分析)
  • 支持sFlow、NetFlow(v5/v9版)以及基于nProbe的IPFIX
  • 网络流量矩阵(谁正在和谁谈话?)
  • 支持IPv6

在Linux上安装ntopng

官方网页上提供了针对UbuntuCentOS的二进制安装包。如果你使用的恰好是以上二者其一,并且懒得用源码安装,可以直接到官网下载二进制文件包安装,并忽略这一小节下面的内容。

如果你想通过源码安装最新的ntopng,请继续往下看

如果你是Debian、Ubuntu或Linux Mint,执行以下命令:

$ sudo apt-get install libpcap-dev libglib2.0-dev libgeoip-dev redis-server wget libxml2-dev
$ tar xzf ntopng-1.0.tar.gz -C ~
$ cd ~/ntopng-1.0/
$ ./configure
$ make geoip
$ make

上面的几个步骤中,“make geoip”将会自动通过wget从maxmind.com下载一个免费版的GeoIP数据库,因此,这里最好确保你的系统能联网。

如果你是Fedora:

$ sudo yum install libpcap-devel glib2-devel GeoIP-devel libxml2-devel
libxml2-devel redis wget
$ tar xzf ntopng-1.0.tar.gz -C ~
$ cd ~/ntopng-1.0/
$ ./configure
$ make geoip
$ make

如果你是CentOS或RHEL,首先设置EPEL repository,然后再执行上面和Fedora一样的命令就可以。

在Linux上配置ntopng

ntopng安装完毕之后,接下来,新建一个ntopng配置目录,然后按照下列命令准备默认的配置文件。这里我假设你的本地网络地址为C类“192.168.1.0/24”。

$ sudo mkir /etc/ntopng -p 
$ sudo -e /etc/ntopng/ntopng.start 

修改如下:

--local-networks "192.168.1.0/24"

--interface 1

$ sudo -e /etc/ntopng/ntopng.conf 

修改如下:

-G=/var/run/ntopng.pid

在运行ntopng之前,要确认先启动redis,刚才不说了,redis为ntopng提供键值存储嘛~

在Debian、Ubuntu和Linux Mint上,这样启动:

$ sudo /etc/init.d/redis-server restart 
$ sudo ./ntopng 

在Fedora、CentOS和RHEL上,这样启动:

$ sudo service redis restart 
$ sudo ./ntopng 

ntopng默认监听TCP的3000端口,使用下列命令加以确认。

$ sudo netstat -nap|grep ntopng tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 29566/ntopng

基于Web界面的网络流量监控

一旦ntopng成功运行,就可以打开浏览器,访问地址http://:3000

这时,你会看到ntopng的登录界面。使用默认帐密:“admin/admin”。

下面是一些截图。

top流的实时可视化图像

top主机的实时统计,包括top协议和top AS数量

基于DPI的自动程序/服务探索生成的的实时数据报告

历史流量数据分析


via: http://xmodulo.com/2013/10/set-web-based-network-traffic-monitoring-linux.html

译者:Mr小眼儿 校对:wxy

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

我们继续“10个鲜为人知Linux命令系列”的第三部分。或许你已经知道了这些命令,那你无疑是一个有经验而喜欢探索的Linux用户。

22. ^foo^bar 命令

在一个实例中运行修改后的最后一个命令。假设我需要运行一个命令‘ls -l‘来详细列出‘Desktop’目录下的内容。意外地,你打了‘lls -l‘。所以你需要重新打整个命令或者使用导航键编辑前面的命令。当你的命令很长时这个很痛苦。

avi@localhost:~/Desktop$ lls -l 
bash: lls: command not found

avi@localhost:~/Desktop$ ^lls^ls 

ls -l 
total 7489440 

drwxr-xr-x 2 avi  avi       36864 Nov 13  2012 101MSDCF 
-rw-r--r-- 1 avi  avi      206833 Nov  5 15:27 1.jpg 
-rw-r--r-- 1 avi  avi      158951 Nov  5 15:27 2.jpg 
-rw-r--r-- 1 avi  avi       90624 Nov  5 12:59 Untitled 1.doc

注意:在上面的替换中我们使用“ typo(被替换的) original_command(原始命令) ”。警告!这个命令可能会非常危险!如果你有意或者无意地打错了系统命令或者任何像rm -rf那样的风险命令的话!

23. > file.txt 命令

这个命令会刷新文件的内容而不需删除然后创建相同的文件。当我们需要反复输出,或者在相同的文件上记录日志时,这个命令就非常有用。

我有一个有很多文字的‘test.txt’文件在我的‘Desktop‘上。

avi@localhost:~/Desktop$ cat test.txt 

Linux 
GNU 
Debian 
Fedora 
kali 
ubuntu 
git 
Linus 
Torvalds


avi@localhost:~/Desktop$ > test.txt 
avi@localhost:~/Desktop$ cat test.txt

注意:再说一次,这个命令可能很危险!永远不要尝试刷新系统文件或者某篇日志文件的内容。如果你这么做了,你可能会遭遇严重的问题!

24. at 命令

at‘命令与cron 命令相似也可用于安排一个任务或者在某个特定时刻执行命令。

avi@localhost:~/Desktop$ echo "ls -l > /dev/pts/0" | at 14:012

avi@localhost:~/Desktop$ echo "ls -l > /dev/pts/0" | at 2:12 PM

示例输出

-rw-r--r-- 1 avi  avi      220492 Nov  1 13:49 Screenshot-1.png 
-rw-r--r-- 1 root root        358 Oct 17 10:11 sources.list 
-rw-r--r-- 1 avi  avi  4695982080 Oct 10 20:29 squeeze.iso 
..
..
-rw-r--r-- 1 avi  avi       90624 Nov  5 12:59 Untitled 1.doc 
-rw-r--r-- 1 avi  avi       96206 Nov  5 12:56 Untitled 1.odt 
-rw-r--r-- 1 avi  avi        9405 Nov 12 23:22 Untitled.png

注意:echo “ls -l”的意思是,将这串命令(这里是 ls -l)输出在标准终端上。你可以用你需要或者选择的命令替代‘ls -l‘。

:重定向输出

/dev/pts/0: 这是输出设备和/或文件,输出到指定的地方,这里输出在终端(/dev/pts/0)。

就我而言,此时我的tty/dev/pts/0。你可以用tty命令检查你的tty

avi@localhost:~/Desktop$ tty 

/dev/pts/0

注意: ‘at‘会在系统时间匹配到特定时间时会尽快执行。

25. du -h –max-depth=1 命令

下面的命令以人类可读的形式输出当前目录的子目录的大小。

avi@localhost:/home/avi/Desktop# du -h --max-depth=1 

38M     ./test 
1.1G    ./shivji 
42M     ./drupal 
6.9G    ./101MSDCF 
16G .

注意:上面的命令在检查系统使用率是非常有用。

26. expr 命令

expr‘不是那么鲜为人知的命令。这个命令在终端中计算简单的算数时非常有用。

avi@localhost:/home/avi/Desktop# expr 2 + 3 
5

avi@localhost:/home/avi/Desktop# expr 6 – 3 
3

avi@localhost:/home/avi/Desktop# expr 12 / 3 
4

avi@localhost:/home/avi/Desktop# expr 2 \* 9 
18

27. look 命令

在终端上从英文字典上查单词以防混淆。比如说,我记不清了是该拼成carrier还是carieer。

avi@localhost:/home/avi/Documents# look car

Cara 
Cara's 
…
... 
carps 
carpus 
carpus's 
carrel 
carrel's 
carrels 
carriage 
carriage's 
carriages 
carriageway 
carriageway's 
carried 
carrier 
carrier's 
carriers 
carries 
…
... 
caryatids

上面的命令会显示字典上所有以'car'开头的单词。我得到了我想找的。

28. yes 命令

另外一个命令在通常基础上并不会经常使用,但是在脚本语言和系统管理时非常有用。

这个命令会持续地输出给定的字符串,直到由你的中断命令打断。

avi@localhost:~/Desktop$ yes "Tecmint is one of the best site dedicated to Linux, how to" 

Tecmint is one of the best site dedicated to Linux, how to 
Tecmint is one of the best site dedicated to Linux, how to 
Tecmint is one of the best site dedicated to Linux, how to 
Tecmint is one of the best site dedicated to Linux, how to 
…
…
...
Tecmint is one of the best site dedicated to Linux, how to 
Tecmint is one of the best site dedicated to Linux, how to 
Tecmint is one of the best site dedicated to Linux, how to

29. factor 命令

factor实际是一个源于数学的命令。这个命令会输出所有给定数字的因数。

avi@localhost:~/Desktop$ factor 22 
22: 2 11

avi@localhost:~/Desktop$ factor 21 
21: 3 7

avi@localhost:~/Desktop$ factor 11 
11: 11

30. ping -i 60 -a IP\_address

我们都用ping命令检测服务器是否连通。我通常ping google,来检测我是否连接到了因特网。

当你等待或者持续盯着你的终端等待命令的回应或者等待服务器的连接时,有时是很气人的。

一旦服务器连通就有一个声音如何(译注:下面命令是等60秒PING一次)?

avi@localhost:~/Desktop$ ping -i 60 -a www.google.com 

PING www.google.com (74.125.200.103) 56(84) bytes of data. 
64 bytes from www.google.com (74.125.200.103): icmp_req=1 ttl=44 time=105 ms 
64 bytes from 74.125.200.103: icmp_req=2 ttl=44 time=281 ms

注意,当你发现命令不会返回声音时。请确保你的系统不是静音的,声音已经在‘sound preferences(声音选项)‘ 中启用并确保勾选了‘Enable window and window sound‘。

31. tac 命令

这个命令很有趣,他会以倒序输出文本文件的内容。也就是从最后一行到第一行。

在home目录下,我的Documents目录下有一个35.txt文件。用cat 命令检查内容。

avi@localhost:~/Documents$ cat 35.txt

示例输出

  1. Linux is built with certain powerful tools, which are unavailable in windows.
  2. One of such important tool is Shell Scripting. Windows however comes with such a tool but as usual it is much weak as compared to it's Linux Counterpart.
  3. Shell scripting/programming makes it possible to execute command(s), piped to get desired output in order to automate day-to-day usages.

现在用tac命令反转文件内容(译注:当然,我们知道cat反转过来就是tac)。

avi@localhost:~/Documents$ tac 35.txt 

示例输出

  1. Shell scripting/programming makes it possible to execute command(s), piped to get desired output in order to automate day-to-day usages.
  2. One of such important tool is Shell Scripting. Windows however comes with such a tool but as usual it is much weak as compared to it's Linux Counterpart.
  3. Linux is built with certain powerful tools, which are unavailable in windows.

现在结束了。如果你还知道其他一些Linux鲜为人知的命令,你可以在下面评论,那么我们你可以在以后的文章中包含进来。

不要忘了给我们有价值的评论。我很快会发另外有趣的文章。别走开继续关注 Tecmint


via: http://www.tecmint.com/10-lesser-known-commands-for-linux-part-3/

译者:geekpi 校对:wxy

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

有时候安装新版本的NVIDIA驱动会遇到一些麻烦,尤其是当你不习惯Linux系统中的运作方式时。

这时候,这篇教程就能起到作用了,它能帮助普通用户从最新版的NVIDIA驱动331.20中获益。

在Ubuntu系统中有两种方法安装NVIDIA驱动,一种是简单方法,另一种是困难方法。简单方法也是最为直截了当的,但是需要你能够连接网络。这种方法也会把你带入PPA的美妙世界中去。

Ubuntu 13.10像它的前辈们一样,有一个很大的软件仓库可供使用,但是Canonical的开发者们由于种种考虑并不上传最新版的驱动。最重要的是他们不会冒险去上传一款未被证明其稳定性的软件。

幸运的是,我们有PPA可供使用,PPA中有最新版的驱动程序可供使用,而且里面的驱动会在官方放出新驱动一两天后就添加进去。只需在终端中敲入一下命令即可(当然你需要拥有root权限):

sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install nvidia-331

假如你已经安装了一个旧版本的驱动,你需要用sudo apt-get dist-upgrade命令替换上面命令中的最后一条命令。

完成这些步骤之后重启你的电脑,新驱动就安装好了。在下一次NVIDIA更新驱动时,你只需更新系统就可以,无需添加PPA。

第二种方法有点复杂,但是你可以不用联网(你需要先把驱动下载下来,在安装的时候不再需要联网)。我们将使用64位版本的驱动最为例子讲解。

你必须按Ctrl+Alt+F1组合键进入真正的终端(译注:原文中为虚拟终端,但实际上按这个组合键进入的是真正的终端),然后使用用户名和密码登录。接下俩,你需要用cd命令进入你放置驱动的位置(例如Downloads目录)然后输入以下命令:

sudo service lightdm stop 
sudo chmod a+x NVIDIA-Linux-x86_64-331.20.run
sudo ./NVIDIA-Linux-x86_64-331.20.run
sudo reboot

这样就搞定了。无论你选择使用什么方法,享受最新版的NVIDIA驱动吧。


via: http://news.softpedia.com/news/How-to-Install-the-Latest-NVIDIA-331-20-Drivers-in-Ubuntu-13-10-399182.shtml

译者:Linux-pdz 校对:Caroline

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

反复键入特定的信息 - 如电子邮件地址或家庭地址,详细的终端命令,及时发送用户喜爱的电视节目的资讯 - 可是件苦差事。

Snippets – 方便的访问存储的文本的方法

谢天谢地,这个世界上有一些工具可以帮助我们(做这些事儿)。

‘Snippets’ 就是Unity中这种组件之一。 这是一个简单的启动程序小工具,它让你在一个文件中保存和存储摘下来的内容,然后当你需要的时候从Unity的一个快速列表里复制到剪贴板。

在某些人把他的内裤扔到我的脸上之前,我得说Snippets不是唯一的这种工具,它甚至不是第一个提供这一系列功能的。但是它独特的是通过Unity启动器来提供这一系列功能。

这个软件具功能不错又足够简单,提供以下功能:

  • 添加、访问存储在txt文件中的文本段
  • 在快速列表里查看保存的文本段
  • 点击文本段就可以复制到剪贴板
  • 提供了把剪贴板中的内容保存到txt文件的选项

尽管它不是一个“智能”的剪贴板管理工具 – 它只是列出了你特别添加的项目;它不会列出你最近的剪贴板项目历史,但仍然是一个非常方便的小工具。

怎样为Unity安装Snippets

想要使用这个漂亮的启动器项目,你需要先安装一个命令行剪贴板工具XClip。点击下面的按钮(链接)从软件中心安装。

下一步,下载下面的‘Snippets’压缩文件。这包含了剩余所有的使用这个应用所需要的东西。

当这个压缩文件下完之后你就可以解压了。进入生成的文件夹,然后按Ctrl+H显示隐藏的文件。移动文件夹‘.snippets-launcher‘到你的主文件夹中。如果不这么做,这个组件将无法正常工作。

下一步是安装启动器项目。这是被一个你刚搬到文件夹里面的脚本关照的,但它不具有可执行的权限(需要安装),因此,我们首先需要关照它一下。

打开一个新的终端窗口在里面小心的键入下面的命令:

cd .snippets-launcher/ && chmod +x snippets.sh
./snippets.sh

就是这样;Snippets应该已经整装待发了。打开Unity Dash搜索Snippets然后把它拖到启动器上去:

  • 左键点击启动器打开可以添加你的文本段的文本文件
  • 右键点击启动器上的项目打开快速列表

快速列表里的选项:

  • 左键点击文本段以添加到剪贴板
  • 左键点击“日期”可以复制当前日期
  • 点击“添加剪贴板内容”可以把当前剪贴板中的内容加入到.txt文件中(译注:实际上保存的文本是存储在一个文本文件中)
  • 在添加一个项目到.txt文件后点击“更新启动器”

更多关于这个懒人的工具信息尽在Ubuntu论坛,在那里它的开发者,“Stinkeye”,会很高兴地提供帮助。


via: http://www.omgubuntu.co.uk/2013/10/unity-launcher-clipboard-snippets-item

译者:crowner 校对:wxy

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

RPM是RedHat的包管理器,用来安装、卸载、升级和查询基于RedHat Linux的安装包。RHEL和基于它的系统使用rpm命令来完成这些功能。以下是一些例子来演示rpm的查询功能,和展示了用不同的方法来查询rpm数据库和还原配置文件。

我在示例命令中使用SSH包来做说明。

查询RPM数据库和包

1、 在整个RPM数据库中查询,使用下面的命令

# rpm -qa
plymouth-0.8.3-27.el6.x86_64
pciutils-libs-3.1.10-2.el6.i686 
netcf-libs-0.1.9-3.el6.x86_64
..
...
..
Output Truncated

2、 你可以通过grep命令来确定上面的例子中有哪些SSH包已经安装

# rpm -qa |grep ssh
libssh2-1.4.2-1.el6.x86_64
openssh-askpass-5.3p1-84.1.el6.x86_64
libssh2-1.4.2-1.el6.i686
openssh-server-5.3p1-84.1.el6.x86_64
openssh-clients-5.3p1-84.1.el6.x86_64
openssh-5.3p1-84.1.el6.x86_64

输出显示了一些关于SSH的包,但是你仍需确定哪个包真正安装了SSH。为了更近一步,请看下面的示例。

3、 检查已安装的SSH包 a) 通过sshd守护进程 b) 通过它的配置文件

# rpm -qf /etc/init.d/sshd
openssh-server-5.3p1-84.1.el6.x86_64
# rpm -qf /etc/ssh/sshd_config
openssh-server-5.3p1-84.1.el6.x86_64

如你所见,ssh是通过openssh-server-5.3p1-84.1.el6.x86\_64包安装的,你可以在守护进程或者配置文件中使用rpm -qf命令(查询ssh包所包含的任一文件来查询)。两者都会输出从那个软件包安装的。

4、 现在你有了包名,你可能想要了解更多,并想要知道包中包含了哪些不同的文件。这种情况下,使用rpm -ql命令

# rpm -ql openssh-server-5.3p1-84.1.el6.x86_64
/etc/pam.d/ssh-keycat
/etc/pam.d/sshd
/etc/rc.d/init.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
/usr/libexec/openssh/sftp-server
/usr/libexec/openssh/ssh-keycat
/usr/sbin/.sshd.hmac
/usr/sbin/sshd
/usr/share/doc/openssh-server-5.3p1
/usr/share/doc/openssh-server-5.3p1/HOWTO.ssh-keycat
/usr/share/man/man5/moduli.5.gz
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz
/var/empty/sshd

上面的输出显示了所有该包在系统中安装的文件。现在让我们更进一步,我们只想要看到该包提供的配置文件和文档。

5、 只列出其中的配置文件,使用rpm -qc命令

# rpm -qc openssh-server-5.3p1-84.1.el6.x86_64
/etc/pam.d/ssh-keycat
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd

6、 只列出其中的帮助文档,使用rpm -qd命令

# rpm -qd openssh-server-5.3p1-84.1.el6.x86_64
/usr/share/doc/openssh-server-5.3p1/HOWTO.ssh-keycat
/usr/share/man/man5/moduli.5.gz
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz

考虑一种情况,你想要配置一个服务,但是你不知道哪里找到配置文件。举例来说,如上面的例子:使用rpm -qf rpm -qf /etc/init.d/sshd来找出 /etc/ssh/sshd\_config这个文件源于哪个包。这应该会给你显示openssh-server-5.3p1-84.1.el6.x86\_64包。使用rpm -ql openssh-server-5.3p1-84.1.el6.x86\_64来显示包中所含的所有文件。如你所见,许多文件名显示了出来,但是输出并不很有用。

现在使用rpm -qc openssh-server-5.3p1-84.1.el6.x86\_64 来只显示这个包的配置文件。这只会显示4个文件并给出了/etc/ssh/sshd\_config file的绝对路径,可以用来开始配置服务。

7、 从PRM包还原配置文件,而不重新安装包。

如果由于一些原因文件损坏或者从系统中删除了,你可以以rpm -qf开头来找出文件存在于哪个包。接下来使用rpm2cpio | cpio -idmv来从包中解压出文件。用ssh的例子。

假设/etc/ssh/sshd\_config文件已经删除并且你不希望重装ssh,按以下步骤来还原文件。

  • 使用rpm -qf /etc/init.d/sshd 这个命令会显示文件来自于openssh-server-5.3p1-84.1.el6.x86\_64包。
  • 从它的源中下载Openssh的rpm包。
  • 复制openssh-server-5.3p1-84.1.el6.x86\_64包到/tmp目录或者其他任何你选择的目录。
  • 使用rpm2cpio |cpio -idmv解压包。

上面步骤中你使用的命令会在/tmp下面创建一个子目录。你现在可以复制到它的原始目录。


via: http://linoxide.com/linux-command/rpm-command-query/

译者:geekpi 校对:wxy

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