Skip to content Skip to main navigation Skip to footer

Linux

Linux:开源驱动的飞跃:Fedora 19、20性能对比

Phoronix近日对新发布不久的Fedora 20进行了一次比较全面的测试,还对比了上一版Fedora 19。如果你关心开源显卡驱动,绝对不要走开。

测试系统均为64位版本。Fedora 20的系统内核是Linux 3.11,集成开源驱动Mesa 9.2.3,之前的则是3.9、9.2.0-devel,当然也可以升级到3.11。编译器都是GCC 4.8.2,明年上半年才能看到GCC 4.9。

其实,Linux 3.12也已经稳定了,但没来得及整合,Mesa 10.0也基本成型,但同样得等到下个版本了。

Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比

本次测试使用了两套硬件系统(少见),其一是Pentium G3220处理器、HD核显、8GB内存、120GB金士顿固态硬盘、华擎H81M-ITX主板,其二是Core i5-3470处理器、HD2500核显、8GB内存、64GB OCZ Vertex固态硬盘、华擎Z68 Pro3主板。

Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比

首先是GPU部分:

Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比

很明显,新的开源驱动让Fedora 20 GPU性能得到了极大的提升,而且几乎每个项目都很明显,不同级别硬件也都可以享受,当然越新越好,比如Intel Haswell、AMD Radeon HD 7000,其中AMD显卡支持动态电源管理。

唯一可惜的是没有用上Mesa 10.0,那会有更大的性能进步和更多新特性,比如说Intel Ivy Bridge/Haswell可以支持OpenGL 3.3。

磁盘性能:

Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比

都是稳定的EXT4文件系统,这方面毫无变化。

CPU性能:

Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比
Linux:开源驱动的飞跃:Fedora 19、20性能对比

编译器没变,这块儿也没啥值得说的。

总的来说,如果你喜欢开源显卡驱动,Fedora 20绝对会让你激动不已。

当然了,明年的Fedora 21绝对更值得期待:更新的内核、更新的驱动、更新的编译器。

via : http://www.linuxeden.com/html/news/20131221/146677.html 

Linux:关于在 Ubuntu 上安装 SteamOS session

SteamOS 测试版本已经发布了,对 Linux 命令熟悉的童鞋可以直接下载进行安装,注意是测试版本,所以免不了有 BUG,今天在 webupd8 上看到一篇文章是关于在 Ubuntu 上安装SteamOS session 的。SteamOS session 看起来更像是一个游戏玩家的桌面。

Linux:关于在 Ubuntu 上安装 SteamOS session
Linux:关于在 Ubuntu 上安装 SteamOS session

安装方法:

1、首先要确定你的电脑已经安装 steam 客户端,如果没有安装,可以在 Ubuntu 软件中心搜索安装,直接搜索 steam 就可以找到。据 webupd8 介绍,session 启动要加载这个客户端。

2、在 Ubuntu 上 SteamOS session 需要安装两个包。

下载这两个包之后安装,然后注销系统,选择“SteamOS”登陆:

Linux:关于在 Ubuntu 上安装 SteamOS session
Linux:关于在 Ubuntu 上安装 SteamOS session

卸载命令:

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

Linux:15分钟学会使用Git和远程代码库

Git是个了不起但却复杂的源代码管理系统。它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作。让我们诚实一记吧:Git是复杂的,我们不要装作它不是。但我仍然会试图教会你用(我的)基本的Git和远程代码库干活的工作步骤,在15分钟内。

工作步骤

我会展示以下的步骤,通常能帮我独自在一台或多台机器上做项目。
 
  1. 创建一个远程的空代码库(在BitBucket上)
  2. 在本地代码库添加一个项目
  3. 在分支上开发新功能
  4. a) 保留新功能 或者 b) 丢弃它们
  5. 也许,回到某个早先的时间点
  6. 将本地代码库推送到远程代码库
  7. 在另一台机器上取得远程代码库

安装Git

在大多数*nix系统(Linux、OS X)上,Git已经被安装了。你通过发送下面的命令,可以通过Git自身,把它更新到最新的的开发版本(不推荐)。
 
git clone https://github.com/git/git
 
在Windows上,你可以在这里下载Git的安装程序。如果你真的需要其他系统的安装程序,Mac OS X安装文件在这里,Linux的操作指导在这里

创建一个远程代码库

很多人喜欢用Github。我个人更喜欢BitBucket,因为它提供了不限制的私有代码库,那是我最需要的。你可以将下列指令转换到Github上,这些过程是相同的。
那么,去到www.bitbucket.org并注册一个账号。一旦完成,登录后点击最上方的“create(创建)”按钮。照着填写表格,勾选私有代码库。你可不想让其他人来偷窥你的Facebook的杀手级应用的源代码,对吧。
 你现在可以离开BitBucket了,我们在已经有了所有那里需要的东西了。

设置Git

在我们能用Git工作之前,我们需要做个一次性的配置。为了Git能跟踪到谁做了修改,我们需要设置你的用户名。我强烈建议你使用与注册BitBucket账号相同的用户名和电子邮箱地址。发送这些命令,相应地替换掉其中的“your_username”和“your_email@domain.com”(注意引号):
 
git config –global user.name”your_username”
git config –global user.email your_email@domain.com
 
我们也会设定推送(push)的默认值为‘simple’。要了解这是什么意思,快速阅读我之前发布的关于推送的默认值(非必须)。发送这条命令:
 
git config –global push.default simple
 
我们都设好了。你无需在你的机器上再重复这些配置,但如果你在另一台机器上工作的话,不要忘记这些配置。如果你忘记做初始的配置,Git不会允许你提交任何东西,这会让你困扰。

创建一个本地代码库

作为例子,我们会假装我们有一个网站(无所谓技术)存在于我们机器上的‘workspace’文件夹下的’my_site’文件夹内。在命令行中,去到你的站点的根文件夹。在OS X和Linux上:
 
cd~/workspace/my_site/
 
在Windows上:
 
cdc:workspacemy_site
 
我们首先需要告诉Git这个文件夹是我们需要跟踪的项目。所以我们发送这个命令来初始化一个新的本地Git代码库
 
git init
 
Git会在my_site文件夹内创建一个名为.git的隐藏文件夹,那就是你的本地代码库。

加载(Stage)文件

我们现在需要命令Git我们需要加载(stage)所有项目文件。发送:
 
git add .
 
最后的“.”符号的意思是“所有文件、文件夹和子文件夹”。假如我们只想要把特定文件添加到源代码控制中去,我们可以指定它们:
 
git add my_file, my_other_file 

提交文件

现在,我们想要提交已加载(staged)的文件。阅读“添加一个时间点,在这里你的文件处在一个可还原的状态”。我们提交我们的文件时,总是附带着有意义的注释,描述了它们现在的状态。我一直用“initial commit”来作为第一个提交的注释。
 
git commit -m”initial commit”
 
就这样。现在你随时都可以回滚到这个提交状态。如果你有需要检查你现在的已加载(staged)和未加载(unstaged)文件的状态、提交等,你可以询问git的状态:
 
git status

创建分支

建立分支是你创建代码的独立版本的动作,独立于你的主干分支。默认地,每次你提交到Git的文件都会被储存到“master(主干)”分支。
现在我们来说说,你想要向项目里添加一个功能,但你想要能够回滚到现在版本,以防出现差错,或者你决定要放弃这个功能。这就是你创建分支的时候了。创建并同时切换到你新建的分支,发送:
 
git checkout -b new_feature
 
或者,你可以先创建一个分支然后手动切换,就像这样:
 
git branch new_featuregit checkout new_feature
 
要看你现在项目下所有的分支,发送这个:
 
git branch
 
现在你可以在你的项目上无所顾忌地做任何你想做的:任何时候,你都可以回到你创建分支前的状态。注意,你同时可以有多个分支,甚至可以从一个分支上再创建一个分支。 

合并分支

当你对你的新功能满意了的时候,你想要把它加到主干分支上。当你在你的新功能分支上时,你首先需要加载(stage)并且提交你的文件:
 
git add .git commit -m”adds my new feature”
 
然后你移到你的主干分支:
 
git checkout master
 
像这样合并:
 
git merge new_feature
 
此时,你的主干分支和你的新功能分支会变成一样的了。

丢弃分支

相反,如果你打算丢弃你在分支里做的修改,你首先需要加载(stage)你的文件并且在分支里提交:
 
git add .git commit -m”feature to be discarded”
 
然后,你移到主干分支:
 
git checkout master
 
现在,你的代码处于你创建分支之前的状态了。

删除一个分支

如果你要把你的分支合并到主干分支,从主干(master)分支上发送:
 
git branch -d new_feature
 
假如修改已经合并了,它只会删除分支。假如分支没有合并,你会得到一个错误信息。删除一个未合并的分支(通常你不想保留的修改),你需要发送一样的命令附带一个大写D。意思是“强制删除分支,无论如何我不想要它了。”:
 
git branch -D new_feature

回滚到之前的提交状态

在某些时候,你可能想要回到之前的代码版本。首先,你需要找到你想回到哪个版本。要看所有的完成了的提交,发送:
 
git log
 
这会输出你的提交的历史记录,像这样:
 
commit ca82a6dff817ec66f44342007202690a93763949Author: your_username your_email@domain.comDate:   Mon Nov 4 12:52:11 2013 -0700    changes the frontpage layout
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7Author: your_username your_email@domain.comDate:   Mon Nov 4 11:40:33 2013 -0700    adds my new feature
commit a11bef06a3f659402fe7563abf99ad00de2209e6Author: your_username your_email@domain.comDate:   Mon Nov 4 10:37:28 2013 -0700    initial commit
 
如果你想回到“adds my new feature”这个提交,简单地用提交的ID做签出(checkout)(我通常只用到ID开头的9个字符)
 
git checkout 085bb3bcb
 
你也可以签出到一个新的分支,像这样:
 
git checkout -b my_previous_version 085bb3bcb
 
只是别太疯狂了!你的分支越复杂,就越难确定你真正在做什么。

推送到远程代码库

在第一次你想推送一个本地代码库到远程代码库时,你需要把它添加到你的项目配置里。像这样做:
 
git remote add origin https://your_username@bitbucket.org/your_username/name_of_remote_repository.git
 
注意这里的“origin”只是一个习惯。它是你的远程代码库的别名,但是你可以用其他任何你喜欢的词。你甚至可以有多个远程代码库,你只需要给它们起不同的别名。
之后,你想要推送你的本地代码库的主干分支到你的远程代码库:
 
git push origin master
 
如果你使用Bitbucket,在这时,你会被请求输入你的密码。照做,你的本地代码库会被推送到你的远程代码库上。

取得远程代码库的一份本地拷贝

如果你还没有一份远程代码库的本地版本(例如,如果你在另一台机器上开始工作,这台机器上还没有用过这个项目),你首先需要拷贝(clone)它。去到你的代码库想要拷贝到的文件夹下,并发送:
 
git clone https://your_username@bitbucket/your_username/name_of_remote_repository.git
 
另一方面,如果你已经在本地的项目上工作了,只是想从远程代码库上取得它最新的版本,移动到项目的根目录下,并发送:
 
git pull origin master

别名

Git允许你为你常用的命令创建快捷方式(别名)。例如,如果你不想每次都输入git commit -m “some comment”,而是输入git c “some comment”,你可以向你的git全局配置里添加一个别名来实现,像这样:
 
git config –globalalias.c’commit -m’
 
这是我使用的别名列表:
 
git config –globalalias.c’commit -m’
git config –globalalias.co’checkout’
git config –globalalias.cob’checkout -b’
git config –globalalias.br’branch’
git config –globalalias.m’merge’
git config –globalalias.a’add .’
git config –globalalias.s’status’
git config –globalalias.dbr’branch -d’

进一步

当然,还有比这些更多的Git内容。如果你想要更了解Git,我推荐官方文档和教程,你可以在http://git-scm.com/documentation找到。
有任何建议、技巧和问题?在下面留言!

 

原文链接: Nico   翻译: 伯乐在线 – cjpan译文链接: http://blog.jobbole.com/53573/

Linux:十个鲜为人知的 Linux 命令 – Part 4

继续我们的”鲜为人知”系列,本系列的第四篇会让你了解一些有趣动态的命令。这里我们进入实际的教程,没有很多理论。

Linux:十个鲜为人知的 Linux 命令 - Part 4
Linux:十个鲜为人知的 Linux 命令 – Part 4

本系列的第四篇包含了另外的鲜为人知的Linux命令,这些值得去了解。也许你已经知道了这些命令,毫无疑问你是一个勇于探索的资深Linux用户。

32. strace Command

strace是一个调试工具并被主要用于Linux的故障排除。它可能在你的系统内没有默认安装,你可能需要apt 或者 yum 安装所需要的包。

使用strace命令追踪一个命令的执行。

root@tecmint [~]# strace pwd

示例输出

execve("/bin/pwd", ["pwd"], [/* 29 vars */]) = 0
brk(0)                                  = 0x728000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0df2000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=38427, ...}) = 0
mmap(NULL, 38427, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f29b0de8000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "177ELF21133>13603551I;"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1922152, ...}) = 0
mmap(0x3b49000000, 3745960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3b49000000
mprotect(0x3b4918a000, 2093056, PROT_NONE) = 0
mmap(0x3b49389000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x189000) = 0x3b49389000
mmap(0x3b4938e000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3b4938e000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de7000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de6000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de5000
....

strace命令有大量的参数和选项,请参考man页来获取详细信息。

33. disown -a && exit 命令

大多数系统管理员使用screen 命令来控制运行在终端后台的作业。让我们假设一下如果你有一个长期运行的作业并想要将它从终端中脱离,你可以用screen命令来这么做。但是如果你不知道如何使用screen,那么disown可以用来救急。

disown命令可以在后台持续运行任务,即使你关闭了终端会话。disown命令的语法是:

root@tecmint [~]# Command; disown -a && exit

为了在终端中再次脱离一个已经长期运行的任务(译注:可能已经bg运行了,但是并没有脱离终端),使用jobs命令来找出任务号,接着使用disown %n,这里的%n是作业号。为了验证作业确实在运行,使用ps 或者 top 命令nohup命令也是一个disown命令的替代品。

34. getconf LONG_BIT 命令

上面的命令能显示你的机器架构是32 bit 或者 64 位?

root@tecmint [~]# getconf LONG_BIT
32

35. 终端上显示日期

下面的命令是几个命令的集合,确切地说是一个脚本。对于在shell或者终端下工作的人来说,没有GUI界面看到当前系统日期是一个乏味的工作。你可以用‘date‘命令查看今天的日期。

只要在提示符后输入如下的命令你就会在终端的右上角看到日期时间

root@tecmint [~]# while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &
Linux:十个鲜为人知的 Linux 命令 - Part 4
Linux:十个鲜为人知的 Linux 命令 – Part 4

36. convert 命令

在写教程的时候,我经常需要生成输出,很多时候是图片格式的输出。上面的命令集合并不适合我。假设我需要tree命令的图片格式的输出(对 /etc/x11 目录 )。

root@tecmint:/etc/X11# tree | convert label:@- /home/avi/tree.png

上面命令的输出可以在一个特定的位置(这里是我的主目录)下看到,文件名是tree.png

37. watch -t -n1 “date +%T|figlet”

记住“figlet”命令在我们早期的文章“20 Funny Commands of Linux”中的描述。这个命令非常酷,这次我们会通过管道输出到‘figlet‘而在终端上显示一个动画电子钟。

你自己检查一下,记住你必须已经在系统上安装了figlet,用apt 或者 yum安装所需要的包。

root@tecmint [~]# watch -t -n1 "date +%T|figlet"

示例输出

 _  ___    ____   ___    _____ _  _                                                                                             Fri Nov 29 10:29:34 GMT
/ |/ _  _|___  / _  _|___ /| || |
| | | | (_) __) | (_) (_) |_ | || |_
| | |_| |_ / __/ __, |_ ___) |__   _|
|_|___/(_)_____|  /_/(_)____/   |_|

38. host 和 dig 命令

虽然“host” 和 “dig”命令不那么鲜为人知,仍然很少使用。host命令是一个DNS查询工具。

root@tecmint [~]# host www.google.com
www.google.com has address 173.194.66.147
www.google.com has address 173.194.66.105
www.google.com has address 173.194.66.99
www.google.com has address 173.194.66.104
www.google.com has address 173.194.66.106
www.google.com has address 173.194.66.103
www.google.com has IPv6 address 2a00:1450:400c:c03::68

(译注:事实上,我觉得dig命令是最强大的,自从有了dig,我就再也不用 nslookup 了。)

root@tecmint [~]# dig www.google.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<

39. dstat 命令

dstat是一个多用途的工具,它会依据系统资源生成统计。默认情况下你的系统可能没有安装‘dstat‘。在使用这个彩色的描述系统信息的生成器前使用apt 或者 yum来安装。

root@tecmint [~]# dstat
Linux:十个鲜为人知的 Linux 命令 - Part 4
Linux:十个鲜为人知的 Linux 命令 - Part 4

40. bind -p 命令

bind -p‘会显示所有的BASH shell可用的快捷方式。

root@tecmint [~]# bind -p
"C-g": abort
"C-xC-g": abort
"eC-g": abort
"C-j": accept-line
"C-m": accept-line
# alias-expand-line (not bound)
# arrow-key-prefix (not bound)
# backward-byte (not bound)
"C-b": backward-char
"eOD": backward-char
"e[D": backward-char
"e!": complete-command
"e/": complete-filename
"e@": complete-hostname
"e{": complete-into-braces
"e~": complete-username
"e$": complete-variable
# copy-backward-word (not bound)
# copy-forward-word (not bound)
# copy-region-as-kill (not bound)
....
....

41. touch /forcefsck

下面的命令会在root目录下创建一个空的文件夹'forcefsck'。这会强制Linux系统在下次启动时检查文件系统。

root@tecmint [~]# touch /forcefsck

今天这些就是全部。因为你们爱‘鲜为人知的命令‘ ,因此我们将继续这个系列,本系列的下一篇文章将很快发布。

不要走开继续关注Tecmint。不要忘记在评论栏里留下你们有价值的反馈。帮我们一个忙,喜爱、分享我们的文章,并帮我们传播。


via: http://www.tecmint.com/10-lesser-known-effective-linux-commands-part-iv/

译者:geekpi 校对:wxy

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

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

Linux:动画演示10个有趣但毫无用处的Linux命令

Linux最强大的一个特征就是它有大量的各种小命令工具,这也可以称做是它最有趣的一个地方了。在这些大量的有用的命令和脚本中,你会发现有少部分命令工具不那么有用的——如果你不愿意说是完全没用处的话。你要知道,Linux命令终端并不是总来干一些严肃的事情的,这里列举的几个没有实际用处、但很有趣的命令,它们的有趣并不是因为无用,而是真的有趣,接下来就让我们看看它们是如何搞怪的吧。

Linux:动画演示10个有趣但毫无用处的Linux命令
Linux:动画演示10个有趣但毫无用处的Linux命令

一、cmatrix

你应该看过好莱坞大片《骇客帝国》,相信你会对电影中那些神奇的场景着迷。在Neo的眼里任何东西都能以计算机字节流的形式展现,你是否也想做一个很有黑客范儿的数据流的桌面呢?

安装cmatrix

~#sudo apt-get install cmatrix

执行效果

~# cmatrix
Linux:动画演示10个有趣但毫无用处的Linux命令
Linux:动画演示10个有趣但毫无用处的Linux命令

二、oneko

如果你认为linux终端只是字符和光标,没有什么其它更丰富的表现形式了,那你就大错特错了,“oneko”命令就是一个很好的例子,不要以为oneko只是一种小猫的图形,移动你的鼠标,它会和你一起玩耍的。安装oneko

~#sudo apt-get install oneko

执行效果

~# oneko
Linux:动画演示10个有趣但毫无用处的Linux命令
Linux:动画演示10个有趣但毫无用处的Linux命令

三、aafire

有没有想过在你的黑白命令终端上燃起一团火将是什么样子,你只需要输入aafire命令,回车,奇迹就会出现。

安装aafire

~#sudo apt-get install libaa-bin

执行效果

~# aafire
Linux:动画演示10个有趣但毫无用处的Linux命令
Linux:动画演示10个有趣但毫无用处的Linux命令

四、ASCIIquarium

这真是一个不可思议的杰作,你的linux终端窗口竟然成了水族馆,里面有水,有石、有鱼、有兽。不多说,自己欣赏一下吧。

安装ASCIIquarium

~# cd /tmp
~# wget http://www.robobunny.com/projects/asciiquarium/asciiquarium.tar.gz
~# tar -zxvf asciiquarium.tar.gz
~# cd asciiquarium_1.1/
~# cp asciiquarium /usr/local/bin
~# chmod 0755 /usr/local/bin/asciiquarium

执行效果

~# asciiquarium
Linux:动画演示10个有趣但毫无用处的Linux命令
Linux:动画演示10个有趣但毫无用处的Linux命令

五、toilet(厕所)

有没有搞错,还有叫这个名字的命令?尽管这个名字本身就已经够搞笑了。那这个命令有什么特殊功能呢?肯定不是执行这个命令后你家马桶就能自动冲洗了。它是能用字母拼写出更大字母的工具,具体拼出什么字由命令后面的参数决定,不仅如此,它还能打印出各种风格的效果,比如彩色,金属光泽等。

安装toilet

~# sudo apt-get install toilet

运行效果

~# toilet www.aqee.net
~# toilet -f mono12 -F metal www.aqee.net
Linux:动画演示10个有趣但毫无用处的Linux命令
Linux:动画演示10个有趣但毫无用处的Linux命令

来源:http://www.aqee.net/10-funny-liunx-command/ 

Linux:Linux date命令 – 显示和设置系统日期与时间

操作系统上的时间也许只是当做一个时钟。特别在控制台下, 我们通常并不认为时间有什么重要的。但是对于管理员,这种认识是错误的。你知道错误的日期和时间会导致你不能编译程序么?

Linux:Linux date命令 - 显示和设置系统日期与时间
Linux:Linux date命令 – 显示和设置系统日期与时间

因为日期和时间很重要,这或许就是开发网络时间协议(NTP:Network Time Protocol)的原因。让我们了解下date命令是如何工作的。

显示系统日期

要显示系统日期,只要输入:

$ date
Thu Dec 5 22:55:41 WIB 2013

格式化显示日期

日期有很多格式。如果你不喜欢默认的格式,你可以换一种格式。你可能会想”为什么我需要改变格式? 默认的输出对我足够了。”

是的,你说的对,但是当你在编程时,默认输出或许无法满足你的需求,因此需要一些自定义输出。

RFC 2822 的日期与时间输出格式

$ date -R
Thu, 05 Dec 2013 23:40:53 +0700

RFC 2822 的格式像这样 : 星期, 日-月-年, 小时:分钟:秒 时区

时区 +0700 等同于 GMT +7。

默认上date使用的是定义在/etc/localtime的时区。有效时区数据定义在/usr/share/timezones

显示或者设置协调世界时

Wikipedia上, UTC 意思是

世界上主要的时钟和时间的标准。这是格林位置标准时间几个非常相近的替代者之一。

以UTC形式显示日期和时间, 使用 -u 参数

$ date -u
Thu Dec 5 16:45:58:UTC 2013

使用格式化选项

要自定义你的日期格式, 使用加号 (+)

$ date +”Day : %d Month : %m Year : %Y”
Day: 05 Month: 12 Year: 2013

 

$ date +%D
12/05/13

%D 格式是 年/月/日 的格式.

如果你想的话,你可以输出日期的名字。下面是一些例子:

$ date +”%a %b %d %y”
Fri 06 Dec 2013
$ date +”%A %B %d %Y”
Friday December 06 2013
$ date +”%A %B %d %Y %T”
Friday December 06 2013 00:30:37
$ date +”%A %B-%d-%Y %c”
Friday December-06-2013 12:30:37 AM WIB

还有很多的日期格式。只要输入:

$ date –help

或者

$ man date

来显示date命令的语法和参数。

基本上,date命令会翻译所有所有的百分号(%)开头的格式和输出在引号(“”)内所有的内容。

设置系统日期和时间

通常地,你希望你的系统日期和时间是自动设置的。如果由于一些原因,你想要手动修改它,我们可以使用这个命令。

# date –set=”20140125 09:17:00”

这会设置你当前的系统日期和时间到一月 25, 2014 and 09:17:00 AM。请注意,你必须拥有root特权来这么做。不然你会得到这样一个错误。

date: cannot set date: Operation not permitted
Sat Jan 25 09:17:00 WIB 2014

重置你的时间

如果你希望重置你的系统日期和时间到原始值,你可以用这个技巧。

# hwclock
Fri 06 Dec 2013 03:44:10 AM WIB -0.314082 seconds

这回设置你的系统日期和时间到hwclock命令的输出的样子。

在脚本中使用date命令

还记得我之前说为什么你需要改变date的输出么?一个答案是你或许需要编程。让我们看下bash脚本下的一个例子。

$ vi display.date
#! /bin/bash
DATETIME=$(date +”DATE: %a %b-%d-%Y TIME: %T WEEK NUMBER: %W”)
echo $DATETIME

保存并运行它:

$ ./display.date
DATE : Fri Dec-06-2013 TIME: 03:08:19 WEEK Number :40

如果你发现权限拒绝错误信息,输入:

$ chmod 755 display.date

在备份流程中使用date

另外一个例子是子你备份流程中使用date。

$ date +%F
2013-12-06
$ tar zcfv /daily_backup/backup-`date +%F`.tar.gz /home/pungki/Documents

它会压缩文件夹/home/pungki/Documents到一个位于/daily_backup folder的文件backup-2013-12-06.tar.gz中。(译注:通过“` 命令 `”来在命令行内嵌其它命令,这个字符不是单引号,而是和波浪号~同一个键位的那个符号。)

总结

date可能被认为在某些方面不重要。但是date扮演了一个重要的角色。要想知道关于date命令更多的细节,在你的控制台下输入man date访问man页面。


via: http://linoxide.com/linux-command/date-command-linux/

译者:geekpi 校对:wxy

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

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

Linux:成为 Linux 终端高手的七种武器

Linux 终端不仅是一个键入命令的地方。如若你能熟谙这些基础技巧,那么你会在绝大多数 Linux 发行版的默认使用的 Bash shell中游刃有余。

这是howtogeek.com 网站特供给初级用户升级打怪时不能忘记携带的七种武器——

Linux:成为 Linux 终端高手的七种武器
Linux:成为 Linux 终端高手的七种武器

1.Tab 补全

这样能节省时间,并且对于输入那些你不很确定其具体名称的文件和命令来说很方便。比如,当前目录下有一个名为“really long file name”的文件,你想要删除它。你可以输入完整的文件名,但是你必须确保正确地输入了空格和每个字母。若当前目录下还有许多以字母“r”开头的文件,(如果你没有正确地输入字符) Bash 将不知道你想要删除哪一个文件。

如果在当前目录下存在着另一个名为“really very long file name”的文件,你敲击了Tab键。Bash 将为所有以“r”开头的文件自动补充“really ”部分。此时继续敲击Tab键,你将得到匹配所有文件名的列表。

2.管道机制

这种机制允许你把一条命令的输出传送到另一条命令。按照 UNIX 哲学,每个程序都足够小,只做一件事并将之做到最好。例如,ls命令列出当前目录下的所有文件,grep命令搜索输入其中的指定检索项。

你可以通过管道机制(|字符)把二者结合起来,在当前目录下搜索文件。以下给出的命令(在当前文件夹下)搜索关键字为“word”的文件:

ls | grep word

3.通配符

“*”(星号)字符是一种匹配任意长度字符的通配符。比如,你想删除当前文件夹下名为“really long file name”和“really very long file name”的两个文件,你可以运行以下命令:

rm really*name

这条命令会删除所有以“really”开头以“name”结尾的文件。但是,如果你运行的是 rm * 这条命令,你将会删除文件夹下的所有文件。(译注:使用通配符时要小心,尤其是你的rm没有-f确认时!)

4.输出重定向

“>”字符可以把一条命令的输出重定向到一个文件或另一条命令。比如,下面这行命令执行完 ls 后会列出当前文件夹下的所有文件,其结果不是在终端显示,而是输出到当前文件夹下一个名为“file1”的文件中去:

ls > file1

5.历史记录

Bash 能记住你以前输入过的命令,上、下方向键可以逐行调出它们。使用 history 命令打印历史记录,以管道机制 grep 选择性地输出你想要的结果。

~
.
..

“~”,也叫做波浪符,用来表示当前用户的主目录。相比通过 cd /home/name 到达你的主目录,你可以输入 cd ~ 来达到相同效果。这点也可以在相关路径上使用:比如 cd ~/Desktop 能够到达当前用户的 Desktop 目录。

同样,“.”代表当前目录,“..”代表当前目录的父目录。使用 cd .. 可以返回上一级目录。它们也可以用在相关路径上,举例说明:你当前处在 Desktop 文件夹下,通过 cd ../Documents 命令,你可以转到与 Desktop 共有同一父文件夹的 Documents 文件夹去。

(译注:“-”代表前一个目录,cd – 可以返回到前一个工作目录。)

6.后台命令

Bash 默认情况下会在当前终端下执行你键入的每条命令。通常这样是没有问题的,但是如果你想要在启动某个应用后继续使用终端呢?通过输入 firefox 启动火狐浏览器,你的终端将被错误提示等各种信息输出占据,直到你关闭火狐浏览器为止。在 Bash 中你可以通过在命令结尾添加“&”操作符来后台执行程序。

firefox &

7.条件执行

Bash 也可以连续执行两条命令。 第二条命令仅在第一条命令成功执行后才会开始执行。如要如此,你可以通过键入“&&”,也就是两个“&”字符进行分隔,在同一行输入两条命令。下面给出的命令会在等待 5 秒后运行 gnome-screenshot 工具:

sleep 5 && gnome-screenshot

via: http://www.efytimes.com/e1/fullnews.asp?edid=123564

译者:SteveArcher 校对:wxy

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

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

Linux:每日 Ubuntu 小技巧 – 更改 Ubuntu 使用语言

Ubuntu 是一个功能强大的现代化操作系统,并且它还允许你使用多种语言的桌面。在默认情况下,在你第一次安装 Ubuntu 的时候会预装几个语言包。但如果你想要你的 Ubuntu 能够支持更多语言的话,那你就必须安装额外的语言包。通常不是所有的语言都是支持的,但是大多数使用中的语言以及书面语言都能够被支持。下面是一个是简短教程,它将会展示如何去实现。

在安装语言包之后,你可以根据你的语言重命名标准文件夹,例如音乐、图片和文档。你必须注销系统然后重新登录来使变更生效。当你重新登录之后,你会看到一个弹窗并且询问你是否愿意重命名这些标准文件夹,从而使得文件名满足你的所选择的语言要求。

要想更改 Ubuntu 的使用语言,单击菜单栏右上角的 齿轮,并且选择 System Settings(系统设置)。在打开 System Settings(系统设置) 之后,选择 Language Support(语言支持)

如果提示要你安装额外的语言支持,那就直接安装。如果没有,那么就单击 Install / Remove (安装/删除)去安装新的语言包,然后,选择你想安装的语言来安装。最后,拖动新的语言到列表的顶端并且保存。这些更改只会应用在你的个人帐号上。如果你想应用在全局范围内,单击 Apply System-Wide(应用到全局设置)

Linux:每日 Ubuntu 小技巧 - 更改 Ubuntu 使用语言
Linux:每日 Ubuntu 小技巧 – 更改 Ubuntu 使用语言

拖动新的语言到列表的顶端。之后单击 Close。

Linux:每日 Ubuntu 小技巧 - 更改 Ubuntu 使用语言
Linux:每日 Ubuntu 小技巧 – 更改 Ubuntu 使用语言

关闭之后注销系统。然后重新登录,你就会看到更改生效了。

同样,语言包的更改只是应用在你的个人帐号上。如果你想全局更改的话,你必须单击 Apply System-Wide。

Linux:每日 Ubuntu 小技巧 - 更改 Ubuntu 使用语言
Linux:每日 Ubuntu 小技巧 – 更改 Ubuntu 使用语言

如果你选择了重命名标准文件夹,你必须重新登录才能看到变更。

好好享受吧!


via: http://www.liberiangeek.net/2013/10/daily-ubuntu-tipschange-the-language-you-use-in-ubuntu/

译者:hyaocuk 校对:Caroline

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

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

Linux:数据控使用Hadoop的三种常用方式

随着Hadoop技术的发展,从最初为Google、Facebook等公司解决大量数据的存储问题,到现在被越来越多企业用来处理大数据,Hadoop在企业数据领域影响深远。了解其常见的使用模式,可以极大地降低使用复杂性。

就在几周前,Apache Hadoop 2.0正式发布,这是 Hadoop领域巨大的里程碑,因为它开启了史无前例的数据存储方式革命。Hadoop保留它典型的“大数据”基础技术,但它是否适合当下数据库及数据仓库的使用方式?又是否有一种通用模式可以切实降低固有的使用复杂性呢?

Hadoop使用的一般模式

Hadoop最初的构想是为像Yahoo、Google、Facebook等这样的公司以非常低的成本来解决大量数据的存储问题。现在,它正被越来越多地引入企业环境中处理新不同数据类型。机器生成的数据、传感器数据、社交数据、网络日志等数据类型呈指数级增长,而且这些数据也常常(但不总是)是非结构化。正是由于这种类型的数据将人机对话从“数据分析”带到“大数据分析”:因为挖掘这些数据可以得到商业优势。

分析应用程序以各种形式流行起来,最重要的是可以定向解决一个垂直行业的需要。乍一看,他们彼此似乎在行业和垂直上没有关系,但是实际上,当在基础设施层面观察时,会出现一些非常清晰的模式,也就是以下3种模式:

Pattern 1:数据精炼厂

使用Hadoop的“数据精炼厂”模式使组织能够将这些新数据源纳入他们常用BI和分析应用程序。例如,我可能有一个应用程序,它能够在ERP和 CRM系统中查看客户建立在上面的数据。但是如何才能从他们的web session(基于我们网站)中发现他们的兴趣所在?“数据精炼厂”,这个使用模式正是顾客期望的。

Linux:数据控使用Hadoop的三种常用方式
Linux:数据控使用Hadoop的三种常用方式

这里的关键概念是Hadoop是被用来提取大量数据以便更容易管理。然后生成的数据被加载到现有数据系统,这些数据可以使用传统的工具访问,但是别忘了,这些操作都是建立在更丰富的数据集上。从某些方面来说,这是最简单的用例,因为无需对传统途径进行大的修改,企业就可以清晰的从Hadoop上获益。无论垂直与否,精炼厂概念仍然适用。在金融服务领域,我们看到组织提炼交易数据以便更好地了解市场,分析和从复杂的组合中寻找价值。能源公司使用大数据来分析不同地区的消费水平以便更好地预测生产水平。零售企业(任何面向消费者组织)经常使用精炼厂来洞察网络人气。电信公司使用精炼厂调用电话记录来提取有用信息细节以便优化计费方式。最后,在昂贵的,任务关键的垂直设备上,我们常常发现Hadoop被用来预测分析和主动的故障识别。在通信技术中,这可能是一个网络的基站。特许经营餐厅中可以用来监控冷藏库的数据。

Pattern 2: 用Apache Hadoop来探索数据

第二个最常见的用例我们称之为“数据探索”。在这种情况下,组织在Hadoop上获取和存储大量的新数据,然后直接探索这些数据。因此不是使用 Hadoop作为暂存区域进行处理然后将数据转移到企业数据仓库(就像使用精炼厂用例一样),数据是保存在Hadoop上然后直接探索。

Linux:数据控使用Hadoop的三种常用方式
Linux:数据控使用Hadoop的三种常用方式

数据探索用例通常是在企业开始可以探索以前被丢弃的数据(如网络日志,社交媒体数据等等)并构建全新的分析应用程序然后直接使用这些数据。几乎每一个垂直系统都可以享受到探索用例的优越性。在金融服务领域,我们可以用探索用例来执行取证或识别欺诈。职业体育团队将利用数据科学来分析交易和年度草案,就像我们在电影《Moneyball》看到的。总之数据科学和探索可以用来发现新的商业机会或新的见解,这在Hadoop之前是不可能实现的。

Pattern 3: 挖掘应用程序

第三个也是最后一个用例是“挖掘应用程序”。在这种情况下,存储在Hadoop中的数据决定了应用程序的用途。例如,通过挖掘存储的所有网络会话数据,当用户重返网站时,我们可以为他们定制个性体验。通过挖掘Hadoop中存储的这些数据,我们可以从会话历史找到很多有用的价值。比如通过用户的历史记录来提供一个及时反馈。

Linux:数据控使用Hadoop的三种常用方式
Linux:数据控使用Hadoop的三种常用方式

这个用例是世界上许多大型网站如Yahoo、Facebook等业务的基础。通过定制的用户体验,他们可以有效与他们的竞争对手区分。这是雅虎 Hadoop的第二个用例,就如当初它意识到Hadoop能够帮助改善广告位置一样。这个概念转变了大型的网站,同时也正在使传统的企业改善销售,而一些小组织甚至也使用这些概念在零售网点实现动态定价。

正如你所预料的那样,随着组织熟悉在Hadoop上提炼和探索数据,最后的这种最典型的用例正在被普遍采用或接受。但与此同时,这也暗示了今后Hadoop能做什么,并且随着时间的推移和发展,传统的数据库应用程序将逐渐被Hadoop应用程序取代。

当然任何涉及到新平台技术,在进入IT企业环境时都有一定的复杂性,Hadoop也不例外。无论你是使用Hadoop来改进或是探索,还是丰富你的数据,与现有IT基础架构的兼容将是关键。这就是为什么目前Hadoop生态系统和能集成不同供应商之间解决方案得以显著增长。Hadoop有潜力在企业数据领域产生深远影响,通过理解常见的使用模式,您将可以极大地减少其复杂性。

via : http://www.linuxeden.com/html/news/20131228/146962.html 

Linux:使用 BFO 方式安装 Fedora 20

你是不是还在使用传统的下载-安装的方式进行 Fedora 的安装呢?是不是觉得每次下载不仅花费时间,而且镜像文件还占用了不少硬盘空间(虽说目前主流配置都是 T 级别的)呢?下面为你介绍一种长久以来低调存在,但非常高效的安装方法:BFO。

感谢 tiansworld 来稿

什么是 BFO?

BFO 即 boot.fedoraproject.org,是一种能够引导主机,通过网络进行安装或运行其它介质的方式。它与 pxeboot 环境的工作方式很像。详细介绍可以参考官方说明

怎样使用 BFO?

BFO 拥有提供了用于分别能够用于 DVD/CD、U 盘、软盘和 lkrn 镜像的文件。文件体积非常的小,因此老式小容量的 U 盘便可胜任。点击此下载各种介质引导文件

以 U 盘版本为例,在下载对应的 U 盘版本镜像 (bfo.usb) 后,可使用 DD 命令将镜像写至 U 盘。

>dd if=/pathto/bfo.usb of=/dev/sdb

其中 pathto 是下载的 bfo.usb 文件所处的目录。 /dev/sdb 是你要使用的 U 盘设备名。 写好之后,便可以使用它来安装 Fedora 了。

通过 BFO 安装 Fedora

前提:计算机能够连接到稳定的互联网;计算机可以从 U 盘、光盘、软盘等引导,并可将引导顺序设为这些设备优先。

以下还是以 U 盘为例:

1、插入 U 盘,开机。正常情况下,你会看到如图 1 的界面:

Linux:使用 BFO 方式安装 Fedora 20
Linux:使用 BFO 方式安装 Fedora 20

2、再此之后会出现类似图 2 的界面(如果你不幸的只看到黑屏 boot: 那也不要着急,请看后文):

Linux:使用 BFO 方式安装 Fedora 20
Linux:使用 BFO 方式安装 Fedora 20

3、选择 Install currently supported Fedora releases,然后回车,这时你会看到如图 3 一样的目前仍受支持的 Fedora 发行版列表: 

Linux:使用 BFO 方式安装 Fedora 20
Linux:使用 BFO 方式安装 Fedora 20

4、在这里,你可以直接选择你要安装的 Fedora 版本,然后回车,此后将进入 Fedora 的安装过程,如图 5:

Linux:使用 BFO 方式安装 Fedora 20
Linux:使用 BFO 方式安装 Fedora 20

5、当然你也可以在选中要安装的版本后,按 Tab 键,显示或编辑选项。在这里可以将预设的内核、内核镜像、源的地址改为其它你需要的地址。比如可以修改为速度更快的源地址。同时也可以加上 kickstart 文件的路径,以便实现自动化安装。

前面说如果你不幸只看到黑屏 boot: 提示符,那么只要在提示符后面输入这些内容然后回车就可以了。这种情况下最好要有耐心,同时还要仔细,因为不小心输入错误,就需要完全重新输入。你也许会说,这么长串的东西,谁会记得住呢!其实这里面并不复杂,只是三个 URL 而已。第一个是 vmlinuz 所在的位置,第二个是 initrd.img 的位置,还有一个是 repo 的位置。这三个 URL 一般都指向一个源,因此也不是特别复杂。当然出现黑屏 boot: 提示符的机率并不大。

后面的过程就是 Fedora 的安装过程了,无需多说。

总结

BFO 安装方式总体简单方便,省去下载文件的时间。由于它依赖网络,因此对于网络状况良好的环境值得使用。对于网络较差的环境,则可根据情况,适当减少初次安装的软件包,以缩短安装时间。在完成安装后再使用包管理程序陆续安装其它软件包。

via : https://linuxtoy.org/archives/installing-fedora-20-by-bfo.html 

 

Linux:如何在 VirtualBox 中安装 SteamOS

下面的教程将指导 Linuxer 在 VirtualBox 中全新安装 SteamOS GNU/Linux。

如你已经了解的那样,SteamOS Linux 已经在12月13日正式发布了。作为一款基于 Debian GNU/Linux 的操作系统,它默认使用了 GNOME 作为桌面环境,当然这是可选的。

如果硬件上没有问题的话,比如你的电脑拥有强大游戏显卡,且支持UEFI的,那么安装 SteamOS 将是一件非常容易的事情,然而,因为 Valve 并没有发布 SteamOS 的 ISO 镜像,在安装过程中可能并不是那么顺利。

下面的教程由两个重要的部分组成,第一部分将会帮助你用 Valve 官方的 SteamOSInstaller.zip 来创建一个 ISO 镜像;如果你不希望在自己的电脑上真正安装,那么第二部分将会告诉你如何在 VirtualBox 中来体验 SteamOS。

在一开始你需要一个已经正确安装的最新的 VirtualBox。当然,你还需要一款叫做GNUxorriso的软件用来制作 ISO 镜像。

第一步,制作 SteamISO 镜像

从 Softpedia 下载 SteamOSInstaller.zip,将它保存到你的 home 目录下并解压缩。完毕之后你将会看到 SteamOSInstaller 文件夹。现在,从终端里打开它并执行下面的命令(译注:命令较长,请勿敲错):

xorriso -as mkisofs -r -checksum_algorithm_iso md5,sha1 -V 'Steam OS' -o ~/SteamOSInstaller.iso -J -joliet-long -cache-inodes -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot --efi-boot boot/grub/efi.img -append_partition 2 0x01 ~/SteamOSInstaller/boot/grub/efi.img -partition_offset 16 ~/SteamOSInstaller

稍等几秒钟之后,SteamOS.iso 文件将会在你的 home 目录下出现,大约有 1GB。好了,这一步就完成了,下面进入第二步。

第二步,在 VirtualBox 中安装 SteamOS

如果你已经正确安装了 VirtualBox 并且了解它的正确用法,那么我们下面需要来建立一个拥有 UEFI 支持的全新虚拟机。在 VirtualBox 的主窗口,点击 New 按钮来开始安装吧。

在 Name 框输入 SteamOS,在操作系统类型种选择 Linux,并在下拉框的版本列表中选择 Debain 64-bit,点击 Next 继续。Memory Size 中设置1024或者2048MB(当然,这取决于你的计算机实际内存大小),我们创建一个 VDI 格式的虚拟硬盘驱动器,将大小固定为15GB。点击 Continue 来继续,并等待创建过程结束。

Linux:如何在 VirtualBox 中安装 SteamOS
Linux:如何在 VirtualBox 中安装 SteamOS

创建一个新的虚拟机

Linux:如何在 VirtualBox 中安装 SteamOS
Linux:如何在 VirtualBox 中安装 SteamOS

设置内存大小

现在我们的虚拟机已经创建完毕了,接下来让我们来为 SteamOS 做一些小小的调整。来到 Settings 选项,点击边栏的 System,然后在 Boot Order 中取消选择 “Floppy”,并检查确认已经选择 “Enable EFI (special OSes only)” 选项。

Linux:如何在 VirtualBox 中安装 SteamOS
Linux:如何在 VirtualBox 中安装 SteamOS

允许 EFI 并移除 Floppy

接下来,点击边栏中的 Display 按钮,将 Video Memory 设置为128MB,并勾上 “Enable 3D Acceleration” 选项。然后,进入边栏的 Storage 部分,点击 “Controller: IDE” 下面的 “Empty”,并点击 CD/DVD 驱动下拉栏旁边小 CD 图标来添加上一步制作的 SteamOSInstall.iso 镜像文件。当一切完成之后,点击 OK。

Linux:如何在 VirtualBox 中安装 SteamOS
Linux:如何在 VirtualBox 中安装 SteamOS

设置 Video Memory 大小 和 3D 加速

那么现在,让我们按下主窗口中的 “Start” 按钮来启动虚拟机。你将会立即看到 SteamOS 启动画面。只需要高亮 “Automated install (WILL ERASE DISK)” 后按下 Enter 键即可。接下来可以稍微休息一下,直到我们的安装结束。整个安装过程可能需要一段时间,当然这取决于你的电脑。

Linux:如何在 VirtualBox 中安装 SteamOS
Linux:如何在 VirtualBox 中安装 SteamOS

准备安装 SteamOS

只要我们的安装过程结束,你就可以关闭虚拟机,然后从 Storage 中移除 ISO 镜像,然后启动进入全新的 SteamOS。但是,在我们正式进入 SteamOS 的世界之前,还需要安装 VirtualBox Guest Additions。先点击开始 SteamOS 虚拟机,选择 GRUB 启动器中的第二个选项(恢复模式),然后在 SteamOS 的命令行提示后输入下面的命令:

Linux:如何在 VirtualBox 中安装 SteamOS
Linux:如何在 VirtualBox 中安装 SteamOS
dpkg --get-selections | grep nvidia
apt-get purge
rm /usr/share/X11/xorg.conf.d/55-nvidia.conf
dpkg-reconfigure xserver-xorg

进入到 Devices 中然后点击 Insert Guest Additions CD 镜像。根据提示来下载 Guest Additions 镜像,挂载它并执行下面的命令:

   sh /media/cdrom/VBoxLinuxAdditions.run

等待 Guest Additions 安装完驱动,用下面的命令来重启我们的虚拟机:

   shutdown now -r
Linux:如何在 VirtualBox 中安装 SteamOS
Linux:如何在 VirtualBox 中安装 SteamOS

SteamOS 命令行提示

接下来我们的虚拟机会重启,让它启动进入 SteamOS。当我们抵达登录提示界面之后,使用 desktop/desktop 或者 steam/steam 作为用户名和密码来登录。

如果您在安装过程中遇到了一些问题,请别犹豫,在下面评论中告诉我们。

Linux:如何在 VirtualBox 中安装 SteamOS
Linux:如何在 VirtualBox 中安装 SteamOS

SteamOS 和 GNOME 3


via: http://news.softpedia.com/news/How-to-Install-SteamOS-in-VirtualBox-409363.shtml

译者:pandachow 校对:wxy

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

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

Linux:Linux mpstat 命令- 报告处理器的相关统计信息

现在的计算机一般都使用着多处理器或四核单处理器。在服务器端,更多的处理器或核心意味着更强的能力,但另一方面,应用程序也需要更高的能耗。你还可能遇到过这样的场景:当你的cpu利用率很高时你却感觉自己根本没有运行任何程序。以上种种情况,在Linux系统上,你可以使用 mpstate 来监控这样的活动。 

Linux:Linux mpstat 命令- 报告处理器的相关统计信息
Linux:Linux mpstat 命令- 报告处理器的相关统计信息

什么是mpstat

mpstat 用于监控你的系统上cpu的利用率。如果你的系统有多个处理器,它会发挥更大的作用。 第一个处理器会被标记为CPU 0。第二个会被标记为CPU 2,以此类推。在操作手册中,如下描述mpstat:

mpstat命令把每个可用的处理器的状态写到标准输出,默认第一个处理器为processor 0。所有处理器的全局平均状态也会以报告形式给出。mpstat命令可以用于SMP和UP的机器上,但是在UP机器上,只有全局平均状态会被打印出来。如果没有选择具体行为,默认将报告CPU的利用率

如何运行mpstat

只需在你的终端输入 mpstat 就可以运行mpstat.

$ mpstat
Linux 3.2.0-57-generic (USERNB01) 12/12/2013 _x86_64_ (2 CPU)
03:29:29 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
03:29:29 PM all 6.30 0.06 1.94 3.75 0.00 0.06 0.00 0.00 87.88

如果你发现譬如 命令找不到或者类似的错误,说明你可能没有安装mpstat。

如果你使用的是 CentOS, RedHat or Fedora,运行下列命令来安装mpstat

# yum install sysstat

如果你使用的是 Debian, Ubuntu or 它的衍生版, 运行下列命令来安装mpstat

# apt-get install sysstat

下面是如何理解上面显示出来的信息。

  • 03:29:29 PM : 指mpstat运行的时间
  • all : 指所有CPU
  • %usr : 显示在用户级别(例如应用程序)执行时CPU利用率的百分比
  • %nice :显示在拥有nice优先级的用户级别执行时CPU利用率的百分比
  • %sys : 现实在系统级别(例如内核)执行时CPU利用率的百分比
  • %iowait : 显示在系统有未完成的磁盘I/O请求期间CPU空闲时间的百分比
  • %irq : 显示CPU服务硬件中断所花费时间的百分比
  • %soft : 显示CPU服务软件中断所花费时间的百分比
  • %steal : 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
  • %guest : 显示运行虚拟处理器时CPU花费时间的百分比
  • %idle : 显示CPU空闲和系统没有未完成的磁盘I/O请求情况下的时间百分比

打印每个处理器的CPU利用率

正如上面的命令结果所示,我们的系统有两个CPU。如果你愿意,你可以使用参数 -P 然后紧跟CPU编号得到指定CPU的利用率。

$ mpstat -P 0
Linux 3.2.0-57-generic (USERNB01) 12/12/2013 _x86_64_ (2 CPU)
03:54:00 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
03:54:00 PM 0 3.82 0.01 1.16 3.88 0.00 0.06 0.00 0.00 91.06
$ mpstat -P 1
Linux 3.2.0-57-generic (USERNB01) 12/12/2013 _x86_64_ (2 CPU)
03:53:58 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
03:53:58 PM 1 16.52 0.20 4.48 0.46 0.00 0.04 0.00 0.00 78.30

打印所有CPU的利用率

你也可以在一页里打印每个处理器的CPU利用率,只需使用 -P ALL 参数来指定。

$ mpstat -P ALL
Linux 3.2.0-57-generic (USERNB01) 12/12/2013 _x86_64_ (2 CPU)
04:07:36 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
04:07:36 PM all 6.02 0.04 1.72 2.99 0.00 0.05 0.00 0.00 89.17
04:07:36 PM 0 3.84 0.01 1.15 3.72 0.00 0.06 0.00 0.00 91.21
04:07:36 PM 1 13.55 0.15 3.66 0.46 0.00 0.03 0.00 0.00 82.15

使用时间间隔打印CPU利用率

如果你想观察CPU的利用率变化,你可以使用时间间隔,下面是一个例子。

$ mpstat 3 4
Linux 3.2.0-57-generic (USERNB01) 12/12/2013 _x86_64_ (2 CPU)
04:27:11 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
04:27:14 PM all 0.67 0.00 0.34 0.00 0.00 0.00 0.00 0.00 98.99
04:27:17 PM all 1.17 0.00 0.33 1.33 0.00 0.00 0.00 0.00 97.17
04:27:20 PM all 0.84 0.00 0.17 0.00 0.00 0.00 0.00 0.00 98.99
04:27:23 PM all 1.00 0.00 0.17 1.51 0.00 0.00 0.00 0.00 97.32
Average: all 0.92 0.00 0.25 0.71 0.00 0.00 0.00 0.00 98.12

上面的命令会每隔3秒显示CPU利用的4个报告

打印mpstat的版本

最后,为了打印mpstat的版本,使用参数 -V

$ mpstat -V
sysstat version 10.0.3
(C) Sebastien Godard (sysstat orange.

这就是在linux系统上快速使用mpstat的方法。想要了解更多细节,可以输入 man mpstat来查看mpstat的手册。


via: http://linoxide.com/linux-command/linux-mpstat-command/

译者:KayGuoWhu 校对:Mr小眼儿

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

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

Linux:如何在Debian和Ubuntu下重新打包Deb文件

以下教程将会为Ubuntu、Linux Mint和Debian GUN/Linux用户讲述,如何在它们基于Debian的Linux操作系统上轻松的解压和重新打包.deb文件。

Linux:如何在Debian和Ubuntu下重新打包Deb文件
Linux:如何在Debian和Ubuntu下重新打包Deb文件

有时候你在生活中会碰到这样的问题,你想要修改.deb文件的部分内容,然后重新打包。不过只有你真正深入了解计算机才能完成这样的黑客技巧。

下面的例子是刚发生在我身上的真实经历。一位Linux开发者为一个软件构建了一个Debian包(.deb),我也成功地将它安装在我的装载Ubuntu的电脑上。

当我试图从一个Git库中检索一些文件时,它总是卡顿,很显然,该软件并没有正常工作。我知道安装的文件在哪里(/opt目录),所以,我搜查了代码并适当地将部分问题修复。之后,当程序试图检索需要的包时不再卡顿。

所以,长话短说,我要将.deb文件解包,替换上我的补丁文件,然后再重新打包回来。这样我可以其它电脑上安装,或者将修正的包文件发给我的朋友。我要怎么做呢?

在网络上搜索问题的答案,我发现一个名叫ailoo.net的小型博客,它给出类似这样解释:

mkdir -p extract/DEBIAN
dpkg-deb -x package.deb extract/
dpkg-deb -e package.deb extract/DEBIAN [...do something, e.g. edit the control file...]
mkdir build
dpkg-deb -b extract/ build/

这五条命令将奇迹般地完成工作。让我为你解释一下:

  • 第一条命令创建了一个名为“extract”文件夹和一个名为“DEBIAN”的子文件夹;
  • 第二条命令会从你的.deb包提取一些文件到“extract”文件夹;
  • 第三条命令会解压.deb包的内容到“DEBIAN”子文件夹,在那里你就可以修改/补丁你想要的文件;
  • 第四条命令建立一个名为“build”的文件夹;
  • 而第五条命令会将修改后的文件重新构建到一个新的.deb包中,并在 “build” 文件夹中生成。

这就是本次教程!牢牢地记住上面的命令吧,在你执行第三条命令后,可以通过你的默认文件管理器,用一个图形化的文本编辑器可视化地修改文件。如果你在学习本教程时遇到问题,不要犹豫,在下面给我们写下评论。


via: http://news.softpedia.com/news/How-to-Repack-Deb-Files-on-Debian-and-Ubuntu-404930.shtml

译者:Luoxcat 校对:Caroline

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

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

Linux:Linux系统 whoami 命令 – 知晓当前登录用户

通常,在控制台的命令提示符下你会发现 用户名已经被显示出来 。但有一些 shell 默认情况下不会显示你的用户名,比如 csh 。所以这个命令最应该用在那些不能回显用户名的 shell 终端上。

怎么样运行 whoami

运行这个命令,你只需要输入 whoami 。下面的例子中我们使用的是 csh shell 终端。

% whoami

Whoami 的参数选项

这个命令仅仅有两个参数选项: –help–version

% whoamin –help
Linux:Linux系统 whoami 命令 – 知晓当前登录用户
Linux:Linux系统 whoami 命令 – 知晓当前登录用户

下面这选项会输出和 man whoami 命令一样的信息

% whoami –version

不同的是 –version 会显示你系统上 whoami 命令的版本信息

相似性

whoami 命令和 id -un 有相同的输出。它们都显示出当前用户的用户名。

% id -un

结论

whoami 命令也用于当你使用 su 命令(切换用户)时, 它能让你确认登录的用户名是否正确。whoami 和 who 命令不相同, who 命令会显示所有已经登录的用户名,而 whoami 不是。当你切换用户时,whoami 命令会显示会话所属的当前用户,而 who 命令会显示你切换前的那个源用户。


via: http://linoxide.com/linux-command/linux-whoami-command/

译者:runningwater 校对:Caroline

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

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

Linux:在openSUSE 13.1中配置FTP服务器

vsftpd非常安全的文件传输协议守护进程) 是Unix/Linux系统中的一个安全快速的FTP服务器。 在这篇指导教程中,让我们看看在openSUSE 13.1中怎样使用vsftpd来配置一个基本的FTP服务器。

Linux:在openSUSE 13.1中配置FTP服务器
Linux:在openSUSE 13.1中配置FTP服务器

安装 vsftpd

作为root用户登录然后输入以下命令。

# zypper in vsftpd

启动 vsftpd 服务然后通过设置使它在每次系统重启时自动启动。

# systemctl enable vsftpd.service
# systemctl start vsftpd.service

配置 vsftpd

为ftp用户新建一个文件夹。

# mkdir /srv/ftp

创建一个名为 ftp-users 的组。

# groupadd ftp-users

让我们来创建一个叫unixmen的示例用户 并设置其主目录为 /srv/ftp 组为 ftp-users

# useradd -g ftp-users -d /srv/ftp/ unixmen

为新用户设置密码。

# passwd unixmen

使ftp主目录 /srv/ftp/ 可以被ftp用户所访问。

# chmod 750 /srv/ftp/
# chown unixmen:ftp-users /srv/ftp/

编辑 vsftpd.conf 文件

# nano /etc/vsftpd.conf

设置如下的更改。

[...]
#Uncomment and  Set YES to enable write.
write_enable=YES
[...]
# Uncomment and Set banner name for your website
ftpd_banner=Welcome to Unixmen FTP service.
[...]
# Uncomment
ls_recurse_enable=YES
[...]
# Uncomment and set YES to allow local users to log in.
local_enable=YES
[...]
# To disable anonymous access, set NO.
anonymous_enable=NO
[...]
# Uncomment to enable ascii download and upload.
ascii_upload_enable=YES
ascii_download_enable=YES
[...]
## Add at the end of this  file ##
use_localtime=YES

保存并退出文件。

测试本地FTP服务器

首先 让我们按如下步骤尝试登录FTP服务器

# ftp localhost
Trying ::1:21 ...
Connected to localhost.
220 (vsFTPd 3.0.2)
Name (localhost:root): unixmen
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

正如你在上面所输出的那样, 我们能够用unixmen用户登录到ftp服务器。

测试远程FTP服务器

默认 openSUSE 内置的防火墙不允许远程系统登录FTP。所以让我们允许vsftpd服务通过suse的防火墙。然后我们需要打开: Yast -> 安全性与用户 -> 防火墙.

Linux:在openSUSE 13.1中配置FTP服务器
Linux:在openSUSE 13.1中配置FTP服务器

在防火墙界面,进入 允许服务. 在区域选择下拉框中,选择 外部区域 在服务允许下拉框中,选择 vsftpd 服务器 然后点击添加。

Linux:在openSUSE 13.1中配置FTP服务器
Linux:在openSUSE 13.1中配置FTP服务器

单击下一步并关闭Yast控制中心

现在尝试从远程系统连接FTP。

我试着从我的ubuntu桌面系统登录FTP服务器。

sk@sk:~$ ftp 192.168.1.53
Connected to 192.168.1.53.
220 (vsFTPd 3.0.2)
Name (192.168.1.53:sk): unixmen
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

正如你在上面输出中所看到的,我能够连接到ftp服务器。如果不允许vsftpd服务通过防火墙,你将会得到一个连接超时的报错。

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

Linux:netstat 的10个基本用法

Netstat 简介

Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开。以上功能使 netstat 成为网管和系统管理员的必备利器。在这篇教程中,我会列出几个例子,教大家如何使用 netstat 去查找网络连接信息和系统开启的端口号。

Linux:netstat 的10个基本用法
Linux:netstat 的10个基本用法

以下的简单介绍来自 netstat 的 man 手册:

netstat – 打印网络连接、路由表、连接的数据统计、伪装连接以及广播域成员。

1. 列出所有连接

第一个要介绍的,是最简单的命令:列出所有当前的连接。使用 -a 选项即可。

$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 enlightened:domain      *:*                     LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN
tcp        0      0 enlightened.local:54750 li240-5.members.li:http ESTABLISHED
tcp        0      0 enlightened.local:49980 del01s07-in-f14.1:https ESTABLISHED
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN
udp        0      0 enlightened:domain      *:*
udp        0      0 *:bootpc                *:*
udp        0      0 enlightened.local:ntp   *:*
udp        0      0 localhost:ntp           *:*
udp        0      0 *:ntp                   *:*
udp        0      0 *:58570                 *:*
udp        0      0 *:mdns                  *:*
udp        0      0 *:49459                 *:*
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*
udp6       0      0 ip6-localhost:ntp       [::]:*
udp6       0      0 [::]:ntp                [::]:*
udp6       0      0 [::]:mdns               [::]:*
udp6       0      0 [::]:63811              [::]:*
udp6       0      0 [::]:54952              [::]:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     12403    @/tmp/dbus-IDgfj3UGXX
unix  2      [ ACC ]     STREAM     LISTENING     40202    @/dbus-vfs-daemon/socket-6nUC6CCx

上述命令列出 tcp, udp 和 unix 协议下所有套接字的所有连接。然而这些信息还不够详细,管理员往往需要查看某个协议或端口的具体连接情况。

2. 只列出 TCP 或 UDP 协议的连接

使用 -t 选项列出 TCP 协议的连接:

$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 enlightened:domain      *:*                     LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN
tcp        0      0 enlightened.local:36310 del01s07-in-f24.1:https ESTABLISHED
tcp        0      0 enlightened.local:45038 a96-17-181-10.depl:http ESTABLISHED
tcp        0      0 enlightened.local:37892 ABTS-North-Static-:http ESTABLISHED
.....

使用 -u 选项列出 UDP 协议的连接:

$ netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 *:34660                 *:*
udp        0      0 enlightened:domain      *:*
udp        0      0 *:bootpc                *:*
udp        0      0 enlightened.local:ntp   *:*
udp        0      0 localhost:ntp           *:*
udp        0      0 *:ntp                   *:*
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*
udp6       0      0 ip6-localhost:ntp       [::]:*
udp6       0      0 [::]:ntp                [::]:*

上面同时显示了 IPv4 和 IPv6 的连接。

3. 禁用反向域名解析,加快查询速度

默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。

$ netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp        0      0 192.168.1.2:49058       173.255.230.5:80        ESTABLISHED
tcp        0      0 192.168.1.2:33324       173.194.36.117:443      ESTABLISHED
tcp6       0      0 ::1:631                 :::*                    LISTEN

上述命令列出所有 TCP 协议的连接,没有使用域名解析技术。So easy ? 非常好。

4. 只列出监听中的连接

任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。

$ netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp6       0      0 ::1:631                 :::*                    LISTEN

现在我们可以看到处于监听状态的 TCP 端口和连接。如果你查看所有监听端口,去掉 -t 选项。如果你只想查看 UDP 端口,使用 -u 选项,代替 -t 选项。

注意:不要使用 -a 选项,否则 netstat 会列出所有连接,而不仅仅是监听端口。

5. 获取进程名、进程号以及用户 ID

查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。举个栗子,Apache 的 httpd 服务开启80端口,如果你要查看 http 服务是否已经启动,或者 http 服务是由 apache 还是 nginx 启动的,这时候你可以看看进程名。

使用 -p 选项查看进程信息。

~$ sudo netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1144/dnsmasq
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      661/cupsd
tcp6       0      0 ::1:631                 :::*                    LISTEN      661/cupsd

使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。

相比进程名和进程号而言,查看进程的拥有者会更有用。使用 -ep 选项可以同时查看进程名和用户名。

$ sudo netstat -ltpe
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 enlightened:domain      *:*                     LISTEN      root       11090       1144/dnsmasq
tcp        0      0 localhost:ipp           *:*                     LISTEN      root       9755        661/cupsd
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN      root       9754        661/cupsd

上面列出 TCP 协议下的监听套接字,同时显示进程信息和一些额外信息。

这些额外的信息包括用户名和进程的索引节点号。这个命令对网管来说很有用。

注意 – 假如你将 -n-e 选项一起使用,User 列的属性就是用户的 ID 号,而不是用户名。

6. 打印统计数据

netstat 可以打印出网络统计数据,包括某个协议下的收发包数量。

下面列出所有网络包的统计情况:

$ netstat -s
Ip:
    32797 total packets received
    0 forwarded
    0 incoming packets discarded
    32795 incoming packets delivered
    29115 requests sent out
    60 outgoing packets dropped
Icmp:
    125 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 125
    125 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 125
... OUTPUT TRUNCATED ...

如果想只打印出 TCP 或 UDP 协议的统计数据,只要加上对应的选项(-t-u)即可,so easy。

7. 显示内核路由信息

使用 -r 选项打印内核路由信息。打印出来的信息与 route 命令输出的信息一样。我们也可以使用 -n 选项禁止域名解析。

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

8. 打印网络接口

netstat 也能打印网络接口信息,-i 选项就是为这个功能而生。

$ netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0     31611      0      0 0         27503      0      0      0 BMRU
lo        65536 0      2913      0      0 0          2913      0      0      0 LRU

上面输出的信息比较原始。我们将 -e 选项和 -i 选项搭配使用,可以输出用户友好的信息。

$ netstat -ie
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:16:36:f8:b2:64
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::216:36ff:fef8:b264/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:31682 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27573 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:29637117 (29.6 MB)  TX bytes:4590583 (4.5 MB)
          Interrupt:18 Memory:da000000-da020000
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2921 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2921 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:305297 (305.2 KB)  TX bytes:305297 (305.2 KB)

上面的输出信息与 ifconfig 输出的信息一样。

9. netstat 持续输出

我们可以使用 netstat 的 -c 选项持续输出信息。

$ netstat -ct

这个命令可持续输出 TCP 协议信息。

10. 显示多播组信息

选项 -g 会输出 IPv4 和 IPv6 的多播组信息。

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth0            1      224.0.0.251
eth0            1      all-systems.mcast.net
lo              1      ip6-allnodes
lo              1      ff01::1
eth0            1      ff02::fb
eth0            1      ff02::1:fff8:b264
eth0            1      ip6-allnodes
eth0            1      ff01::1
wlan0           1      ip6-allnodes
wlan0           1      ff01::1

更多用法

目前为止我们列出了 netstat 的基本用法,现在让我们一起来 geek 吧~

打印 active 状态的连接

active 状态的套接字连接用 “ESTABLISHED” 字段表示,所以我们可以使用 grep 命令获得 active 状态的连接:

$ netstat -atnp | grep ESTA
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 192.168.1.2:49156       173.255.230.5:80        ESTABLISHED 1691/chrome
tcp        0      0 192.168.1.2:33324       173.194.36.117:443      ESTABLISHED 1691/chrome

配合 watch 命令监视 active 状态的连接:

$ watch -d -n0 "netstat -atnp | grep ESTA"

查看服务是否在运行

如果你想看看 http,smtp 或 ntp 服务是否在运行,使用 grep。

$ sudo netstat -aple | grep ntp
udp        0      0 enlightened.local:ntp   *:*                                 root       17430       1789/ntpd
udp        0      0 localhost:ntp           *:*                                 root       17429       1789/ntpd
udp        0      0 *:ntp                   *:*                                 root       17422       1789/ntpd
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*                              root       17432       1789/ntpd
udp6       0      0 ip6-localhost:ntp       [::]:*                              root       17431       1789/ntpd
udp6       0      0 [::]:ntp                [::]:*                              root       17423       1789/ntpd
unix  2      [ ]         DGRAM                    17418    1789/ntpd

从这里可以看到 ntp 服务正在运行。使用 grep 命令你可以查看 http 或 smtp 或其它任何你想查看的服务。

好了,netstat 的大部分功能都介绍过了,如果你想知道 netstat 更高级的功能,阅读它的手册吧(man netstat)。

欢迎在下面留下你的反馈和建议。


via: http://www.binarytides.com/linux-netstat-command-examples/

译者:bazz2 校对:wxy

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

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

Linux:Linux who 命令 – 显示系统登录者

作为一名系统管理员,我们需要弄清楚在一个特定的时间点都有谁活跃在系统上。必须严密监视我们的服务器。但是,我们当然不可能一天24小时都盯着系统。在linux系统中,我们可以使用who命令查看登录者信息。

Linux:Linux who 命令 – 显示系统登录者
Linux:Linux who 命令 – 显示系统登录者

什么是 who 命令

who命令能够打印 当前都有谁登录到系统中 的相关信息 。who命令只会显示真正登录到系统中的用户。它不会显示那些通过su命令切换用户的登录者。

如何使用who命令

在大多数linux发行版中,who命令都是默认安装上的。想使用该命令,只需在控制台敲命令就行了。不带选项的话,运行该命令产生默认输出。

$ who

如何理解输出:

  • 第一列显示用户名称
  • 第二列显示用户连接方式。Tty意味着用户直接连接到电脑上,而pts意味着远程登录。
  • 第三、四列分别显示日期和时间
  • 第五列显示用户登录IP地址。

使用带参数的who命令

Who命令有一些参数用于调整输出。以下是常用的例子。

显示上一次重新启动的时间和日期

使用 -b 选项

$ who -b

可以看到系统启动是在2013年12月21日,下午3:52。

显示初始化进程的当前运行级别

使用 -r 选项,who命令会打印出初始化进程的当前运行级别

$ who -r

输出显示2013年12月21日,下午3:52系统以 级别2 开始运行。

为每一列添加标题

使用 -H 选项为每一列添加标题

$ who -H

只打印当前运行终端的相关信息

可以使用-m选项。

$ who -m

对当前登录用户数量计数

如果系统同时有多人登录在线,-q 选项协助你完成计数功能。

$ who -q

附加空闲时间和PID信息

默认情况下,who命令不会打印空闲时间和PID信息。如果打算显示这些信息,使用-u选项。不要忘记使用 -H选项让显示的信息更加简单易读。

$ who -u -H

空闲时间 包含了最近最后一次活动以来消逝的时间. 所以,00:13 意思是 用户leni已经13分钟没执行过命令了. (.)符号 是指该终端过去的一分钟有过活动。在那期间,我们称之为 “current” 。PID 是用户shell程序的进程ID号。

显示登录进程

使用-l选项

$ who -l

第一列只显示系统登录守护进程的名字。上面截图中的数字 967, 971等是进程ID。

显示所有信息

使用-a选项会显示所有信息。例如:

$ who -a
Linux:Linux who 命令 – 显示系统登录者
Linux:Linux who 命令 – 显示系统登录者

总结

你会发现 who 命令跟 w 命令在某些方面有些相像。不要为此感到疑惑,为什么linux要实现这些在功能上相近的命令。你可以使用你觉得最适合你的或者适用于某种场合的命令。请查阅who命令手册了解更多详细信息。


via: http://linoxide.com/linux-command/linux-who-command/

译者:l3b2w1 校对:Caroline

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

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

Linux:Linux下Nagios的安装与配置

Nagios是企业普遍使用的最具影响力的网络信息监视系统之一,它可以动态监视指定的网络状态,并在状态异常时发出警告音或邮件报警通知运维人员。监控的类型和警报定时器是完全可定制的。

Nagios的另一强大功能是它能同时监测主机和服务。例如,它可以同时监测到IP地址和TCP/UDP端口号。为进一步阐述此功能,我们假定有台需要监测的web服务器,Nagios可运用在服务器上基于IP/服务器名运行ping命令的方法检测服务器是否在线,同时当服务器的RTT(往返时延)增加时,Nagios会随时告警。另外,Nagios还能检测TCP的80端口(web服务器)是否可达,比如可能出现服务器在线但Apache/IIS没有响应的情况。

而基于Nagios的第三方监测工具如Centreon, FAN , op5 Monitor 在界面设计,自动化运行和技术支持方面在独立的Nagios引擎基础上提供了相应的补充。

本段教程将展示Linux下Nagios的安装与配置.

Debian或Ubuntu下Nagios的安装

Debian系统用户使用apt-get命令就可安装Nagios:

root@mrtg:~# apt-get install nagios3

Nagios安装过程中可以设置邮件服务器,安装后也可以进行自定义设置。

提示:为使Nagios可正常发送邮件通知,需正确配置SMTP。

Linux:Linux下Nagios的安装与配置
Linux:Linux下Nagios的安装与配置

可以看到Nagios支持多种邮件传送方式。最常见的莫过于服务器(Internet Site)直接向接收者发送邮件,另一种常见的形式是用智能主机或中继服务器,将邮件传送至中继邮件服务器,然后它负责将邮件传送给接收者。

进行下一步操作时服务器的域名需要包含进去。

最后,设置一下Nagios管理员‘nagiosadmin’的密码,用户可以之后自行修改密码。

Linux:Linux下Nagios的安装与配置
Linux:Linux下Nagios的安装与配置

CentOS或RHEL下Nagios的安装

使用yum命令来安装,建立repoforge库之后运行如下yum命令:

[root@mrtg ~]# yum install nagios nagios-plugins

监测需求

本段教程中,我们希望完成以下监测内容:

  1. 每三分钟监测一次所有Linux服务器。
  2. 每三分钟监测一次所有思科路由器。
  3. 所有的邮件告警集中发送至sentinel@example.tst
  4. 发出告警前Nagios都将进行3次验证以确保问题确有发生。
  5. 当设备的往返时延超过100ms并且/或包丢失量超过20%将发出邮件告警。

余下的教程将指导您如何在Linux系统中配置Nagios。

Ubuntu下Nagios的配置

明确Nagios配置文件的地址至关重要,以下路径指明了Debian系统下Nagios的配置文件地址。

/etc/nagios-plugins     实现监测功能的专有脚本存放地址
/etc/nagios3    添加主机、服务,定义检测和定时器的配置文件
/usr/lib/nagios/plugins     用于监测的可执行文件

接下来的步骤相互关联,由此开始定义主机,主机组及向主机组添加服务操作。

添加主机模板

我们对同一类型的主机定义了对应的模板,这里使用安装文件作举例说明。

首先,为Linux设备定义主机模板。

root@mrtg:~# cd /etc/nagios3/conf.d
root@mrtg:/etc/nagios3/conf.d/# cp generic-host_nagios2.cfg linux-server.cfg

如下编辑linux-server.cfg。需要修改部分已经标出。

root@mrtg:/etc/nagios3/conf.d/# vim linux-server.cfg

define host{
name                        linux-server    ; 名称,需修改
notifications_enabled       1
event_handler_enabled       1
flap_detection_enabled      1
failure_prediction_enabled  1
process_perf_data           1
retain_status_information   1
retain_nonstatus_information    1
check_command               example-host-check  ; 检查所用脚本,需修改
check_interval              3       ; 连续检查的间隔,需修改
max_check_attempts          3       ; 产生邮件告警前的自检次数,需修改
notification_interval       0
notification_period 24x7
notification_options        d,u,r
contact_groups              admins  ; 邮件将要发送至的组,需修改
register0
}

接下来,为Cisco设备定义主机模板。

root@mrtg:/etc/nagios3/conf.d/# cp linux-server.cfg cisco-device.cfg

如下修改cisco-device.cfg。需要修改部分已经标出。

root@mrtg:/etc/nagios3/conf.d/# vim cisco-device.cfg

define host{
name                        cisco-device    ;名称,需修改
notifications_enabled       1
event_handler_enabled       1
flap_detection_enabled      1
failure_prediction_enabled  1
process_perf_data           1
retain_status_information   1
retain_nonstatus_information    1
check_command               example-host-check  ; 检查时使用的脚本,需修改
check_interval              3   ; 连续检查间隔,需修改
max_check_attempts          3   ; 产生邮件告警前的自检次数,需修改
notification_interval       0
notification_period         24x7
notification_options        d,u,r
contact_groups              admins  ; 邮件将要发至的组,需修改
register                    0
}

添加主机

现在已定义主机模板,就可以添加需要监测的主机。以默认的文件作例子展示如下内容。

root@mrtg:/etc/nagios3/conf.d/# cp localhost_nagios2.cfg example.cfg
root@mrtg:/etc/nagios3/conf.d/# vim example.cfg

# Host 1
define host{
use                     linux-server    ; 使用的主机模板名
host_name               our-server      ; nagios使用的主机名
alias                   our-server
address                 172.17.1.23     ; 主机的IP地址
}
# Host 2
define host{
use                     cisco-device    ; 使用的主机模板名
host_name               our-router      ; nagios使用的主机名
alias                   our-router
address                 172.17.1.1      ; 主机的IP地址
}

主机组定义

当有多个主机时,为方便管理,建议将相似的主机组成一组。

root@mrtg:/etc/nagios3/conf.d/# vim hostgroups_nagios2.cfg

define hostgroup {
hostgroup_name  linux-server    ; 主机组名
alias           Linux Servers
members         our-server      ; 组员列表
}
define hostgroup {
hostgroup_name  cisco-device    ; 主机组名
alias           Cisco Devices
members         our-server      ; comma separated list of members
}

定义服务

首先,定义一个服务example-host-check:当往返时延达到100ms预警值并且有20%包丢失时发出警告,而紧急告警设置为5000ms且包丢失比率为100%,只执行一个IPv4的ping请求检测。

root@mrtg:~# vim /etc/nagios-plugins/config/ping.cfg

define command{
      command_name    example-host-check
      command_line    /usr/lib/nagios/plugins/check_ping -H '$HOSTADDRESS$' -w 100,20% -c 5000,100% -p 1 -4
}

然后,将命令关联至主机组。

root@mrtg:/etc/nagios3/conf.d/# vim services_nagios2.cfg

define service {
hostgroup_name            linux-server
service_description       Linux Servers
check_command             example-host-check
use                       generic-service
notification_interval     0 ; 初始化设置为0
}
define service {
hostgroup_name            cisco-device
service_description       Cisco Devices
check_command             example-host-check
use                       generic-service
notification_interval     0 ; 初始化设置为0
}

联系人定义

进行如下定义将发送邮件需要的地址添加至Nagios。

root@mrtg:/etc/nagios3/conf.d/# vim contacts.cfg

define contact{
contact_name                    root
alias                           Root
service_notification_period     24x7
host_notification_period        24x7
service_notification_options    w,u,c,r
host_notification_options       d,r
service_notification_commands   notify-service-by-email
host_notification_commands      notify-host-by-email
email                           root@localhost, sentinel@example.tst
}

最后,试运行初始化检测是否有配置错误。如果没有错误,Nagios开始安全运行。

root@mrtg:~# nagios -v /etc/nagios3/nagios.cfg
root@mrtg:~# service nagios3 restart

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

Linux:在 CentOS 6.4(64位) 安装 docker.io

Docker.io 是轻量级的“容器引擎+映像仓库”,在LXC(linux轻量级容器)的基础上构建,可以运行任何应用程序。

Linux:在 CentOS 6.4(64位) 安装 docker.io
Linux:在 CentOS 6.4(64位) 安装 docker.io

docker.io的核心层由以下几个部分组成:

1、可执行程序,“/usr/bin/docker”

2、docker.io网站上有一系列创建好的操作系统和应用程序映像

3、AUFS(另一个统一文件系统)来实现文件系统的快照,文件变化,控制只读或读写的需求。

4、LXC(Linux轻量级容器)

5、Cgroups(各种资源和命名空间的管理)

在本文写作的时候,最新版本是0.5.3,但目前开发很活跃,一些功能和特性可能在新版本中会发生变化。

按下面的步骤安装docker.io:

0、安装centos6.x

1、因为selinux和LXC有冲突,所以需要禁用

[root@localhost ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

2、配置Fedora EPEL 源

sudo yum install http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm

3、配置hop5.in源

cd /etc/yum.repos.d
sudo wget http://www.hop5.in/yum/el6/hop5.repo

4、安装docker-io

[root@localhost ~]# yum install docker-io
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: centos.excellmedia.net
 * epel: kartolo.sby.datautama.net.id
 * extras: centos.excellmedia.net
 * updates: centos.excellmedia.net
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package docker-io.x86_64 0:0.5.3-4.el6 will be installed
--> Processing Dependency: lxc >= 0.8.0 for package: docker-io-0.5.3-4.el6.x86_64
--> Processing Dependency: kernel-ml-aufs >= 3.10.5 for package: docker-io-0.5.3-4.el6.x86_64
--> Running transaction check
---> Package kernel-ml-aufs.x86_64 0:3.10.5-3.el6 will be installed
---> Package lxc.x86_64 0:0.8.0-3.el6 will be installed
--> Processing Dependency: liblxc.so.0()(64bit) for package: lxc-0.8.0-3.el6.x86_64
--> Running transaction check
---> Package lxc-libs.x86_64 0:0.8.0-3.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
============================================================================================
 Package                   Arch              Version                  Repository       Size
============================================================================================
Installing:
 docker-io                 x86_64            0.5.3-4.el6              hop5            1.2 M
Installing for dependencies:
 kernel-ml-aufs            x86_64            3.10.5-3.el6             hop5             33 M
 lxc                       x86_64            0.8.0-3.el6              hop5             81 k
 lxc-libs                  x86_64            0.8.0-3.el6              hop5             75 k
Transaction Summary
============================================================================================
Install       4 Package(s)
Total download size: 34 M
Installed size: 159 M
Is this ok [y/N]: y
Downloading Packages:
(1/4): docker-io-0.5.3-4.el6.x86_64.rpm                              | 1.2 MB     00:03
(2/4): kernel-ml-aufs-3.10.5-3.el6.x86_64.rpm                        |  33 MB     00:33
(3/4): lxc-0.8.0-3.el6.x86_64.rpm                                    |  81 kB     00:00
(4/4): lxc-libs-0.8.0-3.el6.x86_64.rpm                               |  75 kB     00:00
--------------------------------------------------------------------------------------------
Total                                                       896 kB/s |  34 MB     00:39
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : lxc-libs-0.8.0-3.el6.x86_64                                              1/4
  Installing : lxc-0.8.0-3.el6.x86_64                                                   2/4
  Installing : kernel-ml-aufs-3.10.5-3.el6.x86_64                                       3/4
  Installing : docker-io-0.5.3-4.el6.x86_64                                             4/4
  Verifying  : kernel-ml-aufs-3.10.5-3.el6.x86_64                                       1/4
  Verifying  : lxc-0.8.0-3.el6.x86_64                                                   2/4
  Verifying  : lxc-libs-0.8.0-3.el6.x86_64                                              3/4
  Verifying  : docker-io-0.5.3-4.el6.x86_64                                             4/4
Installed:
  docker-io.x86_64 0:0.5.3-4.el6
Dependency Installed:
  kernel-ml-aufs.x86_64 0:3.10.5-3.el6               lxc.x86_64 0:0.8.0-3.el6
  lxc-libs.x86_64 0:0.8.0-3.el6
Complete!
[root@localhost ~]#

5、检查安装情况

[root@localhost ~]# docker -h
Usage of docker:
  -D=false: Debug mode
  -H=[unix:///var/run/docker.sock]: tcp://host:port to bind/connect to or unix://path/to/socket to use
  -api-enable-cors=false: Enable CORS requests in the remote api.
  -b="": Attach containers to a pre-existing network bridge. Use 'none' to disable container networking
  -d=false: Daemon mode
  -dns="": Set custom dns servers
  -g="/var/lib/docker": Path to graph storage base dir.
  -p="/var/run/docker.pid": File containing process PID
  -r=false: Restart previously running containers

6、要想docker正常运行还需要在/etc/fstab里增加cgroup文件系统

[root@localhost ~]# echo "none                    /sys/fs/cgroup          cgroup  defaults        0 0" >> /etc/fstab
[root@localhost ~]# mount /sys/fs/cgroup

只有重新启动才能挂载/sys/fs/cgroup(因为当前运行的内核不支持cgroup),所以上面挂载的命令也可以不执行,但系统需要重新启动。

7、重启系统,选择“3.10.5-3.el6.x86_64”内核

8、系统启动后,确认当前运行的内核

[root@localhost ~]# uname -r
3.10.5-3.el6.x86_64
[root@localhost ~]# grep aufs /proc/filesystems
nodev   aufs

9、以守护模式运行docker.io(在一个新的终端里)

[root@localhost ~]# docker -d
2013/08/21 07:47:07 WARNING: Your kernel does not support cgroup swap limit.
2013/08/21 07:47:07 Listening for HTTP on /var/run/docker.sock (unix)

10、在centos6.4容器里输出hello world

[root@localhost ~]# docker run centos:6.4 echo "hello world"
2013/08/21 07:48:41 POST /v1.4/containers/create
2013/08/21 07:48:41 POST /v1.4/containers/c6bc9e80097e/start
2013/08/21 07:48:41 POST /v1.4/containers/c6bc9e80097e/attach?logs=1&stderr=1&stdout=1&stream=1
hello world

11、从容器里测试ping

[root@localhost ~]# docker -dns '8.8.8.8' run centos:6.4 ping -c 3 yahoo.com
2013/08/21 08:02:15 POST /v1.4/containers/create
2013/08/21 08:02:15 POST /v1.4/containers/c40a1244f9bc/start
2013/08/21 08:02:15 POST /v1.4/containers/c40a1244f9bc/attach?logs=1&stderr=1&stdout=1&stream=1
PING yahoo.com (98.138.253.109) 56(84) bytes of data.
64 bytes from ir1.fp.vip.ne1.yahoo.com (98.138.253.109): icmp_seq=1 ttl=48 time=323 ms
64 bytes from ir1.fp.vip.ne1.yahoo.com (98.138.253.109): icmp_seq=2 ttl=48 time=329 ms
64 bytes from ir1.fp.vip.ne1.yahoo.com (98.138.253.109): icmp_seq=3 ttl=49 time=302 ms
--- yahoo.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2304ms
rtt min/avg/max/mdev = 302.032/318.318/329.656/11.807 ms

常见错误:

“DNS/Networking Errors inside the docker”

[root@localhost ~]# docker -dns="8.8.8.8" run centos:6.4 yum install hiphop-php
2013/08/21 07:53:05 POST /v1.4/containers/create
2013/08/21 07:53:05 POST /v1.4/containers/6d9fef14bd1a/start
2013/08/21 07:53:05 POST /v1.4/containers/6d9fef14bd1a/attach?logs=1&stderr=1&stdout=1&stream=1
Loaded plugins: fastestmirror
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"

可以执行下面的命令来重置docker的运行环境,从而解决上述问题。

pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
docker -d

感谢sciurus在创建kernel-ml-aufs的相关文件时付出的辛勤工作。

来源:http://www.oschina.net/translate/nstalling-dockerio-on-centos-64-64-bit

Linux:在Windows上像Unix一样开发

在这篇文章里,我将向大家分享一些软件安装和环境设置方法,这是我最近的实践收获,并对使用效果非常满意。我不能永远待在Linux上开发,但我非常喜欢Linux终端和Linux环境,在开发一些开源软件时,Linux会让我感觉所有的事情变得更容易,所有工具都很好的相互配合,不需要你手工的用绷带把它们绑在一起。

下面这种Windows环境配置能让你轻松的完成日常工作中的大部分Linux简单任务。

我假定你的机器上什么都没安装,现在从头开始…

Linux:在Windows上像Unix一样开发
Linux:在Windows上像Unix一样开发

Linux终端

Windows的cmd基本就是废物…但如果你愿意花时间去找,你能找到很多的可以替代它的软件,最近我就发现了cmder这个东西,它把conemu,msysgit 和 clink 打包在一起,让你无需配置就能使用一个真正干净的Linux终端!它甚至还附带了漂亮的ol’ monokai配色主题。

这是一个款可移植的软件,你可以把它放在系统的任何一个目录里。它里面有一个bin/目录,你可以把想要的任何执行命令、文件都放在这里目录里,从终端里可以执行它们。

有了cmder,你就有了git,有了一个不错的终端和大多数的linux命令((ls, mv, cp, grep, cat等等。)

Git

cmder里已经有它了!省了很多事,不是吗?

Chocolatey软件包管理系统

因为我会大量的使用执行各种命令程序,我就发现Chocolatey真是很好用。

要安装它,你只需要执行

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%chocolateybin

你需要安装xampp吗? cinst xampp.app 就行了!你还可以选择把它安装到哪里,通常,它会被安装到D:xampp目录下。

你需要ruby吗?cinst ruby

Wget

这是一个必不能少的好东西,有很多常用的工具(例如composer)需要用它来进行快速的、简易的安装。

安装它,你只需要执行cinst Wget。

Nano文本编辑器

我真的很喜欢这个能执行快速便捷文本的工具。执行cinst nano,就是你安装它需要所的所有操作!

你需要注意的重要一点是,^W键是关闭tab页,所以,你需要在cmder设置里取消这种快捷键关联。

Vim

你使用Vim?执行cinst vim就行了,当然,所有vim使用者都知道如何安装和配置它…

集成XAMPP(Apache+PHP+MySQL+Perl)

毕竟是在Windows平台上,安装这个集成包要比单独安装apache + mysql简单。

XAMPP安装并不往Windows PATH里添加任何路径信息,所以,如果你想在命令行里运行PHP命令,你需要执行set PATH=%PATH%;D:xamppphp,这是假设你把XAMPP安装到了D:xampp目录里!

这样之后,如果执行php –version你就不会看到错误信息,如果有错误,请检查你的 XAMPP 目录。

另外,如果你打算执行PHP里的pear命令,你会遇到像下面这样的错误:

ERROR: failed to mkdir C:phppeardataAuthAuthFrontend
  ERROR: failed to mkdir C:phppeardocsBenchmarkdoc
  ERROR: failed to mkdir C:phppeardataCacheContainer
  ERROR: failed to mkdir C:phppeardocsCache_Litedocs
  ERROR: failed to mkdir C:phppeardocsCalendardocsexamples
  ERROR: failed to mkdir C:phppeardocsConfigdocs

这是因为XAMPP并没有去主动配置perl,所以,如果你是把XAMPP安装在D:xampp目录下,你需要做这样:

D:,转到这个分区,然后

cd D:xamppphp
pear config-set doc_dir d:xamppphppeardocs
pear config-set cfg_dir d:xamppphppearcfg
pear config-set data_dir d:xamppphppeardata
pear config-set cache_dir d:xamppphppearcache
pear config-set download_dir d:xamppphppeardownload
pear config-set temp_dir d:xamppphppeartemp
pear config-set test_dir d:xamppphppeartests
pear config-set www_dir d:xamppphppearwww

这就行了。

结论

总的来说,我非常喜欢这样改造后的环境,我们会继续的改进它,当然,欢迎提出你的建议 ;) 

[英文原文:Develop on Windows as if it was Unix ] 

via : http://www.aqee.net/develop-on-windows-as-if-it-was-unix/ 

Linux:Linux free 命令 – 显示系统中空闲和已使用的内存

系统管理员必须维护他们服务器的健康运行。其中一个重要的部分就是内存。当服务器内存使用率过高时,它会降低服务器的性能。Linux有一个称为 free 的工具,来监控内存使用率。

Linux:Linux free 命令 - 显示系统中空闲和已使用的内存
Linux:Linux free 命令 – 显示系统中空闲和已使用的内存

free 命令是什么

free 命令是一个显示系统中空闲和已用内存大小的工具。free 命令的输出和 top 命令相似。大多数Linux发行版已经含有 free 命令。

如何运行 free

想要运行,只需在控制台输入free 即可。不带选项运行会显示一个以KB为单位的默认输出。

$ free

free默认视图

从上面的截图我们看到:

内存 (以KB计)

  • Total(全部) : 1026740
  • Used(已用) : 843396
  • Free(可用) : 183344
  • Shared(共享) : 0
  • Buffers(块设备缓存区) : 52704
  • Cached(文件缓存) : 376384

译注:关于Buffers和Cached的区别,来自 http://www.taobaotesting.com/blogs/qa?bid=2265 的一段解释如下:

buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.

cached是用来给文件做缓冲。

那就是说:buffers是用来存储,目录里面有什么内容,权限等等。而cached直接用来记忆我们打开的文件

Swap (以KB计)

  • Total(全部) : 1045500
  • Used(已用) : 3376
  • Free(可用) : 1042124

当你看见 buffer/cache 的空闲空间低或者 swap 的空闲空间低,说明内存需要升级了。这意味这内存利用率很高。请注意 shared(共享)内存列应该被忽略 ,因为它已经被废弃了。

以其它单元显示内存信息

如我们先前提到的,默认 free 会以 KB 为单位显示信息。free 同样提供给我们 b (B), -k (KB), -m (MB), -g (GB) and –tera (TB)这些单位。要显示我们想要的单位,只要选择一个并在 free 后面跟上。下面一个是以 MB 为单位的输出样例。

$ free -m

free命令以MB为单位

这个技巧同样适用于-b, -k, -g 以及 –tera 选项。

以适于人类可读方式显示内存信息

free 同样提供了-h选项,这意味着适于人类可读(译注:系统上可能并不存在-h选项,已被-m取代)。那么这与其它的选项有什么不同呢,如-m(MB)选项? 可见的最大不同是-h选项会在数字后面加上适于人类可读的单位。让我们看一个例子。

$ free -h

人类可读的free

如我们一起看到的,在1,0数字后这里是G(GB)字母。当数字并没有达到GB时,free足够聪明来知道并在每个数字后面跟上合适的单位。后面的M – 数字929告诉我们它有929MB(译注: 原文为929 number tell us its 969 Megabytes,这里应该为输入错误)。

间隔显示 free

作为一个状态检查工具,最好的统计内存利用率的方法是使用延迟间隔。这么做的话,我们可以使用-s选项后面跟上我们想要间隔的N秒数。我们可以在后面合并几个选项来使输出满足我们的需求。假如我们想要每3秒统计一次内存利用率并且适于人类可读,那么就像这样做:

$ free -hs 3
Linux:Linux free 命令 - 显示系统中空闲和已使用的内存
Linux:Linux free 命令 – 显示系统中空闲和已使用的内存

显示高低内存利用率

如果我们想要知道高低内存统计,我们可以使用-l选项。下面是一个例子。

$ free -l

Free 的 低-高 统计

显示 Linux 全部内存

如果我们需要每列的总计信息,我们可以在 free 命令后面跟上 -t 选项。这会在字底部额外加入一行显示。

$ free -t

free命令带总计内存

总结

除了vmstat以外,free 命令也是一个用于统计内存利用率的简单统计工具。用这个你可以快速查看你的 Linux 内存信息。free 命令使用 /proc/meminfo 作为基准来显示内存利用率信息。如往常一样,你可以在控制台下输入 man free 来获取更多关于 free 的信息。


via: http://linoxide.com/linux-command/linux-free-command/

译者:geekpi 校对:Caroline

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

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

Linux:15个 MySQL 基础面试题,DBA 们准备好了吗?

此前我们已经有发表过Linux 面试基础问答之共3篇文章,获得读者的好评,同时我们得到反馈,有些读者希望这种交互式学习方法能够做得更加灵活。心动不如行动,我们这就为您奉上 15个 MySQL 面试题

Linux:15个 MySQL 基础面试题,DBA 们准备好了吗?
Linux:15个 MySQL 基础面试题,DBA 们准备好了吗?

问题1:你如何确定 MySQL 是否处于运行状态?

答案: Debian 上运行命令 service mysql status,在RedHat 上运行命令 service mysqld status。然后看看输出即可。

 

root@localhost:/home/avi# service mysql status
/usr/bin/mysqladmin  Ver 8.42 Distrib 5.1.72, for debian-linux-gnu on i486
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 5.1.72-2
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 1 hour 22 min 49 sec
Threads: 1  Questions: 112138  Slow queries: 1  Opens: 1485  Flush tables: 1  Open tables: 64  Queries per second avg: 22.567.

问题2:如何开启或停止 MySQL 服务?

答案:运行命令 service mysqld start 开启服务;运行命令 service mysqld stop 停止服务。

 

root@localhost:/home/avi# service mysql stop
Stopping MySQL database server: mysqld.
root@localhost:/home/avi# service mysql start
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..

问题3:如何通过 Shell 登入 MySQL?

答案:运行命令 mysql -u root -p

 

root@localhost:/home/avi# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 207
Server version: 5.1.72-2 (Debian)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql>

问题4:如何列出所有数据库?

答案:运行命令 show databases;

 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| a1                 |
| cloud              |
| mysql              |
| phpmyadmin         |
| playsms            |
| sisso              |
| test               |
| ukolovnik          |
| wordpress          |
+--------------------+
10 rows in set (0.14 sec)

问题5: 如何切换到某个数据库并在上面工作?

答案:运行命令 use database_name; 进入名为 database_name 的数据库。

 

mysql> use cloud;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>

问题6:如何列出某个数据库内所有表?

答案:在当前数据库运行命令 show tables;

 

mysql> show tables;
+----------------------------+
| Tables_in_cloud            |
+----------------------------+
| oc_appconfig               |
| oc_calendar_calendars      |
| oc_calendar_objects        |
| oc_calendar_repeat         |
| oc_calendar_share_calendar |
| oc_calendar_share_event    |
| oc_contacts_addressbooks   |
| oc_contacts_cards          |
| oc_fscache                 |
| oc_gallery_sharing         |
+----------------------------+
10 rows in set (0.00 sec)

问题7:如何获取表内所有 Field 对象的名称和类型?

答案:运行命令 describe table_name;

 

mysql> describe oc_users;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| uid      | varchar(64)  | NO   | PRI |         |       |
| password | varchar(255) | NO   |     |         |       |
+----------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

问题8:如何删除表?

答案:运行命令 drop table table_name;

 

mysql> drop table lookup;
Query OK, 0 rows affected (0.00 sec)

问题9:如何删除数据库?

答案:运行命令 drop database database-name;

 

mysql> drop database a1;
Query OK, 11 rows affected (0.07 sec)

问题10:如何查看表内所有数据?

答案:运行命令 select * from table_name;

 

mysql> select * from engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| ENGINE     | SUPPORT | COMMENT                                                        | TRANSACTIONS | XA   | SAVEPOINTS |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.00 sec)

问题11:如何从表(比如 oc_users )中获取一个 field 对象(比如 uid)的所有数据?

答案:运行命令 select uid from oc_users;

 

mysql> select uid from oc_users;
+-----+
| uid |
+-----+
| avi |
+-----+
1 row in set (0.03 sec)

问题12:假设你有一个名为 ‘xyz’ 的表,它存在多个字段,如 ‘createtime’ 和 ‘engine’。名为 engine 的字段由 ‘Memoty’ 和 ‘MyIsam’ 两种数值组成。如何只列出 ‘createtime’ 和 ‘engine’ 这两列并且 engine 的值为 ‘MyIsam’?

答案:运行命令 select create_time, engine from xyz where engine = ”MyIsam”;

 

mysql> select create_time, engine from xyz where engine="MyIsam";
+---------------------+--------+
| create_time         | engine |
+---------------------+--------+
| 2013-12-15 13:43:27 | MyISAM |
| 2013-12-15 13:43:27 | MyISAM |
| 2013-12-15 13:43:27 | MyISAM |
| 2013-12-15 13:43:27 | MyISAM |
| 2013-12-15 13:43:27 | MyISAM |
| 2013-12-15 13:43:27 | MyISAM |
| 2013-12-15 13:43:27 | MyISAM |
| 2013-12-15 13:43:27 | MyISAM |
| 2013-10-23 14:56:38 | MyISAM |
| 2013-10-23 14:56:38 | MyISAM |
| 2013-10-23 14:56:38 | MyISAM |
| 2013-10-23 14:56:38 | MyISAM |
| 2013-10-23 14:56:38 | MyISAM |
| 2013-10-23 14:56:38 | MyISAM |
| 2013-10-23 14:56:38 | MyISAM |
+---------------------+--------+
132 rows in set (0.29 sec)

问题13:如何列出表 ‘xrt’ 内 name 域值为 ‘tecmint’,web_address 域值为 ‘tecmint.com’ 的所有数据?

答案:运行命令 select * from xrt where name = “tecmint” and web_address = “tecmint.com”;

 

mysql> select  * from xrt where name = "tecmint" and web_address = “tecmint.com”;
+---------------+---------------------+---------------+
| Id                  | name                   | web_address |
+---------------+---------------------+----------------+
| 13                 |  tecmint               | tecmint.com  |
+---------------+---------------------+----------------+
| 41                 |  tecmint               | tecmint.com  |
+---------------+---------------------+----------------+

问题14:如何列出表 ‘xrt’ 内 name 域值不为 ‘tecmint’,web_address 域值为 ‘tecmint.com’ 的所有数据?

答案:运行命令 select * from xrt where name != “tecmint” and web_address = “tecmint.com”;

 

mysql> select * from xrt where name != ”tecmint” and web_address = ”tecmint.com”;
+---------------+---------------------+---------------+
| Id            | name                | web_address   |
+---------------+---------------------+----------------+
| 1173          |  tecmint            | tecmint.com   |
+---------------+---------------------+----------------+

问题15:如何知道表内行数?

答案:运行命令 select count(*) from table_name;

 

mysql> select count(*) from Tables;
+----------+
| count(*) |
+----------+
|      282 |
+----------+
1 row in set (0.01 sec)

以上是文章的全部内容。这篇‘Linux 面试题’对您有任何帮助吗?别忘了在下面留言,写出您的宝贵意见。


via: http://www.tecmint.com/basic-mysql-interview-questions-for-database-administrators/

译者:bazz2 校对:Caroline

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

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

Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上

几个星期前,我们展示了如何在Microsoft Windows中移动Dropbox文件夹到一个移动硬盘。该教程获得一致好评。对于使用Ubuntu操作系统的用户来说同样适用。

Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上
Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上

这个简短的教程将告诉你如何在Ubuntu下轻松地将Dropbox文件夹移动到另一个位置。

我写这些教程的原因是,几个月前我收到了一台全新的只有128GB SSD硬盘的惠普EliteBook笔记本电脑。我爱这台快速且性能良好的电脑。

它的缺点是,本地存储太小,无法处理我所有的东西。除了我的本地应用程序和数据,我在我的Dropbox也有几个GB大小的文件。

所以,当我同步我的Dropbox帐号并下载它的所有内容,我的HP EliteBook,完全消耗掉整个本地磁盘。

唯一的解决办法是,不使用本地存储磁盘直接将Dropbox文件夹移动到一个外部的移动硬盘上中。

如果你发现自己也有类似的问题,无论是使用Windows还是Ubuntu,请按照下列步骤,以腾出本地磁盘上的空间。在Ubuntu中开始移动Dropbox文件夹,首先插入外部存储器。(译注:本例并非真实的外部移动硬盘,而是在vbox测试环境中测试。)

插入磁盘后,进入Unity Dash 并搜索Disks。打开它并选择你希望适用的外部驱动器,点击 Tools –> Format

Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上
Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上

下一步,格式化驱动器的文件系统为NTFS格式。

Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上
Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上

格式化之后,选择 Tools –> Mount Options

Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上
Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上

然后指定相应的选项,如下图所示:安装点(准备将Dropbox的文件夹放到这里),文件系统类型,以及下面的图片中的其他选项。保存它时,你就大功告成了。

Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上
Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上

在此之后,退出Dropbox的服务并在默认位置(/home/用户名/Dropbox)删除当前的Dropbox文件夹(译注:在Dropbox完全移动好之前,我不建议你如本文一样删除原来的文件夹,而是将文件夹改名,要不万一出错呢?)。当您再次启动Dropbox的服务时,它会提醒你缺少的文件夹。点击重新链接按钮以指定新的位置(就是你的移动硬盘上的新位置)。

Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上
Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上

当提示选择安装类型,选择‘Advanced’并指定位置安装Dropbox文件夹。

Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上
Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上

设置完毕后,重新启动,如果Dropbox的不会提示你缺少文件夹,那么就成功了。

Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上
Linux:在Ubuntu中将Dropbox文件夹放移动硬盘上

教程就是这样!

如果没有安装NTFS-3G,运行这个命令来安装它。

sudo apt-get install ntfs-3g

via: http://www.liberiangeek.net/2013/12/move-dropboxs-folder-to-an-external-drive-in-ubuntu/

译者:乌龙茶 校对:wxy

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

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

Linux:每日Ubuntu小技巧 – 在Ubuntu上面安装VMware Workstation

VMware Workstation是一款“第二类(Type-2)”商用虚拟化软件。被称为“第二类”是因为它是运行在现有的操作系统之上的,而正在运行的计算机则成为其宿主机。

你可以使用VMware Workstation在宿主机上同时运行各自具有独立操作系统的多个客户机。客户机可以是32位或者64位的操作系统。VMware Workstation支持Windows,Mac OS X,Solaris和许多其他系统。

Linux:每日Ubuntu小技巧 - 在Ubuntu上面安装VMware Workstation
Linux:每日Ubuntu小技巧 – 在Ubuntu上面安装VMware Workstation

这篇简短的教程将会教你怎么在Ubuntu上面安装VMware Workstation。

因为这个软件是商业软件,因此你必须要拥有一个可用的许可证才能够使用它。你可以从下载页面 下载30天免费体验版来体验它。如果你想注册,获得并且验证一个许可证即可。

想要在Ubuntu上开始安装VMware Workstation,首先需要运行如下命令升级Ubuntu。

sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove

升级完电脑后,运行如下命令来让Ubuntu为安装做好准备。

sudo apt-get install build-essential linux-headers-`uname -r`

然后,下载VMware Workstation。接着进入~/Downloads 目录,我的Firefox把下载的文件保存在这里。(译注:如果你的Ubuntu是中文版,该路径默认则为~/下载,下述命令也要相应变为 “cd 下载”)

cd Downloads

如果下载的包是.zip格式的,则运行如下命令解压下载的包,否则跳过这一步。

unzip VMware-Workstation-Full*.zip

然后,运行如下命令给文件加上可执行权限。

chmod +x VMware-Workstation-Full*.bundle

最后,运行下面的命令开始安装。

sudo ./VMware-Workstation-Full*.bundle

在完成安装前按照向导进行选择。

当所有工作完成后,从Dash打开它并开始创建客户机。

Linux:每日Ubuntu小技巧 - 在Ubuntu上面安装VMware Workstation
Linux:每日Ubuntu小技巧 – 在Ubuntu上面安装VMware Workstation

你可以从所有的类型中选择创建各种客户机,包括Windows,Linux,Nevell,Solaris等。

Linux:每日Ubuntu小技巧 - 在Ubuntu上面安装VMware Workstation
Linux:每日Ubuntu小技巧 – 在Ubuntu上面安装VMware Workstation

Enjoy!


via: http://www.liberiangeek.net/2013/12/daily-ubuntu-tips-install-vmware-workstation-in-ubuntu/

译者:SCUSJS 校对:Mr小眼儿

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

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

Linux:Linux中显示系统中USB信息的lsusb命令

通用串行总线USB)被设计成为连接计算机外设的标准,如键盘、鼠标、打印机、数码相机、便携式媒体播放器、磁盘和网络适配器等等 – 来源:Wikipedia

Linux:Linux中显示系统中USB信息的lsusb命令
Linux:Linux中显示系统中USB信息的lsusb命令

它已经成为了一个工业标准,现在很难看到一个没有USB口的计算机了。USB闪存的使用使得它更加流行。在Linux上,我们可以使用lsusb来列出USB设备和它的属性。

什么是lsusb

在它的手册上,lsusb定义成:

显示系统中以及连接到系统的USB总线信息的工具。

如何运行lsusb? 要运行lsusb,你可以直接在控制台输入lsusb。

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 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 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 17ef:4811 Lenovo Integrated Webcam [R5U877]
Bus 008 Device 002: ID 0a5c:217f Broadcom Corp. Bluetooth Controller

lsusb会显示驱动和内部连接到你系统的设备。

下面介绍如何理解输出。我抓取了上面输出的最后一行:

Bus 008 Device 002 : ID 0a5c:217f Broadcom Corp. Bluetooth Controller
  • Bus 008 : 指明设备连接到哪(哪条总线)
  • Device 002 : 表明这是连接到总线上的第二台设备
  • ID : 设备的ID
  • Broadcom Corp. Bluetooth Controller :生产商名字和设备名

我们同样可以看到在我们的系统中同时使用了USB2.0 root hub驱动和USB 1.1 root hub驱动。

dmesg命令同样可以看到。下面是一个例子。

$ dmesg |grep -i usb
[ 0.353138] usbcore: registered new interface driver usbfs
[ 0.353150] usbcore: registered new interface driver hub
[ 0.353182] usbcore: registered new device driver usb
[ 0.730026] ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
[ 0.730116] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1
[ 0.748019] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00
[ 0.748169] hub 1-0:1.0: USB hub found
[ 0.748336] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2
[ 0.768019] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[ 0.768147] hub 2-0:1.0: USB hub found
[ 0.768236] ohci_hcd: USB 1.1 ‘Open’ Host Controller (OHCI) Driver
[ 0.768251] uhci_hcd: USB Universal Host Controller Interface driver

如何列出USB详细信息

使用-v选项来开启。下面是一个例子。

$ lsusb -v
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 5
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0×83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0×0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0×03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0×0040 1x 64 bytes
bInterval 1

找出连接了多少USB设备

使用下面的命令

$ find /dev/bus

接着你会看到像下面的输出:

/dev/bus
/dev/bus/usb
/dev/bus/usb/008
/dev/bus/usb/008/002
/dev/bus/usb/008/001
/dev/bus/usb/007
/dev/bus/usb/007/001
/dev/bus/usb/006
/dev/bus/usb/006/001
/dev/bus/usb/005
/dev/bus/usb/005/001
/dev/bus/usb/004
/dev/bus/usb/004/001
/dev/bus/usb/003
/dev/bus/usb/003/001
/dev/bus/usb/002
/dev/bus/usb/002/004
/dev/bus/usb/002/003
/dev/bus/usb/002/001
/dev/bus/usb/001
/dev/bus/usb/001/001

使用lsusb 命令 的-D 选项,你可以打印特定设备的详细信息。下面是一个博通蓝牙设备的示例。

$ lsusb -D /dev/bus/usb/008/002
Device: ID 0a5c:217f Broadcom Corp. Bluetooth Controller
Couldn’t open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 224 Wireless
bDeviceSubClass 1 Radio Frequency
bDeviceProtocol 1 Bluetooth
bMaxPacketSize0 64
idVendor 0x0a5c Broadcom Corp.
idProduct 0x217f Bluetooth Controller
bcdDevice 3.60
iManufacturer 1
iProduct 2
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 216
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0×81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0×0010 1x 16 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0×82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0×0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0×02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0×0040 1x 64 bytes
bInterval 1

找出大容量存储设备

既然 lsusb -v给我们很详细的信息,那么你或许会错过一些信息。我们可以使用grep命令指定特定的信息。

大容量存储设备会有一个供应商名和ID。我们可以用它作为一个起点。

$ lsusb -v |grep -Ei ‘(idVendor|Mass Storage)’
idVendor 0×1005 Apacer Technology, Inc.
bInterfaceClass 8 Mass Storage

你可以看到,我们系统上有一个来自Apacer Technology, Inc的USB大容量存储设备。

以树层级结构输出USB设备

使用 -t选项满足这个要求

$ lsusb -t
/: Bus 08.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 07.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/6p, 480M
|__ Port 1: Dev 4, If 0, Class=stor., Driver=usb-storage, 480M
|__ Port 6: Dev 3, If 0, Class=’bInterfaceClass 0x0e not yet handled’, Driver=uvcvideo, 480M
|__ Port 6: Dev 3, If 1, Class=’bInterfaceClass 0x0e not yet handled’, Driver=uvcvideo, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/6p, 480M

数字12M和480M指USB类型的传输速率

  • 12M 意味着 USB 1.0 / 1.1的速率是 12Mbit/s
  • 480M 意味着 USB 2.0的速率是 480Mbit/s

如果你找到5.0G,那意味这你有USB 3.0类型接口。它有5.0Gbit/s的传输速率。Linux从/var/lib/usbutils/usb.ids识别USB设备的详细信息。或者你可以访问Linux-USB.org获取最新的USB ID列表。

这些就是lsusb命令的基础。你可以用lsusb命令对你的系统上的USB设备做一个诊断。一般来说,你可以通过lsusb的手册探索命令的更多详细细节。只要输入man lsab来打开它的手册。


via: http://linoxide.com/linux-command/linux-lsusb-command-print-usb/

译者:geekpi 校对:Mr小眼儿

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

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

Linux:如何在Ubuntu 13.10中升级GNOME 到 3.10?

Linux:如何在Ubuntu 13.10中升级GNOME 到 3.10?
Linux:如何在Ubuntu 13.10中升级GNOME 到 3.10?

Ubuntu 13.10 中配备了GNOME 3.8桌面。 尽管它相比Unity是一个可靠稳定以及有特色的替代品,但这个版本还是过时了。

GNOME桌面的最新版本在2013年9月发布,随之而来的是一系列改进的功能、应用程序和可用性的调整。从对高分辨率屏幕的支持到客户端应用窗口上的美化,GNOME 3.10无疑是一个引人注目的升级版本。

好消息是:假设你正在运行Ubuntu 13.10,拥有不错的网络操作和命令行水平,那么你无需继续使用一个过时版本的GNOME。

在Ubuntu 13.10 上如何升级到GNOME 3.10

为了那些爱略过前言直奔主题的读者,我还要重申两点:

要使用本方法安装GNOME 3.10,需运行 Ubuntu 13.10版本。

GNOME 3.10还未在 Ubuntu 13.10上测试,所以升级风险自负。

首先,让我们添加GNOME 3 的PPA到Ubuntu的软件资源中。这个操作可以使用图形界面完成,但使用命令更容易一些。

打开一个新的终端窗口,键入下列命令,在需要时输入你的用户密码:

sudo add-apt-repository ppa:gnome3-team/gnome3-next && sudo apt-get update

添加完PPA并更新包列表后,我们就可以继续,开始安装GNOME 3.10了。运行下列命令,当弹出提示时再次输入你的用户密码:

sudo apt-get update && sudo apt-get install gnome-shell ubuntu-gnome-desktop

获取并安装所有必要的包和组件会花一点时间,所以请耐心一点。

在安装过程中,在终端将会弹出一个提示,要求你选择一种显示管理器,默认使用的是“登录窗口”。

这个决定完全取决于你;UBuntu的Unity Greeter和GNOME的显示管理器都能让你很轻松地在桌面会话之间切换(如果你想保持在Unity界面或者另一个桌面将很方便),但仅仅只有GDM提供给GNOME特定的功能,譬如锁屏通知。

当你确定选择后,使用上下键选择,然后敲击‘确认/返回’键以确认。安装便会继续进行。

增加额外的功能

Linux:如何在Ubuntu 13.10中升级GNOME 到 3.10?
Linux:如何在Ubuntu 13.10中升级GNOME 到 3.10?

GNOME 3.10还有一些不错的新特性和应用-包括GNOME天气,音乐盒及地图 以及其它各种各样的改变。因为并不是所有的特性都足够稳定以致于可以被包含在我们之前添加的GNOME 3 PPA中,所以如果你想使用它们,就需要利用到两个额外的GNOME PPA。

现在,你需要意识到很重要的是,在这些仓库里的一些包据说有稳定性问题。这些问题大多是小问题,譬如应用程序崩溃和损坏。但还是有潜在的可能,导致像使GNOME完全崩溃这样的重大问题。

除开这个警告不说,在终端里打开一个新的选项卡,输入下列命令:

sudo add-apt-repository ppa:gnome3-team/gnome3-staging
sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt-get update && sudo apt-get dist-upgrade

为了添加一些之前提到的很酷的应用,运行这个命令:

sudo apt-get install gnome-weather gnome-music gnome-maps cheese gnome-documents

这样之后,就搞定了!

你可能会想先注销然后重新登录(记得选择“GNOME”会话)以确保改动都已经正确生效了。

细小的差别

如果你在不卸载Unity的情况下安装GNOME 3.10,那么有一些注意事项。

首先,你会发现在系统设置里“Online Accounts”有两个入口。其中,有钥匙图标的是Unity版的,另一个有插孔符号的是GNOME版的。

一些应用程序可能会要求你往Unity中添加账户(Shotwell, Gwibber, Empathy),有一些可能是要求往GNOME中添加(Evolution, Documents, Contacts)。

Linux:如何在Ubuntu 13.10中升级GNOME 到 3.10?
Linux:如何在Ubuntu 13.10中升级GNOME 到 3.10?

“通知”和“搜索”入口是GNOME专有的,它们让你挑选哪些应用程序和资源能够显示通知或出现在活动区。

卸载GNOME 3.10

假如你已经尝试了GNOME 3.10,但不喜欢它。这时该怎么办?

使用一个叫做“PPA Purge”的命令行工具,移除GNOME 3.10 是一个相当简单的过程。这个工具可以在Ubuntu软件中心里找到,是目前为止自动移除或降级从PPA安装的包的最容易的方法。

为了使用这个工具,我们需要返回终端然后键入下面命令,要留意任何出现在降级过程中的提示。

sudo ppa-purge ppa:gnome3-team/gnome3-next

如果你也添加了其它可选的PPA,你也需要清除它们:

sudo ppa-purge ppa:gnome3-team/gnome3-staging
sudo ppa-purge ppa:gnome3-team/gnome3

完成后,你就剩下了原来的 GNOME 3.8 桌面。如果你不再想保留GNOME Shell了,你可以执行下列命令去卸载它:

sudo apt-get remove gnome-shell ubuntu-gnome-desktop

最后,手动移除任何在降级之后可能残留的应用程序(譬如,Epiphany and GNOME Documents),然后重启。


via: http://www.omgubuntu.co.uk/2013/12/upgrade-gnome-3-10-ubuntu-13-10

译者:KAyGuoWhu 校对:jasminepeng

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

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

Linux:图解 CentOS 6.5 桌面版安装

CentOS 6.5 新版本发布

随着RHEL 6.5新版本的发布,CentOS 6.5在12月1号准时跟上。现在是时间来玩弄它了。如果想要从已经安装好的6.4系统升级到6.5,只要简单的使用* yum update *命令,然后就是见证奇迹的时刻。

CentOS 6.5 迎来了新的更新包和新功能。可以在release notes中查看更多细节信息。

主要更新

  • 精密时间协议 – 以前仅是一个科技预览版 – 现在已经完整支持了!以下设备支持网络时间戳:bnx2x,tg3 , e1000e , igb , ixgbe ,sfc。
  • OpenSSL 升级到1.0.1版本
  • OpenSSL、NSS支持TLS1.1和1.2
  • KVM得到大量加强。包括提升对VMDK文件和VHDX文件的只读,CPU支持热插拔以及升级了 virt-v2v-/virt-p2v-conversion 工具
  • Hyper-V 和 VMware 驱动升级
  • 升级到 Evolution(2.32)和 Libre Office(4.0.4)

下载

这篇教程我们将要安装它的桌面版。你可以从下面的任意一个url开始

http://isoredirect.centos.org/centos-6/6.5/isos/ http://mirror.centos.org/centos/6.5/isos/

选择你的机器制式,它会列出一张镜像表。进入任何一个镜像、得到种子文件下载或者直接下载iso链接。有许多选择下载方式可以选择,比如,LiveCD, LiveDVD, Dvd1+2双碟套装, Minimal最小化安装 和 Netinstall.

Minimal最小化安装是一个基于文字界面的安装程序,这样安装的CentOS将只有shell和最少软件应用程序。剩余的所有东西不得不你自己通过yum安装。

LiveCD/LiveDVD提供桌面版和GUI安装程序,可以安装CentOS系统但是不提供任何可选择的软件包。

DvD1+2双碟套装给有需求的人提供完整的应用程序集合

netinstall 事实上会先下载安装镜像然后再安装

这篇文章我们将使用LiveCD。 它大概有650MB。 尽管CentOS主要使用在服务器上,但它有一个桌面系统可以帮助你的服务器在安装时创造一个基础GUI的安装环境。在其他文章,我们将会尝试minimal 和 netinstall安装方法。

安装

所以现在,该是时候在你的桌面系统安装CentOS了。快点使用LiveDVD或者是LiveCD去启动运行吧!

1.放入媒体然后重启。启动菜单有多个带说明的选项。选择Boot进入Live桌面。

Linux:图解 CentOS 6.5 桌面版安装
Linux:图解 CentOS 6.5 桌面版安装

2.在桌面上双击下列安装图标,开启anaconda安装器。

Linux:图解 CentOS 6.5 桌面版安装
Linux:图解 CentOS 6.5 桌面版安装

3.进入安装向导,点击Next(下一步)

Linux:图解 CentOS 6.5 桌面版安装
Linux:图解 CentOS 6.5 桌面版安装

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

Linux:Linux 基础命令 – watch

linux系统里有一些日志文件。观察这些日志文件是系统管理员的一个重要任务。你可以很方便地使用tail命令观察它们。但是如果你想要长时间监视这些文件,每几分钟使用tail检查那些日志文件是一件很乏味的事情。你可以写一个短小的无限循环的脚本来周期性地检查文件,但其实已经有一个程序可以为你处理这种重复的任务。

Linux watch 命令

Linux中的watch 命令提供了一种方式处理重复的任务。默认watch会每2秒重复执行命令。你一定也想到了,watch是一个很好的观察log文件的工具。下面是一个例子。

watch tail /var/log/syslog

想要停止命令的执行,只要使用标准的kill流程, [Ctrl]+C

Linux:Linux 基础命令 – watch
Linux:Linux 基础命令 – watch
使用Linux watch命令监测syslog

你可以使用-n开关改变并指定时间间隔。要想每10秒检测日志文件,试试这个。

watch -n 10 tail /var/log/syslog

带有管道的watch命令

watch并不仅限于浏览日志文件。它可以用来重复你给它的任何命令。如果你要监测CPU的温度,你可以使用watch后跟上sensord命令来查看。

watch -n 1 sensors

我电脑上的输出看上去就像这样:

acpitz-virtual-0
Adapter: Virtual device
temp1:        +45.0°C  (crit = +100.0°C)

我想过滤一下这个输出来只显示温度而不显示其他的。

我可以使用这个命令来查看

sensors | grep temp | awk '{ print $2 }'

记住,watch命令会重复它后面的第一个命令。必须要注意命令后面跟上管道的情况。你可以将你的命令放在引号里面来管理。

watch -n1 "sensors | grep temp | awk '{ print $2 }'"

Linux:Linux 基础命令 – watch
Linux:Linux 基础命令 – watch
带管道的watch命令

将watch作为时钟

就像你现在已经注意到的,watch执行后会在你的终端的右上角显示时间。我们可以通过传给watch一个空的命令参数来把它作为一个简单的时钟。 我们可以将一个空格包含在引号中来作为一个空的参数。

watch -n 1 " "

如你所见,这给予这个命令另外一个意义,手表(watch)。你可以把它作为你的腕表。

现在你知道如何使用Linux的watch命令。你要用它处理什么重复任务?


via: http://tuxtweaks.com/2013/12/linux-watch-command/

译者:geekpi 校对:Mr小眼儿

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

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

Linux:Linux中命令链接操作符的十个最佳实例

Linux命令中的链接的意思是,通过操作符的行为将几个命令组合执行。Linux中的链接命令,有些像你在shell中写短小的shell脚本,并直接在终端中执行。链接使得自动处理变得更方便。不仅如此,一个无人看管的机器在链接操作符的帮助下能够十分有条理地运行。

Linux:Linux中命令链接操作符的十个最佳实例
Linux:Linux中命令链接操作符的十个最佳实例

Linux中的10个链接操作符

本文旨在介绍一些常用的链接操作符,通过简短的描述和相关的例子帮助读者提高生产力、降低系统负载、写出更加简短有意义的代码。

1. 和号操作符 (&)

&’的作用是使命令在后台运行。只要在命令后面跟上一个空格和 ‘&’。你可以一口气在后台运行多个命令。

在后台运行一个命令:

tecmint@localhost:~$ ping ­c5 www.tecmint.com &

同时在后台运行两个命令:

root@localhost:/home/tecmint# apt-get update & mkdit test &

2. 分号操作符 (;)

分号操作符使你可以一口气运行几个命令,命令顺序执行。

root@localhost:/home/tecmint# apt-get update ; apt-get upgrade ; mkdir test

上述命令先后执行了update和upgrade,最后在当前工作目录下创建了一个‘test’文件夹

3. 与操作符 (&&)

如果第一个命令执行成功,与操作符 (&&)才会执行第二个命令,也就是说,第一个命令退出状态是0。(译注:原文的这里明显写错了,我们进行了改译,有兴趣的读者可以参看原文以及原文下面的评论。在UNIX里面,0表示无错误,而所有非0返回值都是各种错误)。这个命令在检查最后一个命令的执行状态时很有用。

比如,我想使用links 命令在终端中访问网站tecmint.com,但在这之前我需要检查主机是否在线不在线

root@localhost:/home/tecmint# ping -c3 www.tecmint.com && links www.tecmint.com

4. 或操作符 (||)

或操作符 (||)很像编程中的else语句。上面的操作符允许你在第一个命令失败的情况下执行第二个命令,比如,第一个命令的退出状态是1

举例来说,我想要在非root帐户中执行‘apt-get update‘,如果第一个命令失败了,接着会执行第二个命令‘links www.tecmint.com‘。

tecmint@localhost:~$ apt-get update || links tecmint.com

上面的命令中,由于该用户不允许更新系统,这意味着第一个命令的退出状态是’1′,因此最后一个命令‘links tecmint.com‘会执行。

如果第一个命令成功执行并且退出状态是‘0‘呢?很明显的,第二个命令不会执行。

tecmint@localhost:~$ mkdir test || links tecmint.com

这里,用户在家目录创建了一个‘test‘文件夹,这是被允许的。命令成功的执行,退出状态是‘0‘,因此,最后的命令不会执行。

5. 非操作符 (!)

非操作符 (!)很像except语句。这个命令会执行除了提供的条件外的所有的语句。要理解这点,在你的主目录创建一个目录‘tecmint’,并‘cd’到它这里。

tecmint@localhost:~$ mkdir tecmint
tecmint@localhost:~$ cd tecmint

接下来,在文件夹‘tecmint’下创建不同类型的文件。

tecmint@localhost:~/tecmint$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

看一下我们在文件夹‘tecmint’创建的新文件。

tecmint@localhost:~/tecmint$ ls
a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

用一种聪明的办法马上删除除了 ‘html’之外的所有文件。

tecmint@localhost:~/tecmint$ rm -r !(*.html)

验证一下上次的执行结果,使用ls 命令列出可见所有文件。

tecmint@localhost:~/tecmint$ ls
a.html  b.html

6. 与或操作符 (&& – ||)

上面的操作符实际上是‘’和‘’操作符的组合。它很像‘if-else‘语句。

比如,我们ping tecmint.com,如果成功打印‘已验证’,否则打印‘主机故障’。

tecmint@localhost:~/tecmint$ ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"

示例输出

PING www.tecmint.com (212.71.234.61) 56(84) bytes of data.
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms
--- www.tecmint.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms
Verified

现在,断开我们现在的网络连接诶,再试一下相同的命令。

tecmint@localhost:~/tecmint$ ping -c3 www.tecmint.com && echo "verified" || echo "Host Down"

实例输出

ping: unknown host www.tecmint.com
Host Down

7. 管道操作符 (|)

PIPE在将第一个命令的输出作为第二个命令的输入时很有用。比如,‘ls -l’的输出通过管道到‘less’,并看一下输出。

tecmint@localhost:~$ ls -l | less

8. 命令合并操作符 {}

合并两个或多个命令,第二个命令依赖于第一个命令的执行。

比如,检查一下文件‘xyz.txt’是否在Downloads目录下,如果不存在则创建之并输出提示信息。

tecmint@localhost:~$ [ -f /home/tecmint/Downloads/xyz.txt ] || touch /home/tecmint/Downloads/xyz.txt; echo "The file does not exist"

但是这样的命令的运行结果并不如我们预期的运行,会始终都输出提示信息。因此需要使用{}操作符来合并命令:

tecmint@localhost:~$ [ -f /home/tecmint/Downloads/xyz1.txt ] || {touch /home/tecmint/Downloads/xyz.txt; echo "The file does not exist"}
“The file does not exist”

(译注:原文这里应该也是复制或书写的时候,出现了一些问题,例子中并没有出现小标题中的”{}”操作符,所以这里我们进行了修改)

9. 优先操作符 ()

这个操作符可以让命令以优先顺序执行。

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

在上面的伪代码中,如果Command_x1执行失败了会怎么样,Command_x2, Command_x3, Command_x4没有一个会执行,对于这种情况,我们使用优先操作符

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

在上面的伪代码中,如果Command_x1执行失败,Command_x2不会执行,但是Command_x3会继续执行, Command_x4会依赖于 Command_x3的退出状态。

10. 连接符 ()

连接符 ()如它名字所说,被用于连接shell中那些太长而需要分成多行的命令。可以在输入一个“”之后就回车,然后继续输入命令行,直到输入完成。比如,下面的命令会打开文本文件test(1).txt

tecmint@localhost:~/Downloads$ nano test
1.txt

今天就到这里,我会近日开始另外一个有趣的文章。不要走开,继续关注我们。不要忘记在评论栏里提出有价值的反馈。


via: http://www.tecmint.com/chaining-operators-in-linux-with-practical-examples/

译者:geekpi 校对:Mr小眼儿

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

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

Linux:Linux vmstat 命令 – 报告虚拟内存统计的工具

众所周知,计算机必须有称之为RAM(随机访问内存)的存储器使得计算机工作。RAM指的是插在计算机主板上的物理存储。这里的RAM被用于加载像浏览器、文字处理器这类的程序,实际上,你使用的程序都运行在内存上。

让我们假设你有2GB的内存。当你在运行操作系统时,你的可用内存可能只有1.5GB。接着你使用了大量的程序。当内存使用满之后,你可能再也无法加载更多的程序。浅显地说,计算机可能会说:”抱歉,你不能在运行更多的程序了,如果你还要运行其他的程序请先关闭一些程序。”

Linux:Linux vmstat 命令 - 报告虚拟内存统计的工具
Linux:Linux vmstat 命令 – 报告虚拟内存统计的工具

为了解决这个问题,包括Linux在内的各种操作系统使用了一个称之为虚拟内存的方法。这个方法会搜索最近不在使用的程序的内存区域,接着将它们拷贝到计算机硬盘上。这会腾出一些剩余内存空间给你有机会运行更多的程序。

为了监视虚拟内存的活动,我们使用vmstat工具。

什么是 vmstat

vmstat是一个提供报告虚拟内存统计的工具。它包括了系统内存、交换和实时处理器利用率。

如何运行 vmstat

mpstat一样,vmstat包含在sysstat包中。如果你还没有,请安装sysstat包。

为了运行vmstat,只需在控制台输入vmstat。不带参数运行vmstat会显示vmstat的默认结果。

让我们看下如何了解vmstat提供的信息:

Procs

procs有 r列和b列。r列代表等待访问CPU的进程数量。而b列意味着睡眠进程的数量。在这些列的下面,是它们的值。从上面的截图中,我门有2个进程正在等待访问CPU,0个睡眠进程。

Memory

memory有swpd、 free、 buffcache 这些列。这些信息和命令free -m相同。swpd列显示了有多少内存已经被交换到了交换文件或者磁盘。free列显示了未分配的可用内存。buff列显示了使用中的内存。cache列显示了有多少内存可以被交换到交换文件或者磁盘上如果一些应用需要他们。

Swap

swap显示了从交换系统上发送或取回了多少内存。si列告诉我们每秒有多少内存被从swap移到真实内存中(In)。so列告诉我们每秒有多少内存被从真实内存移到swap中(Out)。

I/O

io依据块的读写显示了每秒输入输出的活动。bi列告诉我们收到的块数量,bo列告诉我们发送的块数量。

System

system显示了每秒的系统操作数量。in列显示了系统每秒被中断的数量。cs列显示了系统为了处理所以任务而上下文切换的数量。

CPU

CPU告诉了我们CPU资源的使用情况。us列显示了处理器在非内核程序消耗的时间。sy列显示了处理器在内核相关任务上消耗的时间。id列显示了处理器的空闲时间。wa列显示了处理器在等待IO操作完成以继续处理任务上的时间。

按间隔时间运行vmstat

作为一个统计工具,使用vmstat最好的方法是使用间隔时间。你可以间断地捕捉系统状态。让我假设以5秒的间隔运行vmstat。只需要在你的控制台中输入vmstat 5就行。

Linux:Linux vmstat 命令 - 报告虚拟内存统计的工具
Linux:Linux vmstat 命令 – 报告虚拟内存统计的工具

命令将会每5秒运行一次,直到你按下Ctrl-C来终止它。你也可以使用第二个参数来控制vmstat运行的次数。

Linux:Linux vmstat 命令 - 报告虚拟内存统计的工具
Linux:Linux vmstat 命令 – 报告虚拟内存统计的工具

上面的命令会以5秒的间隔运行7次vmstat

显示活跃和非活跃内存

要这么做,你可以在vmstat后加入-a选项。这是个示例。

显示磁盘统计数据总结

如果你想,vmstat也可以打印系统磁盘活动统计。使用-D选项就行。

Linux:Linux vmstat 命令 - 报告虚拟内存统计的工具
Linux:Linux vmstat 命令 – 报告虚拟内存统计的工具

显示单位

你可以选择你想打印的显示单位字符。在-S后跟上k (小写,1000)、 K (大写,1024)、 m (小写,1000000)、 M (大写,1048576) 字节. 如果你不想选择单位,默认使用的是K (1024)。

Linux:Linux vmstat 命令 - 报告虚拟内存统计的工具
Linux:Linux vmstat 命令 – 报告虚拟内存统计的工具

显示某个磁盘分区的详细统计数据

要这么做,你可以使用-p选项跟上设备名。这里有个例子。

文件

vmstat实际上是使用这些文件获取的数据。

/proc/meminfo
/proc/stat
/proc/*/stat

总结

如果你感觉系统运行超出内存了,在你增加物理内存前,这个工具可以帮助你确定问题的根本原因。通常上,你可以在控制台中输入man vmstat获取更多的关于vmstat的详细信息,这会为你显示vmstat的手册页。


via: http://linoxide.com/linux-command/linux-vmstat-command-tool-report-virtual-memory-statistics/

译者:geekpi 校对:wxy

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

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