世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种—-GPL、BSD、MIT、Mozilla、Apache和LGPL—-之中做选择,也很复杂。
乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。
下面是我制作的中文版。
日期: 2011年5月 2日
Sublime Text是一款很流行的源代码文本编辑器,托Webupd8团队的PPA仓库之福,我们现在能通过PPA安装Sublime Text 3,适用于ST的注册用户和未注册用户。
打开终端(Ctrl + Alt +T), 键入并运行下列命令:
$ sudo add-apt-repository ppa:webupd8team/sublime-text-3 $ sudo apt-get update $ sudo apt-get install sublime-text-installer
玩的开心 😉
via: http://www.unixmen.com/install-sublime-text-3-ubuntu-13-04-13-10/
Ubuntu 13.10已经发布一段时间了,是时候坐下来配置一下系统来满足你的要求。Ubuntu 13.10配备了很多东西,当你安装或者升级时其实有些并不是你所需要的。
举个例子,当你安装或者升级到Ubuntu 13.10时,会自动启用Amazon和一些其他商业购物网站的功能。当你打开Unity Dash时这些Lens就会显示。当你在Dash处执行搜索时,类似Amazon的远程数据源中符合你搜索内容的选项也会发送过来。
这些由Canonical公司提供的新增特性可能对某些人有用,但是对另一些用户,这些特性可能是他们不需要的。
因为从远程数据源获取内容需要带宽,这就可能会对你的上网账单有负面影响,特别是当你住在一个根据流量计费的地域。
对于另一些对安全和隐私有担忧的用户来说,本地自动搜索远程源可能不是一个好主意。还有一些用户只是不想当他们在本地搜索时会有商业公司展示他们的产品。
这篇简单的教程就是教你当使用Ubuntu 13.10时如何快速禁用Amazon和所有远程内容获取。
在你的键盘上按组合键 Ctrl – Alt – T 显示终端。当它打开后运行下面的命令去禁用该功能。
gsettings set com.canonical.Unity.Lenses remote-content-search 'none'
如果你想要重新启用它,运行以下命令。
gsettings set com.canonical.Unity.Lenses remote-content-search 'all'
你需要重新登陆或者重启你的电脑使更改生效。在完成这些操作后,当你使用Ubuntu搜索时就没有远程源会被使用。
Enjoy!
via: http://www.liberiangeek.net/2013/10/disable-amazon-remote-content-fetching-ubuntu-13-10/
译者:whatever1992 校对:wxy
这一部分我们讲配置内核IRQ子系统。中断请求(IRQ)是硬件发给处理器的一个信号,它暂时停止一个正在运行的程序并允许一个特殊的程序占用CPU运行。
这个目录中的第一个问题属于内核特性(Expose hardware/virtual IRQ mapping via debugfs (IRQ_DOMAIN_DEBUG))(通过debugfs来显示硬件/虚拟的IRQ映射),它询问是否可以使用虚拟的调试文件系统来映射硬件及Linux上对应的IRQ中断号。这个用作调试目的,大多数用户不需要用到,所以我选择了”no”。
下一个标题显示”Timers subsystem”(计时器子系统)。第一个有关定时器子系统的问题是“Tickless System (Dynamic Ticks) (NO_HZ)”(无滴答系统)。我选择了“yes”,这会启用一个无滴答系统。这意味着定时器中断将会按需使用,定时器中断允许任务以特定的时间间隔执行。下一个问题(High Resolution Timer Support (HIGH_RES_TIMERS))问是否支持高精度定时器。并不是所有的硬件支持这个,通常地说,如果硬件很慢或很旧,那么选择”no”,否则像我一样选择”yes”。
下一个标题”CPU/Task time and stats accounting”(CPU/任务用时与状态统计),这个是关于进程的追踪。第一个问题看上去像这样:
Cputime accounting (CPU用时统计)
TICKCPUACCOUNTING会在每个CPU滴答中检测/proc/stat。这是默认的选项,这个记账方法非常简单。
注意:CPU滴答是抽象测量CPU时间的方式。每个处理器、操作系统和安装的系统都不同,比如说,一个更强大的处理器会比老的处理器拥有更多的CPU滴答。如果你安装了一个Linux系统,然后接着在同一块磁盘上重新安装了它,你可能会得到一个更快或更慢的CPU滴答时间(至少一些计算机技术书上这么说)。通常来讲,一个更快的时钟速度意味着更多的CPU滴答。
如果启用了VIRT_CPU_ACCOUNTING_GEN,任务和CPU时间统计将由监视内核-用户边界实现。这个选择的代价是会增加额外的开销。
IRQ_TIME_ACCOUNTING记账方式则通过检测IRQ状态间的时间戳工作,这个性能开销很小。
我选择了”1″并被询问有关BSD记账”BSD Process Accounting (BSD_PROCESS_ACCT)”(BSD进程记账)的问题。这个内核特性会记录每个进程不同的关闭信息。为了得到一个更小和更快的内核,我选择了”no”.
下一组问题看上去就像下面这样。
TASKSTATS使内核可以通过网络套接字导出进程统计。网络套接字是内核和用户空间进程间IPC通信的一种形式。TASKDELAYACCT监视进程并注意资源访问的延迟。比如,TASKDELAYACCT可以看到X进程正在为了CPU时间而等待,如果TASK_DELAY_ACCT观察到进程已经等待了太长时间,这个进程接着就会被给予一些CPU时间。TASK_XACCT会收集额外的统计数据,为了更小的内核负载我会禁用这个。
现在接下来的目录就会显示RCU子系统:读取-复制-更新子系统是一种低负载的同步机制,它允许程序查看到正在被修改/更新的文件。配置工具已经回答了第一个问题。
RCU Implementation (RCU 实现方式)
> 1. Tree-based hierarchical RCU (TREE_RCU) (树形分层结构的RCU)
choice[1]: 1
这里就选择“1”。除了TREE_RCU,还有classic RCU(更老的实现)。下一个问题(Consider userspace as in RCU extended quiescent state (RCU_USER_QS) [N/y/?])(是否在用户空间记录扩展的quiescent状态)问RCU是否可以在CPU运行在用户空间时设置一个特殊的quiescent状态。这个选项通常被禁用,因为这会增加太多消耗。下面是另一个RCU问题(Tree-based hierarchical RCU fanout value (RCU_FANOUT) [64])(树形分层结构的RCU端点数),问的是关于端点数。下一个问题(Tree-based hierarchical RCU leaf-level fanout value (RCU_FANOUT_LEAF) [16])(树形分层结构的RCU叶级端点数),是另外一个关于端点数的问题,但它只处理叶级。还有另外一个RCU问题(Disable tree-based hierarchical RCU auto-balancing (RCU_FANOUT_EXACT) [N/y/?])(是否禁用树形分层结构的RCU的自动平衡),询问是否禁用RCU自动平衡树,而采用上述的端点数。
接下来,配置脚本将会询问”Accelerate last non-dyntick-idle CPU’s grace periods (RCU_FAST_NO_HZ)”(加速最后的非dyntick-idle CPU的RCU宽限期)。在这之后会显示”Offload RCU callback processing from boot-selected CPUs (RCU_NOCB_CPU)”(从选择引导的CPU里面卸载RCU回调)。(译注:此处作者没做解释。前一个能够节省电力,但是降低了性能;后一个用于调试。)
qBittorrent是一个由志愿者开发的自由开源的跨平台BT客户端软件,利用libtorrent-rasterbar库,由C++/Qt写成,是现在流行的BT客户端软件µtorrent的一个替代选择。最新的版本qBittorrent 3.1.0 已经在2013年10月份放出。
qBittorrent轻巧快速,支持unicode编码,而且提供一个完美整合的搜索引擎。它也支持UPnP端口转发和NAT-PMP、加密(兼容Vuze)、FAST扩展和PeX支持(兼容utorrent)。
$ sudo add-apt-repository ppa:hydr0g3n/qbittorrent-stable $ sudo apt-get update && sudo apt-get install qbittorrent
你也可以下载qbittorrent的源代码,然后编译后安装。
via: http://www.unixmen.com/install-qbittorrent-3-1-0-ubuntu-via-ppa/
Pmap 提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息。Pmap实际上是一个Sun OS上的命令,linux仅支持其有限的功能。但是它还是对查看完整的进程地址空间很有帮助。我们需要PID或者运行的进程的唯一进程ID来查看进程内存状态,我们可以通过/proc或者常规命令比如top或ps得到它。
#pmap PID
或者
#pmap [options] PID
在输出中它显示全部的地址,kbytes,mode还有mapping。
[root@info ~]# pmap 1013 1013: /usr/sbin/sshd 00110000 1480K r-x- /usr/lib/libcrypto.so.1.0.0 00282000 80K rw-- /usr/lib/libcrypto.so.1.0.0 00296000 12K rw-- [ anon ] 00299000 36K r-x- /lib/libkrb5support.so.0.1 002a2000 4K rw-- /lib/libkrb5support.so.0.1 002a3000 16K r-x- /lib/libplc4.so 002a7000 4K rw-- /lib/libplc4.so 002ab000 88K r-x- /lib/libaudit.so.1.0.0 002c1000 4K r-- /lib/libaudit.so.1.0.0 002c2000 4K rw-- /lib/libaudit.so.1.0.0 002c3000 216K r-x- /lib/libgssapi_krb5.so.2.2 002f9000 4K rw-- /lib/libgssapi_krb5.so.2.2 002fa000 808K r-x- /lib/libkrb5.so.3.3 003c4000 24K rw-- /lib/libkrb5.so.3.3 003ca000 152K r-x- /lib/libk5crypto.so.3.1 003f0000 4K rw-- /lib/libk5crypto.so.3.1 003f1000 92K r-x- /usr/lib/libnssutil3.so 00738000 4K r--- /lib/libresolv-2.12.so 00739000 4K rw-- /lib/libresolv-2.12.so 0073a000 8K rw-- [ anon ] 00825000 120K r-x- /lib/ld-2.12.so 00843000 4K r--- /lib/ld-2.12.so 00844000 4K rw-- /lib/ld-2.12.so 0090d000 32K r-x- /lib/libwrap.so.0.7.6 00915000 4K rw-- /lib/libwrap.so.0.7.6 00948000 484K r-x- /usr/sbin/sshd 009c1000 8K rw-- /usr/sbin/sshd 009c3000 20K rw-- [ anon ] 009e0000 92K r-x- /lib/libpthread-2.12.so 009f7000 4K r--- /lib/libpthread-2.12.so total 8232K
我们可以检查多进程内存通过插入多个PID。加入多个PID中间使用空格分隔。
pmap 1013 1217 1118
[root@info ~]# pmap -x 1013 1013: /usr/sbin/sshd Address Kbytes RSS Dirty Mode Mapping 00110000 1480 92 0 r-x- libcrypto.so.1.0.0 00282000 80 80 80 rw-- libcrypto.so.1.0.0 00296000 12 8 4 rw-- [ anon ] 00299000 36 0 0 r-x- libkrb5support.so.0.1 002a2000 4 4 4 rw-- libkrb5support.so.0.1 002a3000 16 0 0 r-x- libplc4.so 002a7000 4 4 4 rw-- libplc4.so 002ab000 88 4 0 r-x- libaudit.so.1.0.0 002c1000 4 4 4 r--- libaudit.so.1.0.0 002c2000 4 4 4 rw-- libaudit.so.1.0.0 002c3000 216 4 0 r-x- libgssapi_krb5.so.2.2 002f9000 4 4 4 rw-- libgssapi_krb5.so.2.2 002fa000 808 4 0 r-x- libkrb5.so.3.3 003c4000 24 24 24 rw-- libkrb5.so.3.3 003ca000 152 4 0 r-x- libk5crypto.so.3.1 003f0000 4 4 4 rw-- libk5crypto.so.3.1 003f1000 92 0 0 r-x- libnssutil3.so 00408000 12 12 12 rw-- libnssutil3.so 0040b000 12 0 0 r-x- libplds4.so 0040e000 4 4 4 rw-- libplds4.so --- --- --- --- --- total kB 8232 - - -
这里的Address,Kbyte,Dirty,RSS,mode还有mapping的说明如下
有些时候你可能想要记录一个终端会话,也许是为了保存一个复杂的命令行操作为将来使用的参考,或者是为了知识分享。你可能也希望记录的文件尺寸尽可能的小一点,并且希望当播放记录文件时可以做一个快速回放。在这个文章中我们将讨论两个命令行工具( ttyrec 和 ttyplay )来让你记录、保存和播放终端会话。
看名字就知道ttyrec命令是用来记录终端会话的,ttyplay是用来播放ttyrec记录的会话的。
这里是这些工具的man截图:
> ttyrec
> ttyplay
下面告诉你怎么用这些命令来记录和播放一个终端会话。
步骤-1
开始记录一个终端会话,只需要运行下面的命令:
$ ttyrec [文件名]
参数 [文件名] (上面显示的命令)是一个选项,可以指定你想要的任何名字。这个记录文件将会用这个名字保存下来。如果你没有指定一个文件名,ttyrec就会用 ttyrecord 作为缺省文件名。
步骤-2
当你想要记录的时候你就可以运行这个命令,就开始记录会话了。ttyrec命令甚至可以记录命令行类似vi,nano,emacs,lynx等这些命令行工具的会话。
步骤-3
到你想要结束终端会话的时候,只需要运行 exit 命令,这个会话记录就会结束。记录文件将会保存在当前文件夹下。
你可以运行下面的命令播放这个文件:
$ ttyplay [文件名]
参数 [文件名] 就是记录文件名,就是上面通过 ttyrec 命令给定参数的那个名字。如果没有指定文件名,那么缺省文件名就是 ttyrecord 。
当你运行ttyplay,回放会话记录就会开始。这里给出一些当你回放会话的时候你可以用的快捷键。
这有一些其它ttyrec和ttyplay命令支持的选项:
> ttyrec
ttyplay
还有另一个小工具 ttytime 可以用来显示用ttyrec工具会话记录的时间。很容易使用并且只需要记录文件名作为命令行参数。
举一个例子:
$ ttytime record_file 29 record_file
这样你就可以看到ttytime命令显示会话记录文件record_file的时间。
这有一个ttyrec和ttyplay命令的很有用的视频:
这有一些关于这些工具的重要的链接:
你可以使用任何命令行下载管理器比如apt-get或者yum来下载ttyrec,ttyplay和ttytime。Ubuntu用户也可以通过Ubuntu软件中心下载安装这些工具。
如果你正在找一些Linux轻量级命令行工具用来记录播放终端会话,那么ttyrec和ttyplay是理想的工具。我真的喜欢使用它们带来的轻松。试一下这些工具,你不会失望的。
你使用过ttyrec,ttyplay或者其它的终端记录/播放 工具?分享你的经历给我们吧。
via: http://mylinuxbook.com/ttyrec-ttyplay-record-and-play-terminal-sessions-in-linux/
本文为你提供了一个简单的小技巧,告诉你如何用你自己图片来替换登陆窗口的背景。Ubuntu的登陆窗口挺不错的,可能比大多数发行版的都要好,但是如果你想要使用一张你自己的图片,比如一张可以让你回忆起某个特定的地方或事情的图片,你就可以按照下面的步骤来更换上它。
有许多方法可以做到这一点,这篇博文介绍的只是其中一种。下面介绍的方法可以使用dconf-editor和lightdm用户身份来完成这样的效果。简单来说就是,切换到root用户,给予lightdm用户访问x-server的权限。然后使用lightdm用户身份,运行dconf-editor,然后做出修改。
在设置完自定义图片并且重启后,每次启动电脑时你就应该能看到你设置的图片。若设置的图片是一张你非常喜欢的并且能给你带给你很多回忆的图片,那么你每次启动电脑登陆到Ubuntu时一定非常开心。
这个手册假设你已经在你的电脑上安装了dconf-editor。若没有,你可以运行以下命令来安装dconf-editor
sudo apt-get install dconf-editor
下一步,选择你要作为登陆背景的图片。然后,记下图片的位置以及图片的名字,运行以下命令切换到root用户。
sudo –i
下一步,运行以下命令给予lightdm用户访问X-server的权限。Lightdm是一个管理登陆窗口背景的服务程序,因此假如你要更换登陆窗口的背景图片,你就要修改lightdm用户。
xhost +SI:localuser:lightdm
下一步,运行以下命令切换到lightdm用户
su lightdm -s /bin/bash
然后,运行以下命令开启dconf-editor
dconf-editor
当工具打开后,浏览到 com->canonical->unity-greeter。然后改变背景值为自定义的图盘。你可能需要勾掉draw-grid。
重启电脑,尽情享受~
via: http://www.liberiangeek.net/2013/09/daily-ubuntu-tipschange-logon-screen-background/
OK,我们还继续配置内核。还有更多功能等待着去配置。
下一个问题(Enable ELF core dumps (ELF_CORE))询问的是内核是否可以生成内核转储文件。这会使内核变大4KB。所以我选择了”no”。
注意:内核转储文件(内存或者系统的转储)是程序崩溃前已记录的状态。内核转储是用来调试问题的。这个转储文件的格式是ELF(Executable and Linkable Format )。
下面可以启用PC扬声器(Enable PC-Speaker support (PCSPKR_PLATFORM))。大多数计算机用户拥有并使用扬声器,所以这个启用它。
虽然下面的特性会增加内核的大小(Enable full-sized data structures for core (BASE_FULL))(启用完全大小的内核数据结构),但性能也随之增加。所以我选择”yes”。
为了使内核可以运行基于glibc的程序,必须启用FUTEX(Enable futex support (FUTEX))。这个特性启用了快速用户空间互斥锁(Fast Userspace muTEXes)。
注意:glibc(GNU C Library)是由GNU实现的标准C库。
注意:FUTEX (fast userspace mutex)是用来防止两个线程访问同一个不能被多个线程使用的共享资源。
下一个问题(Enable eventpoll support (EPOLL))可以通过回答”no”来禁用epoll系统调用。然而,为了含有epoll系统调用,我选择了”yes”。epoll是一种I/O事件通知系统。
为了收到来自文件描述符的信号,我们启用signalfd系统调用(Enable signalfd() system call (SIGNALFD)。
如果启用这个特性(Enable timerfd() system call (TIMERFD)),它允许程序使用定时器事件获取文件描述符。
我们现在的配置必须启用eventfd系统调用(Enable eventfd() system call (EVENTFD))。它默认启用访问共享内存文件系统(Use full shmem filesystem (SHMEM)。共享内存文件系统是一种虚拟内存文件系统。
下一个问题是”Enable AIO support (AIO)”。这个特性启用了线程化程序使用的POSIX异步I/O。
注意:异步I/O用来处理输入/输出,它允许线程在传输完成前就完成处理。
如果你正在给一个嵌入式系统配置一个内核,那么问题“Embedded system (EMBEDDED)”可以选择”yes”。否则就像我一样选择”no”。
注意:嵌入式系统是运行在一个更大的电子系统的实时计算机。
现在,我们可以配置内核性能事件和计时器了。配置工具没有给开发者选择,直接启用了事件和计数器(Kernel performance events and counters (PERF_EVENTS))(内核性能事件和计数器)。这是一个重要特性。
接下来,我们可以禁用另外一个调试特性(ebug: use vmalloc to back perf mmap() buffers (DEBUG_PERF_USE_VMALLOC))。
如果启用了VM事件计数器,那么事件计数就会显示在/proc/vmstat(Enable VM event counters for /proc/vmstat (VM_EVENT_COUNTERS))。如果禁用了事件计数就不会显示,/proc/vmstat只会显示内存页计数。
为了更好地支持PCI芯片,(Enable PCI quirk workarounds (PCI_QUIRKS))回答yes。这会启用对PCI芯片的怪异行为和bug的临时解决方案。
下面一个调试特性可以像我一样禁用掉(Enable SLUB debugging support (SLUB_DEBUG))。这个特性会耗费很多空间并且会禁用用于调试内核的SLB sysfs。如果这个特性被禁用,那么/sys/slab就不会存在并且系统上也不再支持缓冲验证。
堆随机化是一个让利用堆漏洞更加困难的特性(Disable heap randomization (COMPAT_BRK))。然而我们不应该去启用它,因为任何基于libc5的软件都无法工作在这个系统上!只有我们有特别的理由这么做或者如果你不会使用基于libc5的软件时才去启用它。我禁用了这个特性。当编译一个通用的内核时,开发这会希望禁用这个特性。
接下来必须选择一个SLAB分配器。SLAB分配器是一个没有碎片且有效率地将内核对象放置在内存中的内存管理系统。默认选择是”2″。
Choose SLAB allocator
1. SLAB (SLAB)
> 2. SLUB (Unqueued Allocator) (SLUB)
3. SLOB (Simple Allocator) (SLOB)
choice[1-3?]: 2
为了支持扩展性能支持,(Profiling support (PROFILING))回答”yes”。
下一个问题让开发者选择是否启用OProfile系统。它可以禁用、启用或者添加为一个模块在需要时载入。我选择禁用这个特性。
Kprobes允许用户捕捉几乎任意的内核地址去启动一个回调函数。这是一个可以像我一样禁用的调试工具(Kprobes (KPROBES))。
这个优化特性可以启用(Optimize very unlikely/likely branches (JUMP_LABEL))(优化非常近似/不近似的分支)。这使分支预判更加简单并可以减小开销。
配置工具启用了一个实验性特性”透明用户空间探针”(Transparent user-space probes (EXPERIMENTAL) (UPROBES))。不过不要担心,系统可以很好工作,并不是所有的实验性特性是不稳定或者坏的。
接下来,我们会被询问基于gcov的内核分析(Enable gcov-based kernel profiling (GCOV_KERNEL))。这可以被禁用。
Ubuntu 13.10已经发布,不过它的内核可不是最新的。当然坚持Ubuntu 13.10当前内核不是一件坏事。事实上。不特别建议升级超出你的Linux发行版的官方仓库测试过的特定版本。
但另一方面,如果你不害怕一再折腾Ubuntu,那么你可以试试升级到最新Ubuntu支持的Linux内核。你会发觉最新的内核总是有改善的、修补了漏洞和添加特性的.
所以,如果你的电脑有些运行不正常,那么更新Linux内核可能就能修复。但记住,当你升级时你也有可能导致系统崩溃。
如果你不再惧怕,和我一起永往直前吧,让我们开始升级Ubuntu Linux 内核到 3.11.6!!
首先,在你开始升级之前,请先备份你的数据,以防升级时出错无法恢复。小心行得万年船!!!
更多关于这个内核版本信息,阅读更改日志。
当你一切准备就绪,运行下列命令来升级你的机器并删除包括比当前更旧的内核在内的旧软件包。
sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove
然后,进到/tmp目录。
cd /tmp
接着,复制粘贴下列命令,按回车下载32位的Linux内核
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-headers-3.11.6-031106-generic_3.11.6-031106.201310181453_i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-headers-3.11.6-031106_3.11.6-031106.201310181453_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-image-3.11.6-031106-generic_3.11.6-031106.201310181453_i386.deb
对于64位Linux内核版本,则复制粘贴下行。
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-headers-3.11.6-031106-generic_3.11.6-031106.201310181453_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-headers-3.11.6-031106_3.11.6-031106.201310181453_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.6-saucy/linux-image-3.11.6-031106-generic_3.11.6-031106.201310181453_amd64.deb
下载适合你的版本,运行下列命令,开始安装:
sudo dpkg -i *.deb
最后,运行下列命令升级Grub。
sudo update-grub2
就这样!重启你的电脑,完成升级!!
玩的开心!
via: http://www.liberiangeek.net/2013/10/upgrade-linux-kernel-3-11-6-ubuntu/
自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用服务器。
如果你有几个不同的电脑需要同步和自动化备份,RPi可以做到。如果你想通过家中的任意屏幕来访问你的音乐和视频,RPi也能实现。也许你有一个或两个打印机,你想要简单与大家共享,树莓派在硬件和时间上用最小投资就能满足你的这些需求。
低成本:35美元(约合242元RMB),B型的RPi接近一台完整的电脑,512M内存,100Mb以太网,SD卡插槽,2个USB接口,音频输出和HDMI或RCA视频输出。我知道HDMI电缆就比树莓派贵。
能源效率:硬件成本只是服务器费用的一部分,因为你需要考虑能源成本去不断运行设备。家用服务器所需要的服务不会占用太多CPU,大部分时间它都处于空闲状态,等待发挥功效。RPi’s超低功率组件非常适合这个工作负载,这有助于降低你的电费消耗。我的一个B型的RPi加上外部硬盘消耗总共只有8瓦,然而用老式速龙代替的机器在闲置时消耗54瓦。假设10美分每千瓦一小时,这使得一个RPi每年的电费在7美元。一个基于速龙的机器是47美元。在不到一年的时间里,RPI基本上能够收回成本。
低噪音:因为RPi没有风扇和移动部件,在你最终配置中的唯一能生成噪音或明显热量的组件就是硬盘。如果你担心噪音,像Silent PC Review发烧友网站经常在他们的评论中涉及到噪声基准。我的体会是现代驱动器足够安静,要比其他的设备安静的多(如媒体中心,游戏机或其他电脑)。如果你家里没有为布线提供更多的灵活性选择,RPi的小尺寸、少量发热和低噪音也许让你走过它旁边都很难发现。
图1,一个简洁高效的家用服务器
新机会:一个不怎么实际的好处是-简单快乐的尝试新事物!对我来说,这是我第一次真正工作在基于Debian的发行版,很可能也是许多Linux爱好者们第一次有机会尝试一个基于ARM的体系结构。
对于一个家庭服务器来说,你将需要一个中等容量的SD闪存卡作为本地存储。它可以使用一个USB引导,但那会占用两个宝贵的USB插槽之一。闪存卡不需要很大容量,但是速度越快越好。我选择了一个名牌SD卡,8GB容量和CLASS 10的速度等级。对于备份和存储多媒体文件,一个有USB连接插槽的硬盘驱动器是必须的。我选择一个1.5TB的硬盘和一个Calvary EN-CAHDD-D 2-bay USB 2.0硬盘连接基座。这个连接基座有个功能,在RAID-0模式中连接两个硬盘,总有一天会有用的。最后,RPi不带电源线,但可以用大多数智能手机充电器所用的5v微型USB。看看RPi是否挑剔电源,我为电源已换了三个不同的微型USB手机充电器。我在这周内尝试了每一个,在任何一个上都没有问题。
安装RPi操作系统包括了许多方面的大量细节,但这里有一些家用特定服务器的安装提示,大致按需要的顺序讲述。
1)直接通过http://www.raspberrypi.org/downloads获取Raspbian “Wheezy”安装镜像,并复制到SD卡,用网站上已列出的步骤。
2)第一次引导RPi时,连接一个键盘、鼠标和显示器。在引导RPi之前别忘打开显示器,可以检测到正确的HDMI或混合输出端口。
3)RPi有一个很好的”raspi-config”屏幕,在第一次启动时你会看到。对于家庭服务器来说,以下选择将会有用:
完成后,你将在出现 pi@raspberrypi 提示符下。安装脚本可以在任何时间通过 sudo raspi-config 重新运行。
还有一些其他配置,然后操作系统就可以用了。
1)一个静态IP让一切变得更容易,切换eth0的网络设置:
>> sudo nano -w /etc/network/interfaces
更改eth0的那行 iface eth0 inet dhcp ,如下所示(根据你的家庭网络设置修改):
======/etc/network/interfaces====== ... iface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 ... ======/etc/network/interfaces======
2)创建本地用户并加入到users组和sudo组:
>> sudo adduser YOURUSERIDHERE >> sudo usermod -a -G users YOURUSERIDHERE >> sudo usermod -a -G sudo YOURUSERIDHERE
3)更新系统确保所有的库是最新最好的:
>> sudo apt-get update; sudo apt-get upgrade
4)好了,准备重新启动吧!先关闭PI:
>> sudo /sbin/shutdown -h now
一旦关闭(注意RPi电路板上的绿色LED状态指示灯,可以知道什么时候完成关闭了),拔下显示器,键盘,鼠标和电源线。插入USB端口上的硬盘,然后插回电源重启RPi。
5)一旦RPi开启(这些绿色LED指示灯用来描述状态),你可以从远程网络上从任何其他机器ssh到RPi并完成所有的配置(更改以下命令里的IP为你的静态IP):
>> ssh YOURUSERIDHERE@192.168.1.10
祝贺你,有了一个可以工作的树莓派!
Ubuntu 13.10发布了,而且你已经升级了,然后你想知道现在要做些什么。不要着急,这里有10件安装完Ubuntu 13.10后必做的事。
我们以前为ubuntu每个版本整理了一个安装后核对表,但是因为新功能的到来以及不断的进步,我们建议的步骤也在不断改变和转换。
因此,升级到ubuntu 13.10后最好做哪些事情呢?
尽管Ubuntu 13.10相较于之前的发布版包含了较少的面向用户的特征,但是新的Smart scopes服务还是不可错过的。
Ubuntu本身已经支持了大量的硬件。但是虽然免费而又开源的的驱动能力越来越强,在Steam 或 Steam HD video 上玩儿游戏仍会感觉性能差强人意。
如果是这样,可以 安装并使用专有驱动 ,它们在Software & Updates (软件和更新)工具中。
在启动器里打开软件源应用 (或者通过系统设置)然后点击进入“其他驱动”选项卡,然后按照屏幕上的提示操作。
由于一个很大的法律问题的纠缠,Ubuntu不能即刻支持很多流行的音频视频格式。这是一项很大的先天缺陷。
但是安装这些支持所需要的仅仅只是几下点击。在安装过程中只需勾选使用限制格式 框来导入需要的解码器,或者,如果你忘了的话,也可以从Ubuntu软件中心安装所有的多媒体相关工具。
Facebook, Twitter, Google Talk, Gmail以及其他的社交账号可以在在线账号 里一起设置。
只需要添加一个网络然后决定哪些程序可以使用它。例如,关掉Empathy,默认启动Google Chat,从Social Lens里过滤FaceBook。
支持的服务包括Twitter, Google, Yahoo!, Facebook (包括 Facebook Chat), Flickr 以及正在增长的大量其他的应用。
Ubuntu默认提供了一整套的应用,但是众口难调,如果你不喜欢某个应用,或者发现自己缺少了什么应用,你可以很轻松的找到并添加软件。
打开Ubuntu软件中心,可以看到成千上万的程序,包括下面这些很流行的选择:
您还可以找到像我们这样列出了丰富的附加软件的网站 – 看看我们的Apps标签你会有一些想法。
如果你想使你计算机上的某些信息免于被窥视的话,可以看看这篇文字。保护信息的一种方法就是加密你的home目录,但是一旦你登录系统后,你的home目录下的信息将暴露于外。过去,我已经写过关于怎样在你的系统上使用Cryptkeeper来创建加密的文件夹。Cryptkeeper是一个图形前端,后端是 encfs。encfs允许你创建一个加密的文件夹,然后通过FUSE来挂载作为用户文件系统。在这篇教程里,我会教你怎么在Linux系统上的命令行下面使用encfs工具来创建和管理一个加密的文件夹。
如果你使用的是Ubuntu或者它的衍生版本中的一种如Linux Mint的话,在软件源库当中应该能找到encfs。这种情况,可以用下面的命令来安装
sudo apt-get install encfs
一旦在系统中安装好了encfs后,你就能在你的home目录下创建一个加密的文件夹。在这个示例当中,我将会创建一个叫做tuxtweaks的加密文件夹,这通过终端窗口就可以完成。当创建一个新的文件夹的时候,你需要指定全路径名,当然也可以使用如下所示的标准快捷方式。
encfs ~/.tuxtweaks ~/tuxtweaks
这会创建两个文件夹。第一个.tuxtweaks,它包含被加密的信息;第二个tuxtweaks,当你想要访问信息的时候,解密的版本信息将会挂载到下面。如果这些文件夹都不存在,系统将会提示询问是否创建它们。在提示下面键入‘y’以允许创建文件夹,然后你应该能看到如下所示的一些信息:
Creating new encrypted volume. Please choose from one of the following options: enter "x" for expert configuration mode, enter "p" for pre-configured paranoia mode, anything else, or an empty line will select standard mode.
如果你想要最高级别的加密文件夹的话,在提示符下输入p选项。否则只需敲击[Enter]键,就会以标准选项来创建新的加密文件夹。
之后,你将会看到新加密卷的参数列表及一些警告信息,随之提示符会让输入一个密码。确保不要忘记使用的密码,因为没有密码找回机制。在输入密码并以第二次输入校验通过后,新的文件夹会被创建成功,并自动挂载进文件系统,可以开始使用了。
一旦新加密文件夹被挂载上,它就跟你系统上的其它文件夹一样的使用,但如果你把它设置为paranoia模式的话,使用它的硬链接会出现不可用的异常。我想,这对大多数用户来说并不是问题。让我们继续吧,在新文件夹里创建一个简单的文本文件,然后用它来做测试。
echo "GNU/Linux is my favorite computer operating system." >~/tuxtweaks/test.txt
在终端下或在文件系统管理器下,你都能看到在tuxtweaks目录里已经有一个叫做test.txt的新文件。打开此文件可看到这里一个完全可读的文本文件。现在切换到~/.tuxtweaks目录下,这是你文件夹的加密版本,可以看到这里的文件名不一样了,如里你查看此文件的内容话,会发现是乱糟糟的。
一旦你完成文件访问或者数据创建等操作,最好把加密文件夹卸载,以便里面的信息安全的隐藏掉。encfs自身不带有卸载的命令,一旦用它创建了用户文件系统,就可以利用FUSE来处理卸载任务。下面我们会使用fusermount命令来卸载我们的加密文件夹。
fusermount -u ~/tuxtweaks
切换到home目录下,会看到tuxtweaks目录仍然存在,但进入文件夹,你会发现里面是空的。(译注:因为tuxtweaks目录只是一个挂载点,真实的数据是以加密的方式存储在.tuxtweaks目录下的,)
下一次你想要访问加密数据的话,你需要重新加载并解密它,仅仅只需要使用跟我们在第一步创建此文件夹相同的命令就可以。
encfs ~/.tuxtweaks ~/tuxtweaks
我发现使用encfs加密文件夹来安全地存储财务信息非常便捷,比如纳税申报表以及用于存储日志列表凭据。这样我只需要记住我加密文件夹的密码,然后就可以进入访问记录有其他登录ID和密码的名单文件。
你会使用encfs来做什么呢?在评论中给我们分享吧。
via: http://tuxtweaks.com/2013/10/encrypted-folders-linux-encfs/
译者:runningwater 校对:wxy
如你所见,这是一篇关于Ubuntu 13.10服务版的安装的指南。
下载最新的版本Ubuntu 13.10 服务版,然后用刻录好的Ubuntu 13.10服务版光盘引导你的服务器,你将会看到类似下面的显示。
首先选择您的语言:(建议使用英文)
点击安装Ubuntu服务版:
选择安装过程中所使用的语言:
选择你的国家(译注:用于决定时区,请选择中国,使用+8时区):
配置区域设置:(译注:对于服务器版本,我们建议一律采用英文的locale—— en_US.UTF-8,当然,你可以增加中文字体包,但是保持服务器环境是英文环境,有助于减少出现奇怪问题的几率。)
检测键盘布局(译注:一般不必检测):
选择键盘布局(译注:如下图的英文即可):
对于一些Ubuntu的新用户,如果你们想在Ubuntu中使用webcam的话,这里有一些信息能够帮助到你们。正如你们说知道的那样,Ubuntu旨在支持绝大多数webcam,而且是现成可用的。大多数webcam生产商并不为Linux系统提供驱动,包括Ununtu。所以,Linux开发者们必须能够尽最大努力让webcam设备在Linux内核中运行。
支持Linux的webcam驱动由Linux UVC项目提供UVC。该项目意图为webcam提供一个万能USB支持,就像一个通用USB驱动控制一些USB设备,例如U盘,外部USB设备和其他一些设备。
大多数主流的USB webcam设备都可以在Linux系统下工作,其中包括支持Linux UVC项目驱动的Ubuntu。如果你想为你的Ubuntu计算机购买一个webcam设备,又不确信它是否能被支持,请核查支持UVC的webcam列表.
上面列出的webcam都能够很方便地应用在Linux机器中。因此,在为你的机器购买webcam之前,查看一下列表并找到你喜欢的模块。
在购买一个支持Linux系统的模块之后,你需要一个应用程序来播放或者观看视频。现如今,最流行的Ubuntu webcam应用程序是Cheese.Cheese 允许用户访问自己的webcam并能够轻松播放视频。
输入以下命令安装Cheese
sudo apt-get install cheese
安装完成之后,在Unity Dash中打开它就能运行。如果webcam驱动已经载入,Cheese就能够从Webcam中输出视频。
只要你有一个配备了webcam的笔记本电脑,那它就可以工作,因为大多数USB webcam设备是在Ubuntu中通用的。你该做的就是安装Cheese并体验。
如果你不能令当前的webcam在Ubuntu中工作,就应该尝试购买一个能够工作的模块!
尽情享受吧!
via: http://www.liberiangeek.net/2013/09/daily-ubuntu-tips-webcam-support-ubuntu-via-cheese/
在这个第四部分里,我们将继续配置更多的设置和特性。
这里我们被问及关于”IBM Calgary IOMMU support (CALGARY_IOMMU)”。这个选项将会提供对IBM xSeries x366和x460的IOMMU的支持。这也将让那些32位PCI的设备工作正常——在这些系统上不支持双地址周期(DAC : Double Address Cycle)——因为该系统设置在访问超过3GB内存的时候会有问题。如果需要这些IOMMU设备可以用”iommu=off”在启动时关闭。(这些内核/模块参数会在以后的文章中讨论)
IOMMU(input/output memory management unit)是一个内存管理单元(MMU),它连接具有DMA功能的I/O总线到主内存上。DMA(Direct Memory Access)是许多计算机支持的一种允许特定设备不借助CPU直接访问内存的特性。双地址周期(Double Address Cycle, DAC)是64位DMA;而通常的DMA使用32位。
下面,我们被问及是否默认启用Calgary(Should Calgary be enabled by default? (CALGARY_IOMMU_ENABLED_BY_DEFAULT))。Calgary与上面提到的IOMMU是同一个概念。这两者之间的不同是IOMMU可以支持许多设备而Calgary只能支持IBM IOMMU设备。如果禁用了它,但是以后需要使用到它,可以使用内核参数(iommu=calgary)。
这里有个问题需要小心处理(Enable Maximum number of SMP Processors and NUMA Nodes (MAXSMP))。只有在内核运行在拥有很多SMP处理器和NUMA节点的情况下才启用它,如Core i7和许多AMD CPU芯片。如果系统缺乏或者只有少量的SMP处理器和NUMA节点,内核就会变得低效。这个最好选择”No”。
非一致性内存访问(Non-Uniform Memory Access (NUMA))是一个每块内存都需要花费更长时间访问其他部分内存的系统。一个节点就是一组内存。例如,一个NUMA系统可能有三块内存芯片。每块芯片是一个节点,在带CPU的主板上有一个节点/芯片(这是最快的节点),另外两个在不同的总线上。这两个节点需要比第一个节点花费更长的时间去访问。
注意:ccNUMA和NUMA目前是一样的,至少是非常相似的。
对称多处理器(Symmetric Multi-Processing (SMP))是NUMA的替代品。它的内存在同一根总线上。只有限定数量的CPU可以访问总线,所以这限制了SMP系统上处理器的数量。然而它内存的访问速度一样块。
注意:我是在为AMD64系统在编译内核,所以我会告诉你我的选择,来帮助读者理解过程和选择。如果我没有指出我的选择,那么我用的就是默认选择。如果你在为不同的系统编译或者你有不同的需求,你需要在你的情况下做出替代的选择。
接下来,除非配置工具已经为你做了选择,选择一个内核需要支持的最多CPU的数量。这个配置根据你给的数量优化内核。
接着启用或禁用”SMT (Hyperthreading) scheduler support (SCHED_SMT)”(超线程调度器支持)。SMT调度器提升了在使用了超线程技术的Pentium 4处理器上的CPU决策能力。然而,这会带来额外的功耗,在一些系统上最好像我一样选择”no”。
超线程一种专有的SMT并行微处理器(Intel 实现了它)。这是多任务/多线程(同时做许多任务)的一种特殊形式,并行多线程(Simultaneous multithreading (SMT))提升了多线程执行的效率。
在这之后,启用或者禁用”Multi-core scheduler support (SCHED_MC)”。这样也是一种提升多核CPU决策的特性。然而这回带来额外功耗,我选择了”No”。
在下一个选项中可以选择抢占模式。
Preemption Model(抢占模式)
1. No Forced Preemption (Server) (PREEMPT_NONE) (非强制抢占)
> 2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY) (自愿内核抢占)
3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT) (可抢占内核)
choice[1-3]: 2
抢占就是暂停一个意图让它之后继续执行的中断任务的过程。抢占强制一个进程暂停,执行中的任务无法忽视抢占。
接着,我们被询问关于”Reroute for broken boot IRQs (X86_REROUTE_FOR_BROKEN_BOOT_IRQS)”。这是一个对于假中断的简单修复。假中断是一种无用的硬件中断,这些通常是有电子干扰或者错误连接的电子产品触发。记住,中断是发送给处理器需要马上注意的信号。
这个选项对任何机器都很重要;我怀疑任何人可能都会有禁用这个特性的理由(Machine Check / overheating reporting (X86_MCE))。内核必须意识到过热和数据损坏,不然,系统将会继续操作,这样只会导致进一步的破坏。
下面,用户可以启用禁用”Intel MCE features (X86_MCE_INTEL)”,这是一种额外的对像热度监控的Intel MCE特性的支持。因为我是为AMD64处理器编译内核所以我选择了”no”。机器检测异常(MCE)是一种当处理器发现硬件问题时的错误输出。MCE通常会导致内核严重错误(kernel panic)(相当于Windows中的”蓝屏”)。
这个除了是AMD设备外是同一个问题Intel MCE features (X86_MCE_INTEL)。
下一个是我会禁用的调试特性(Machine check injector support (X86_MCE_INJECT))。这个会允许注射检查。如果你偶尔执行机器注射,那最好编译成模块而不是编译进内核。机器注射可以使设备即使实际没有错误也可以发送一个伪造的错误信息。这个用来确认内核和其他进程可以正常处理错误。比如,如果CPU过热,接着应该关机,但是开发者如何在不损坏CPU的情况下测试代码。注射错误是一种最好的方法,因为它只是一种告诉硬件发送错误信号的软件。
注:模块是对可能被使用或者很少执行的特性/驱动而言的。只加入在许多使用该内核的系统中用到的特性/驱动到内核中。
如果内核很可能用在Dell笔记本上,那么启用这个特性(Dell laptop support (I8K))。否则,如果一些用户可能在戴尔笔记本电脑上用到这个内核,将其作为一个模块加入。如果这个内核不打算支持Dell笔记本,那就像我一样忽略掉它。特别地,这个支持是一个允许Dell Inspiron 8000系列笔记本访问处理器的系统管理模式的驱动。系统管理模式的目的是得到处理器的温度和风扇状态,这对一些需要控制风扇的系统有用。
下面,用户可以选择微码加载支持(CPU microcode loading support (MICROCODE))。这可以允许用户在支持这个特性的AMD或者Intel芯片上更新微码。
注意:为了加载微码,你必须拥有一个为你的处理器设计的合法的二进制微代码拷贝。
如果要加载微码补丁(修复bug或加入次要的特性)到intel芯片上(Intel microcode loading support (MICROCODE_INTEL)),这个就必须启用。这里我禁用了它。
然后是AMD芯片的类似选项(AMD microcode loading support (MICROCODE_AMD))。
启用这个支持(/dev/cpu/*/msr – Model-specific register support (X86_MSR))可以允许某个处理器有权限使用x86特殊模块寄存器(Model-Specific Registers (MSRs))。这些寄存器是一些字符设备,包括major 202下minor 0到31的设备((/dev/cpu/0/msr to /dev/cpu/31/msr))。这个特性用在多处理器系统上。每个虚拟字符设备都连接到一个特定的CPU。
注意:MSRs被用来改变CPU设备、调试、性能监控和执行追踪。MSRs使用x86指令集。
在这之后,我们有一个选项”CPU information support (X86_CPUID)”,启用这个特性允许处理器访问x86 CPUID指令,这需要通过字符设备在一个特定的CPU上执行。这些字符设备包括major 202下minor 0到31的设备(/dev/cpu/0/msr to /dev/cpu/31/msr),就像上面x86_MSR支持的这些。
如果处理器支持,启用内核线性映射来使用1GB的内存页(Enable 1GB pages for kernel pagetables (DIRECT_GBPAGES))。启用这个可以帮助减轻TLB的压力。
页是内存本身的基本单位(位是数据的基本单位)。页的大小是由硬件自身决定的。页码表是虚拟和物理内存间的映射。物理内存是设备上的内存。虚拟内存是到内存的地址。依赖于系统架构,硬件可以访问大于实际内存地址的地址。举例来说,一个64位系统拥有6GB内存,管理员在需要时可以加上更多的内存。这是因为还有很多虚拟内存地址。然而,在很多32位系统上,系统管理员可以增加一条8GB的内存,但是系统无法完全使用它,因为系统中没有足够的虚拟内存地址去访问大容量的内存。转换后援缓冲器(Translation Lookaside Buffer (TLB))是一种提升虚拟内存转换速度的缓存系统。
下面,我们看到了NUMA选项(Numa Memory Allocation and Scheduler Support (NUMA))。这可以允许内核在CPU本地内存分配器上分配CPU可使用的内存。这个支持同样可使内核更好感知到NUMA。很少的32位系统需要这个特性,但是一些通用的645位处理器使用这个特性。我选择了”no”。
为了系统使用旧方式来检测AMD NUMA节点拓扑,启用这个特性(Old style AMD Opteron NUMA detection (AMD_NUMA))。下一个选项是一种更新的检测方式(ACPI NUMA detection (X86_64_ACPI_NUMA))。如果两个都启用,新的方式将会占支配作用。一些硬件在使用其中一种方式而不是另外一个时工作得更好。
如果为了调试目的的NUMA仿真,可以启用下一个特性(NUMA emulation (NUMA_EMU))。
注意:如果你不打算进行调试并且你需要一个快速、轻量级系统,那么禁用尽可能多的调试特性。
下一个选项中,选择你的内核打算如何处理NUMA节点的最大数量。接下来选择内存模型,这里可能只有一个内存模型选择。内存模型指定了内存如何存储。
Maximum NUMA Nodes (as a power of 2) (NODES_SHIFT) [6]
Memory model
> 1. Sparse Memory (SPARSEMEM_MANUAL)
choice[1]: 1
为了提升性能,这里有一个选项用通过虚拟内存映射(Sparse Memory virtual memmap (SPARSEMEM_VMEMMAP))来优化pfn_to_page和page_to_pfn操作。页帧号是每页被给定的号码。这两个操作用来从号码得到页或者从页得到号码。
下一个选项是允许一个节点可以移除内存(Enable to assign a node which has only movable memory (MOVABLE_NODE))。内核页通常无法移除。当启用后,用户可以热插拔内存节点,同样可移除内存允许内存整理。作为出入内存的数据,只要有可用空间一组数据可能被划分到不同内存。
接着前面的内存问题,我们还有更多的问题。这些可能已被配置工具预配置了。第三个选项(BALLOON_COMPACTION),当启用时可以帮助减少内存碎片。碎片内存会减慢系统速度。第四个选项(COMPACTION)允许内存压缩。下面列到的第五个选项(MIGRATION)允许页面被移动。
注意:启用可移动内存会启用以上5个特性。
下一步,我们可以”Enable KSM for page merging (KSM)”。内核同页合并(Kernel Samepage Merging (KSM))会查看程序认为可以合并的内核。如果两页内存完全相同这可以节约内存。一块内存可以被删除或者被合并,并且只有一块可以使用。
配置工具可能会自动选择保存多少内存用于用户分配(Low address space to protect from user allocation (DEFAULT_MMAP_MIN_ADDR) [65536])。
下一个选项很重要(Enable recovery from hardware memory errors (MEMORY_FAILURE))。如果内存故障并且系统有MCA恢复或者ECC内存,系统就可以继续运行并且恢复。要使用这个特性,硬件自身和内核都必须支持。
机器检测架构(Machine Check Architecture (MCA))是一个一些CPU上可以发送硬件错误信息给操作系统的特性。错误更正码内存(Error-correcting code memory (ECC memory))是一种内存设备检测和纠正错误的形式。
下面,配置工具会自动启用”HWPoison pages injector (HWPOISON_INJECT)”。这个特性允许内核标记一块坏页为”poisoned”,接着内核会杀死创建坏页的程序。这有助于停止并纠正错误。
为了允许内核使用大页(Transparent Hugepage Support (TRANSPARENT_HUGEPAGE)),启用这个特性。这可以加速系统但是需要更多内存。嵌入式系统不必使用这个特性。嵌入式系统通常只有非常小的内存。
如果启用了上面的,那么必须配置大页的sysfs支持。
Transparent Hugepage Support sysfs defaults
1. always (TRANSPARENT_HUGEPAGE_ALWAYS)
> 2. madvise (TRANSPARENT_HUGEPAGE_MADVISE)
choice[1-2?]: 2
下面的选项是增加process_vm_readv和process_vm_writev这两个系统调用(Cross Memory Support (CROSS_MEMORY_ATTACH))。这允许特权进程访问另外一个程序的地址空间。
如果有tmem,启用缓存清理(cleancache)通常是一个好主意 (Enable cleancache driver to cache clean pages if Transcendent Memory (tmem) is present (CLEANCACHE))。当一些内存页需要从内存中移除时,cleancache会将页面放在cleancache-enabled的文件系统上。当需要该页时,页会被重新放回内存中。超内存(tmem)没有一组已知大小的内存,内核对此内存使用间接寻址。
下一个选项允许在tmen激活后缓存交换页(Enable frontswap to cache swap pages if tmem is present (FRONTSWAP))。frontswap在交换分区放置数据。交换特性的支持需要这个。
最好启用下一个特性(Check for low memory corruption (X86_CHECK_BIOS_CORRUPTION))。这会检测低位内存的内存损坏情况。这个特性在执行期被禁止。为了启用这个特性,在内核命令行内加入 “memory_corruption_check=1″(这会在以后的文章中讨论;这不同于任何命令行)。即使经常执行这个特性,也只使用非常小的开销(接近没有)。
接下来我门可以设置内存损坏检测的默认设置(“Set the default setting of memory_corruption_check (X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK))。这可以选择是否开启或关闭memory_corruption_check。最好启用内存损坏检测不然如果一部分重要内存损坏后可能会导致数据丢失和系统崩溃。
这个选项关注的是BIOS(Amount of low memory, in kilobytes, to reserve for the BIOS (X86_RESERVE_LOW) [64])。配置工具通常知道给BIOS预留内存的最佳大小。
对于Intel P6处理器,开发者可以启用存储区域类型寄存器(MTRR (Memory Type Range Register) support (MTRR))。这用于连接着VGA卡的AGP和PCI卡。启用这个特性内核会创建/proc/mtrr。
如果X驱动需要加入回写入口,那么启用下面的选项(MTRR cleanup support (MTRR_SANITIZER))。这会将MTRR的布局从连续转换到离散。存储区域类型寄存器(Memory type range registers (MTRRs))提供了一种软件访问CPU缓存的方法。
下面,配置工具已经设置了一些MTRR选项
MTRR cleanup enable value (0-1) (MTRR_SANITIZER_ENABLE_DEFAULT) [1]
MTRR cleanup spare reg num (0-7) (MTRR_SANITIZER_SPARE_REG_NR_DEFAULT) [1]
为了设置页级缓冲控制,那就启用PAT属性(x86 PAT support (X86_PAT))。页属性表(Page Attribute Table (PATs))是现在版的MTRRs并比它更灵活。如果你经历过因启用它而引发的启动问题,那么禁用这个特性后重新编译内核。我选择了”no”。
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-4.4392/
在学校、公司、政府,或者是在网页传播的书籍、文档、报告、教程等等文档均被封装成各种格式。
有时候,会有某一些特定的需求,比如把一个文档转换成PDF格式,这时通过LibreOffice. 就能轻易完成。
使用LibreOffice Writer,用户可以轻易地把书籍、文档等等文件转换成PDF格式,而且还可以把任意可以打开的格式转换成PDF格式。
举个例子,把DOC文档转换成PDF格式
点击Export按钮,就能把DOC文档转换成PDF格式并且保存在指定目录。
成果:在DOC文档边上的就是新的PDF文档(原有的DOC文档仍被保留)。
同样的道理,还可以应用在RTF, DOCX, ODT等其他格式的文档上。
via: http://iloveubuntu.net/how-convert-docx-doc-rtf-odt-pdf-libreoffice
下面的教程会指导所有的Linux使用者如何在系统上安装SSH,以便通过安卓智能手机远程访问他们的电脑。
如今我们所有人都拥有一台平板或触屏手机,我们经常使用它们在深夜里看电影或电视节目,听歌或者阅读一本好书。你可以把这篇文章称作是为那些懒人们准备的教程,他们在大晚上会因为太过疲惫而懒得去开启他们电脑上的某些程序,更懒得去移动、删除、复制或重命名某些文件,甚至关掉PC。
的确,已经有各种各样的远程桌面解决方案,但是许多方案费用很高,或者实现效果很糟糕,无法像预期一样运行,逼得你最终还是得去电脑上做你原本想做的事情。
在这个教程里面,我们将使用一种简单、安全、高效的协议,它被称为SSH (Secure SHell),它很容易从默认的软件仓库中安装(在Arch linx中是openssh,在Ubuntu中时openssh-server)。
在安装完成后,你需要为SSH服务器进行基本配置。为此,你需要使用文本编辑器编辑/etc/ssh/sshd_config这个文件。
1.在文件尾部添加下面一行(下面的yourusername使用你的Linux机器上实际存在的用户名代替)
AllowUsers yourusername
2.取消”#PermitRootLogin”这行注释,把”no”替换成”yes”:
PermitRootLogin no
3.为了安全起见,你需要修改SSH连接默认的22端口到一个更大编号的端口,譬如在我们的例子中是55441 (建议不要跟着我使用55441,这是我选择的,你可以找另一个四位或者五位数字)。因此,取消注释并编辑”#Port 22″如下(译注:你可以选择大于1024,小于65535的其它端口,前提是没有被其它服务所占用,为什么不试试你的幸运数字?):
Port 55441
在Ubuntu上,SSH服务通过下面的命令启动:
sudo /etc/init.d/ssh start
当你每次修改上述配置文件时,都需要通过下面的命令重启:
sudo /etc/init.d/ssh restart
在Arch Linux上,你可以使用下面的命令启动SSH服务:
sudo systemctl start sshd
JuiceSSH似乎是安卓上最好的SSH客户端之一,而且是免费的。此外,如果你认为它的功能简单,也可以花费少量的钱得到更多高级的特性,譬如亚马逊 AWS/EC2 集成,团队协作,以及更多其它的特性。
一旦软件安装完毕,运行它,然后你会要求输入一个加密的密码以保证安全连接的安全。这个密码由AES-256进行加密,因此除非你的设备被偷,否则没有人能够获取他们。
现在,添加一个新连接,选择名称,你的电脑的IP地址,上面设定的端口号和一个需要被创建的身份。
这就是我的Arch Linux机器,可以通过我的安卓平板上的JuiceSSH客户端访问到。如果在这个教程中你遇到问题,请在下面进行评论。
via: http://news.softpedia.com/news/How-to-Control-Your-Linux-PC-with-an-Android-Device-396004.shtml
你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧。
grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具。无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和RHEl/CentOS/Fedora系中的yum)。
$ sudo apt-get install grep #Debian/Ubuntu $ sudo yum install grep #RHEL/CentOS/Fedora
我发现使用现实世界中的真实例子让你投身其中是让你接触grep命令的最容易方式。
假设你已经在你的电脑上安装了一个全新的Ubuntu,然后你打算卸载Python。你浏览网页寻找教程,但是你发现存在两个不同版本的Python在使用,而你不知道你的Ubuntu安装器到底在你的系统中安装了哪个版本的Python,也不知道它安装了哪些模块。解决这个烦恼只需简单的运行以下命令:
$ sudo dpkg -l | grep -i python
ii python2.7 2.7.3-0ubuntu3.4 Interactive high-level object-oriented language (version 2.7) ii python2.7-minimal 2.7.3-0ubuntu3.4 Minimal subset of the Python language (version 2.7) ii python-openssl 0.12-1ubuntu2.1 Python wrapper around the OpenSSL library ii python-pam 0.4.2-12.2ubuntu4 A Python interface to the PAM library
首先,我们运行dpkg -l列出你系统上安装的.deb包。接着,我们使用管道将输出结果传输给命令grep -i python,这一步可以简单解释为把结果传输给grep然后过滤出所有含有python的项,并返回结果。–i选项用于忽略大小写,因为 grep 是大小写敏感的。使用选项-i是个好习惯,除非你打算进行更细节的搜索。
grep还可以在一个或多个文件里用于搜索和过滤。让我们来看一个这样的情景:
你的Apache网页服务器出现了问题,你不得不从许多专业网站里找一个发帖询问。好心回复你的人让你粘贴上来你的/etc/apache2/sites-available/default-ssl文件内容。假如你能移除掉所有的注释行,那么对你,对帮你的人,以及所有阅读该文件的人,不是更容易发现问题吗?你当然可以很容易的做到!只需这样做就可以了:
$ sudo grep -v "#" /etc/apache2/sites-available/default-ssl
选项-v是告诉grep命令反转它的输出结果,意思就是不输出匹配的项,做相反的事,打印出所有不匹配的项。这个例子中,有#的是注释行(译注:其实这个命令并不准确,包含“#”的行不全是注释行。关于如何精确匹配注释行,可以了解更多的关于正则表达式的内容。)。
grep命令对于过滤来自于标准输出的结果非常有用。例如,假设你的一个文件夹里面全是各种格式的音乐文件。你要找出艺术家jayZ的所有mp3格式的音乐文件,里面也不要有任何混合音轨。使用find命令再结合管道使用grep就可以完成这个魔法:
$ sudo find . -name ".mp3" | grep -i JayZ | grep -vi "remix""
在这个例子中,我们使用find命令打印出所有以.mp3为后缀名的文件,接着将其使用管道传递给grep -i过滤和打印出名字为“JayZ”的文件,再使用管道传送给grep -vi以便过滤掉含有“remix”的项。
另外两个选项是-A和-B之间的切换,是用以显示匹配的行以及行号,分别控制在字符串前或字符串后显示的行数。Man页给出了更加详细的解释,我发现一个记忆的小窍门:-A=after、-B=before。
$ sudo ifconfig | grep -A 4 etho $ sudo ifconfig | grep -B 2 UP
grep命令的-C选项和例4中的很相似,不过打印的并不是在匹配字符串的前面或后面的行,而是打印出两个方向都匹配的行(译注:同上面的记忆窍门一样:-C=center,以此为中心): $ sudo ifconfig | grep -C 2 lo
这个功能类似于将grep输出的结果用管道传送给计数器(wc程序),grep内建的选项可以达到同样的目的:
$ sudo ifconfig | grep -c inet6
当你在编译出错时需要调试时,grep命令的-n选项是个非常有用的功能。它能告诉你所搜索的内容在文件的哪一行:
$ sudo grep -n "main" setup.py
假若你要在当前文件夹里搜索一个字符串,而当前文件夹里又有很多子目录,你可以指定一个-r选项以便于递归的搜索: $ sudo grep -r “function” *
传递-w选项给grep命令可以在字符串中进行精确匹配搜索(译注:包含要搜索的单词,而不是通配)。例如,像下面这样输入:
$ sudo ifconfig | grep -w “RUNNING”
将打印出含有引号内匹配项的行。另外,你还可以试一下这个:
$ sudo ifconfig | grep -w “RUN”
搜索这个匹配项时,若搜索的东西里面没有这样的一个单独的单词,将什么也不会返回。
我们还要关注一下grep的衍生应用。第一个是zgrep,这个与zcat很相似,可以用于gzip压缩过的文件。它有与grep相似的命令选项,使用方式也一样:
$ sudo zgrep -i error /var/log/syslog.2.gz
egrep是另一个衍生应用,代表着“扩展全局正则表达式”。它可以识别更多的正则表达式元字符,例如at + ? | 和()。在搜索源代码文件时,egrep是一个非常有用的工具,还有其他的一些零碎代码文件的搜索需要,使得这样的搜索能力成为必需。可以在grep命令中使用选项-E来启用它。
$ sudo grep -E
fgrep用于在一个文件或文件列表中搜索固定样式的字符串。功能与grep -F同。fgrep的一个通常用法为传递一个含有样式的文件给它:
$ sudo fgrep -f file_full_of_patterns.txt file_to_search.txt
这仅仅是grep命令的开始,你可能已经注意到,它对于实现各种各样的需求简直是太有用了。除了这种我们运行的这种只有一行的命令,grep还可以写成cron任务或者自动的shell脚本去执行。保持好奇心,试验一下man页的各个选项,为实现你的目的写出一些grep表达式吧。
via: http://www.tecmint.com/12-practical-examples-of-linux-grep-command/
译者:Linux-pdz 校对:jasminepeng
通常,使用Ubuntu 13.10的用户会会对默认的程序、偏好和功能进行优化,才能得到更好的用户体验。
Ubuntu的用户体验是可以优化调整的,因此用户可以通过一些工具来修改和调整那些默认设置,比如使用Ubuntu Tweak。
默认情况下,Ubuntu禁用了内部菜单的图标,即,右键点击桌面打开右键菜单时,菜单中只包含文本而且没有相应的图标。
不过,在Ubuntu 13.10的菜单中添加图标是很简单的:
安装Ubuntu Tweak
sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak
启动Ubuntu Tweak,并导航到Tweaks–>Miscellaneous
选中 Menus have icons
结果:现在右键点击桌面,图标就会在菜单中显示, 图标显示也会在其他软件的右键菜单出现(例如, Nautilus, Firefox, Gedit中的菜单等等)。
这样在最常用的右键菜单中加上新增的图标,菜单会更加清晰和美丽,特别是使用单色图标菜单显示图标时。
对于每一个你新安装的Ubuntu系统,你都会拥有一个可以让你办公的办公工具——LibreOffice。很多人都知道微软公司的的Word、Excel、PowerPoint和Outlook,但是很少有人知道LibreOffice。
LibreOffice靠来自全世界的志愿者来维护,由一个慈善基金会支持。它是Linux社区的一款主要的免费办公工具。它可以安装在Windows,Mac OS X和Linux等系统的计算机上。
就在5天前(译注:好吧,这个翻译稿拖了5天了~~,原文为“今天”。),一个新的版本将面向公众开放了。Windows,Mac OS X和Linux用户可以直接从下载页面下载最新版本了。
Ubuntu用户拥有添加LibreOffice软件仓库到自己的电脑来安装升级最新版的优势。如果你想要在最新版本可用时最快的得到它,这种方法将会很有用。
最新的LibreOffice套装版本是4.1。每一个后续的版本可以立即在4.1的仓库中找到,直到新的主线版本比如4.2的推出。
所以,为了在Ubuntu中自动的升级,请添加下面的软件仓库地址。
sudo add-apt-repository ppa:libreoffice/ppa
接着,运行如下命令来升级最新的LibreOffice。
sudo apt-get update && sudo apt-get dist-upgrade
这样就好了。当你添加上面的仓库然后升级系统,Ubuntu将会自动的下载安装最新的LibreOffice版本。
Windows和Mac OS X用户可以直接在程序套件中升级或者直接从网页中下载。
Enjoy!
via: http://www.liberiangeek.net/2013/11/daily-ubuntu-tipsupdate-to-libreoffice-latest-in-ubuntu-via-ppa/
在我的工作中,我总是在寻求能提高生产力,和让开发更有趣的方法。当你在bash上飞快输入一系列的命令,你知道你的朋友会花两倍的时间来做这一些列操作,没有什么比这个让人感觉更好的了。你是否曾经:
心里默默地埋怨你的同事,为了到命令行的头部,不断地按左方向键。但其实你可以只需要按下CTRL + A就能达到目的 ?
看到某人一次又一次输入相同的命令,而你可以只需要在它面前加一个! ?当你的朋友罗列他使用的IDE的各种优点的时候,你是否会翻白眼,因为你知道你可以使用vim完成同样的功能?
如果是这样的话,下面这些小提示就很适合你。
声明:这篇文章不是对vim,git和其他终端的偏见。我无意挑起终端和IDE的战争,只是想告诉一些对我来说很有趣的招数。
如果你已经使用git很长一段时间了,你很可能遇到过原子提交这个概念了。本质上,这个概念指一次提交只包含相关操作,不包含逻辑上不相关的事情。例如,你对一个类的改动和相关的单元测试应该在一个提交中,而对另一个不同类的操作你应该放在另一个提交中。
但是,如果在一个文件中包含多个不相关操作的时候应该怎么办,或者你会想要把他们放在多个提交中,这样你可以单独对他们进行revert操作?或者你在一个文件中写了很多log日志的语句,但是你不希望将这些语句提交到项目中去怎么办?通常人们使用的git命令是达不到这个要求的:
$ git diff diff --git a/some-file.c b/some-file.c index f383179..09e4e35 100644 --- a/some-file.c +++ b/some-file.c @@ -2,6 +2,8 @@ int main(void) { printf("doing some stuffn"); - printf("doing some more stuffn"); + do_some_stuff(); + printf("doing some unrelated stuffn"); + do_some_unrelated_stuff(); return 0; } $ git add some-file.c $ git commit [master 1938906] some unrelated stuff, cramming it all in one commit 'cause I'm lazy 1 file changed, 3 insertions(+), 1 deletion(-) $ echo "Whoops we just committed unrelated stuff. Not very modular of us."
git add的 -p (代表patch)参数对于这种场景是非常有用的。这个会告诉git add,我想要做一个特殊的add操作,并且这个命令有个非常好的交互界面能让我们明确指定我们想要操作文件中的哪个部分。git会将所有的变动自动分块,你可以使用y或者n来通过或者拒绝这个分块,或者你也可以使用s将它切成更细粒度的块。如果git不能自动将变动分成你希望的块的话,你可以使用e(edit)选项来指定更多细节。
这个帖子中有更多关于git add -p的细节:How can I commit only part of a file in git (http://stackoverflow.com/questions/1085162/how-can-i-commit-only-part-of-a-file-in-git)
补充说明:一些评论指出,-p参数也可以和其他的一些命令,比如git check –,在一起使用。因此你可以将文件的一部分恢复回来,而保持其他的部分的变化。很方便吧!
这是vim的杀招之一,并且我发现很多人(即使是vim的大师)都不是很经常使用。假如你是个马虎的用户(当ssh进入一个空间的时候使用vim去编辑一些配置文件),这招会潜在帮到你很多的。很多人声称他们不能放弃IDE的特性原因就是IDE的智能提示这项功能,这个功能能自动完成变量和函数的名字。这些特性是非常受欢迎的,因为它不会让我们因为拼写而出现错误,也缩短了编译/运行/调试的周期。许多人没有意识到直接从vim的黑盒子中也有类似的功能,而且是不需要任何插件的。
在INSERT模式下,你可以按下CTRL-N键下移建议的自动完成下拉框(这个下拉框vim是从当前缓冲中获取,如果有的话,也会从tags中获取),或者按下CTRL-P键来上移(如果记不住助记符的话,记着这两个分别是代表“NEXT”和“PREVIOUS”)。如果只有一个可能的自动完成条目,vim就会继续输入,然后插入这个唯一的条目。非常方便且有效率,特别当你的代码中有大量的长变量/方法/常量名称的时候。
CTRL-P/CTRL-N可以和下个招数一起协同工作,具体使用和上面章节说的一样
使用vim的人都知道打开一个远距离目录中的文件是很麻烦的(可以使用:e 来减缓麻烦程度,但是仍然不能瞬间做到)。如果你正好是在一个team中工作,或者在一个大项目中工作,迅速完成这个事情对你的工作来说是至关重要的。
丰富的ctags(http://ctags.sourceforge.net/)会让这个世界变得更好。使用ctags,你可以在顶级目录下跑一个命令,生成一个”tags”文件,然后,你就可以使用Ctrl-] 来“跳到” 你鼠标制定的定义(比如说,一个类名)。按CTRL-T回到你之前的位置。
你可以在git中搭建一个提交后钩子(http://tbaggery.com/2011/08/08/effortless-ctags-with-git.html)当你提交代码之后会自动生成ctags文件!漂亮。
是否有曾经在终端输入过一个命令,然后当你再次输入前几个字的时候,你会突然发现,你希望有个更简便的方法能自动补充完整个命令,以便你能编辑或者再次运行它?如果是这种情况的话,那么,告诉你个好消息:你可以!只需要按下CTRL+R 然后输入你想要查询的东西。终端将会将你想要的填充进去,如果有多个选择的话,你可以按下反复按下CTRL+R来进行选择。当你发现了你需要的命令,你可以使用通常的操作来操作这个命令(如果你使用标准的bash键绑定的话,你可以使用CTRL+A,CTRL+E,方向键等。)。试试吧!如果你不记得你要ssh的机器,使用这个方法你会感觉到很方便。
history| grep $COMMAND 对你来说也非常有用的,如果你只是想要查看最近运行的命令的话。
许多时候,当你写代码或者做相关任务的时候,即使可能只是非常微小的操作,你也会发现你自己非常需要一个方法来一遍一遍重复相同的编辑命令。不同的开发者会使用不同的方法来达到这个目的。例如,SubLime Text(http://www.sublimetext.com/)有个“杀招”是放多个光标在不同的位置,然后统一编辑。在Vim(在emacs也一样,但是我们这里只介绍vim的方法),你可以使用记录和回放来完成这个目标。这是个非常有用且方便的工具,它会根据你的操作量的大小在不同程度加速你的代码写作速度。
要制作一个宏,在normal模式下按下q,然后按下其他的按键来“命名”宏(通常我使用q)。vim将会开始记录你的键盘操作,vim将会记录你的键盘操作,知道你按下了q来保存宏。你可以在normal模式下使用@-letter来重放,所以我通常使用@-q。你也可以在@重放命令前加个数字,这样,你可以一遍又一遍重复执行你的宏(就像许多vim使用者,已经非常习惯来这样做了)。如果你非常习惯使用vim的花哨的操作命令(例如,使用/搜索来定位),然后你只需要一些小小的联系,你就可以很快地操作大量的宏了,你会将你的还在依靠鼠标进行操作的同事远远甩在后面了。
更多关于vim 宏的操作,请查看:Vim Wiki(Macros)(http://vim.wikia.com/wiki/Macros)
这是这篇文章的所有内容了,希望你能喜欢这篇文章。
原文链接: NATHAN LECLAIRE 翻译: 伯乐在线 – 轩脉刃译文链接: http://blog.jobbole.com/51455/
继续上篇文章11个鲜为人知的实用Linux命令在本文中,我们将关注其他几个不为人知的Linux命令,有些在管理桌面和服务器方面被证明是非常有用的。
你在终端上键入的每个命令都会记录到history,也能用history命令重新调用。
如何骗过history 命令呢?呵呵,你可以轻而易举地做到。在终端,只需要在键入命令之前输入一个或多个空格,这样你的命令就不会被记录了。
让我们体验一下吧,先在终端尝试五个常见的 Linux 命令并在命令之前留个空(例如** ls, pwd, uname, echo “hi”** 和 who),然后检查这些命令是不是记录在历史中。
avi@localhost:~$ ls avi@localhost:~$ pwd avi@localhost:~$ uname avi@localhost:~$ echo “hi” avi@localhost:~$ who
现在运行 history 命令来查看上面已执行的命令是否已经被记录了.
avi@localhost:~$ history 40 cd /dev/ 41 ls 42 dd if=/dev/cdrom1 of=/home/avi/Desktop/squeeze.iso 43 ping www.google.com 44 su
你看到没有最后执行的命令没有被记录。我们也可以用另一个命令cat | bash欺骗history,结果跟上面一样。
Linux中的stat命令用来显示文件或文件系统的状态信息。当用文件名作为参数时,stat将会展示文件的全部信息。状态信息包括文件 大小、块、权限、访问时间、修改时间、状态改变时间等。
avi@localhost:~$ stat 34.odt File: `34.odt' Size: 28822 Blocks: 64 IO Block: 4096 regular file Device: 801h/2049d Inode: 5030293 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ avi) Gid: ( 1000/ avi) Access: 2013-10-14 00:17:40.000000000 +0530 Modify: 2013-10-01 15:20:17.000000000 +0530 Change: 2013-10-01 15:20:17.000000000 +0530
上面的组合键事实上不是一个命令,而是传递最后一个命令参数到提示符后的快捷键,以输入命令的倒序方式传递命令。按住 Alt或Esc再按一下 “.”。
在电影里尤其是好莱坞电影你可能已经看见过模拟文本了,像是在实时输入文字,你可以用pv命令仿照任何类型模拟风的文本输出,包括流水线输出。pv可能没有在你的系统上安装,你需要用apt或yum获取安装包,然后安装pv到你的机器。
root@localhost:# echo "Tecmint [dot] com is the world's best website for qualitative Linux article" | pv -qL 20
输出样式
Tecmint [dot] com is the world''s best website for qualitative Linux article
上面的命令用一个很不错的格式与规范列出了所有挂载文件系统。
avi@localhost:~$ mount | column -t
输出样式
/dev/sda1on / type ext3 (rw,errors=remount-ro) tmpfson /lib/init/rw type tmpfs(rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfson /sys type sysfs(rw,noexec,nosuid,nodev) udev on /dev type tmpfs(rw,mode=0755) tmpfson /dev/shm type tmpfs(rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) fusectl on /sys/fs/fuse/connections type fusectl (rw) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev) nfsd on /proc/fs/nfsd type nfsd (rw)
在进行下一步之前,我先问一下,你是如何清理你的终端?呵呵,你会在提示符后键入 “clear”。好的。用上面的命令执行清理终端都将成为过去。你只需要按下Ctr+l,看看它如何立即清理你的终端。
在命令行下如何检查你的未读邮件?这个命令对于工作在没有图形界面的服务器的人佷有用。它会在运行期间再次要求输入密码,你不需要在上面一行硬编码你的密码,否则会有其它安全风险。
avi@localhost:~$ curl -u avishek1210@gmail.com --silent "https://mail.google.com/mail/feed/atom" | perl -ne 'print t if //; print "$2n" if /<(title|name)>(.*)/;'
输出样式
Enter host password for user 'avishek1210@gmail.com': Gmail - Inbox for avishek1210@gmail.com People offering cars in Delhi - Oct 26 Quikr Alerts another dependency question Chris Bannister Ralf Mardorf Reco Brian François Patte Curt Siard berenger.morel Hi Avishek - Download your Free MBA Brochure Now... Diya ★Top Best Sellers Of The Week, Take Your Pick★ Timesdeal aptitude misconfigure? Glenn English Choosing Debian version or derivative to run Wine when resource poor Chris Bannister Zenaan Harkness Curt Tom H Richard Owlett Ralf Mardorf Rob Owens
screen命令能断开一个会话下的一个长时间运行的进程并能再次连接,如有需要,也提供了灵活的命令选项
要运行一个长时间的进程,我们通常执行
avi@localhost:~$ ./long-unix-script.sh
缺乏灵活性,需要用户持续当前的会话,但是如果我们执行上面的命令是:
avi@localhost:~$ screen ./long-unix-script.sh
它能在不同会话间断开或重连。当一个命令正在执行时按“Ctrl + A”然后再按“d”来断开。
重新连接运行:
avi@localhost:~$ screen -r 4980.pts-0.localhost
注解:在这里,这个命令的稍后的部分是screen id,你能用‘screen -ls’命令查看。欲了解更多关于screen命令和它们的用法,请阅读我们的一些帮助文章:10 个screen命令的示例。
No!写上面的命令不是笔误. ‘file’是一个能提供关于文件类型信息的命令。
avi@localhost:~$ file 34.odt 34.odt: OpenDocument Text
上面的命令会打印真正的和有效的用户和组的id。
avi@localhost:~$ id
输出样式
uid=1000(avi) gid=1000(avi) groups=1000(avi),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth),117(scanner)
到此为止,鉴于这个系列的最新的这篇文章的成功,我将会尽快推出另外几部分文章继续鲜为人知的Linux命令。到时候,敬请关注Tecmint.不要忘记给我们提供你的反馈和评论。
via: http://www.tecmint.com/10-lesser-known-linux-commands-part-2/
个人云存储现在变得非常有用,因为你再也不用担心你把东西存储在什么地方了:你能很容易的获取你的文件,并时刻保持文件更新。在Linux上你也多种保持访问你的云存储。这一点非常棒,因为你可以使用你最喜欢的方式,哪怕你是个终端控。
使用这种方式的明显好处就是你可以通过使用他们各自的官方应用访问你的各种云存储。目前,提供官方Linux客户端的服务提供商有SpiderOak, Dropbox, Ubuntu One,Copy。Ubuntu One虽不出名但的确是一个不错的云存储竞争着。Copy则提供比Dropbox更多的空间,是Dropbox的替代选择之一。使用这些官方Linux客户端可以保持你的电脑与他们的服务器之间的通信,还可以让你进行属性设置,如选择性同步。
对于普通桌面用户,使用官方客户端是最好的选择,因为官方客户端可以提供最多的功能和最好的兼容性。使用它们也很简单,只需要下载他们对应你的发行版的软件包,然后安装安装完后在运行一下就Ok了。安装客户端时,它一般会指导你完成这些简单的过程。
假如你是Dropbox用户,你也可以通过终端命令行访问你的云存储。这种方式尤其适合于重度终端控,因为他们可以利用Dropbox提供的命令来写个脚本以便于执行自动任务。你可以运行以下命令来安装它(对于Debian,Ubuntu或者她们的衍生版 – 其它发行版可以使用相应的等价命令代替):
sudo apt-get install curl curl "https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o /tmp/dropbox_uploader.sh sudo install /tmp/dropbox_uploader.sh /usr/local/bin/dropbox_uploader dropbox_uploader
当你运行最后一条命令后,脚本会提醒你这是你第一次运行这个脚本。它将告诉你去浏览一个Dropbox的特定网页以便访问你的账户。它还会告诉你所有你需要放入网站的信息,这是为了让Dropbox给你App Key和App Secret以及赋予这个脚本你给予的访问权限。现在脚本就拥有了访问你账户的合法授权了。
这些一旦完成,你就可以这个脚本执行各种任务了,例如上传、下载、删除、移动、复制、创建文件夹、查看文件、共享文件、查看文件信息和取消共享。对于全部的语法解释,你可以查看一下这个页面。
微软并没有提供SkyDrive的官方Linux客户端,这一点也不令人惊讶。但是你并不意味着你不能在Linux上访问SkyDrive,记住:SkyDrive的web版本是可用的。
但是假如你要把你的多个云存储合并在一起,或者你想有一个比较方便的方式在Linux上访问你的SkyDrive账户,你可以试试Storage Made Easy。这个第三方服务可以将它自己提供的云存储服务以及和多大三个其它的云存储服务整合在一起。更好的一点是:它提供官方Linux客户端,而且SkyDrive也是它支持的扩展云存储服务之一!
为了使用Stroage Made Easy,你首先需要创建一个他们的账号。完成账号创建后,你需要回到控制界面,选择“Add a Cloud Provider”。在这儿,你可以选择SkyDrive API 然后填入登录信息。添加完登录信息后,点击授权按钮以便给予必要的授权。然后,你就可以下载它的Linux客户端并安装它了。
第一次启动时。它会要求你登录,还有询问你要把云存储挂载到什么地方。在你做完了这些后,你就可以浏览你选择的文件夹,你还可以访问你的Storage Made Easy空间以及你的SkyDrive空间了!这种方法对于那些想在Linux上使用SkyDrive的人来说非常好,对于想把他们的多个云存储服务整合到一个地方的人来说也很不错。这种方法的缺点是你无法使用他们各自官方客户端中可以使用的特殊功能。
因为现在在你的Linux桌面上也可以使用SkyDrive,接下来你可能需要阅读一下我写的SkyDrive与Google Drive的比较以便于知道究竟哪种更适合于你。
正如你所见,本文提供了多种方式访问你的个人云存储。当然,假如你觉得你当前使用的就是最适合于你的,那么你无须更换。然而,举个例子,假如你是一个终端控,要去寻找可以在终端中与你的Dropbox账户进行交互的方式,你就可以按照本文提供的方法去做!美妙之处就在于你可以选择最适于你的方式。同时,你要保持你的思想开放,本文在这儿展示的工具和例子,在将来也许会有针对其它云存储服务的其它工具出现,让你可以更加自由灵活的使用。
你最喜欢哪种方式来访问你的云存储呢?哪种是你最理想的形式呢?请在评论栏里留言,让我们知道你的想法!
via: http://www.makeuseof.com/tag/3-ways-to-access-and-use-cloud-storage-skydrive-etc-in-linux/
译者:Linux-pdz 校对:jasminepeng
世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种—-GPL、BSD、MIT、Mozilla、Apache和LGPL—-之中做选择,也很复杂。
乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。
下面是我制作的中文版。
日期: 2011年5月 2日
我们可以在linux内核启动时为其提供各种各样的参数。这些参数可以自定义内核默认的行为,或者通知内核关于硬件的配置信息。内核参数应在内核启动时通过引导装载程序,如GRUB或LILO传递给内核。
在本教程中,我将会描述如何在linux上通过GRUB添加内核参数。
如果你在使用GRUB引导装载程序,想修改或添加内核参数,你可以编辑GRUB配置文件。下面是针对特定发行版在GRUB的配置文件中添加内核启动参数的方法。
在基于Debian的系统上,如果你想在系统启动时添加内核参数,你可以编辑 /etc/default/grub 目录下的GRUB配置模板。在 GRUB_CMDLINE_LINUX_DEFAULT 变量中以 “name=value” 的格式添加内核参数。
$ sudo -e /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=”…… name=value”
然后运行下面的命令来生成一个GRUB的配置文件。
$ sudo update-grub
如果无法找到 update-grub 命令,你可以通过下面的命令安装它。
$ sudo apt-get install grub2-common
在Fedora上,想要在启动时添加内核参数,你可以编辑 /etc/default/grub目录下的 GRUB 配置模板。在 GRUB_CMDLINE_LINUX 变量中以 “name=value” 的格式添加内核参数。
$ sudo -e /etc/default/grub
GRUB_CMDLINE_LINUX=”…… name=value”
然后运行下面的命令生成 GRUB2 配置文件。
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
在CentOS上,想要在启动时添加内核参数,你可以直接编辑GRUB配置文件 /boot/grub/grub.conf。在配置文件中,找到描述默认使用的Linux映像的条目。文件中最顶行的字符串 “default=N”会指示哪一个条目是默认的映像。
找到默认的映像条目后,在以 “kernel /vmlinuz-” 开头的那一段的结尾附加上内核参数。参数的格式为 “name=value” 。
via: http://xmodulo.com/2013/11/add-kernel-boot-parameters-via-grub-linux.html
译者:Linchenguang 校对:wxy
一个令人吃惊的事实是,至少十亿人或多或少有着某种程度的残疾。就是说全球大约15%的人在生理上、感知上、心智上会有缺陷,导致他们难以活动、观看、收听以及学习。世界上3.5亿人有不同程度的视觉障碍。计算机技术发展地越快,这些人就越会被疏远,除非计算机软件的开发可以满足他们的需求。
可用性是表示一个产品、设备、服务或者环境在不考虑具体细节的情况下能被多少人使用的程度。可用性可以被看作接触和利用一个系统或者实体的能力。可用性至关重要,社会和谐不是一个慈善行动,而是人类基本的权利。
我们见证了Linux软件和发行版本在使每个人融入社会方面做的突出贡献。举个例子来说,GNOME Accessibility Project 为图形界面用户开发了开源的可用性解决方案。Ubuntu有一个可用性团队致力于使Ubuntu能被更广范围的人使用。不得不提的是Vinux Project,一个基于Ubuntu的发行版本,针对失明和视力有障碍的用户进行了优化。
也有很多单独的应用软件提供了不同的可用性功能。这篇文章试图找出一些顶尖的开源软件,它们能帮助人们充分利用计算机技术,不论他们的生理和知觉功能如何。
让我们了解一下手边的8个通用辅助工具。我们为每个应用编写了它字节的入口页面,完整地、深入地分析了它们的功能,包含截屏和相关资源链接。
via: http://www.linuxlinks.com/article/20131109042823957/UniversalAccess.html
Ubuntu 13.10 的用户不必再用羡慕的眼神看着新版Linux内核发布,他们也可以相对轻松地更新他们的系统。
Canonical公司一贯的做法是,在整个开发周期中始终使用一个Linux内核。例如,Ubuntu 13.10始终基于Linux内核 3.11,但现在已经推出一个新的稳定的Linux内核3.12。
Ubuntu用户只有等到14.04 LTS发布以后,才能得到一个较新版本的Linux内核,但到那之前他们也可以选择安装新的版本。
不过,我们必须从一开始就提醒你。Canonical不建议你更新官方渠道以外的Linux内核版本。这不是一个完全安全的过程,你以后可能会遇到问题,甚至系统故障。但另一方面,你的系统性能可能会得到提升。
你将要下载的内核来自Canonical公司,这意味着它已经在.deb格式。你不需要再自己编译。打开一个终端,导航到Downloads文件夹,输入以下命令:
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.12-saucy/linux-image-3.12.0-031200-generic_3.12.0-031200.201311031935_amd64.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.12-saucy/linux-headers-3.12.0-031200-generic_3.12.0-031200.201311031935_amd64.deb
如果你有一个32位的操作系统,你也可以下载32位版本。可见只需替换链接中的64bit为32bit即可,点此下载.
现在,你将像运行任何其它程序一样运行这些.deb文件。在你下载软件包的同一个终端,输入下面的命令(你需要root权限才能正常运行):
sudo dpkg -i linux-image-3.12.0-031200-generic_3.12.0-031200.201311031935_amd64.deb sudo dpkg -i linux-headers-3.12.0-031200-generic_3.12.0-031200.201311031935_amd64.deb
此过程结束后,你需要重启系统。瞧,新版本的Linux内核更新成功。好消息是,旧版本内核仍然存在,如果你要删除3.12版的内核,只需使用众所周知命令。
sudo apt-get purge linux-image-3.12.0-031200-generic_3.12.0-031200.201311031935_amd64.deb sudo apt-get linux-headers-3.12.0-031200-generic_3.12.0-031200.201311031935_amd64.deb
记住,以上所示的文件名变化很快。如果无法下载,请更新新的链接。 开始享受Linux 3.12内核吧!
来源于: http://news.softpedia.com/news/How-to-Install-Linux-Kerrnel-3-12-in-Ubuntu-13-10-397013.shtml
几天前,我们讨论了gt5(一个具有图形前端的磁盘实用工具)。接着上次,继续介绍这个命令系列:du替代命令,我们今天要讨论的是一个基于ncurese的磁盘实用工具,可以远程运行但没有图形环境。我们要介绍的这个命令行工具叫做ncdu。
这个命令行工具只是一个基于curses版本的标准du命令。它可帮助你在没有安装图形环境的情况下快速查看系统的磁盘使用统计。
以下是一些ncdu命令的例子:
1. 默认输出
执行以下ncdu命令,你会观察到,它会先扫描磁盘然后降序显示各个目录下的空间使用情况。
> 扫描
> 输出
你会看到在输出里显示了一个磁盘使用情况表。假如你要扫描整个文件系统,你可以在运行ncdu命令时加上-x选项。
2. 按i可以得到选定目录的更多信息
如你所见,第一项默认选中。想要知道选定项的更多信息,可以按i。
下面给出一个例子:
如你所见,显示了目录,类型,大小,实际占用空间等。项返回,再按一次i。
3. 在ncdu的界面中删除目录
在ncdu的界面中删除目录,只需要选中目录,然后按d。
下面给出一个例子:
如你所见,ncdu请求用户确认。假如你选择yes,目录将会从系统中删除。
4. 显示每一个目录的磁盘使用占总的磁盘空间的百分比
按g显示每个目录大小占总的磁盘空间的百分比。
下面给出一个例子:
如你所见,在输出结果的第二竖列显示了每个目录所占用的空间占总的磁盘空间的百分比。
5. 获悉有关所有可使用快捷键的
按?可获得相关快捷键、格式以及有关ncdu版本的信息。
下面给出一些例子:
想知道有关命令行选项以及其它信息,可前往ncdu命令的Man页面。
以下是一些有关ncdu命令的重要链接
当然,你也可以通过命令方式下载安装,比如apt-get,yum等。另外,Ubuntu用户可使用Ubuntu软件中心下载安装这个工具。
假如你不满足于标准的du工具,想去寻找一款快速的,基于ncurses的类du工具,那么你可以试试ncdu。它提供了许多自定义选项。你一定会喜欢它的。
你使用过ncdu,gt5或者其他任何类du工具吗?欢迎和我们分享你的使用经验。
via: http://mylinuxbook.com/ncdu-ncurses-based-disk-usage-utility/
YUM是RHEL系统中提供的一个安装,卸载和搜索软件包的工具。它能做的不仅仅是安装、卸载软件包,它能做的还有更多,下面我们将在本文中为你展示。
YUM可以自动安装软件包的依赖包,例如当你使用yum安装httpd时,它还会自动安装https apache server以及它依赖的软件包。通过rpm软件包安装时就没有这么方便咯(译注:就是不会自动处理软件包依赖问题咯!),你必须下载所有它依赖的软件包,然后依序安装它们。
yum工具从远端服务器上的软件仓库(通常由OS提供商提供)获取软件包的信息。一个软件仓库是能在特定架构上运行的一系列rpm软件包的集合。例如,对于32位和64位系统各有一个软件仓库,还有针对RHEL5以及RHEL6的软件仓库。你也可以建立一个本地仓库,配置你的yum让其从你的本地仓库里搜索安装软件包。在接下来的例子中,我将向你展示除了安装和卸载软件,yum还可以做的其它事情。为方便理解,我将在我的Amazon EC2 RHEL 6.4服务器上使用httpd软件包为例。
# yum search httpd Loaded plugins: amazon-id, rhui-lb, security ==================== N/S Matched: httpd ========== httpd.x86_64 : Apache HTTP Server httpd-devel.i686 : Development interfaces for the Apache HTTP server httpd-devel.x86_64 : Development interfaces for the Apache HTTP server httpd-manual.noarch : Documentation for the Apache HTTP server httpd-tools.x86_64 : Tools for use with the Apache HTTP Server mod_dav_svn.x86_64 : Apache httpd module for Subversion server mod_dnssd.x86_64 : An Apache HTTPD module which adds Zeroconf support
想获得详细的输出信息,可以使用下面的命令:
# yum provides httpd Loaded plugins: amazon-id, rhui-lb, security httpd-2.2.15-26.el6.x86_64 : Apache HTTP Server Repo : rhui-REGION-rhel-server-releases Matched from:
yum provides httpd在软件仓库里搜索含有httpd的软件包。
# yum grouplist
以上命令将为你显示已经安装的以及可用的软件组。你可以使用软件组安装选项来安装其中一个软件组。例如,我们将安装一个PHP Support的软件组。这个软件组内包含需要的PHP软件包。
# yum groupinstall PHP Support Loaded plugins: amazon-id, downloadonly, rhui-lb, security Setting up Group Process Warning: Group Support does not exist. Resolving Dependencies -> Running transaction check --> Package php.x86_64 0:5.3.3-23.el6_4 will be installed -> Processing Dependency: php-common(x86-64) = 5.3.3-23.el6_4 for package: php-5.3.3-23.el6_4.x86_64 -> Processing Dependency: php-cli(x86-64) = 5.3.3-23.el6_4 for package: php-5.3.3-23.el6_4.x86_64 --> Package php-gd.x86_64 0:5.3.3-23.el6_4 will be installed -> Processing Dependency: libXpm.so.4()(64bit) for package: php-gd-5.3.3-23.el6_4.x86_64 --> Package php-pdo.x86_64 0:5.3.3-23.el6_4 will be installed --> Package php-pear.noarch 1:1.9.4-4.el6 will be installed --> Package php-xml.x86_64 0:5.3.3-23.el6_4 will be installed -> Running transaction check --> Package libXpm.x86_64 0:3.5.10-2.el6 will be installed --> Package php-cli.x86_64 0:5.3.3-23.el6_4 will be installed --> Package php-common.x86_64 0:5.3.3-23.el6_4 will be installed -> Finished Dependency Resolution Dependencies Resolved ================================================== Package Arch Version Repository Size ================================================== Installing: php x86_64 5.3.3-23.el6_4 rhui-REGION-rhel-server-releases 1.1 M php-gd x86_64 5.3.3-23.el6_4 rhui-REGION-rhel-server-releases 106 k php-pdo x86_64 5.3.3-23.el6_4 rhui-REGION-rhel-server-releases 75 k php-pear noarch 1:1.9.4-4.el6 rhui-REGION-rhel-server-releases 393 k php-xml x86_64 5.3.3-23.el6_4 rhui-REGION-rhel-server-releases 103 k Installing for dependencies: libXpm x86_64 3.5.10-2.el6 rhui-REGION-rhel-server-releases 51 k php-cli x86_64 5.3.3-23.el6_4 rhui-REGION-rhel-server-releases 2.2 M php-common x86_64 5.3.3-23.el6_4 rhui-REGION-rhel-server-releases 524 k Transaction Summary ================================================== Install 8 Package(s) Total download size: 4.5 M Installed size: 16 M Is this ok [y/N]: y Downloading Packages: (1/8): libXpm-3.5.10-2.el6.x86_64.rpm | 51 kB 00:00 (2/8): php-5.3.3-23.el6_4.x86_64.rpm | 1.1 MB 00:00 (3/8): php-cli-5.3.3-23.el6_4.x86_64.rpm | 2.2 MB 00:00 (4/8): php-common-5.3.3-23.el6_4.x86_64.rpm | 524 kB 00:00 (5/8): php-gd-5.3.3-23.el6_4.x86_64.rpm | 106 kB 00:00 (6/8): php-pdo-5.3.3-23.el6_4.x86_64.rpm | 75 kB 00:00 (7/8): php-pear-1.9.4-4.el6.noarch.rpm | 393 kB 00:00 (8/8): php-xml-5.3.3-23.el6_4.x86_64.rpm | 103 kB 00:00 ----------------------------------------------- Total 2.9 MB/s | 4.5 MB 00:01 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : php-common-5.3.3-23.el6_4.x86_64 1/8 Installing : php-cli-5.3.3-23.el6_4.x86_64 2/8 Installing : libXpm-3.5.10-2.el6.x86_64 3/8 Installing : php-gd-5.3.3-23.el6_4.x86_64 4/8 Installing : 1:php-pear-1.9.4-4.el6.noarch 5/8 Installing : php-5.3.3-23.el6_4.x86_64 6/8 Installing : php-xml-5.3.3-23.el6_4.x86_64 7/8 Installing : php-pdo-5.3.3-23.el6_4.x86_64 8/8 Verifying : 1:php-pear-1.9.4-4.el6.noarch 1/8 Verifying : php-xml-5.3.3-23.el6_4.x86_64 2/8 Verifying : php-common-5.3.3-23.el6_4.x86_64 3/8 Verifying : libXpm-3.5.10-2.el6.x86_64 4/8 Verifying : php-cli-5.3.3-23.el6_4.x86_64 5/8 Verifying : php-5.3.3-23.el6_4.x86_64 6/8 Verifying : php-pdo-5.3.3-23.el6_4.x86_64 7/8 Verifying : php-gd-5.3.3-23.el6_4.x86_64 8/8 Installed: php.x86_64 0:5.3.3-23.el6_4 php-gd.x86_64 0:5.3.3-23.el6_4 php-pdo.x86_64 0:5.3.3-23.el6_4 php-pear.noarch 1:1.9.4-4.el6 php-xml.x86_64 0:5.3.3-23.el6_4 Dependency Installed: libXpm.x86_64 0:3.5.10-2.el6 php-cli.x86_64 0:5.3.3-23.el6_4 php-common.x86_64 0:5.3.3-23.el6_4 Complete!
可以使用yum install命令安装软件包,如下所示:
# yum install httpd Loaded plugins: amazon-id, rhui-lb, security Setting up Install Process Resolving Dependencies -> Running transaction check --> Package httpd.x86_64 0:2.2.15-29.el6_4 will be installed -> Processing Dependency: httpd-tools = 2.2.15-29.el6_4 for package: httpd-2.2.15-29.el6_4.x86_64 -> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-29.el6_4.x86_64 -> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.15-29.el6_4.x86_64 -> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.15-29.el6_4.x86_64 -> Running transaction check --> Package apr.x86_64 0:1.3.9-5.el6_2 will be installed --> Package apr-util.x86_64 0:1.3.9-3.el6_0.1 will be installed --> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be installed --> Package httpd-tools.x86_64 0:2.2.15-29.el6_4 will be installed -> Finished Dependency Resolution Dependencies Resolved ====================================================== Package Arch Version Repository Size ====================================================== Installing: httpd x86_64 2.2.15-29.el6_4 rhui-REGION-rhel-server-releases 821 k Installing for dependencies: apr x86_64 1.3.9-5.el6_2 rhui-REGION-rhel-server-releases 123 k apr-util x86_64 1.3.9-3.el6_0.1 rhui-REGION-rhel-server-releases 87 k apr-util-ldap x86_64 1.3.9-3.el6_0.1 rhui-REGION-rhel-server-releases 15 k httpd-tools x86_64 2.2.15-29.el6_4 rhui-REGION-rhel-server-releases 73 k Transaction Summary ====================================================== Install 5 Package(s) Total download size: 1.1 M Installed size: 3.6 M Is this ok [y/N]: y
如你所见,在安装httpd时yum安装了额外的软件包。这称为yum完成的依赖包解析。
假如你不想让yum弹出[y/N]选项,可以使用yum install -y httpd
# yum update httpd Loaded plugins: amazon-id, rhui-lb, security Setting up Update Process No Packages marked for Update
这意味着你系统中安装的httpd软件包已经是yum软件仓库里的最新版本的了。
# yum update
以上命令将系统上的所有软件包更新到最新版本,包括内核软件包,这意味着你的OS更新到了RHEL提供的最新版本了。
可以使用yum从RHEL或者CentOS的软件仓库里下载RPM软件包但是不安装。你首先需要下载一个插件让yum只下载rpm软件包而不安装。插件名字叫downloadonly,可以通过yum安装,如下所示:
# yum install yum-downloadonly Loaded plugins: amazon-id, rhui-lb, security Setting up Install Process Resolving Dependencies -> Running transaction check --> Package yum-plugin-downloadonly.noarch 0:1.1.30-14.el6 will be installed -> Finished Dependency Resolution Dependencies Resolved ==================================================== Package Arch Version Repository Size ==================================================== Installing: yum-plugin-downloadonly noarch 1.1.30-14.el6 rhui-REGION-rhel-server-releases 20 k Transaction Summary ==================================================== Install 1 Package(s) Total download size: 20 k Installed size: 21 k Is this ok [y/N]: y Downloading Packages: yum-plugin-downloadonly-1.1.30-14.el6.noarch.rpm | 20 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : yum-plugin-downloadonly-1.1.30-14.el6.noarch 1/1 Verifying : yum-plugin-downloadonly-1.1.30-14.el6.noarch 1/1 Installed: yum-plugin-downloadonly.noarch 0:1.1.30-14.el6 Complete!
现在你就可以从软件仓库里只下载软件包而不安装了,命令如下:
# yum install httpd-devel -downloadonly
默认情况下软件包会被下载到/var/cache/yum/目录,但是你可以添加额外选项将其下载到指定位置
# yum install httpd-devel -downloadonly -downloaddir=/opt
假如你有一个rpm软件包但是没有它所依赖的软件包,你不知道到哪去得到它所依赖的软件包。你仍然可以通过yum安装这个rpm软件包,并从软件仓库里得到它所依赖的软件包。让我们安装刚刚下载的httpd-devel-2.2.15-29.el64.x8664 RPM软件包。
# yum localinstall /opt/httpd-devel-2.2.15-29.el6_4.x86_64.rpm Loaded plugins: amazon-id, downloadonly, rhui-lb, security Setting up Local Package Process Examining /opt/httpd-devel-2.2.15-29.el6_4.x86_64.rpm: httpd-devel-2.2.15-29.el6_4.x86_64 Marking /opt/httpd-devel-2.2.15-29.el6_4.x86_64.rpm to be installed Resolving Dependencies -> Running transaction check --> Package httpd-devel.x86_64 0:2.2.15-29.el6_4 will be installed -> Processing Dependency: apr-devel for package: httpd-devel-2.2.15-29.el6_4.x86_64 -> Processing Dependency: apr-util-devel for package: httpd-devel-2.2.15-29.el6_4.x86_64 -> Running transaction check --> Package apr-devel.x86_64 0:1.3.9-5.el6_2 will be installed --> Package apr-util-devel.x86_64 0:1.3.9-3.el6_0.1 will be installed -> Processing Dependency: openldap-devel for package: apr-util-devel-1.3.9-3.el6_0.1.x86_64 -> Processing Dependency: expat-devel for package: apr-util-devel-1.3.9-3.el6_0.1.x86_64 -> Processing Dependency: db4-devel for package: apr-util-devel-1.3.9-3.el6_0.1.x86_64 -> Running transaction check --> Package db4-devel.x86_64 0:4.7.25-18.el6_4 will be installed -> Processing Dependency: db4-cxx = 4.7.25-18.el6_4 for package: db4-devel-4.7.25-18.el6_4.x86_64 -> Processing Dependency: db4 = 4.7.25-18.el6_4 for package: db4-devel-4.7.25-18.el6_4.x86_64 -> Processing Dependency: libdb_cxx-4.7.so()(64bit) for package: db4-devel-4.7.25-18.el6_4.x86_64 --> Package expat-devel.x86_64 0:2.0.1-11.el6_2 will be installed --> Package openldap-devel.x86_64 0:2.4.23-32.el6_4.1 will be installed -> Processing Dependency: cyrus-sasl-devel >= 2.1 for package: openldap-devel-2.4.23-32.el6_4.1.x86_64 -> Running transaction check --> Package cyrus-sasl-devel.x86_64 0:2.1.23-13.el6_3.1 will be installed --> Package db4.x86_64 0:4.7.25-17.el6 will be updated -> Processing Dependency: db4 = 4.7.25-17.el6 for package: db4-utils-4.7.25-17.el6.x86_64 --> Package db4.x86_64 0:4.7.25-18.el6_4 will be an update --> Package db4-cxx.x86_64 0:4.7.25-18.el6_4 will be installed -> Running transaction check --> Package db4-utils.x86_64 0:4.7.25-17.el6 will be updated --> Package db4-utils.x86_64 0:4.7.25-18.el6_4 will be an update -> Finished Dependency Resolution Dependencies Resolved =================================================== Package Arch Version Repository Size =================================================== Installing: httpd-devel x86_64 2.2.15-29.el6_4 /httpd-devel-2.2.15-29.el6_4.x86_64 526 k Installing for dependencies: apr-devel x86_64 1.3.9-5.el6_2 rhui-REGION-rhel-server-releases 176 k apr-util-devel x86_64 1.3.9-3.el6_0.1 rhui-REGION-rhel-server-releases 69 k cyrus-sasl-devel x86_64 2.1.23-13.el6_3.1 rhui-REGION-rhel-server-releases 302 k db4-cxx x86_64 4.7.25-18.el6_4 rhui-REGION-rhel-server-releases 588 k db4-devel x86_64 4.7.25-18.el6_4 rhui-REGION-rhel-server-releases 6.6 M expat-devel x86_64 2.0.1-11.el6_2 rhui-REGION-rhel-server-releases 120 k openldap-devel x86_64 2.4.23-32.el6_4.1 rhui-REGION-rhel-server-releases 1.1 M Updating for dependencies: db4 x86_64 4.7.25-18.el6_4 rhui-REGION-rhel-server-releases 563 k db4-utils x86_64 4.7.25-18.el6_4 rhui-REGION-rhel-server-releases 130 k Transaction Summary =============================================== Install 8 Package(s) Upgrade 2 Package(s) Total size: 10 M Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Updating : db4-4.7.25-18.el6_4.x86_64 1/12 Installing : apr-devel-1.3.9-5.el6_2.x86_64 2/12 Installing : expat-devel-2.0.1-11.el6_2.x86_64 3/12 Installing : db4-cxx-4.7.25-18.el6_4.x86_64 4/12 Installing : db4-devel-4.7.25-18.el6_4.x86_64 5/12 Installing : cyrus-sasl-devel-2.1.23-13.el6_3.1.x86_64 6/12 Installing : openldap-devel-2.4.23-32.el6_4.1.x86_64 7/12 Installing : apr-util-devel-1.3.9-3.el6_0.1.x86_64 8/12 Installing : httpd-devel-2.2.15-29.el6_4.x86_64 9/12 Updating : db4-utils-4.7.25-18.el6_4.x86_64 10/12 Cleanup : db4-utils-4.7.25-17.el6.x86_64 11/12 Cleanup : db4-4.7.25-17.el6.x86_64 12/12 Verifying : apr-devel-1.3.9-5.el6_2.x86_64 1/12 Verifying : cyrus-sasl-devel-2.1.23-13.el6_3.1.x86_64 2/12 Verifying : apr-util-devel-1.3.9-3.el6_0.1.x86_64 3/12 Verifying : db4-cxx-4.7.25-18.el6_4.x86_64 4/12 Verifying : httpd-devel-2.2.15-29.el6_4.x86_64 5/12 Verifying : openldap-devel-2.4.23-32.el6_4.1.x86_64 6/12 Verifying : expat-devel-2.0.1-11.el6_2.x86_64 7/12 Verifying : db4-devel-4.7.25-18.el6_4.x86_64 8/12 Verifying : db4-4.7.25-18.el6_4.x86_64 9/12 Verifying : db4-utils-4.7.25-18.el6_4.x86_64 10/12 Verifying : db4-4.7.25-17.el6.x86_64 11/12 Verifying : db4-utils-4.7.25-17.el6.x86_64 12/12 Installed: httpd-devel.x86_64 0:2.2.15-29.el6_4 Dependency Installed: apr-devel.x86_64 0:1.3.9-5.el6_2 apr-util-devel.x86_64 0:1.3.9-3.el6_0.1 cyrus-sasl-devel.x86_64 0:2.1.23-13.el6_3.1 db4-cxx.x86_64 0:4.7.25-18.el6_4 db4-devel.x86_64 0:4.7.25-18.el6_4 expat-devel.x86_64 0:2.0.1-11.el6_2 openldap-devel.x86_64 0:2.4.23-32.el6_4.1 Dependency Updated: db4.x86_64 0:4.7.25-18.el6_4 db4-utils.x86_64 0:4.7.25-18.el6_4 Complete!
使用 yum remove 卸载软件包。举例如下:
# yum remove httpd Failed to set locale, defaulting to C Loaded plugins: amazon-id, downloadonly, rhui-lb, security Setting up Remove Process Resolving Dependencies -> Running transaction check --> Package httpd.x86_64 0:2.2.15-29.el6_4 will be erased -> Processing Dependency: httpd-mmn = 20051115 for package: php-5.3.3-23.el6_4.x86_64 -> Processing Dependency: httpd = 2.2.15-29.el6_4 for package: httpd-devel-2.2.15-29.el6_4.x86_64 -> Running transaction check --> Package httpd-devel.x86_64 0:2.2.15-29.el6_4 will be erased --> Package php.x86_64 0:5.3.3-23.el6_4 will be erased -> Finished Dependency Resolution Dependencies Resolved ================================================ Package Arch Version Repository Size ================================================ Removing: httpd x86_64 2.2.15-29.el6_4 @rhui-REGION-rhel-server-releases 2.9 M Removing for dependencies: httpd-devel x86_64 2.2.15-29.el6_4 @/httpd-devel-2.2.15-29.el6_4.x86_64 526 k php x86_64 5.3.3-23.el6_4 @rhui-REGION-rhel-server-releases 3.5 M Transaction Summary ================================================ Remove 3 Package(s) Installed size: 7.0 M Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Erasing : httpd-devel-2.2.15-29.el6_4.x86_64 1/3 Erasing : php-5.3.3-23.el6_4.x86_64 2/3 Erasing : httpd-2.2.15-29.el6_4.x86_64 3/3 Verifying : httpd-2.2.15-29.el6_4.x86_64 1/3 Verifying : httpd-devel-2.2.15-29.el6_4.x86_64 2/3 Verifying : php-5.3.3-23.el6_4.x86_64 3/3 Removed: httpd.x86_64 0:2.2.15-29.el6_4 Dependency Removed: httpd-devel.x86_64 0:2.2.15-29.el6_4 php.x86_64 0:5.3.3-23.el6_4 Complete!
假如你要列出你系统上安装的所有软件包,你可以使用yum list installed命令。这条命令结合grep命令是非常有用的,可以用来检查某个特定的软件包是否已被安装。这与使用rpm -qa命令询问已经安装的软件包相似。
# yum list installed Loaded plugins: amazon-id, downloadonly, rhui-lb, security Installed Packages ConsoleKit.x86_64 0.4.1-3.el6 @koji-override-0/$releasever ConsoleKit-libs.x86_64 0.4.1-3.el6 @koji-override-0/$releasever MAKEDEV.x86_64 3.24-6.el6 @koji-override-0/$releasever PyYAML.x86_64 3.10-3.1.el6 @koji-override-0/$releasever Red_Hat_Enterprise_Linux-Release_Notes-6-en-US.noarch 4-2.el6 @koji-override-0/$releasever SDL.x86_64 1.2.14-3.el6 @koji-override-0/$releasever abrt.x86_64 2.0.8-15.el6 @koji-override-0/$releasever abrt-addon-ccpp.x86_64 2.0.8-15.el6 @koji-override-0/$releasever abrt-addon-kerneloops.x86_64 2.0.8-15.el6 @koji-override-0/$releasever abrt-addon-python.x86_64 2.0.8-15.el6 @koji-override-0/$releasever abrt-cli.x86_64 2.0.8-15.el6 @koji-override-0/$releasever abrt-libs.x86_64 2.0.8-15.el6 @koji-override-0/$releasever abrt-tui.x86_64 2.0.8-15.el6 @koji-override-0/$releasever acl.x86_64 2.2.49-6.el6 @koji-override-0/$releasever acpid.x86_64 1.0.10-2.1.el6 @koji-override-0/$releasever aic94xx-firmware.noarch 30-2.el6 @koji-override-0/$releasever . . Output Truncated.
# yum repolist Loaded plugins: amazon-id, downloadonly, rhui-lb, security repo id repo name status rhui-REGION-client-config-server-6 Red Hat Update Infrastructure 2.0 Client Configuration Server 6 4 rhui-REGION-rhel-server-releases Red Hat Enterprise Linux Server 6 (RPMs) 10994 rhui-REGION-rhel-server-releases-optional Red Hat Enterprise Linux Server 6 Optional (RPMs) 6250 repolist: 17248
via: http://linoxide.com/linux-command/package-management-yum-redhat-linux/
译者:Linux-pdz 校对:jasminepeng
RPM是RedHat的包管理器,用来安装、卸载、升级和查询基于RedHat Linux的安装包。RHEL和基于它的系统使用rpm命令来完成这些功能。以下是一些例子来演示rpm的查询功能,和展示了用不同的方法来查询rpm数据库和还原配置文件。
我在示例命令中使用SSH包来做说明。
# 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
# 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。为了更近一步,请看下面的示例。
# 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包所包含的任一文件来查询)。两者都会输出从那个软件包安装的。
# 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
上面的输出显示了所有该包在系统中安装的文件。现在让我们更进一步,我们只想要看到该包提供的配置文件和文档。
# 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
# 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的绝对路径,可以用来开始配置服务。
如果由于一些原因文件损坏或者从系统中删除了,你可以以rpm -qf开头来找出文件存在于哪个包。接下来使用rpm2cpio | cpio -idmv来从包中解压出文件。用ssh的例子。
假设/etc/ssh/sshd_config文件已经删除并且你不希望重装ssh,按以下步骤来还原文件。
上面步骤中你使用的命令会在/tmp下面创建一个子目录。你现在可以复制到它的原始目录。