Skip to content Skip to main navigation Skip to footer

Linux

Linux:如何在Linux中发现IP地址冲突

你们都知道什么是IP地址,是吧?它们被分配给网络上的设备来代表它们。它们通过DHCP服务器分配并且会经常改变。现在有两种IP地址。动态的一种会经常改变(几天一次),而静态的就如它的名字那样是静态的,意味着它们不会改变。

有时这会引发一些冲突。当一个动态IP被分配了并且有另外一台网络设备已经拥有了相同的IP。或者在相同网络子网上有多台分配IP的DHCP服务器。如果你有连通问题并且假设它是由于IP冲突造成的,那么你可以使用一个工具称作arp-scan来扫描它们。

Linux:如何在Linux中发现IP地址冲突
Linux:如何在Linux中发现IP地址冲突

这个工具会在本地网络发送ARP(Address Resolution Protocol)(地址解析协议)包来收集地址。如果有多个MAC地址声称拥有相同的IP地址,那么这里就存在冲突。

要在Ubuntu或者Debian上安装arp-scan则输入:

$ sudo apt-get install arp-scan

对于Fedora,CentOS或者RedHat:

$ sudo yum install arp-scan

要检测IP冲突,运行下面的命令:

$ sudo arp-scan –I eth0 -l

输出示例:

192.168.1.10   00:1b:a9:63:a2:4c       BROTHER INDUSTRIES, LTD.
192.168.1.30   00:1e:8f:58:ec:49       CANON INC.
192.168.1.33   00:25:4b:1b:10:20       Apple, Inc
192.168.1.37   10:9a:dd:55:d7:95       Apple Inc
192.168.1.38   20:c9:d0:27:8d:56       (Unknown)
192.168.1.39   d4:85:64:4d:35:be       Hewlett Packard
192.168.1.39   00:0b:46:e4:8e:6d       Cisco (DUP: 2)
192.168.1.40   90:2b:34:18:59:c0       (Unknown)

在本例中,192.168.1.39这个IP冲突了,因为它出现了两次。


via: http://www.unixmen.com/find-ip-conflicts-linux/

译者:geekpi 校对:wxy

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

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

Linux:Linux基础:分析 Ubuntu 磁盘使用情况

Linux:Linux基础:分析 Ubuntu 磁盘使用情况
Linux:Linux基础:分析 Ubuntu 磁盘使用情况

亲爱的linux极客们,

在这篇文章中,我将指导你们如何在 Ubuntu 中对磁盘使用情况进行分析。为了确保系统的健康,运行的流畅,时常关心机器的硬盘,适当的运行一些分析是非常重要的,当然,运行这些分析是很容易的。为了完成分析,我们将使用一款非常棒的图形工具,名叫Baobab

在下一步操作之前,我可以告诉你们,它的使用非常简单,功能齐全,我确定它能够满足你的需求。Baobab 是 gnome-utils 的一部分,但是自从Gnome3.4版本后,已经作为独立应用。通过使用这个磁盘分析工具,你可以轻松扫描文件夹,文件系统,不单是本地,远程目录一样可以轻松分析。

只需轻轻点击,便可以搞定一切!想要停止扫描?简单,在 baobab 用户界面的顶部,轻点 Stop scanning 按钮,完成。

我喜欢这个工具的简单性并且可以图形化表示数据,像饼状图和树形图。那么,现在你们在自己的机子上安装使用如何呢?

据我所知,ubuntu已经默认安装,如果没有,打开一个新终端(CTRL+ALT+T),然后运行下列命令来安装它。

sudo apt-get install baobab

安装完毕后,会分类至应用程序, 系统工具, 磁盘分析器,或者,直接使用下列命令,在终端中运行baobab。

baobab

下列图片显示了当它在你的机器运行时的界面。

Linux:Linux基础:分析 Ubuntu 磁盘使用情况
Linux:Linux基础:分析 Ubuntu 磁盘使用情况

如需扫描 Home 目录,点击 Scan Home 或者 Analyzer->Scan Home Folder 选项。完成扫描后,工具会做很多分析,耐心等待分析结果吧!

Linux:Linux基础:分析 Ubuntu 磁盘使用情况
Linux:Linux基础:分析 Ubuntu 磁盘使用情况

正如上图所见,baobab 扫描结果提供给我们很多信息,包括 Home 目录中每一个文件夹的使用情况、大小,以及所拥有文件数。右边有一个饼状示意图。如果你喜欢,选择上方的 View as Treemap Chart,你可以轻松地把它换成树状图。

下图显示的是,选择树状图代替默认的饼状图的界面。

Linux:Linux基础:分析 Ubuntu 磁盘使用情况
Linux:Linux基础:分析 Ubuntu 磁盘使用情况

如需扫描文件系统,选择 Analyzer->Scan Filesystem ,如果你懒得去点击这些,有一个简单方法,快捷键CTRL+F

选择你喜欢的方式,两个方法都会起效并做同样的扫描。快捷键的确易用省时,但是如果不是天天用这个工具,也很难同时记住所有快捷键。

Linux:Linux基础:分析 Ubuntu 磁盘使用情况
Linux:Linux基础:分析 Ubuntu 磁盘使用情况

如何扫描文件夹?简单!Analyzer-> Scan A Folder -> 选择你想要扫描的文件夹,快捷键是 CTRL+O 。是不是非常简单?是的!看见 Scan a Folder 按钮了吗?点击它扫描就开始了!

下图显示了扫描完 python-nmap-0.1.4 后的结果。我用简单的方法得到了有用的信息列表。

Linux:Linux基础:分析 Ubuntu 磁盘使用情况
Linux:Linux基础:分析 Ubuntu 磁盘使用情况

你已经学会了如何扫描 Home 目录、文件系统和指定文件夹。有一个重要的功能,我还没有告诉你,但我确定你一定可以自己学会。是不是有远程文件夹需要扫描?好好发挥一下脑力吧!


via: http://www.unixmen.com/linux-basics-analyze-disk-usage-ubuntu-linux/

译者:Vic___ 校对:Caroline

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

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

Linux:给你的 Linux 桌面披上 Windows 8 的外衣

*开发者已经完成了新的仿Windows 7/8 的LXDE美化包,并且支持了呼声很高的Arch Linux。 *

Linux:给你的 Linux 桌面披上 Windows 8 的外衣
Linux:给你的 Linux 桌面披上 Windows 8 的外衣

不管你喜不喜欢,还是有很多人乐意把他们的系统美化成Windows 7或者Windows 8的界面。开发者制作了一个美化包能让这些用户安全的转换,并且尽量模仿了Windows 系统的界面。

LXDE的仿Windows 7/8美化包已经存在了一段时间,但是它在过去几个月仅仅得到了有限的影响,而且安装它也不是那么容易。因为它存在着很特殊的依赖性:必须安装LXPanel, LXSession (需要最新的0.4.9版本来更换图标、gtk主题和光标), PCManFM, Compton, Openbox, SliM, gtk2-engines-murrine 和gtk2-engines-pixbuf。

目前这个美化包能运行在Debian (Jessie) 和Ubuntu 上,你只需要在官方仓库上下载LXDE的包安装即可。奇怪的是,这个包不支持Lubuntu。

关于仿Windows 7/8 美化包的更多信息请访问官网

下载 WinAte 1.3


via: http://news.softpedia.com/news/Windows-7-8-Complete-Transformation-Pack-Out-for-Ubuntu-Debian-8-and-Arch-Linux-431448.shtml

译者:NearTan 校对:wxy

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

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

Linux:Bash脚本15分钟进阶教程

这里的技术技巧最初是来自谷歌的“Testing on the Toilet” (TOTT)。这里是一个修订和扩增版本。

Linux:Bash脚本15分钟进阶教程
Linux:Bash脚本15分钟进阶教程

脚本安全

我的所有bash脚本都以下面几句为开场白:

#!/bin/bash
set -o nounset
set -o errexit

这样做会避免两种常见的问题:

  1. 引用未定义的变量(缺省值为“”)
  2. 执行失败的命令被忽略

需要注意的是,有些Linux命令的某些参数可以强制忽略发生的错误,例如“mkdir -p” 和 “rm -f”。

还要注意的是,在“errexit”模式下,虽然能有效的捕捉错误,但并不能捕捉全部失败的命令,在某些情况下,一些失败的命令是无法检测到的。(更多细节请参考这个帖子。)

脚本函数

在bash里你可以定义函数,它们就跟其它命令一样,可以随意的使用;它们能让你的脚本更具可读性:

ExtractBashComments() {
    egrep "^#"
}
cat myscript.sh | ExtractBashComments | wc
comments=$(ExtractBashComments < myscript.sh)

还有一些例子:

SumLines() {  # iterating over stdin - similar to awk
    local sum=0
    local line=””
    while read line ; do
        sum=$((${sum} + ${line}))
    done
    echo ${sum}
}
SumLines < data_one_number_per_line.txt
log() {  # classic logger
   local prefix="[$(date +%Y/%m/%d %H:%M:%S)]: "
   echo "${prefix} $@" >&2
}
log "INFO" "a message"

尽可能的把你的bash代码移入到函数里,仅把全局变量、常量和对“main”调用的语句放在最外层。

变量注解

Bash里可以对变量进行有限的注解。最重要的两个注解是:

  1. local(函数内部变量)
  2. readonly(只读变量)
# a useful idiom: DEFAULT_VAL can be overwritten
#       with an environment variable of the same name
readonly DEFAULT_VAL=${DEFAULT_VAL:-7}
myfunc() {
   # initialize a local variable with the global default
   local some_var=${DEFAULT_VAL}
   ...
}

这样,你可以将一个以前不是只读变量的变量声明成只读变量:

x=5
x=6
readonly x
x=7   # failure

尽量对你bash脚本里的所有变量使用local或readonly进行注解。

用$()代替反单引号(`)

反单引号很难看,在有些字体里跟正单引号很相似。$()能够内嵌使用,而且避免了转义符的麻烦。

# both commands below print out: A-B-C-D
echo "A-`echo B-`echo C-\`echo D\```"
echo "A-$(echo B-$(echo C-$(echo D)))"

用[[]](双层中括号)替代[]

使用[[]]能避免像异常的文件扩展名之类的问题,而且能带来很多语法上的改进,而且还增加了很多新功能:

操作符 功能说明
|| 逻辑or(仅双中括号里使用)
&& 逻辑and(仅双中括号里使用)
< 字符串比较(双中括号里不需要转移)
-lt 数字比较
= 字符串相等
== 以Globbing方式进行字符串比较(仅双中括号里使用,参考下文)
=~ 用正则表达式进行字符串比较(仅双中括号里使用,参考下文)
-n 非空字符串
-z 空字符串
-eq 数字相等
-ne 数字不等

单中括号:

[ "${name}" > "a" -o ${name} < "m" ]

双中括号

[[ "${name}" > "a" && "${name}" < "m"  ]]

正则表达式/Globbing

使用双中括号带来的好处用下面几个例子最能表现:

t="abc123"
[[ "$t" == abc* ]]         # true (globbing比较)
[[ "$t" == "abc*" ]]       # false (字面比较)
[[ "$t" =~ [abc]+[123]+ ]] # true (正则表达式比较)
[[ "$t" =~ "abc*" ]]       # false (字面比较)

注意,从bash 3.2版开始,正则表达式和globbing表达式都不能用引号包裹。如果你的表达式里有空格,你可以把它存储到一个变量里:

r="a b+"
[[ "a bbb" =~ $r ]]        # true

按Globbing方式的字符串比较也可以用到case语句中:

case $t in
abc*)   ;;
esac

字符串操作

Bash里有各种各样操作字符串的方式,很多都是不可取的。

基本用户

f="path1/path2/file.ext"
len="${#f}" # = 20 (字符串长度)
# 切片操作: ${:} or ${::}
slice1="${f:6}" # = "path2/file.ext"
slice2="${f:6:5}" # = "path2"
slice3="${f: -8}" # = "file.ext"(注意:"-"前有空格)
pos=6
len=5
slice4="${f:${pos}:${len}}" # = "path2"

替换操作(使用globbing)

f="path1/path2/file.ext"
single_subst="${f/path?/x}"   # = "x/path2/file.ext"
global_subst="${f//path?/x}"  # = "x/x/file.ext"
# 字符串拆分
readonly DIR_SEP="/"
array=(${f//${DIR_SEP}/ })
second_dir="${arrray[1]}"     # = path2

删除头部或尾部(使用globbing)

f="path1/path2/file.ext"
# 删除字符串头部
extension="${f#*.}"  # = "ext"
# 以贪婪匹配方式删除字符串头部
filename="${f##*/}"  # = "file.ext"
# 删除字符串尾部
dirname="${f%/*}"    # = "path1/path2"
# 以贪婪匹配方式删除字符串尾部
root="${f%%/*}"      # = "path1"

避免使用临时文件

有些命令需要以文件名为参数,这样一来就不能使用管道。这个时候 <() 就显出用处了,它可以接受一个命令,并把它转换成可以当成文件名之类的什么东西:

# 下载并比较两个网页
diff <(wget -O - url1) <(wget -O - url2)

还有一个非常有用处的是”here documents”,它能让你在标准输入上输入多行字符串。下面的’MARKER’可以替换成任何字词。

# 任何字词都可以当作分界符
command  << MARKER
...
${var}
$(cmd)
...
MARKER

如果文本里没有内嵌变量替换操作,你可以把第一个MARKER用单引号包起来:

command << 'MARKER'
...
no substitution is happening here.
$ (dollar sign) is passed through verbatim.
...
MARKER

内置变量

变量 说明
$0 脚本名称
$n 传给脚本/函数的第n个参数
$$ 脚本的PID
$! 上一个被执行的命令的PID(后台运行的进程)
$? 上一个命令的退出状态(管道命令使用${PIPESTATUS})
$# 传递给脚本/函数的参数个数
$@ 传递给脚本/函数的所有参数(识别每个参数)
$* 传递给脚本/函数的所有参数(把所有参数当成一个字符串)
提示
使用$*很少是正确的选择。
$@能够处理空格参数,而且参数间的空格也能正确的处理。
使用$@时应该用双引号括起来,像”$@”这样。

调试

对脚本进行语法检查:

bash -n myscript.sh

跟踪脚本里每个命令的执行:

bash -v myscripts.sh

跟踪脚本里每个命令的执行并附加扩充信息:

bash -x myscript.sh

你可以在脚本头部使用set -o verbose和set -o xtrace来永久指定-v和-o。当在远程机器上执行脚本时,这样做非常有用,用它来输出远程信息。

什么时候不应该使用bash脚本

  • 你的脚本太长,多达几百行
  • 你需要比数组更复杂的数据结构
  • 出现了复杂的转义问题
  • 有太多的字符串操作
  • 不太需要调用其它程序和跟其它程序管道交互
  • 担心性能

这个时候,你应该考虑一种脚本语言,比如Python或Ruby。

参考

[英文原文:Better Bash Scripting in 15 Minutes ] 
via : http://www.vaikan.com/bash-scripting/ 

Linux:SCL项目:在Red Hat系列系统上安装同一软件的不同版本

想要使用Ruby、Python和Perl中的一个新版本,或者想给你的RHEL 6系统安装上Node.js?寻找替代MySQL、MariaDB 5.5或PostgreSQL 9.2的版本?SCL项目将会让你的愿望得到满足。 

 

SCL(Software Collections)可以让你在同一个操作系统上安装和使用多个版本的软件,而不会影响整个系统的安装包。SCL为社区的以下需求而设计:创建和使用软件集合生产系统、概念验证系统、开发测试平台。SCL目前已经支持 Fedora 和 RHEL (衍生版本如 CentOS 也包含在内)。

SCL的设置及启用

SCL设置步骤非常简单:

1.安装SCL工具  

yum install -y scl-utils

2.浏览可用的版本 

yum list available | grep rhscl

3.安装一个集合

yum install python33-*

4.开始使用SCL 

scl enable python33 idle 

你可以使用以下三种方法来启用SCL:

  • 运行一个命令
scl enable python33 ./hello.py
  • 启动一个会话
scl enable python33 bash
  • 启动一个服务器
chkconfig mariadb55-mysqld on/etc/init.d/mariadb55-mysqld start

你可以在 这里找到你需要的组件。 

哪些软件支持SCL?

红帽客户门户的文档页面,你可以找到支持SCL的软件集合。或者你也可以访问红帽(RHN)软件频道

开发快速入门

如果你需要为你的项目或产品建立一个软件集合,你可以使用 SCL演示系统,它将告诉你如何修改RPM spec文件,并创建一个易于安装的软件集合。

SCL项目主页: https://www.softwarecollections.org/

SCL项目文档: https://www.softwarecollections.org/en/docs/ 

via : http://code.csdn.net/news/2819472 

Linux:内核代号101 — 动手写自己的内核

Hi, 大家好。

在这篇文章中,我们将从零开始,动手编写一个可以用GRUB来引导的简单x86内核,该内核会在屏幕上打印一条信息,然后——挂起!

Linux:内核代号101 — 动手写自己的内核
Linux:内核代号101 — 动手写自己的内核

 一个人写一个内核是一件简单的事情

X86机器是怎样启动的?

在我们思考怎样写一个内核之前,让我们先看一下x86机器从启动到把控制权交给内核的过程是怎样的:

x86 CPU在机器启动之后就会从地址 [0xFFFFFFF0]处开始执行,这个地址就是在32位寻址空间中的最后16个字节处,这里存放了一条跳转指令,会跳转到内存中BIOS代码起始处。

接着,cpu就开始开始执行BIOS代码块了,BIOS首先会在我们配置好的启动设备序列中,通过检查一个特定的魔数,找到第一个可以引导的设备。

一旦BIOS找到一个可以引导的设备后,它就会把该设备第一个扇区的代码复制到物理内存的[0x7c00]的位置,然后跳转到这个地址开始执行这一段代码,我们习惯把这一段代码叫作bootloader。

Bootloader会将内核代码加载到物理内存[0x100000]的位置,[0x100000]这个地址是所有x86机器宏内核代码的起始地址。

我们需要哪一些工具?

* 一个x86构架的计算机

* Linux

NASM 汇编器

GCC

LD(GNU 连接器)

GRUB

源码

源代码可以在我的Github上找到: Github repository – mkernel

用汇编代码来编写内核入口

我们喜欢用c来做所有的事情,但是我们无可避免地需要用到一点儿汇编,我们将会写一小段x86的汇编代码来作为内核入口,这一段汇编代码会在调用我们的c代码后停止整个程序流程。

我们怎样确认汇编代码会作为内核的起始点呢?

 我们将用一个连接器脚本将这些目标文件链接成我们最终的内核程序(稍后解释更多),在连接器脚本里,我们指定了这段二进制代码会被加载到内存 [0x100000]处。这个地址就是我之前说过的,内核所希望的起始地址。

汇编代码如下:

;;kernel.asm
bits 32			;nasm directive - 32 bit
section .text
global start
extern kmain	        ;kmain is defined in the c file
start:
  cli 			;block interrupts
  call kmain
  hlt		 	;halt the CPU

第一行指令 bit32 不是x86汇编指令,它是一条NASM 指令,指定nasm汇编器产生32位的程序,这条语句并不是必不可少的,但加上它是一个好的编程习惯。

第二行是text段(代码段)的开始,在这里存放着我们的代码块。

global是另外一个NASM指令,用将一个符号设置为全局符号。这样做连接器才会知道符号start在哪儿开始,start是我们程序的入口地址。

kmain是我们定义在kernel.c文件中的函数,extern关键字声明了该函数定义在别的文件中。

到这里,我们的函数start调用kmian函数之后就会使用hlt指令将CPU挂起,中断会cpu从hlt 指令中唤醒,我们要在挂起之前用cli指令来关闭系统的中断响应,cli指令是清除中断(clear-interrupts)的缩写。

用C实现的内核

kernle.asm中,我们调用了kmain()函数,所以我们的c代码将会在kmain()中开始运行:

/*
*  kernel.c
*/
void kmain(void)
{
	char *str = "my first kernel";
	char *vidptr = (char*)0xb8000; 	//video mem begins here.
	unsigned int i = 0;
	unsigned int j = 0;
	//clear all
	while(j < 80 * 25 * 2) {
		//blank character
		vidptr[j] = ' ';
		//attribute-byte: light grey on black screen
		vidptr[j+1] = 0x07;
		j = j + 2;
	}
	j = 0;
	while(str[j] != '') {
		vidptr[i] = str[j];
		vidptr[i+1] = 0x07;
		++j;
		i = i + 2;
	}
	return;
}

我们的内核首先会清空整个屏幕,然后打印出字符串。

首先,我们用一个vidptr指针,指向地址[0xb8000] , 这个地址是保护模式下显存的起始地址。屏幕的文本内容对应着的内存空间中一个内存段,即屏幕的输出输出映射到了内存中地址[0xb8000]的地方,整个屏幕共支持25行,每行80个ASCII字符。

在文本内存中每一个字符由16bits(2个字节)表示,这不像我们以前使用8bits来定义。其中第一个字节是该字符的ASCII码,第二个字节是属性字节, 它描述了字符的表现形式,包括了字符颜色等属性。

为了在黑色的背景下打印绿色字符’s‘,我们将字符’s‘放在显存中的第一个字节,接着将[0x02]放在第二个字节中, 其中 0表示黑色背景,2表示绿色前景。

下面是不同颜色的定义:

0 - Black, 1 - Blue, 2 - Green, 3 - Cyan, 4 - Red, 5 - Magenta, 6 - Brown, 7 - Light Grey,8 - Dark Grey, 9 - Light Blue, 10/a - Light Green, 11/b - Light Cyan, 12/c - Light Red, 13/d - Light Magenta, 14/e - Light Brown, 15/f – White. 

在我们的内核中,我们将字符颜色设置为灰色,将背景颜色设定为黑色,因此我们的属性字节的值是[0x07].

在第一个while循环中,程序将属性值为[0x07]的空格字符(‘  ’)写到整个屏幕中(共25行,每行80个字符),这样就会将整个屏幕清空了。

在第二个while循环中,我们将null结尾的字符串 “my first kernel” ,从显存的起始处开始写入。

这样字符串就打印在屏幕上了 

链接部分

我们用NASM,GCC分别将kernale.asm,kernel.c编译成目标文件,接着将这些目标文件链接成一个可引导的内核程序。

我们指定ld连接器按照我们脚本规定来进行链接。

/*
*  link.ld
*/
OUTPUT_FORMAT(elf32-i386)
ENTRY(start)
SECTIONS
 {
   . = 0x100000;
   .text : { *(.text) }
   .data : { *(.data) }
   .bss  : { *(.bss)  }
 }

脚本指定了输出格式为 32位的ELF文件格式. ELF(Executable and Linkable Format)是x86构架的类Unix系统标准的二进制格式。

ENTRY 接收一个参数。它指定了可执行文件的入口符号。

SECTIONS  对我们来讲是最重要的。在这里,我们定义即将生成的可执行文件的布局。我们可以定义各个段链接融合的方式以及放置的位置。

SECTIONS 后的花括号中,符号 (.) 表示的是一个位置计数器。它通常会被初始化为[0x0],作为SECTIONS 块的起始地址 ,它的值是可以被修改的。 之前我说过,内核代码需要在地址[0x100000]处,所以我们将它修改为[0x100000]。

接着看下一行的 .text : { *(.text) }

星号( * )是一个通配符,表示所有的文件名。*(.text)表示将所有输入文件的 .text 

因此,按照这个设定,连接器将所有目标文件的text段融合到最终可执行文件的text 段中,即在位置计数器所标识的地址处 ([0x100000])。

在连接器将处理好输出的text段后,地址计数器的值会变为[0x100000]+text段的长度。

类似的,data段和bss段也会相应得融合后放置到地址计数器所标识的位置。

Grub和多重引导

现在我们已经准备好所有制作内核所需的文件了,但我们还有一步工作,我们还需要用grub Bootloader来启动我们的内核。

在按照Mutileboot 规范来编译我们的内核后,它就可以被GRUB引导了。

按照Mutileboot 的规范说明,内核必须在起始的8KB中包含这一个多引导项头(Multiboot header)。

而且,这个多引导项头里面必须有3个4字节对齐的块。

一个魔术块:包含了魔数[0x1BADB002],是多引导项头结构的定义值。

一个标志块:我们不关心这个块的内容,我们简单设定为0。

一个校检块:校检块,魔术块和标志块的数值的总和必须是0。

因此,我们的内核代码如下:

;;kernel.asm
;nasm directive - 32 bit
bits 32
section .text
        ;multiboot spec
        align 4
        dd 0x1BADB002            ;magic
        dd 0x00                  ;flags
        dd - (0x1BADB002 + 0x00) ;checksum. m+f+c should be zero
global start
extern kmain	        ;kmain is defined in the c file
start:
  cli 			;block interrupts
  call kmain
  hlt		 	;halt the CPU

dd 指令定义了个4字节的双字。

生成内核

我们现在开始将kernel.asm和kernel.c编译成目标文件,接着将它们根据我们的连接器脚本的设定链接到一起:

nasm -f elf32 kernel.asm -o kasm.o

启动NASM汇编器将kernel.asm编译成ELF-32位格式的目标文件。

gcc -m32 -c kernel.c -o kc.o

-c选项告知GCC编译器在将源文件编译成目标文件后,不要对它们进行链接。

ld -m elf_i386 -T link.ld -o kernel kasm.o kc.o

启动链接器,根据我们的链接脚本生成一个名为kernel的可执行的文件。

配置grub,启动内核

GRUB 需要以kernel-的形式来命名内核程序,所以,我将它重名为kernel-701.

接着将它放在/boot目录下,这一步需要你需要拥有超级用户权限才能够进行操作。

在你的GRUB配置文件grub.cfg中加上一个引导入口,如下:

title myKernel
	root (hd0,0)
	kernel /boot/kernel-701 ro

如果存在一个“hiddenmenu”的指令,记得要把它移除掉。

重启电脑,你就能够看到你的内核也在启动选择项列表中了。

选择启动它之后,结果如下:

Linux:内核代号101 — 动手写自己的内核
Linux:内核代号101 — 动手写自己的内核

成功显示出来了。

”这是你的内核“

”不,是你的内核“。

 

PS:

*  建议你在虚拟机中进行你所有内核hacking。

*  在一些新的发行版中,使用了grub2作为默认的bootloader,你需要向下面这样来配置你的配置文件。

 (感谢 Rubén Laguna提供了grub2的配置)

menuentry 'kernel 7001' {
	set root='hd0,msdos1'
	multiboot /boot/kernel-7001 ro
}

*  如果你想用qemu模拟器代替GRUB来启动你的内核程序的话,你可以怎么做:

qemu-system-i386 -kernel kernel

 

原文链接: Arjun Sreedharan 翻译: 极客范 何伟寰

译文链接: http://www.geekfan.net/8663/

Linux:Ubuntu用户通过Folder Color修改文件夹颜色-让桌面更多彩

今天在OMGUbuntu网站上看到的这款软件可以让你的Ubuntu系统更加有个性,让你的文件夹拥有更多的色彩,给计算机桌面再增加一点活力,这是一款称之为Folder Color小工具软件。一款为Nautilus设计运行的软件。

Linux:Ubuntu用户通过Folder Color修改文件夹颜色-让桌面更多彩
Linux:Ubuntu用户通过Folder Color修改文件夹颜色-让桌面更多彩
Linux:Ubuntu用户通过Folder Color修改文件夹颜色-让桌面更多彩
Linux:Ubuntu用户通过Folder Color修改文件夹颜色-让桌面更多彩

安装之后只要选择文件夹右键单击就可以选择颜色,允许你修改颜色的文件夹图标包括Home(音乐,照片,文件等)。安装,用户可以使用PPA安装,非常容易,支持Ubuntu 14.04 LTS和Ubuntu13.10。

打开终端,输入以下命令:

sudo add-apt-repository ppa:costales/folder-color
sudo apt-get update && sudo apt-get install folder-color

安装完成之后需要重启Nautilus。 

via : http://imcn.me/html/y2014/19701.html

Linux:ubuntu 14.04 用户如何安装 SteamOS 会话

SteamOS是一个开源的基于Debian Wheezy分支的、为游戏的优化的操作系统。不像Debian 7,它使用的是xcompmgr图形合成器。SteamOS由维尔福公司设计开发,使用于Steam Machine游戏终端机上。在2013年12月13日首次发布。在这篇文章中我将告诉你如何在Ubuntu 14.04上安装steamos会话,以使用户的SteamOS 大图片模式直接从lightdm GTK迎宾开始进入。

Linux:ubuntu 14.04 用户如何安装 SteamOS 会话
Linux:ubuntu 14.04 用户如何安装 SteamOS 会话
Linux:ubuntu 14.04 用户如何安装 SteamOS 会话
Linux:ubuntu 14.04 用户如何安装 SteamOS 会话

安装方法分32位系统和64位系统,请根据你的系统选择

32位系统安装安装命令:

首先安装Steam客户端

sudo apt-get install steam

下载DEB安装包:

wget repo.steampowered.com/steamos/pool/main/s/steamos-compositor/steamos-compositor_1.18+bsos1_i386.deb
wget repo.steampowered.com/steamos/pool/main/s/steamos-modeswitch-inhibitor/steamos-modeswitch-inhibitor_1.9.1+bsos1_i386.deb
wget ftp://ftp.fit.vutbr.cz/pub/systems/ubuntu/ubuntu/pool/universe/u/udev/libudev0_175-0ubuntu19_i386.deb

安装下载包:

sudo apt-get install gdebi
sudo gdebi *.deb

64位系统安装安装命令:

同样,先安装客户端:

sudo apt-get install steam

下载安装包:

wget repo.steampowered.com/steamos/pool/main/s/steamos-compositor/steamos-compositor_1.18+bsos1_amd64.deb
wget repo.steampowered.com/steamos/pool/main/s/steamos-modeswitch-inhibitor/steamos-modeswitch-inhibitor_1.9.1+bsos1_amd64.deb
wget ftp://ftp.fit.vutbr.cz/pub/systems/ubuntu/ubuntu/pool/universe/u/udev/libudev0_175-0ubuntu19_amd64.deb

安装下载包:

sudo apt-get install gdebi
sudo gdebi *.deb

卸载

先退出Steam OS会话并切换到常规会话模式,按 CTRL + ALT + F7 。

移除SteamOS Session命令:

sudo apt-get remove steamos-compositor steamos-modeswitch-inhibitor

 

via: http://imcn.me/html/y2014/19626.html

Linux:10个 ssh 简单命令选项

一个系统管理员可能会同时管理着多台服务器,这些服务器也许会放在不同的地方。要亲自一台一台的去访问来管理它们显然不是最好的方法,通过远程控制的方法应该是最有效的。远程访问最通用的一款应用程序就是 SSH(什么?你还用telnet?….$%@%&W@$##)。

Linux:10个 ssh 简单命令选项
Linux:10个 ssh 简单命令选项

SSH 是什么

SSH(全称 Secure Shell)是一种加密的网络协议。使用该协议的数据将被加密,如果在传输中间数据泄漏,也可以确保没有人能读取出有用信息。要使用 SSH,目标机器应该安装 SSH 服务端应用程序,因为 SSH 是基于客户-服务模式的。 当你想安全的远程连接到主机,可中间的网络(比如因特网)并不安全,通常这种情况下就会使用 SSH。

安装 SSH

的 Linux 系统默认已经安装了 SSH。如果碰巧你的机器没装(译注:我能吐槽么?没有不装ssh的Linux服务器吧,不过,大家要记得升级你的ssh服务器),我们可以手工来安装一下。最简单的方式就是使用 Linux 包管理器。

基于 Debian / Ubuntu 的系统 :

安装 ssh-client

$ sudo apt-get install openssh-client

安装 ssh-server

$ sudo apt-get install openssh-server

基于 RedHat / CentOS 的系统 :

# yum install openssh-server openssh-clients

SSH 一旦安装上,我们就可以在终端下输入 ssh 来检查下安装的是否正常。

Linux:10个 ssh 简单命令选项
Linux:10个 ssh 简单命令选项

使用 SSH

提供了许多可使用的选项。这篇文章会介绍一些我们在日常操作中经常使用的选项。

1. 无选项参数运行 SSH

通常使用 SSH 的方式就是不加任何选项参数,仅仅输入 “ssh“。下面是示例:

$ ssh 192.168.0.103

SSH connecti confirmation

第一次连接目标主机时,ssh 会让你确认目标主机的真实性。如果你回答的是 NO,SSH 将不会继续连接,只有回答 Yes 才会继续(译注:会加入RSA key的指纹作为记录,如果下次连接发现指纹变化,会提示你)。

Connecting to SSH

下一次再登陆此主机时,SSH 就不会提示确认消息了。对此主机的真实验证信息已经默认保存在每个用户的 /home/user/.ssh 文件里。

2. 指定登陆用户

默认的,ssh 会尝试用当前用户作为用户名来连接。在上面的示例命令中,ssh 会尝试用用户名叫 pungki 的用户身份来登入服务器,这是因为用户 pungki 正在客户机上使用 ssh 客户端软件。

假如目标主机上没有叫 pungki 的用户呢?这时你就必须提供一个目标主机上存在的用户名。从一开始就要指定用户名的,可以使用 -l 选项参数。

$ ssh -l leni 192.168.0.103

Ssh using -l option

我们也可以这样输入:

$ ssh leni@192.168.0.0103

Another way to supply username

3. 指定端口

SSH 默认使用的端口号是 22。大多现代的 Linux 系统 22 端口都是开放的。如果你运行 ssh 程序而没有指定端口号,它直接就是通过 22 端口发送请求的。

一些系统管理员会改变 SSH 的默认端口号。让我们试试,现在端口号是 1234.要连上那主机,就要使用 **-p* 选项,后面在加上 SSH 端口号。

$ ssh 192.168.0.103 -p 1234

要改变端口号,我们需要修改 /etc/ssh/ssh_config 文件,找到此行:

Port 22

把它换成其他的端口号,比如上面示例的 1234 端口,然后重启 SSH 服务。

4.对所有数据请求压缩

有了这个选项,所有通过 SSH 发送或接收的数据将会被压缩,并且任然是加密的。要使用 SSH 的压缩功能,使用 -C 选项。

$ ssh -C 192.168.0.103

如果你的连网速度很慢的话,比如用 modem 上网,这个选项非常有用。但如果你使用的是像 LAN 或其它更高级网络的话,压缩反而会降低你的传输速度。可以使用 -o 选项加上压缩级别参数来控制压缩的级别,但这个选项仅仅只在 SSH-1 下起作用。

5. 指定一个加密算法

SSH 提供了一些可用的加密算法。可以在 */etc/ssh/ssh_config or ~/.ssh/config * 文件中看到(如果存在的话)。

SSH cipher configuration example

让我们试试比如你想使用 blowfish 算法来加密你的 SSH 会话,那么你只要把这一行加入你的 /etc/ssh/ssh_config or ~/.ssh/config 文件就可以:

Cipher blowfish

默认的,SSH 会使用 3des 算法。

6. 打开调试模式

因为某些原因,我们想要追踪调试我们建立的 SSH 连接情况。SSH 提供的 -v 选项参数正是为此而设的。

$ ssh -v 192.168.0.103
Linux:10个 ssh 简单命令选项
Linux:10个 ssh 简单命令选项

7. 绑定源地址

如果你的客户端有多于两个以上的 IP 地址,你就不可能分得清楚在使用哪一个 IP 连接到 SSH 服务器。

Linux:10个 ssh 简单命令选项
Linux:10个 ssh 简单命令选项

为了解决这种情况,我们可以使用 -b 选项来指定一个IP 地址。这个 IP 将会被使用做建立连接的源地址。

$ ssh -b 192.168.0.200 -l leni 192.168.0.103

服务端,我们可以使用 netstat 命令来检查到服务的连接是否建立。可以看到 IP 为 192.168.0.200 的连接已经建立。

Bind address using SSH

8. 使用其他配置文件

默认情况下,ssh 会使用位于 /etc/ssh/ssh_config 的配置文件。这个配置文件作用于系统的所有用户。但你想要为特定的用户指定特殊的设置的话,可以把配置放入 ~/.ssh/config 文件中。如果此文件不存在,可以手工创建一个。

下面是一个通用 ssh_config 文件配置的例子。这配置文件位于 /home/pungki 目录下。

Host 192.168.0.*
ForwardX11 yes
PasswordAuthentication yes
ConnectTimeout 10
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
Protocol 2
HashKnownHosts yes

要使用指定的配置文件,可以使用 -F 选项。

$ ssh -F /home/pungki/my_ssh_config 192.168.0.101

Specify your ssh_config

9. 使用 SSH X11 Forwarding

某些时候,你可能想把服务端的 X11 应用程序显示到客户端计算机上,SSH 提供了 -X 选项。但要启用这功能,我们需要做些准备,下面是它的设置:

在服务器端,你需要使 /etc/ssh/ssh_config 文件中的行设置成 ForwardX11 yes 或者 X11Forwad yes,以启用 X11 Forwarding,重启 SSH 服务程序。

然后在客户端,输入 ssh -X user@host:

$ ssh -X leni@192.168.0.101

一旦登陆,可以输入:

$ echo $DISPLAY

来检查,你应该可以看到向如下所示的

localhost:10:0

随后就可以运行应用了,仅仅只能输入应用程序的命令。让我们试试,比如想运行 xclock 程序,输入:

$ xclock
Linux:10个 ssh 简单命令选项
Linux:10个 ssh 简单命令选项

它就运行起来了,xclock 确实是运行在远端系统的,但它在你的本地系统里显示了。

xclock

10. 可信任的 X11 转发

如果你敢肯定你的网络是安全的,那么你可以使用可信任的 X11 转发机制。这意味着远程的 X11 客户端可以完全的访问源 X11 显示内容。要使用此功能,可以使用 -Y 选项。

$ ssh -Y leni@192.168.0.101
Linux:10个 ssh 简单命令选项
Linux:10个 ssh 简单命令选项

结论

我们相信 SSH 的使用范围非常之广。SSH 给用户提供了网络连接的极大安全性和灵活性。通常我们都会输入 man sshman ssh_config 来显示它的用户手册及查看更多的细节。

(译注补充:建议使用ssh的协议版本2,因此请修改 ssh_config 文件的 Protocol 字段为:2,而将对协议1的支持取消。)


via: http://linoxide.com/linux-command/learn-ssh-connection-options/

译者:runningwater 校对:wxy

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

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

Linux:怎样打开64位 Ubuntu 的32位支持功能

大多数使用基于 Ubuntu/Debian 的发行版的人都更倾向于选择64位的系统,对吧?这是因为64位的系统能够充分发挥你的硬件的全部性能, 它使你能够在更紧张的内存资源下使用更复杂的软件,而且是真的快速使用,不必每次做一件小事都要等上许久。现在,32位仅有一个优点,那就是没有太多兼容性上的问题。每次JAVA更新都很让人很困惑,因为大多数用户都不能获得需要的库文件。在过去,很多别的软件和驱动也没有64位版。

因此,如果现在你有一个64位架构的系统,而且你可以使用之前的支持:包括驱动、64位版本和任何一个你需要的软件。这样就避免了所有的问题,对吧?现在有一个让你可以在64位系统中使用32位软件的方法,爽吗?就在你读了这篇文章然后照着做了之后就可以了。如果你有一个13.10或更高版本的Ubuntu/Debian,你需要安装一个叫做 ia32-libs 的基础包。现在,这个包已经被废弃了,所以你必须手工安装。

Linux:怎样打开64位 Ubuntu 的32位支持功能
Linux:怎样打开64位 Ubuntu 的32位支持功能

下面的命令可以在 Ubuntu/Debian 13.10 或更高的发行版上运行。

第一步: 确认你有一个64位架构的内核

你可以打开终端然后输入:

dpkg --print-architecture

你将会看到像下面这样的内容:

amd64

这说明着你已经拥有了64位架构内核。

第二步: 确认你打开了多架构支持功能

(多架构支持可以让你在有64位库的情况下使用32位库。)

输入:

dpkg --print-foreign-architectures

输出是:

i386

如果你还没有多架构支持你需要打开它。

另一种第二步: 打开多架构支持。

输入:

sudo dpkg --add-architecture i386
sudo apt -get update

然后就会开始下载更新然后运行。

之后你需要输入:

sudo apt-get dist-upgrade

它会检查你已经拥有的库文件是否有更新的版本。

若果然有的话,它会问你是否需要更新(y/n)。

如此这般,你就已经成功地为你的64位系统安装了32位支持了。


via: http://www.unixmen.com/enable-32-bit-support-64-bit-ubuntu-13-10-greater/

译者:crowner 校对:wxy

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

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

Linux:HTML Email 编写指南

作者: 阮一峰

今天,我想写一个”低技术”问题。

话说我订阅了不少了新闻邮件(Newsletter),比如JavaScript Weekly。每周收到一封邮件,了解本周的大事。

Linux:HTML Email 编写指南
Linux:HTML Email 编写指南

有一天,我就在想,是不是我也能做一个这样的邮件?

然后,就发现这事不那么容易。抛开后台和编辑工作,单单是设计一个Email样板,就需要不少心思。

Linux:HTML Email 编写指南
Linux:HTML Email 编写指南

因为这种带格式的邮件,其实就是一张网页,正式名称叫做HTML Email。它能否正常显示,完全取决于邮件客户端。大多数的邮件客户端(比如Outlook和Gmail),会过滤HTML设置,让邮件面目全非。

我发现,编写HTML Email的窍门,就是使用15年前的网页制作方法。下面就是我整理的编写指南。

1. Doctype

目前,兼容性最好的Doctype是XHTML 1.0 Strict,事实上Gmail和Hotmail会删掉你的Doctype,换上这个Doctype。

 
  
  HTML Email编写指南
  
 

使用这个Doctype,也就意味着,不能使用HTML5的语法。

2. 布局

网页的布局(layout)必须使用表格(table)。首先,放置一个最外层的大表格,用来设置背景。

 
  
   
  
 
Hello!

表格的 border 属性等于1, 是为了方便开发。正式发布的时候,再把这个属性设为0。

在内层,放置第二个表格。用来展示内容。第二个table的宽度定为600像素,防止超过客户端的显示宽度。


 
  
 
 
  
 
 
  
 
Row 1
Row 2
Row 3

邮件内容有几个部分,就设置几行(row)。

3. 图片

图片是唯一可以引用的外部资源。其他的外部资源,比如样式表文件、字体文件、视频文件等,一概不能引用。

有些客户端会给图片链接加上边框,要去除边框。

  img {outline:none; text-decoration:none; -ms-interpolation-mode: bicubic;}
  a img {border:none;}
  

需要注意的是,不少客户端默认不显示图片(比如Gmail),所以要确保即使没有图片,主要内容也能被阅读。

4. 行内样式

所有的CSS规则,最好都采用行内样式。因为放置在网页头部的样式,很可能会被客户端删除。客户端对CSS规则的支持情况,请看这里

另外,不要采用CSS的简写形式,有些客户端不支持。比如,不要写成下面这样:

  style="font: 8px/14px Arial, sans-serif;"

如果想表达

  

要写成下面这样:

  

5. W3C校验和测试工具

要保证最终的代码,能够通过W3C的校验,因为某些客户端会把不合格属性剥离。还要使用测试工具(123),查看在不同客户端的显示结果。

发送HTML Email的时候,不要忘记MIME类型不能使用

  Content-Type: text/plain;

而要使用

  Content-Type: Multipart/Alternative;

发送工具可以考虑使用 MailChimp 和 Campaign Monitor 。

6. 模板

使用别人已经做好的模板,是一个不错的选择(这里这里),网上还可以搜到更多

自己开发的话,可以参考HTML Email BoilerplateEmailology

7. 参考链接

进一步研究,请参考下面的文章。

  - Sean Powell,Say Hello to the HTML Email Boilerplate  - Nicole Merlin,Build an HTML Email Template From Scratch  - Nicole Merlin, What You Should Know About HTML Email 

via : http://www.ruanyifeng.com/blog/2013/06/html_email.html 

Linux:敢偷用我的WiFi? 看我怎么治你

我的邻居正在盗用我的WiFi,唔,对此我可以直接选择加密口令,或者…作为一名极客我也可以耍耍他。

Linux:敢偷用我的WiFi? 看我怎么治你
Linux:敢偷用我的WiFi? 看我怎么治你

 

划分网络

那么,我就从划分网络开始吧。我把网络划分成两部分,受信任部分和非受信任部分。受信任部分组成一个子网,而非受信任的部分组成另一个不同的子网。我通过DHCP服务器来辨识MAC地址,以此得到相关的地址信息。下面就是我的/etc/dhcpd.conf配置文件。

ddns-updates off;
ddns-update-style interim;
authoritative;
shared-network local {
        subnet *.*.*.* netmask 255.255.255.0 {
                range *.*.*.* *.*.*.*;
                option routers *.*.*.*;
                option subnet-mask 255.255.255.0;
                option domain-name "XXXXX";
                option domain-name-servers *.*.*.*;
                deny unknown-clients;
                host trusted1 {
                        hardware ethernet *:*:*:*:*:*;
                        fixed-address *.*.*.*;
                }
		}
        subnet 192.168.0.0 netmask 255.255.255.0 {
                range 192.168.0.2 192.168.0.10;
                option routers 192.168.0.1;
                option subnet-mask 255.255.255.0;
                option domain-name-servers 192.168.0.1;
                allow unknown-clients;
        }
}

 

Iptables太好玩了!

嗯,接下来我用iptables工具来对流量做些手脚。我是这么干的:

/sbin/iptables –A PREROUTING –s 192.168.0.0/255.255.255.0 –p tcp –j DNAT –to-destination 64.111.96.38

噢,突然所有东西都变成小猫咪了!对于那些缺乏经验的新手,现在他们所有的流量都会重定向到http://www.kittenwar.com/去,小猫咪可爱吗?

还不够,我想玩的更爽一些。我继续设定iptables规则,让所有流量转发到我的一台运行有squid代理程序的本地计算机上,端口设为80。

/sbin/iptables –A PREROUTING –s 192.168.0.0/255.255.255.0 –p tcp –m tcp –dport 80 –j DNAT –to-destination 192.168.0.1

这台本地机器上运行有squid,其中带有一个小的重定向功能,可以自动下载图片,然后通过mogrify(一个图片修改程序)将图片弄成上下颠倒,再输出到本地的Web服务器上。

下面就是我的重定向脚本代码,这是个小的perl程序:

#!/usr/bin/perl
$|=1;
$count = 0;
$pid = $$;
while (<>) {
        chomp $_;
        if ($_ =~ /(.*.jpg)/i) {
                $url = $1;
                system("/usr/bin/wget", "-q", "-O","/space/WebPages/images/$pid-$count.jpg", "$url");
                system("/usr/bin/mogrify", "-flip","/space/WebPages/images/$pid-$count.jpg");
                print "http://127.0.0.1/images/$pid-$count.jpgn";
        }
        elsif ($_ =~ /(.*.gif)/i) {
                $url = $1;
                system("/usr/bin/wget", "-q", "-O","/space/WebPages/images/$pid-$count.gif", "$url");
                system("/usr/bin/mogrify", "-flip","/space/WebPages/images/$pid-$count.gif");
                print "http://127.0.0.1/images/$pid-$count.gifn";
        }
        else {
                print "$_n";;
        }
        $count++;
}

好了,大功告成!现在浏览网页时会变成下面这样:

Linux:敢偷用我的WiFi? 看我怎么治你
Linux:敢偷用我的WiFi? 看我怎么治你

再来一张,:D

Linux:敢偷用我的WiFi? 看我怎么治你
Linux:敢偷用我的WiFi? 看我怎么治你

如果你修改一下上面的代码,将-flip替换为-blur 4,那么你的图片就会有模糊效果。

Linux:敢偷用我的WiFi? 看我怎么治你
Linux:敢偷用我的WiFi? 看我怎么治你

这些人不会以为他们的电脑坏了吧?:D

对此,我甚至做了一副漫画,很酷吧?

1337_part_1

之后我收到了一封邮件,噢,是kittenwar网站的人发给我的,他是这么说的:

Hi Pete,

抱歉没跟你打招呼就给你发了这封邮件,但是,我想告诉你的是,对于你把图片弄的上下颠倒以此来捉弄那些偷用WiFi的人,这个点子真是太赞了。

我常常会收到措辞语气极为愤怒的邮件,这些人说我的网站kittenwar在玩弄一些邪恶的病毒,阻止他们正常浏览网页,他们控告我不要再搞这些黑暗的法术了。对这些人我只会有礼貌的回复到:对此我真的很不好意思,但这种情况只会发生在您盗用别人的WiFi连接时才会出现。过去几年里这种事情发生了数十次,但是你知道吗?当我指出他们盗用WiFi的事实之后,就再也没有收到回复了。

原文链接: Pete 翻译: 极客范 – 陈舸译文链接: http://www.geekfan.net/1451/

Linux:如何在Linux命令行下查询字典?

大多数人在遇到他们不熟悉的单词时会查询google。或者他们用一个最喜欢的在线字典来提供答案。当你在没有网络连接的时候怎么办?或者你只有一个古老的Linux发行版且你没有GUI界面?你需要离线查找的话,这里有一个好的方法。

Linux:如何在Linux命令行下查询字典?
Linux:如何在Linux命令行下查询字典?

首先你需要本地设置dictd。dictd 是一个字典数据库服务器。它允许你访问在线字典。但是等一下,我们不是要离线使用么?这是为什么我们要将其安装到本地的原因。它带有一个命令行客户端。

要在Ubuntu或者Debian上安装你要输入:

$ sudo apt-get install dictd

这个很简单。现在你需要安装用的字典。安装完每个字典插件后dictd都会自动重新加载它的数据库。让我们来安装英语字典和英语同义词词典。

输入:

$ sudo apt-get install dict-gcide
$ sudo apt-get  install dict-moby-thesaurus

如果你希望查询其他可以查询的语言,你可以输入:

$ sudo apt-cache search “dict package”

这会列出下面这样的:

dict-freedict-eng-ara - Dict package for English-Arabic Freedict dictionary
dict-freedict-eng-cro - Dict package for English-Croatian Freedict dictionary
dict-freedict-eng-cze - Dict package for English-Czech Freedict dictionary
dict-freedict-eng-deu - Dict package for English-German Freedict dictionary
dict-freedict-eng-fra - Dict package for English-French Freedict dictionary

现在你已成功安装dictd了,之后你就可以查找字典了。

首先,让我们检查一下dictd服务是否在运行并且安装了什么数据库:

$ dict -I

示例输出:

dictd 1.12.0/rf on Linux 3.2.0-29-generic-pae
On my_host: up 95.000, 2 forks (75.8/hour)
Database      Headwords         Index          Data  Uncompressed
gcide              203645       3859 kB         12 MB         38 MB
moby-thesaurus      30263        528 kB         10 MB         28 MB

为了查询一个单词,你可以指定要查询的字典。让我们查询一下English one字典(gcid):

$ dict -d gcide [你要查的单词]

如果你不使用-d 参数,dictd会搜寻所有的安装字典并返回匹配的结果。


via: http://www.unixmen.com/look-dictionary-definitions-via-terminal/

译者:geekpi 校对:wxy

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

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

Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏

Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏

Xperience UI 是一个基于 Nitrux 发行板的一个界面设计的概念作品,如果其开发能够完成,它将有可能成为当今最漂亮的桌面之一。

即使有些人很会折腾并使他们的桌面装扮得更帅些,但是大多数 Linux 桌面仍可以轻易的被社区里面的人们认出来。 如今折腾的人有福利了,Nitrux Xperience UI 带来了相当华丽的设计理念。

Nitrux 的开发者们之前因其图标及一些其他设计而闻名,而如今这款桌面的界面设计质量几乎可以与现今我们能找到的任何的顶级设计相媲美。

这些设计或许会让大家想起一些来自 Elementary OS 的元素,但同时她也有着非常严谨而独特的风格。 即使这些细节很难被观察到,我们仍可以从通知区域、锁屏、或是主面板感受到设计者对其的精雕细琢。

这些设计理念虽然看起来很倾向于触屏设备,她仍然可以完美的融入到一个桌面系统中。

也许我们只能寄予期望给今后的某个 Nitrus 麾下的发行板可以采用这个设计了。

即使今后没人会实现这个设计(虽然我们很大把握有人会去折腾),这个设计仍然证明了 Linux 的设计也可以从头到脚都远远超出所有其他的操作系统。

Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏

桌面

Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏

Mini 启动面板 – 应用程序

Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏

Mini 启动面板 – 通知区域

Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏

Mini 启动面板 – 最近的文档

Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏

Mini 启动面板 – 快速设置

Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏

Mini 启动面板 – 关机

Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
Linux:Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏

主面板


via: http://news.softpedia.com/news/Xperience-UI-Concept-Could-Be-the-Most-Beautiful-Linux-Desktop-430087.shtml

译者:VizV 校对:wxy

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

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

Linux:Linux硬件信息命令大全

硬件信息

在linux系统中,有很多命令可以用于查询主机的硬件信息,有些命令仅仅针对于特定的硬件部件,比如cpu,内存等,而有些命令可以查询很多的硬件信息。

这篇帖子简单地带大家了解一下最常用的查询各种硬件信息的命令,其中包括lscpu,hwinfo,lshw,dmidecode,lspci等等。

Linux:Linux硬件信息命令大全
Linux:Linux硬件信息命令大全

1. lscpu

lscpu命令可以用来查询处理器cpu的详细信息,只需要简单地输入lscpu即可,如下所示,它本身也没有提供更多选项和功能可供选择。

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 23
Stepping:              10
CPU MHz:               1998.000
BogoMIPS:              5302.48
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              2048K
NUMA node0 CPU(s):     0-3

2. lshw – 显示硬件信息列表

这个命令用途广泛,它可以根据你的需求以详细或概要的形式列出许多个不同硬件的参数信息,其中包括cpu,内存,磁盘,usb控制器,网卡等等,lshw实质上是从/proc文件目录下的不同文件中提取对应的硬件信息。

$ sudo lshw -short
H/W path        Device      Class       Description
===================================================
                        system      ()
/0                          bus         DG35EC
/0/0                        processor   Intel(R) Core(TM)2 Quad CPU    Q8400  @ 2.66GHz
/0/0/1                      memory      2MiB L2 cache
/0/0/3                      memory      32KiB L1 cache
/0/2                        memory      32KiB L1 cache
/0/4                        memory      64KiB BIOS
/0/14                       memory      8GiB System Memory
/0/14/0                     memory      2GiB DIMM DDR2 Synchronous 667 MHz (1.5 ns)
/0/14/1                     memory      2GiB DIMM DDR2 Synchronous 667 MHz (1.5 ns)
/0/14/2                     memory      2GiB DIMM DDR2 Synchronous 667 MHz (1.5 ns)
/0/14/3                     memory      2GiB DIMM DDR2 Synchronous 667 MHz (1.5 ns)
/0/100                      bridge      82G35 Express DRAM Controller
/0/100/2                    display     82G35 Express Integrated Graphics Controller
/0/100/2.1                  display     82G35 Express Integrated Graphics Controller
/0/100/19       eth0        network     82566DC Gigabit Network Connection
/0/100/1a                   bus         82801H (ICH8 Family) USB UHCI Controller #4
/0/100/1a.1                 bus         82801H (ICH8 Family) USB UHCI Controller #5
/0/100/1a.7                 bus         82801H (ICH8 Family) USB2 EHCI Controller #2
/0/100/1b                   multimedia  82801H (ICH8 Family) HD Audio Controller
/0/100/1c                   bridge      82801H (ICH8 Family) PCI Express Port 1
/0/100/1c.1                 bridge      82801H (ICH8 Family) PCI Express Port 2
/0/100/1c.2                 bridge      82801H (ICH8 Family) PCI Express Port 3
/0/100/1c.2/0               storage     JMB368 IDE controller
/0/100/1d                   bus         82801H (ICH8 Family) USB UHCI Controller #1
/0/100/1d.1                 bus         82801H (ICH8 Family) USB UHCI Controller #2
/0/100/1d.2                 bus         82801H (ICH8 Family) USB UHCI Controller #3
/0/100/1d.7                 bus         82801H (ICH8 Family) USB2 EHCI Controller #1
/0/100/1e                   bridge      82801 PCI Bridge
/0/100/1e/5                 bus         FW322/323 [TrueFire] 1394a Controller
/0/100/1f                   bridge      82801HB/HR (ICH8/R) LPC Interface Controller
/0/100/1f.2                 storage     82801H (ICH8 Family) 4 port SATA Controller [IDE mode]
/0/100/1f.3                 bus         82801H (ICH8 Family) SMBus Controller
/0/100/1f.5                 storage     82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE m
/0/1            scsi3       storage
/0/1/0.0.0      /dev/sda    disk        500GB ST3500418AS
/0/1/0.0.0/1    /dev/sda1   volume      70GiB Windows NTFS volume
/0/1/0.0.0/2    /dev/sda2   volume      395GiB Extended partition
/0/1/0.0.0/2/5  /dev/sda5   volume      97GiB HPFS/NTFS partition
/0/1/0.0.0/2/6  /dev/sda6   volume      97GiB Linux filesystem partition
/0/1/0.0.0/2/7  /dev/sda7   volume      1952MiB Linux swap / Solaris partition
/0/1/0.0.0/2/8  /dev/sda8   volume      198GiB Linux filesystem partition
/0/3            scsi4       storage
/0/3/0.0.0      /dev/cdrom  disk        DVD RW DRU-190A

点击下面的帖子,可以对lshw有更多的了解。

在Linux上使用lshw命令获取硬件信息

3. hwinfo – Hardware Information

hwinfo同样是一个使用非常广泛的硬件信息查询命令,类似于lshw,它同样可以详细或概要地报告多个部件的硬件信息,但不同的是,它有时可以给出比lshw更多的信息。

$ hwinfo --short
cpu:
                       Intel(R) Core(TM)2 Quad CPU    Q8400  @ 2.66GHz, 2000 MHz
                       Intel(R) Core(TM)2 Quad CPU    Q8400  @ 2.66GHz, 2000 MHz
                       Intel(R) Core(TM)2 Quad CPU    Q8400  @ 2.66GHz, 2666 MHz
                       Intel(R) Core(TM)2 Quad CPU    Q8400  @ 2.66GHz, 2666 MHz
keyboard:
  /dev/input/event2    AT Translated Set 2 keyboard
mouse:
  /dev/input/mice      Microsoft Basic Optical Mouse v2.0
graphics card:
                       Intel 965G-1
                       Intel 82G35 Express Integrated Graphics Controller
sound:
                       Intel 82801H (ICH8 Family) HD Audio Controller
storage:
                       Intel 82801H (ICH8 Family) 4 port SATA IDE Controller
                       Intel 82801H (ICH8 Family) 2 port SATA IDE Controller
                       JMicron JMB368 IDE controller
network:
  eth0                 Intel 82566DC Gigabit Network Connection
network interface:
  eth0                 Ethernet network interface
  lo                   Loopback network interface
disk:
  /dev/sda             ST3500418AS
partition:
  /dev/sda1            Partition
  /dev/sda2            Partition
  /dev/sda5            Partition
  /dev/sda6            Partition
  /dev/sda7            Partition
  /dev/sda8            Partition
cdrom:
  /dev/sr0             SONY DVD RW DRU-190A
usb controller:
                       Intel 82801H (ICH8 Family) USB UHCI Controller #4
                       Intel 82801H (ICH8 Family) USB UHCI Controller #5
                       Intel 82801H (ICH8 Family) USB2 EHCI Controller #2
                       Intel 82801H (ICH8 Family) USB UHCI Controller #1
                       Intel 82801H (ICH8 Family) USB UHCI Controller #2
                       Intel 82801H (ICH8 Family) USB UHCI Controller #3
                       Intel 82801H (ICH8 Family) USB2 EHCI Controller #1
bios:
                       BIOS
... TRUNCATED ...

点击下面的链接可以查看更多关于hwinfo的信息。

在Linux上使用hwinfo命令获取硬件信息

4. lspci – 显示pci总线相关信息

lscpi命令可以列出pci总线上信息,以及所有连接到pci总线上的设备信息,比如VGA适配器,显卡,网卡,usb端口,sata控制器等等。

$ lspci
00:00.0 Host bridge: Intel Corporation 82G35 Express DRAM Controller (rev 03)
00:02.0 VGA compatible controller: Intel Corporation 82G35 Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation 82G35 Express Integrated Graphics Controller (rev 03)
00:19.0 Ethernet controller: Intel Corporation 82566DC Gigabit Network Connection (rev 02)
00:1a.0 USB controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #4 (rev 02)
00:1a.1 USB controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 02)
00:1a.7 USB controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 02)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 02)
00:1c.2 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 3 (rev 02)
00:1d.0 USB controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 02)
00:1d.7 USB controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev f2)
00:1f.0 ISA bridge: Intel Corporation 82801HB/HR (ICH8/R) LPC Interface Controller (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801H (ICH8 Family) 4 port SATA Controller [IDE mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 02)
00:1f.5 IDE interface: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode] (rev 02)
03:00.0 IDE interface: JMicron Technology Corp. JMB368 IDE controller
04:05.0 FireWire (IEEE 1394): LSI Corporation FW322/323 [TrueFire] 1394a Controller (rev 70)

可以使用grep命令筛选出特定的设备信息。

$ lspci -v | grep "VGA" -A 12

5. lsscsi – 列出scsi设备信息

列出scsi/sata设备信息,比如硬盘驱动器,光盘驱动器。

$ lsscsi
[3:0:0:0]    disk    ATA      ST3500418AS      CC38  /dev/sda
[4:0:0:0]    cd/dvd  SONY     DVD RW DRU-190A  1.63  /dev/sr0

6. lsusb – 列出usb总线信息,及设备信息

该命令可以显示USB控制器及连接到控制的设备信息。默认情况下,只显示概要信息,可以通过-v选项指示其显示更多的硬件信息。

$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 002: ID 045e:00cb Microsoft Corp. Basic Optical Mouse v2.0
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

上面信息显示,在该系统中,有一个usb端口正被鼠标占用。

7. Inxi

inxi命令是一个大的bash脚本文件,其通过从不同的信息来源和命令中获取硬件信息,最后能给出一个颜色高亮的,适合于非专业人员阅读的硬件信息报告。

$ inxi -Fx
Linux:Linux硬件信息命令大全
Linux:Linux硬件信息命令大全

8. lsblk – 列出块设备信息

列出所有块设备信息,其中包括硬盘分区信息,以及其他存储设备,如光盘,闪存等。

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk
├─sda1   8:1    0    70G  0 part
├─sda2   8:2    0     1K  0 part
├─sda5   8:5    0  97.7G  0 part /media/4668484A68483B47
├─sda6   8:6    0  97.7G  0 part /
├─sda7   8:7    0   1.9G  0 part [SWAP]
└─sda8   8:8    0 198.5G  0 part /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1
sr0     11:0    1  1024M  0 rom

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

Linux:值得关注:Ubuntu 14.04服务器版提供了虚拟化、自动化、存储相关更新

这次发布的Ubuntu 14.04,代号Trusty Tahr(值得信赖的塔尔羊),将会给服务器版用户带来新的自动化,虚拟化和存储相关特性。

Linux:值得关注:Ubuntu 14.04服务器版提供了虚拟化、自动化、存储相关更新
Linux:值得关注:Ubuntu 14.04服务器版提供了虚拟化、自动化、存储相关更新

Ubuntu 14.04, 是由Canonical推出的基于Linux的开源操作系统最新版本,没有为PC和移动用户带来太大改动,对他们来说仅仅是较少的更新。而对服务器用户,这次最新的最重大的Ubuntu版本更新带来了更多功能,特别在自动化,云计算,以及虚拟化等方面。

对桌面和移动用户来说,这次即将在4月17日正式露面的Ubuntu14.04的最重大的改动是,它带来了AppArmor安全系统的更新。这个在桌面/移动版本中最重要的新特性,是一个运行在后台的内核强化包,那些在个人电脑,手机或者平板上使用Ubuntu的人们在Ubuntu 14.04版本中也许根本感觉不到什么大的改动。

然而,在服务器世界里,最新版的Ubuntu带来了更实质性的改动。特别是,它将Puppet升级到了第3版,Puppet是一个用来自动化IT基础设施管理的开源平台。这是个重要的更新,能够为部署大型Ubuntu服务器网络的人们带来便利(不过是在他们解决好Puppet早期版本和最新版之间的兼容性问题之后,新旧版本之间并不互相完全兼容)。

Ubuntu 14.04还将带来开源的虚拟化管理程序Xen的4.4版本。这次改动,对于旧版的Xen部署环境也需要做一些必要的调整,才可以切换到新版本上。不过,它提供了更多的新特性,而且可以协助管理Ubuntu服务器上虚拟环境的多样性,包括众多的虚拟化管理程序,VMware (VMW),KVM,Xen等等。

最后,Ubuntu 14.04的内核基于Linux 3.13,也带来了比如更好的固态硬盘(SSD)性能等新特性。这也是很受服务器用户欢迎的,特别是那些在云和大数据领域里对性能有很高要求的用户。

这次的Ubuntu 14.04是一个长期支持(LTS)版本,这也是服务器用户最有可能长期使用于生产环境的版本,而非LTS版本对于实际生产环境来说没有任何意义。尽管Canonical持续地集中精力于在PC和移动设备上”统一“的努力,这次Ubuntu带来的自动化,虚拟化和存储软件的更新在合适的时间点推出,有利于维持Ubuntu在服务器市场的竞争力。


via: http://thevarguy.com/servers/041514/ubuntu-1404-server-brings-virtualization-automation-storage-updates

译者:zpl1025 校对:wxy

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

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

Linux:如何关闭一个开放的DNS解析器

我们在之前的教程中创建的DNS服务器是一个开放DNS解析器。开放解析器不会过滤任何来源请求,并会接受来自所有IP的查询。

Linux:如何关闭一个开放的DNS解析器
Linux:如何关闭一个开放的DNS解析器

不幸的是,开放解析器很容易成为一个攻击目标。比如,攻击者可以对开放DNS服务器发起一个拒绝服务攻击(DoS)或者更糟的分布式拒绝服务攻击(DDoS)。这些也可与IP欺骗结合,将应答包指向受害者被欺骗的IP地址。在另外的场合下称作DNS放大攻击,开放的DNS服务器很容易就会成为攻击的对象。

根据openresolverproject.org,除非有必要,运行一个开放解析器是不明智的。大多数公司要让它们的DNS服务器仅对他们的客户开放。本篇教程会只要集中于如何配置一个DNS服务器来使它停止开放解析且仅对有效的客户响应。

调整防火墙

由于DNS运行在UDP的53端口上,系统管理可能试图仅允许来自53端口的客户端IP地址,并阻止剩余的因特网端口。虽然这可以工作,但是也会有一些问题。既然根服务器与DNS服务器的通信也用53端口,我们不得不在防火墙内也确保UDP 53端口被允许。

一个防火墙示例如下所示。对于生产服务器,确保你的规则匹配你的要求并遵守与公司安全制度。

# vim firewall-script

## existing rules are flushed to start with a new set of rules ##
iptables -F
iptables -A INPUT -s A.A.A.A/X -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s B.B.B.B/Y -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s C.C.C.C/Z -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j DROP
## making the rules persistent ##
service iptables save

让脚本可执行并运行它。

# chmod +x firewall-script
# ./firewall-script

阻止递归查询

DNS查询主要可以分为递归查询和迭代查询。对于递归查询,服务器会响应客户端应答或者错误信息。如果应答不在服务器的缓存中,服务器会与根服务器通信并获得授权域名服务器。服务器会不停查询知道获得结果,或者请求超时。对于迭代查询,另一个方面讲,服务器会将客户端指向另外一个可能可以处理的服务器上,那么就会减少服务器自身的处理。

我们可以控制运行递归查询的IP地址。我们修改位于/etc/named.conf的配置文件并增加/修改下面的参数。

# vim /etc/named.conf

## we define ACLs to specify the source address/es ##
acl customer-a{ A.A.A.A/X; };
acl customer-b { B.B.B.B/Y; C.C.C.C/Z; };
## we call the ACLs under options directive ##
options {
        directory "/var/named";
        allow-recursion { customer-a; customer-b; };
};

调整用于开放解析器的防火墙

如果你必须运行一个开放解析器,建议你适当调节一下你的服务器,这样就不会被利用了。smurfmonitor 仓库提供了强大的一组可以用于开放解析器的iptables规则,比如阻止来自DNS放大攻击的域名解析请求。这个仓库会定期地更新,强烈建议DNS服务器管理员使用它。

总的来说,对于开放DNS解析器的攻击是很常见的,特别是对于没有适当安全防护的DNS服务器而言。这个教程延时了如何禁止一个开放DNS服务器。我们同样看到了如何使用iptables在一个开放DNS服务器上加上一层安全防护。

希望这对你有用。


via: http://xmodulo.com/2014/04/close-open-dns-resolver.html

译者:geekpi 校对:校对者ID

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

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

Linux:五个你可能不了解的killall选项

Linux的命令行提供很多命令来杀死进程。比如,你可以向“kill”命传递一个PID来杀死进程;“pkill”命令使用一个正则表达式作为输入,所以和该模式匹配的进程都被杀死。

但是还有一个命令叫“killall”,默认情况下,它精确地匹配参数名,然后杀死匹配进程。在这篇文章中,我们将讨论有关这个命令的实际应用。

Linux:五个你可能不了解的killall选项
Linux:五个你可能不了解的killall选项

Linux 的 killall 命令

killall命令可以用来给一个特定的进程发送一个信号。这个信号默认情况下是SIGTERM,但也可以由killall命令使用参数来指定其它信号。

现在让我们通过一些实际的例子来看看这个命令的实际用法。

1. 基本示例

在这个例子中,我们将使用killall来杀死特定进程。假如,有两个开头字符相同的进程:

$ ps -aef | grep “test”
himanshu 3969 2811 0 14:14 pts/0 00:00:00 ./test
himanshu 3970 2811 0 14:14 pts/0 00:00:00 ./test_again

如何杀死“test_again”进程呢?

$ killall test_again
[2]+ Terminated ./test_again

如你所见,killall命令终止了“test_again”进程。你可以通过ps命令来确认这个事实:

$ ps -aef | grep “test”
himanshu 3969 2811 0 14:14 pts/0 00:00:00 ./test

你可以观察到“test_again”没有被显示出来,因为它已经被杀死了。

2. 使用 -I 选项忽略大小写

默认情况下,killall命令是大小写敏感的。例如:

$ ps -aef | grep “test”
himanshu 4177 3161 0 14:54 pts/3 00:00:00 ./test
himanshu 4178 3161 0 14:54 pts/3 00:00:00 ./test_again
himanshu 4180 3161 0 14:54 pts/3 00:00:00 grep --color=auto test
$ killall TEST
TEST: no process found

你可以看到,killall命令找不到叫做“TEST”的进程,但是“test”进程是确确实实的在运行的。

来让killall命令忽略大小写,可以使用-I选项(大写i)。例如:

$ killall -I TEST
[1]- Terminated ./test

你可以观察到,现在你成功的终止了“test”进程。

3. 使用 -i 选项交互式的终止进程

killall命令可以用来终止多个进程。

$ killall test test_again
[2]- Terminated ./test_again
[3]+ Terminated ./test

但是,如果你想要killall交互式地来终止进程,你可以使用-i选项。

这里是例子:

$ killall -i test test_again
Kill test(4201) ? (y/N) y
Kill test_again(4202) ? (y/N) y
[1]- Terminated ./test
[2]+ Terminated ./test_again

你可以看到,用这种方式,在同时终止多个进程时,用户可以控制是否终止某一个进程。

4. 使用 -q 选项关闭命令执行回显

有些时候,当killall找不到指定的进程时,它就会像下面这样输出错误信息。

$ killall TEST
TEST: no process found

但是,当你想要killall执行地安安静静的话,你就可以使用-q选项:

$ killall -q TEST
$

如你所见,-q选项被使用之后,killall命令的输出信息就被抑制了。

5. 使用-l选项列出所有支持的信号(signal)

如之前描述的一样,killall向进程发送信号。

你可以使用-s选项(后面跟一个信号名)来向一个进程发送特殊信号。

想要知道所有可以发送的信号,可以使用-l选项(小写L)来获取:

$ killall -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

killall支持上面的所有信号。

看着这些信号的名字,可能你心里就会嘀咕:这些信号都是干什么的?

译者注:使用下面的命令来获取所有信号的说明:

$ man 7 signal

我需要和大家讨论一件事情

killall命令的man说:假如进程的名字的长度小于等于15,默认情况下就会以完整名称匹配。

比如,假设有两个名字很长的进程:

$ ps -aef | grep “test”
himanshu 4021 3161 0 14:27 pts/3 00:00:00 ./test_abcdefghij
himanshu 4035 3161 0 14:27 pts/3 00:00:00 ./test_abcdefgh

第一个进程的名字有15个字符。现在,让我们试着使用killall杀死这个进程:

$ killall test_abcdefghij
[1]- Terminated ./test_abcdefghij

如你所见,killall命令成功杀死了这个进程。

假如,两个进程的名字都超过15个字符,根据man,killall将把两个进程全部杀死。比如:

$ ps -aef | grep “test”
himanshu 4114 3161 0 14:40 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwx
himanshu 4141 3161 0 14:46 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwxyz
himanshu 4143 3161 0 14:46 pts/3 00:00:00 grep --color=auto test

你可以观察到,两个进程的名字都超过15个字符。现在,当我使用killall试着杀死第二个进程时:

$ killall test_abcdefghijklmnopqrstuvwxyz
[6]+ Terminated ./test_abcdefghijklmnopqrstuvwxyz

它只杀死了指定的进程,另一个则没有被杀死。

$ ps -aef | grep “test”
himanshu 4114 3161 0 14:40 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwx
himanshu 4146 3161 0 14:47 pts/3 00:00:00 grep --color=auto test

我不太确定,是我进行的尝试中有不对的地方,还是这是killall的一个bug。假如你在评论中写上你的观点,我会非常感激。

顺便说一下,这是我机器上killall命令的版本信息:

$ killall --version
killall (PSmisc) 22.20
Copyright (C) 1993-2012 Werner Almesberger and Craig Small
PSmisc comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it under
the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING.

via: http://linoxide.com/linux-command/linux-killall-my-options/

译者:intermerlin 校对:wxy

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

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

Linux:如何在Linux中“快速阅读”?

你听说过“快速阅读”吗?说实话我也没有。直到一个名叫Spritz的新型公司筹集了350万种子基金来开发使用户能够实现每分钟阅读1000个单词的一个API。

Linux:如何在Linux中“快速阅读”?
Linux:如何在Linux中“快速阅读”?

“快速阅读”的概念十分简单:将一文本分割成一个个独立短小的部分,像一两个单词,然后使这些部分迅速地闪过屏幕。在这一阅读过程中,读者的眼睛完全不需要运动,从而减少读者平常阅读中花费的不必要的浏览页面的时间。因为这是一件相对较新的技术,没人知道在这样的阅读速度下,你的大脑是否会爆炸或者崩溃。不过,实际上这技术是十分安全的,因为你的大脑运行地足够快来处理这些信息。一旦人们习惯了这种阅读方式,这种方式会变得十分方便。想必你像我一样已经对这项技术的到来已经激动万分了,但我并不想等待,而是更快地习惯这种阅读方式。好消息是:现在你就可以在你最喜爱的操作系统下尝试“快速阅读”了。

1. Spread0r

Linux:如何在Linux中“快速阅读”?
Linux:如何在Linux中“快速阅读”?

基于Perl和GTK2,spread0r(曾名为Gritz)是一个GPL软件,它以文本文档作为输入,然后将文本内容在你眼前以最高1000词每分钟速度闪过。当然你可以先尝试较慢的速度,来慢慢熟悉它。软件的用户界面十分简介,功能按键几乎极简:开始文章阅读,选择阅读速度,推出等等。这个软件也有一些需要改进的地方,我建议使其能够支持除了文本文档之外的其他文件作为输入(当然你也可以自己转换格式),另外也可以考虑加入“无干扰”模式。不管怎样,这款软件是十分高大上的。

你可以通过从github中下载源码并启动“spread0r.pl”文件来尝试Spread0r。注意你先需要在你的操作系统中安装GTK2以及Perl.

$ sudo apt-get install libgtk2-perl (for Debian/Ubuntu)
$ sudo pacman -S gtk2-perl (for Archlinux)
$ sudo yum install perl-gtk2 (for Fedora)

2. Spread

Linux:如何在Linux中“快速阅读”?
Linux:如何在Linux中“快速阅读”?

除电子书以及word文档之外,我在电脑中阅读最多的就是来自网络的文章了(是的,这就是下面这种方法的起因)。如果我需要复制并黏贴我需要阅读的文本到一个文本编辑器中,将其保存为一个txt文档,然后用Spread0r打开,这样事情会变得太麻烦了。幸运的是,Chrome的一个拓展程序Spread会为我们处理这个需求。在你的Chrome浏览器中安装并启用Spread之后,你只需要选择你想要“快速阅读”的文本,在选取内右击,然后选择“Spreed selected text.”这个拓展程序会开启一个新窗口,你选择的文本就会在那个窗口中为你进行快速阅读。我喜欢这个和用扩展程序的方式集成到Chrome做法。比如说,你可以选择窗口的配色,一次快速阅读的文本量,字体大小,通过空格键控制的开始以及暂停,你甚至可以进行高于4,000词每分钟的快速阅读(但这已经不是快速阅读了,你只能看到零星的闪烁)。

3. Squirt

Linux:如何在Linux中“快速阅读”?
Linux:如何在Linux中“快速阅读”?

如果您喜欢在浏览器中快速阅读的点子,但是你不使用Chrome,也不喜欢“扩展程序”,对此的解决方案是书签Squirt。除了Squirt这个不明觉厉的名字之外,Squirt是我现在最喜欢的快速阅读工具。它十分高效并且使用简单。从这里加入它,通过把那个蓝色大按钮拖进你最喜欢的书签栏中。然后你就可以在任何网页中打开它,无论是否选中了阅读文本——一个白色的面板会出现在当前页面之上。你可以凭直觉来控制阅读文本。用户界面十分漂亮,而且它也可以实现4,000词以上的阅读速度。

 Bonus: Zethos

如果之前提及的方案没有一个能使你满意,而且你是一名程序员,你会很高兴地发现有一个叫做Zethos的免费及开源的JS项目,你可以通过使用它来开发你自己的“快速阅读”应用。你可以在github上查看代码,并为作者点个赞。

总而言之,你现在没有理由不在你最爱的操作系统进行“快速阅读”了。你只需要防止你的大脑被烧焦就行了。你更喜欢以上的哪个解决方案呢?或者你有另外更好的选择?你认为“快速阅读”在未来能够发展吗?在评论区中评论让我们知道你的想法。


via: http://xmodulo.com/2014/04/speed-read-linux.html

译者:ThomazL 校对:wxy

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

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

Linux:每日Ubuntu技巧 :让Trusty Tahr变得更好

Ubuntu 14.04 Trusty Tahr 已发布,如果你是其中之一的安装者,你需要做一些事来提升你的使用体验。

对于那些升级,这可能已经做完了,你不必再去做它,除非你没有在Ubuntu 13.10 里做这些。

Linux:每日Ubuntu技巧 :让Trusty Tahr变得更好
Linux:每日Ubuntu技巧 :让Trusty Tahr变得更好

Ubuntu 并不是完全开箱即用的。有一些可以提升体验的包和工具由于合法问题被Canonical排除在外。

这些包如果没有安装,会使观看电影,播放flash视频和收听MP3文件变得困难。由于法律或者其他原因,Ubuntu的父公司将它们排除在外。

如果你希望做上面这些事情,你必须继续下去来学习如何解决这些问题。

对于已经安装Ubuntu 13.10 并且准备升级的人,阅读这篇文章,或者点击下面的链接。

当你已经升级或者安装好了Ubuntu 14.04,打开你的命令行,接着运行下面的命令来安装缺失的可以在Ubuntu上更简易地播放媒体文件的包。

sudo apt-get install ubuntu-restricted-extras

当提示输入密码后,按回车继续。在安装完后,继而测试你的系统。这个包帮助安装Adobe Flash Player,MP3编码器,这样你就可以收听MP3音乐,电影插件来观看合法的DVD电影,和其他有用的事。

因此,无论你何时安装Ubuntu,首先试着安装这个包。这会在你使用Ubuntu时,提升你的一点体验。

这还有一种情况是你想要观看加密的DVD电影。在这种情形下,你需要运行下面的命令。

sudo apt-get install libavformat-extra-54 libavcodec-extra-54 libdvdread4

接着运行下面的命令,你就完成了。

sudo /usr/share/doc/libdvdread4/install-css.sh

最后,安装VLC媒体播放器,这是一个在Windows和Linux系统上一个很棒的观看DVD电影的程序。

sudo apt-get install vlc

希望这对你有帮助。

祝你体验愉快!


via: http://www.liberiangeek.net/2014/04/daily-ubuntu-tips-make-ubuntu-14-04-trusty-tahr-perform-better/

译者:geekpi 校对:wxy

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

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

Linux:10款流行的Markdown编辑器,总有一款适合你

作为一个开源人,如果你不会使用Markdown语法,那你就OUT了!Markdown 是 2004 年由 John Gruberis 设计和开发的纯文本格式的语法,非常的简单实用。 CSDN CODE平台的 帮助文档、项目README文件、文档项目甚至包括ISSUES和项目评论等都是支持Markdown语法的!

Linux:10款流行的Markdown编辑器,总有一款适合你
Linux:10款流行的Markdown编辑器,总有一款适合你

以下,我们收集了10个业界最受欢迎的Markdown编辑器,喜欢用Markdown的朋友都来看看吧!(以下排名仅为一家之言,请勿拍砖)

1.MarkdownPad 

Linux:10款流行的Markdown编辑器,总有一款适合你
Linux:10款流行的Markdown编辑器,总有一款适合你

用户可以通过键盘快捷键和工具栏按钮来使用或者移除 Markdown 格式。MarkdownPad左右栏的分割方式令用户可以实时看到 HTML 格式的 Markdown 文档。 

下载地址: http://markdownpad.com/

2.ReText

Linux:10款流行的Markdown编辑器,总有一款适合你
Linux:10款流行的Markdown编辑器,总有一款适合你

ReText 是一个使用 Markdown 语法和 reStructuredText (reST) 结构的文本编辑器,编辑的内容支持导出到 PDF、ODT 和 HTML 以及纯文本,支持即时预览、网页生成以及 HTML 语法高亮、全屏模式,可导出文件到 Google Docs 等。 

下载地址: http://sourceforge.net/p/retext/home/ReText/

3.WMD

Linux:10款流行的Markdown编辑器,总有一款适合你
Linux:10款流行的Markdown编辑器,总有一款适合你

WMD (wmd-editor)是一个简单轻量级的HTML编辑器,使用的是 Markdown 文本格式数据,适合用来做博客评论、发帖和一些基本的内容发布系统,支持流行的各种浏览器。 

下载地址: http://code.google.com/p/wmd/

4.Mou

Linux:10款流行的Markdown编辑器,总有一款适合你
Linux:10款流行的Markdown编辑器,总有一款适合你

Mou 是 Mac下杰出的 Markdown 编辑器,提供语法高亮、在线预览、同步滚动、全屏模式,支持自定保存、自动匹配,允许自定义主题,支持 CSS,HTML 和 PDF 导出等。 

下载地址: http://mouapp.com/

5.EpicEditor

Linux:10款流行的Markdown编辑器,总有一款适合你
Linux:10款流行的Markdown编辑器,总有一款适合你

EpicEditor 是一个可嵌入式的 JavaScript Markdown 编辑器,提供全屏编辑、在线预览、自动保存草稿和离线编辑支持。对开发者提供可可靠的 API 做风格设置。 

下载地址: http://epiceditor.com/ 

Linux:如何在 Ubuntu 中播放3D电影

亲爱的 Linux 极客们,

Q: 我下载了一部高品质 3D 电影,但是当我用 VLC 播放器播放的时候,画面被分割成两个部分,我可不想这样欣赏我的高清大片。

Linux:如何在 Ubuntu 中播放3D电影
Linux:如何在 Ubuntu 中播放3D电影

在本教程中你将会学习如何在 Ubuntu 中用名为bino的 3D 电影播放器来观看 3D 电影。你可以在终端中执行以下命令来轻松获取有关 3D 电影播放器的相关信息。

apt-cache search bino

在你的 Ubuntu 电脑中打开新终端(CTRL+ALT+T),执行以下命令来安装 bino。

sudo apt-get install bino

bino 安装完成后通过应用程序 → 音视频 → Bino 来启动,或者只需在终端中输入 bino 并按下回车。

如果你想播放,可以通过文件(File)点击打开(Open)来定位你的3D视频剪辑或电影。你的电影将会开始播放,但是画面仍然分成两个部分,没人喜欢这样看电影。

现在在输入(Input)中选择左/右(Left/Right)选项。你将看到很大的改变,我觉得你会喜欢。下面的截图说明了一切。我虽然刚开始用bino播放器,但是尝试着播放,看看我是否可以找到更多的技巧。

Linux:如何在 Ubuntu 中播放3D电影
Linux:如何在 Ubuntu 中播放3D电影

不要忘记点击播放按钮来观看电影。


via: http://www.unixmen.com/play-3d-movies-ubuntu/

译者:Vito 校对:Caroline

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

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

Linux:rhel源更换为centos源

Linux:rhel源更换为centos源
Linux:rhel源更换为centos源

1 删除rhel自带的yum包:

rpm -aq | grep yum |xargs rpm -e --nodeps

2 安装yum:

[china~/yum_64#]rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
warning:python-iniparse-0.3.1-2.1.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, keyID c105b9de: NOKEY
Preparing...               ########################################### [100%]
packagepython-iniparse-0.3.1-2.1.el6.noarch is already installed
[china~/yum_64#]rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
warning:yum-metadata-parser-1.1.2-16.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, keyID c105b9de: NOKEY
Preparing...               ########################################### [100%]
   1:yum-metadata-parser    ###########################################[100%]
[china~/yum_64#]rpm -ivh yum-3.2.29-40.el6.centos.noarch.rpmyum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm
warning:yum-3.2.29-40.el6.centos.noarch.rpm: Header V3 RSA/SHA1 Signature, key IDc105b9de: NOKEY
Preparing...               ########################################### [100%]
  1:yum-plugin-fastestmirro########################################### [50%]
  2:yum                   ########################################### [100%]
[ichina~/yum_64#]

若提示需要依赖

libc.so.6 is neededby yum-metadata-parser-1.1.2-16.el6.i686
libc.so.6(GLIBC_2.0)is needed by yum-metadata-parser-1.1.2-16.el6.i686
libc.so.6(GLIBC_2.1.3)is needed by yum-metadata-parser-1.1.2-16.el6.i686
libglib-2.0.so.0 is needed by yum-metadata-parser-1.1.2-16.el6.i686
libpthread.so.0 is needed by yum-metadata-parser-1.1.2-16.el6.i686
libpython2.6.so.1.0 is needed by yum-metadata-parser-1.1.2-16.el6.i686
libsqlite3.so.0 is needed by yum-metadata-parser-1.1.2-16.el6.i686
libxml2.so.2 is needed by yum-metadata-parser-1.1.2-16.el6.i686
libxml2.so.2(LIBXML2_2.4.30) is needed by yum-metadata-parser-1.1.2-16.el6.i686

安装: glibc-2.12-1.107.el6.x86_64.rpm http://pkgs.org/centos-6/centos-x86_64/glibc-2.12-1.132.el6.x86_64.rpm.html

3 添加网易163的yum源

获取文件:CentOS6-Base-163.repo

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
cp CentOS-Base-163.repo rhel-source.repo
sed -i 's/$releasever/6/g' rhel-source.repo

4 清空 yum 缓存

yum clean all

5 将服务器上的软件包信息缓存到本地

提高yum的更新效率

yum makecache

所需要的rpm打包地址: http://pan.baidu.com/s/1hquYZ1i 

 

Linux:GNU Privacy Guard加密指南

加密技术可以保证你的文件使用加密形式存储,不管你是要把它公开到因特网,备份到服务器,用U盘携带,还是保存在笔记本里。加密你的数据,意味着除非是你认可的接收者,其他人都不可以读取,这样可以防止信息泄漏。

GPG (GNU Privacy Guard)

Linux:GNU Privacy Guard加密指南
Linux:GNU Privacy Guard加密指南

GPG是GNU Privacy Guard的缩写。它是一种基于密钥的加密方式,使用了一对密钥对消息进行加密和解密,来保证消息的安全传输。一开始,用户通过数字证书认证软件生成一对公钥和私钥。任何其他想给该用户发送加密消息的用户,需要先从证书机构的公共目录获取接收者的公钥,然后用公钥加密信息,再发送给接收者。当接收者收到加密消息后,他可以用自己的私钥来解密,而私钥是不应该被其他人拿到的。

GPG 使用公钥和私钥

公钥是你共享出来的一个公开密钥,它可以被发给任何你希望收到加密信息的人,他们可以使用你的公钥来加密信息。公钥本身不能用来解密自己加密过的信息,只有你自己——那个拥有对应私钥的人——能够解密。私钥是你自己的私人密码,可以用来解密用你的公钥加密过的信息。如果你把私钥泄漏给别人,那么他将可以解密并查看那些使用你的公钥加密过的信息。

Linux:GNU Privacy Guard加密指南
Linux:GNU Privacy Guard加密指南

在终端里使用GPG

如今大多数的Linux发行版都默认包含了GPG。想检查一下的话,打开终端并输入:

$ gpg --version

然后你应该看到版本。如果是这样的话,你不需要做其他事情了。否则,你需要从你的发行版软件仓库里安装GPG。

生成密钥

想使用GPG来加密你的通讯,你需要先创建一对密码。首先,打开终端并运行下面的命令:

$ gpg --gen-key

然后会有如下提示:

Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection?

这里要选择数字1,因为它可以用来加密和解密,第二和第三个选项只能让你给信息签名。按下数字1,然后按回车。

然后会有如下提示:

1 DSA key-pair will have 1024 bits.
2 ELG-E keys may be between 1024 and 4096 bits long.
3 What key-size do you want? (2048)

这里最好输入“2048”,就像GPG推荐的那样。如果你不希望你的密钥过期的话(在后面的提示里,选择0)。如果有提示说信息是否正确的话,回答Yes,然后输入你的真实名字,email地址,以及一个说明(可选的)。如果一切顺利,按下“哦”(对应着OK)然后回车。

在这之后,会提示你输入一个密码,密码会要求重复输入一次。通常,请使用一个难于破解的加强密码,而不推荐用名字/地址/生日/单词等等来做密码。

在输好密码之后,请按照终端里的提示信息做:我们需要生成大量的随机数,建议您在生成素数的过程中做一下这些动作(敲击键盘,移动鼠标,读写硬盘),这样会让随机数生成器有机会获取更大的熵。

生成好密钥以后,你应该会看到一条类似的提示信息:gpg: key 083C39A4 marked as ultimately trusted. public and secret key created and signed.

密钥服务器

密钥服务器是用来发布你的公钥,并将其分发到其他人的服务器,这样其他用户可以轻松的根据你数据库中的名字(或者e-mail地址)来获取你的公钥,并给你发送加密信息。这样可以避免把公钥直接拷贝给你的朋友的方式,而让其他人直接通过在线数据库来找到你。

上传你的公钥到密钥服务器:

$ gpg --send-keys --keyserver [keyservers.address.com] [yourpublicid]

你需要把keyservers.address.com替换成你选择的服务器(或者用mit.edu,它会跟其他服务器做同步),还需要把命令行中的yourpublicid替换成你的。最终执行的命令看上去会大概是下面这样子:

$ gpg --send-keys --keyserver hkp://pgp.mit.edu 083C39A4

加密文件

如果你想给你的朋友发送一个用他的公钥加密过的文件,可以用下面的命令:

$ gpg -o encrypted_file.gpg --encrypt -r key-id original.file

命令解释:

-o encrypted_file.gpg = 指定输出文件
--encrypt = 做加密
-r = 接收者的KEY-ID,比如这里就填你朋友的KEY-ID。
original.file = 指定要加密的文件

解密文件

如果有人给你发送了一个用你的公钥加密过的文件,你可以按下面的方式解密:

$ gpg --decrypt filename.gpg

对称加密

你还可以使用GPG做对称加密,来给文件加上一个密码。这种不同于公钥加密的方式,在对称加密中,同一个密钥用于加密和解密。这种方式在处理信息的时候会简单点,但是保密性没那么好,因为需要把密码告诉接收者。下面是用密码加密文件的命令:

$ gpg -c filename.txt

解密这个文件,用下面的命令:

$ gpg filename.txt

然后,会提示你输入密码,之后就开始解密文件。

文档数字签名

数字签名非常类似于你在信件或者重要文件的末尾签上自己的名字,它表示这份文件确实是由你发出来的。通过数字签名,它会计算整个文件内容的SHA1哈希值,然后把这个值附加到签名末尾。如果文件内容被篡改,签名的校验就会失败,可以用来鉴定伪造。如果用户自己在签名后编辑了这份文件,签名校验也会失败,因为此时文件的SHA1哈希值已经和之前签名时不同了。

对一份文件做数字签名,运行下面的命令:

$ gpg --clearsign filename.txt

生成销毁密钥

销毁密钥可以在你的私钥泄漏或者怀疑泄漏的时候,吊销你的公钥。使用下面的命令创建一个销毁密钥:

$ gpg --output revoke.asc --gen-revoke keyid

把销毁密钥保存到一个安全的地方,任何人都可以用它让你的密钥失效。(你可以用对称加密方式来加密你的销毁密钥文件。)

在终端里使用GPG的一些技巧

通过下面的命令可以查看你已经导入的GPG密钥:

$ gpg --list-keys

之后应该会列出来用你e-mail注册的密钥列表(因为这里只有一个密钥,它只列出了你自己的密钥),然后,你可以看到自己的KEY-ID,就可以通过上文介绍的命令提交给密钥服务器。

显示你的密钥链中的私钥和公钥。

$ gpg --list-public-keys # 会列出来公钥
$ gpg --list-secret-keys # 会列出来私钥

导入密钥

$ gpg --import KEYFILE

命令中的KEYFILE应该是需要导入的公钥文件名。(如果文件不在主目录中,使用cd命令切换到该文件的目录下,再执行上面的命令)

导出公钥到文件

用下面的命令可以将你的公钥导出为ASCII格式:

$ gpg --export -a > publickey.asc

* * * * *

关于Richard White

Richard是一位技术爱好者,在不止一个场合他被称为极客。他还是三本书的作者,最近的一本《数字时代的隐私》即将在2014年5月份出版精装本。他还是数字时代网站的主编和驱动者,数字时代的目的是提供资源和工具来实现和维护匿名,安全和隐私。Ricard经常写一些和隐私相关的文章,最近忙着写《CLI艺术》,收集开源的命令行软件。关于GNU Privacy Guard的更多信息以及如何使用GPG软件的图形界面工具,你可以访问White的数字时代网站。


via: http://distrowatch.com/weekly.php?issue=20140407

译者:zpl1025 校对:wxy

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

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

Linux:每日 Ubuntu 小技巧 – 在 Ubuntu 中手动安装 Oracle Java JDK 8

这篇简短的教程将会演示如何在 Ubuntu 系统中安装 Oracle 公司最新发布的 Java JDK 8。这里使用的方法是教你如何从下载页面下载安装包,然后不使用外部的 PPA 或者第三方源代码在 Ubuntu 中安装。

这种方法不需要依赖于第三方的源仓库。你只需要从 Oracle 的官方下载页直接下载,然后安装就行。

Linux:每日 Ubuntu 小技巧 - 在 Ubuntu 中手动安装 Oracle Java JDK 8
Linux:每日 Ubuntu 小技巧 – 在 Ubuntu 中手动安装 Oracle Java JDK 8

JDK 8 是一个重要的发行版本,也加入了最新的叫做 Lambda 表达式的新语言功能,此功能可以“把函数用作方法参数,或者代码块当作日期数据使用”。

这一个版本也发布了一个新的 java.util.stream 包类集合,提供了基于流的 API,用来支持函数式操作的功能。

关于此次发布版本的更多信息,请访问它的发布主页 @ http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html

要下载和安装 Java JDK8,请访问下载页获得最新的发行版本。根据你机器的 Ubuntu 系统的情况可以选择下载 32 位或 64 位的发行版本。

这里是下载页面

在下载之前,您必须接受许可协议。

下载文件,保存。在 Ubuntu 系统中 Firefox 浏览器会默认保存到 ~/Downloads 目录下。

Linux:每日 Ubuntu 小技巧 - 在 Ubuntu 中手动安装 Oracle Java JDK 8
Linux:每日 Ubuntu 小技巧 – 在 Ubuntu 中手动安装 Oracle Java JDK 8

第二步,打开终端运行如下命令来解压下载的文件。

tar -xvf ~/Downloads/jdk-8-linux-x64.tar.gz

然后运行如下的命令,在 /usr/lib 目录中创建一个为保存 Java JDK 8 文件的目录。

sudo mkdir -p /usr/lib/jvm/jdk1.8.0/

接下来运行如下命令把解压的 JDK 文件内容都移动到创建的目录中。

sudo mv jdk1.8.0/* /usr/lib/jvm/jdk1.8.0/

下一步,运行如下命令来配置 Java

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0/bin/java" 1

接下来,拷贝和粘贴下面这一行到终端执行,以启用 Javac 模块。

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.8.0/bin/javac" 1

最后,拷贝和粘贴下面一行到终端以完成最终的安装。

sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.8.0/bin/javaws" 1

要验证下 Java 是否已经完全安装的话,可以运行下面的命令来测试。

java –version

祝你玩的开心~


via: http://www.liberiangeek.net/2014/03/daily-ubuntu-tips-manually-install-oracle-java-jdk-8-in-ubuntu/

译者:runningwater 校对:Caroline

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

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

Linux:如何给任意一款 Linux 发行版添加漂亮的字体

Linux:如何给任意一款 Linux 发行版添加漂亮的字体
Linux:如何给任意一款 Linux 发行版添加漂亮的字体

接下来的教程将指导所有 Linux 用户怎么简单的将漂亮的字体添加到自己的操作系统。我们已经为 Debian、Arch Linux、openSUSE、Slackware 和 Fedora 发行版编写了详细的介绍。

正如许多用户所知,几乎所有基于 Linux 的操作系统主要缺点就是默认选择的字体并不令终端用户满意,尤其是那些从 Windows 或者 Mac OS X 等操作系统迁移过来的用户。

除了使用自己的一套字体的Ubuntu,从一开始就看起来就相当漂亮,其它所有 Linux 发行版都有字体丑陋的缺点。正因如此,许多用户试图创建一种新的方法来增强文字在各个发行版中渲染效果。

这就是 Infinality 项目产生的原因,其主要目的是通过添加补丁来为使用任何基于 Linux 操作系统的用户提供最好的字体渲染效果。

Infinality for Arch Linux

  1. 将infinality-bundle,infinality-bundle-multilib (用于使用64位系统的用户)和infinality-bundle-fonts仓库添加到你的 /etc/pacman.conf文件中:

    [infinality-bundle]
    Server = http://bohoomil.com/repo/$arch
    [infinality-bundle-multilib]
    Server = http://bohoomil.com/repo/multilib/$arch
    [infinality-bundle-fonts]
    Server = http://bohoomil.com/repo/fonts
    
  2. 执行 sudo pacman -Syu 命令用来刷新仓库,然后运行

    sudo pacman -S infinality-bundle infinality-bundle-multilib ibfonts-meta-extended (用于64位系统)
    sudo pacman -S infinality-bundle ibfonts-meta-extended (用于32位系统)
    
  3. 当被询问是否替换 fontconfig 软件包的 freetype2 时,回答YES。完成后重启你的计算机。

Infinality for Fedora ###

  1. 在终端窗口中执行如下命令

    sudo rpm -Uvh http://www.infinality.net/fedora/linux/infinality-repo-1.0-1.noarch.rpm
    sudo yum install freetype-infinality fontconfig-infinality
    
  2. 重启你的机器。

Infinality for openSUSE

  1. 添加 Infinality 官方仓库:

    http://download.opensuse.org/repositories/home:/namtrac:/subpixel/openSUSE_13.1/
    

    打开YaST中的库选项卡,选择namtrac:subpixel仓库,并打击“切换系统包的版本到这个仓库”。

  2. 标记 namtrac:subpixel 中所有还没有安装的包来进行安装,然后从 openSUSE 官方软件仓库中安装 fontconfig-infinality 包。

  3. 在字体设置选项里将 Subpixel Hinting 选择为“使用系统设置”,或者设置为带有微调的 RGB 顺序。重启你的系统。

Infinality for Slackware

详细的安装指南:http://someslack.wordpress.com/infinality-on-slackware/

Infinality for Debian

  1. 在终端中执行下面的命令(一个一个执行,每一行之后敲击回车):

    echo “deb http://ppa.launchpad.net/no1wantdthisname/ppa/ubuntu raring main” | sudo tee /etc/apt/sources.list.d/infinality.list
    echo “deb-src http://ppa.launchpad.net/no1wantdthisname/ppa/ubuntu raring main” | sudo tee -a /etc/apt/sources.list.d/infinality.list
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E985B27B
    
  2. 执行以下命令来升级你的系统并安装 Infinality 包:

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install fontconfig-infinality
    
  3. 重启你的计算机。

对于任何文中没有提到的其它 Linux 发行版,请使用官方的介绍:https://github.com/Infinality/fontconfig-infinality/tree/master/infinality。跟以往一样,当你使用本教程过程中遇到任何问题都可以在下面评论,不要犹豫。


via: http://news.softpedia.com/news/How-to-Add-Beautiful-Fonts-to-Any-Linux-Distribution-434835.shtml

译者:SCUSJS 校对:Caroline

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

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

Linux:如何在win 7/8 中制作一个Ubuntu 14.04 的USB随身碟

安装Ubuntu的第一步是制作一个随身碟。如果你正在使用Windows XP,7,8 或者 8.1,你可以用Universal USB Installer去创建一个Live USB。这是我最喜欢用的方法,而且它很容易使用。让我们看看如何很容易地在Windows 8 里制作一个Ubuntu的Live USB 。

Linux:如何在win 7/8 中制作一个Ubuntu 14.04 的USB随身碟
Linux:如何在win 7/8 中制作一个Ubuntu 14.04 的USB随身碟

在Windows里制作live USB的步骤:

第一步:下载Ubuntu ISO镜像

Ubuntu网站下载你首选Ubuntu版本的ISO镜像。

第二步:下载Universal USB Installer

如果你曾经下载了Ubuntu 14.04的ISO镜像,到这个页面下载最新版本的Universal USB Installer。

第三部:制作live USB

把U盘插在电脑上并运行Universal USB Installer。选择Linux类型为Ubuntu,浏览并选择下载的ISO镜像的路径,之后选择U盘。不要忘记在format(格式化)选项上打上勾。

Linux:如何在win 7/8 中制作一个Ubuntu 14.04 的USB随身碟
Linux:如何在win 7/8 中制作一个Ubuntu 14.04 的USB随身碟

会弹出一个警告,点击Yes.

Linux:如何在win 7/8 中制作一个Ubuntu 14.04 的USB随身碟
Linux:如何在win 7/8 中制作一个Ubuntu 14.04 的USB随身碟

等待一段时间,等待制作完成。你也可以把它放在后台运行。

Linux:如何在win 7/8 中制作一个Ubuntu 14.04 的USB随身碟
Linux:如何在win 7/8 中制作一个Ubuntu 14.04 的USB随身碟

也就是说,制作live USB需要几分钟时间。

Linux:如何在win 7/8 中制作一个Ubuntu 14.04 的USB随身碟
Linux:如何在win 7/8 中制作一个Ubuntu 14.04 的USB随身碟

一旦live USB制作完成,说明你可以安装Ubuntu 14.04了。希望这个教程能帮助你在Windows中轻松制作Ubuntu的live USB。


via: http://itsfoss.com/create-live-usb-of-ubuntu-in-windows/

译者:linuhap 校对:wxy

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

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

Linux:Easy Arduino: 开始你的Arduino之旅

许多Arduino的项目都是基于两个简单的程序。

能电脑所不能的单片机,这就是Arduino。

Linux:Easy Arduino: 开始你的Arduino之旅
Linux:Easy Arduino: 开始你的Arduino之旅

我们每天使用的计算机是强大的,但它们根本不了解身边发生了什么事。比如说你的笔记本电脑也不能感到光或水。另外,Arduino对外专门设计成键控的。它有一个用于简化传感器通信的输入、输出板子。

Arduino是由Massimo Banzi和他的意大利搭档Ivrea开发的,并用Ivrea——他最喜欢的酒吧命名。Banzi希望他的设计课程的学生们有一个原型的硬件的廉价,容易的解决方案。自2005年Arduino的发布,它已经从一个教学工具发展成为世界各地制造商的DIY项目。现在有了多模型——更先进的Arduino Due,大功率,微纳米。

无论你购买哪个Arduino模型,当你用它来做“互联网”项目时,单片机的实用性便体现出来了——Arduino可以很容易让你连接到真实世界,云端,或两者。本书中,我们将重点介绍两个超基础项目以便展示Arduino可以多简单。

开始使用Arduino

在我们能够完全了解Arduino是什么之前,知道它不是什么是很重要的。Arduino不是电脑(跟卡片电脑Raspberry Pi不一样)。它不能被独立编程,需要被插入到计算机中去。它不是特别强大,Arduino Uno只有32 KB的内存 ,而苹果笔记本却平均有8G内存。

所以为了使用Arduino,你不能只买这个单片机。对于以下的项目,你需要的是:

硬件

  • Arduino Uno. “Uno”在意大利语中是一的意思,但这并不是有史以来第一个Arduino,只是最基本的Arduino单片机的最新版本。这些项目可以工作在任何一个型号上,但这里我用的是这个型号。
  • B型USB线。我已经很多年没见过这些旧式的USB端口了,但你可能会在旧的电子设备上用过他们。他们的成本约5-10美元 (译注:就是能连接题图的板子上的那个大大的USB口的线)。
  • LED灯。可以直接粘在Arduino上的一个引脚上的小灯;这些往往是相当便宜的

软件

  • Arduino IDE,即“集成开发环境”,是一个免费开源软件,用于开发“sketches”,也就是Arduino用户所说的程序。

    当你第一次打开Arduino IDE,你需要建立软件所使用的端口,它用于控制Arduino如何工作,点击“工具”——>“串口”来建立。

  • OS X上,Uno串口的设备名叫做“/dev/tty.usbmodem”,但其他类型的Arduino板可能不同。我的是“/dev/tty.usbmodem1421”。

  • Windows,串口是COM3或更高端口,因为COM1和COM2通常保留给其他硬件。为确定端口号,你可以拔掉Arduino并重新打开IDE菜单。哪个口子不再出现哪个就是你的Arduino。

    一般来说,你不用担心直接拔出你的Arduino电路板会有什么问题。我们知道功能齐全的电脑不应该这样做,包括Raspberry Pi,因为他们可以在后台运行一个重要的操作系统任务。但是Arduino只是一个单片机,除非你主动让它写内存,否则它肯定是不会的。

Arduino 硬件初步: 闪烁一个LED

在这第一个项目中,我们将概述Arduino产生物理输出的最基本方式,在这个实例中,闪烁一个LED灯。

我们要去写一个非常简单的程序使得LED频闪——或者是当我自豪地向他展现了我的作品时,我的朋友明智的告诉我,“一点小成果”。本程序是基于开源项目Blink sketch,它可以在Arduino的官网找到。

首先,设置硬件,将LED的两个脚分别插到到Arduino的公共地GND和引脚13上。

注意:如果你准备将一个LED插到一个打开电源的Arduino板子上较长时间(比如超过了这个项目的时间),安全的做法是也接一个220欧姆的电阻。这里有一个你也许需要的接线图,来自Arduino官网。

Linux:Easy Arduino: 开始你的Arduino之旅
Linux:Easy Arduino: 开始你的Arduino之旅

一个叉略短于另外一个叉——短的这个是负极头,因此,这个接“地”,即GND输入/输出。

Linux:Easy Arduino: 开始你的Arduino之旅
Linux:Easy Arduino: 开始你的Arduino之旅

注意短的接GND.

现在让我们开始写程序。首先,让我们给个程序的名字。Arduino会忽略行内双斜杠后边的内容,所以这是为自己写注释的好方法:

// 程序 1: 使一个LED闪烁开和关

当硬件工作时,我们需要告诉Arduino在它的14根不同的输入/输出引脚中哪儿会有信号。在这种情况下,我们固定13引脚的LED。这是我们的如何命名固定在引脚13的LED,其中“LED”只是我给的变量名:

int LED = 13;

每一个Arduino程序由两部分组成:void setup() 和 void loop()。这是能够运行的最小的Arduino程序。

void setup()中, 我们告诉Arduino初始化引脚为输出:

void setup() {
  pinMode(LED, OUTPUT);
}

void loop()中,我们告诉Arduino“写”一个值到引脚13中。因为我想让它闪烁,在每个循环中我们要使它写一个序列的四个不同命令。如“loop”一词的意思,直到把Arduino关掉前,我们希望它不断执行。

在下面的代码中,LED代表了我们之前分配的那个变量。”HIGH”告诉Arduino给LED提供五伏的电源,而“LOW”提供零伏。在闪烁时,使得它延迟“1000”毫秒每一整秒:

void loop() {
  digitalWrite(LED, HIGH);
  delay(1000);
  digitalWrite(LED, LOW);
  delay(1000);
}

当把它们放在一起时,整个程序如下(再次声明,Arduino忽略行内双斜杠后边的内容,所以那只是你自己的注释):

// 程序 1: 使一个LED闪烁开和关
int led = 13; // name the LED in pin 13
void setup() {
  pinMode(LED, OUTPUT); // tell Arduino the pin in question is an output
}
void loop() {
  digitalWrite(LED, HIGH);     // deliver 5V to LED
  delay(1000);                     // wait a second
  digitalWrite(LED, LOW);      // deliver 0V to LED
  delay(1000);                     // wait a second
}

点击checkmark来验证你的代码是没有错误的,然后按play键。如果你的Arduino已经连接,它应该开始运行你的闪烁程序了。

Arduino 软件程序: 打印到电脑上

现在让我们来做一个控制开关并试着演示Arduino是如何产生数字输出的最基本项目。

我们将要设置Arduino “打印”,或是在您的计算机屏幕上显示信息。这个程序基于Paul Bianchi的Arduino printing tutorial

在这个实例中没有硬件,这样我们就可以直接跳到程序部分。再说一次,程序分为两个部分: void setup()void loop()

void setup()中,我们要打开一个Arduino和计算机之间通信的线路,指定速率是9600b/s。如果你使用另一个速率,你可能会在计算机上得到乱码而不是文字。

void setup() {
  Serial.begin(9600);
}

void loop() 中,这部分很像我们的一个LED程序。我们要给它两条独立的指令,告诉它在他们之间每一整秒中断。Println是Arduino输出到你的电脑显示的命令。注意”Println”中的”l”的是小写的”L”,而不是大写的”i”!

void loop() {
  Serial.println(“hello”);
  delay(1000);
  Serial.println(“world.”);
  delay(1000);
}

将标题和注释等放到一起,如下:

// 程序 2: 使Arduino打印 “Hello World”到电脑上
void setup() {
  Serial.begin(9600); // open a 9600 baud communication line to computer
}
void loop() {
  Serial.println(“Hello”);        // write the word “Hello”
  delay(1000);                    // wait a second
  Serial.println(“World”);      // write the word “World”
  delay(1000);                   // wait a second
}

验证你的代码并运行。什么都不会显示,直到你点击Arduino IDE窗口右上角的“Serial Monitor”。你应该看到一个不停输出的“Hello World”,一遍又一遍,直到你拔掉Arduino。你会看到它并不完美:我总是得到一些乱码,但很快它自己就好了。

Linux:Easy Arduino: 开始你的Arduino之旅
Linux:Easy Arduino: 开始你的Arduino之旅

这两个Arduino项目都非常基本,但是通过执行他们你已经开始看到,可以与传感器通信并写结果到您的计算机的Arduino的潜力所在。如果你把这两个项目整合——例如,你可以连接一个温度计到你的Arduino,并告诉它将温度写到你的笔记本电脑,你会很快实现Arduino的可能性几乎是无止境的。


via: http://readwrite.com/2014/04/21/easy-arduino-projects-basics-tutorials-diy-hardware#feed=/hack

译者:tenght 校对:wxy

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

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

Linux:Ubuntu 常用快捷键——记住这些你就是高手啦!

下面是Ubuntu 常用快捷键——记住这些会让你更加得心应手哦!

Linux:Ubuntu 常用快捷键——记住这些你就是高手啦!
Linux:Ubuntu 常用快捷键——记住这些你就是高手啦!

桌面

ALT + F1: 聚焦到桌面左侧任务导航栏,可按上下键导航。

ALT + F2: 运行命令

ALT + F4: 关闭窗口

ALT + TAB: 切换程序窗口

ALT + 空格: 打开窗口菜单

PRINT: 桌面截图

SUPER: 打开Dash面板,可搜索或浏览项目,默认有个搜索框,按“下”方向键进入浏览区域(SUPER键指Win键或苹果电脑的Command键)

在Dash面板中按CTRL + TAB: 切换到下一个子面板(可搜索不同类型项目,如程序、文件、音乐)

SUPER + A: 搜索或浏览程序(Application)

SUPER + F: 搜索或浏览文件(File)

SUPER + M: 搜索或浏览音乐文件(Music)

Orca读屏软件

启动Orca: SUPER + A,然后输入orca,然后回车

ORCA + 空格: 显示首选项对话框(ORCA键是指Insert插入键或CAPS LOCK大小写转换键,取决于设置)

ORCA + t: 读当前时间

ORCA + tt: 读当前日期

ORCA + s: 切换合成语音开关

ORCA + /: 朗读标题

ORCA + //: 朗读状态栏

ORCA + 分号: 朗读整个文件

ORCA + Q: 退出Orca

更多快捷键请参考Orca首选项的键绑定标签页 

Firefox浏览器

进入Firefox的方法:

1. SUPER + A,然后按firefox,回车。这个是在Dash面板中搜索应用程序运行。事实上,只要按fir就能定位到Firefox程序。

2. ALT,然后按firefox,回车。这个相当于在命令行运行一条命令。

3. 在终端中按firefox&,回车。这个适用于以终端作为主要操作窗口的用户,使用TAB键还可以自动补全命令(只需输入前几个字母再按TAB键)。&在shell中是后台运行的意思,这样终端就不会被Firefox独占。

CTRL + T: 新建标签页

CTRL + W: 关闭标签页

CTRL + SHIFT + T: 重新打开最近关闭的一个标签页

CTRL + TAB: 切换到下一个标签页

CTRL + SHIFT + TAB: 切换到上一个标签页

ALT + [1-8]: 跳到制定标签页

ALT + 9: 跳到最后一个标签页

CTRL + L: 跳到地址栏

ESC: 停止加载当前页面

CTRL + K: 跳到搜索引擎输入框

CTRL + F: 在当前页面中搜索

/: 快速查找。在Linux中很多程序(如VI、Man、Less)都使用/作为搜索的快捷键,并且可使用正则表达式查找。但在Firefox中没有正则表达式搜索的功能。

CTRL + D: 收藏到书签

ALT + 左方向键: 后退

ALT + v: 前进

CTRL + Q: 退出

Gedit文本编辑器

启动gedit:SUPER + A,然后按gedit,回车

CTRL + N: 新建文档

CTRL + W: 关闭文档

CTRL + S: 保存

CTRL + SHIFT + S: 另存为

CTRL + S: 搜索

CTRL + H: 搜索并替换

CTRL + I: 跳到某一行

CTRL + C: 复制

CTRL + V: 粘贴

CTRL + X: 剪切

CTRL + Q: 退出

Nautilus文件管理器

启动Nautilus的方法:

1. SUPER + 1,这个方法仅适用于Nautilus在左边快速启动的位置没有改变的情况。

2. SUPER + A,然后输入nautilus,然后回车

F2: 重命名

CTRL + 1: 图标视图

CTRL + 2: 列表视图

CTRL + T: 新建标签页

CTRL + W: 关闭标签页

CTRL + D: 收藏到书签

CTRL + Q: 退出

Nautilus还有很多和Firefox一致的快捷键。

Rhythmbox音频播放器

CTRL + 空格: 播放/暂停

ALT + 右方向键: 下一首

ALT + 左方向键: 上一首

CTRL + 上方向键: 增大音量

CTRL + 下方向键: 减少音量

CTRL + U: 随机播放

CTRL + R: 重复播放

CTRL + Q: 退出

Terminal终端

CTRL + ALT + T: 打开终端

TAB: 自动补全命令或文件名

CTRL + SHIFT + V: 粘贴(Linux中不需要复制的动作,文本被选择就自动被复制)

CTRL + SHIFT + T: 新建标签页

CTRL + D: 关闭标签页

CTRL + L: 清除屏幕

CTRL + R + 文本: 在输入历史中搜索

CTRL + A: 移动到行首

CTRL + E: 移动到行末

CTRL + C: 终止当前任务

CTRL + Z: 把当前任务放到后台运行(相当于运行命令时后面加&)

~: 表示用户目录路径

如何打开一个程序

以“系统配置”为例,先按SUPER + A,SUPER即Win键,然后切换到中文输入法,输入“系统配置”,按回车即打开程序。

转载自:http://www.geekfan.net/9156/

Linux:如何从Web浏览器远程监视Linux服务器和桌面

当你要监视一台Linux机器时,你会有很多的选择。虽然现在有很多产品质量监控方案(比如 Nagios、 Zabbix、 Zenoss),它们拥有华丽的UI,可扩展监控,易于理解的报告等等,这些方案对于大多数终端用户都太过于强大了。如果你只需检查Linux服务器或桌面的基本状态(比如,CPU负载、内存使用、活跃进程),就请考虑一下linux-dash

Linux:如何从Web浏览器远程监视Linux服务器和桌面
Linux:如何从Web浏览器远程监视Linux服务器和桌面

linux-dash是一款面向Linux机器的基于web的轻量级监控面板,可以实时显示不同的系统属性,比如CPU负载、内存使用、磁盘使用、网络速度、网络连接、上下行带宽、登录用户、运行中的进程等等。linux-dash没有后端数据库库来存储长期统计。在任何已有的web服务器(如Apache、Nginx)上运行linux-dash,你就可以用了。这是一个快速又简单的方法来对个人项目进行远程监控。

在这篇教程中,我会描述如何在Linux的Nginx web服务器上设置linux-dash。这里用Nginx,而不是Apache,是因为它更轻量。

在Debian、Ubuntu或者Linux Mint上设置linux-dash

首先,安装带php-fpm的Nginx web服务器。

$ sudo apt-get install git nginx php5-json php5-fpm php5-curl

为linux-dash创建如下Nginx配置文件/etc/nginx/conf.d/linuxdash.conf。 本例中,我们使用8080端口。

$ sudo vi /etc/nginx/conf.d/linuxdash.conf

server {
    server_name     $domain_name;
    listen          8080;
    root            /var/www;
    index           index.html index.php;
    access_log      /var/log/nginx/access.log;
    error_log       /var/log/nginx/error.log;
    location ~* .(?:xml|ogg|mp3|mp4|ogv|svg|svgz|eot|otf|woff|ttf|css|js|jpg|jpeg|gif|png|ico)$ {
            try_files $uri =404;
            expires max;
            access_log off;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }
    location /linux-dash {
        index index.html index.php;
    }
    # PHP-FPM via sockets
    location ~ .php(/|$) {
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_split_path_info ^(.+?.php)(/.*)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            if (!-f $document_root$fastcgi_script_name) {
                    return 404;
            }
            try_files $uri $uri/ /index.php?$args;
            include fastcgi_params;
    }
}

禁止默认站点配置。

$ sudo rm /etc/nginx/sites-enabled/default

编辑/etc/php5/fpm/pool.d/www.conf来配置php-fpm。确保按如下编辑”user”, “group” 和 “listen”指令。你可以不改变剩下的配置。

$ sudo vi /etc/php5/fpm/pool.d/www.conf
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock

开始下载并安装linux-dash。

$ git clone https://github.com/afaqurk/linux-dash.git
$ sudo cp -r linux-dash/ /var/www/
$ sudo chown -R www-data:www-data /var/www

重启Nginx与php-fpm来完成安装。

$ sudo service php5-fpm restart
$ sudo service nginx restart

在CentOS、Fedora、RHEL上设置linux-dash

在CentOS上,需要首先启用EPEL仓库

安装Nginx与php-fpm组件。

$ sudo yum install git nginx php-common php-fpm

为linux-dash程序配置Nginx,如下创建/etc/nginx/conf.d/linuxdash.conf

$ sudo vi /etc/nginx/conf.d/linuxdash.conf

server {
    server_name     $domain_name;
    listen          8080;
    root            /var/www;
    index           index.html index.php;
    access_log      /var/log/nginx/access.log;
    error_log       /var/log/nginx/error.log;
    location ~* .(?:xml|ogg|mp3|mp4|ogv|svg|svgz|eot|otf|woff|ttf|css|js|jpg|jpeg|gif|png|ico)$ {
            try_files $uri =404;
            expires max;
            access_log off;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }
    location /linux-dash {
        index index.html index.php;
    }
    # PHP-FPM via sockets
    location ~ .php(/|$) {
            fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
            fastcgi_split_path_info ^(.+?.php)(/.*)$;
            fastcgi_pass unix:/var/run/php-fpm.sock;
            if (!-f $document_root$fastcgi_script_name) {
                    return 404;
            }
            try_files $uri $uri/ /index.php?$args;
            include fastcgi_params;
    }
}

接下来,编辑/etc/php-fpm.d/www.conf来配置php-fpm。在这个文件中,确保按如下编辑”user”, “group” 和 “listen”字段。你可以不改变剩下的配置。

$ sudo vi /etc/php-fpm.d/www.conf
listen = /var/run/php-fpm.sock
user = nginx
group = nginx

在/var/wwwx下载并安装linux-dash。

$ git clone https://github.com/afaqurk/linux-dash.git
$ sudo cp -r linux-dash/ /var/www/
$ sudo chown -R nginx:nginx /var/www

最后,重启Nginx和php-fpm,并设置开机自启。

$ sudo service php-fpm restart
$ sudo service nginx restart
$ sudo chkconfig nginx on
$ sudo chkconfig php-fpm on

在本例中,我们已经配置linux-dash使用TCP端口8080。所以确保防火墙没有阻止TCP 8080端口。

用linux-dash监视Linux机器

要在web浏览器上访问linux-dash,只需在web浏览器中输入http://:8080/linux-dash/

下面是linux-dash的截图。web面板包含了几个小部件,每个都会显示特性的系统参数。你可以通过重安排并且/或者关闭一些小部件来自定义web面板的外观。这里是一个linux-dash创建者的演示站点。

Linux:如何从Web浏览器远程监视Linux服务器和桌面
Linux:如何从Web浏览器远程监视Linux服务器和桌面
Linux:如何从Web浏览器远程监视Linux服务器和桌面
Linux:如何从Web浏览器远程监视Linux服务器和桌面

Linux:如何从Web浏览器远程监视Linux服务器和桌面
Linux:如何从Web浏览器远程监视Linux服务器和桌面

via: http://xmodulo.com/2014/04/monitor-linux-server-desktop-remotely-web-browser.html

译者:geekpi 校对:wxy

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

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