linux中国_ 发布的文章

继续我们这面试系列,在这篇文章里我们给出了10个问题。这些问题或者是在以后的文章中出现的问题不一定在面试中会被问到。然而通过这些文章我们呈现出的是一个交互的学习平台,这必将会对你有很大的帮助。

自本系列的上一篇文章11个基本的 Linux 面试问题,我们分析了不同论坛对此作出的评论,这对我们将更好的文章提供给我们的读者是很重要的。我们付出了时间和金钱,那我们又渴望从你们身上得到什么回报呢?答案是没有的。如果你不能赞扬我们的工作,但恳请不要在评论中诋毁我们的工作。

如果你在文章中没有找到什么新的东西,但也请不要忘记它对某些人却是非常有用的,并且他或她会非常感激我们的工作。我们不能够让每一篇文章都使大家高兴。但我希望读者们能够尽量理解。

Q.1:哪一条命令用于把用户登录会话记录在文件中?

  • macro
  • read
  • script
  • record
  • sessionrecord
:‘script’ 命令是用来把用户登录的会话信息记录在文件里。这条命令能够用在 shell 脚本里面,或者直接在终端中使用。下面是一个例子,它记录了开始用 script 到输入 exit 结束之间的所有东西。

如下命令记录用户登录会话到一个文件中:

[root@tecmint ~]# script my-session-record.txt

Script started, file is my-session-record.txt

记录的文件“my-session-record.txt”可以通过下述方式查看:

[root@tecmint ~]# nano my-session-record.txt

script started on Friday 22 November 2013 08:19:01 PM IST
[root@tecmint ~]# ls
^[[0m^[[01;34mBinary^[[0m ^[[01;34mDocuments^[[0m ^[[01;34mMusic^[[0m $
^[[01;34mDesktop^[[0m ^[[01;34mDownloads^[[0m my-session-record.txt ^[[01;34$

Q.2:以下那一条命令可以用来查看内核日志信息

  • dmesg
  • kernel
  • ls -i
  • uname
  • 以上全不是
:执行 'dmesg' 命令可以查看内核的日志信息。在上面的命令中,kernel 不是一个有效的命令,'ls -i' 是用来列出工作目录中文件的索引节点,而 'uname' 是用来显示操作系统信息的。

-

[root@tecmint ~]# dmesg

Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-279.el6.i686 ([email protected]) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Fri Jun 22 10:59:55 UTC 2012
KERNEL supported cpus:
  Intel GenuineIntel
  AMD AuthenticAMD
  NSC Geode by NSC
  Cyrix CyrixInstead
  Centaur CentaurHauls
  Transmeta GenuineTMx86
  Transmeta TransmetaCPU
  UMC UMC UMC UMC
Disabled fast string operations
BIOS-provided physical RAM map:
...

Q.3:哪一条命令是用来显示 Linux 内核发行信息的?

  • uname -v
  • uname -r
  • uname -m
  • uname -n
  • uname -o
:‘uname -r’是用来显示内核的发行信息。其它参数‘-v’、‘-m’、‘-n’、‘o’分别显示内核版本、机器硬件名称、网络节点、主机名和操作系统。

-

[root@tecmint ~]# uname -r

2.6.32-279.el6.i686

Q.4:那一条命令是被用来识别文件类型的?

  • type
  • info
  • file
  • which
  • ls
:‘file’命令是用来识别文件类型的。其语法是‘file [选项] 文件名’。

-

[root@tecmint ~]# file wtop

wtop: POSIX shell script text executable

Q.5:哪一条命令是被用来找一条命令的二进制文件、源和手册的所在的路径?

:‘whereis’驾到!‘whereis’命令是用来找一条命令的二进制文件、源和手册的所在的路径。

-

[root@tecmint ~]# whereis /usr/bin/ftp

ftp: /usr/bin/ftp /usr/share/man/man1/ftp.1.gz

Q.6:当用户登录时,默认情况下哪些文件会被调用作为用户配置?

:在用户的目录下‘.profile’和‘.bashrc’会默认地被调用作为用户配置。

-

[root@tecmint ~]# ls -al
-rw-r--r--.  1 tecmint     tecmint            176 May 11  2012 .bash_profile
-rw-r--r--.  1 tecmint     tecmint            124 May 11  2012 .bashrc

Q.7:‘resolve.conf’文件是什么的配置文件?

:‘/etc/resolve.conf’ 是 DNS 客户端的配置文件。

-

[root@tecmint ~]# cat /etc/resolv.conf

nameserver 172.16.16.94

Q.8:哪一条命令是用来创建一个文件的软链接的?

  • ln
  • ln -s
  • link
  • link -soft
  • 以上都不是
:在 Linux 环境下,‘ls -s’是被用来创建一个文件的软链接的。

-

[root@tecmint ~]# ln -s /etc/httpd/conf/httpd.conf httpd.original.conf

Q.9:在Linux下,‘pwd’命令是‘passwd’命令的别名吗?

:不是!默认情况下‘pwd’命令不是‘passwd’命令的别名。‘pwd’是‘print working directory’(显示工作目录)的缩写,也就是输出当前的工作目录,而‘passwd’在 Linux 中是被用来更改用户的帐号密码。

-

[root@tecmint ~]# pwd

/home/tecmint

[root@tecmint ~]# passwd
Changing password for user root.
New password:
Retype new password:

Q.10:在 Linux 中,你会怎样检测 pci 设备的厂商和版本。

:我们用的 Linux 命令是‘lspci’。

-

[root@tecmint ~]# lspci

00:00.0 Host bridge: Intel Corporation 5000P Chipset Memory Controller Hub (rev b1)
00:02.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express x8 Port 2-3 (rev b1)
00:04.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express x8 Port 4-5 (rev b1)
00:06.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express x8 Port 6-7 (rev b1)
00:08.0 System peripheral: Intel Corporation 5000 Series Chipset DMA Engine (rev b1)
...

现在就到这里。我希望以上的问题也许对你很有用。在下星期我会再想出一些新的问题。到时请保持好的健康,继续关注我们并且与 Tecmint 保持联系喔!


via: http://www.tecmint.com/basic-linux-interview-questions-and-answers-part-ii/

译者:hyaocuk 校对:wxy

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

现在我们做的是Intel Haswell的虚拟化基准测试。我们在Intel酷睿i7 4770K的“Haswell”处理器上使用搭载了最新软件组件的Fedora 19,来进行KVM,Xen和VirtualBox的基准测试。

自从上个月推出Haswell以来,我们已经发布了许多和这款全新的英特尔处理器相关的基准测试,但我们直到这篇文章发布前,一直没有涵盖虚拟化方面的性能测试。这里,启用了英特尔硬件虚拟化后,将在一个纯净的Fedora 19 的64位操作系统上,分别安装KVM,Xen和Virtualbox,并进行比较。

目前Fedora 19拥有搭载GCC 4.8.1的Linux 3.9.8版本内核,Mesa 9.2.0开发库和一个EXT4文件系统。所有的虚拟化组件都从Fedora 19的仓库中获取的,包括QEMU 1.4.2,Xen 4.2.2和libvirt/virt-manager组件。Xen和KVM的虚拟化通过virt-manager来建立。VirtualBox 4.2.16则是通过VirtualBox.org获取并安装在Fedora 19中。

这个英特尔酷睿i7 4770K机器拥有16GB的内存和240GB的OCZ Vertex 3 固态硬盘。在测试中,每一个虚拟机能够使用全部八个逻辑核心(四个物理核心加上超线程)、16GB内存中的12GB以及16GB的虚拟磁盘。

在采用英特尔酷睿i7 “Haswell”处理器的Linux 3.9版本内核的Fedora 19上安装的KVM,Xen和VirtualBox的性能也和在没有任何形式的虚拟化或其它抽象层上运行基准测试的“裸机(Bare Metal)”的性能进行了对比。VMWare的产品没有在这篇文章里被测试,因为它们的EULA特性限制了这种公开基准测试(尽管VMware在过去可以让我们正常地做这样的基准测试),并且它们的试用软件只能限制运行在四核CPU上。但以后的另外一篇文章会比较下在其它硬件上XEN/KVM/VMware的性能。

全部的Linux虚拟化基准测试采用完全自动化和可重复的方式进行处理,使用开源软件Phoronix Test Suite并由OpenBenchmarking.org支持。在使用虚拟磁盘而且Xen/KVM都没有一个可靠的访问主机驱动或GPU的方法以使用3D功能的情况下,这篇文章里的大部分基准测试都是集中在不同Linux虚拟化方法计算性能开销上。

磁盘测试在这里并不是虚拟化测试的一个重点,因为只有一个虚拟磁盘被主机的文件系统使用。然而,当把这三种Linux虚拟化方法与裸机结果进行比较时,运行在Linux 3.9内核上的KVM性能最好,其次是Xen。Oracle的Virtual仅仅跑出了主机上PostMark邮件服务器性能的66%,而KVM跑出了性能的96%,Xen是83%。

对于Dolfyn计算流体动力学的工作量,当运行在KVM或Xen上时,和裸机的运行结果相比并没有任何重大的变化。然而,VirtualBox则是明显变慢了。

FFTE和HMMer的结果和Dolfyn类似:Xen和KVM用很小的开销获得很好的性能,但Oracle的VirtualBox则慢得多。

当John The Ripper这个破解密码的程序在VirtualBox中运行时,则直接崩溃了。

运行TTSIOD渲染器时,在Linux 3.9 内核的Fedora 19上运行的Xen虚拟化方法获得了它的第一次性能比拼的胜利。

总之,运行在搭载英特尔酷睿i7 4770K处理器Fedora 19上的Xen和KVM虚拟化技术工作良好。这些虚拟化方法在Haswell处理器上的性能开销是最小的。当Xen和KVM在这款全新的英特尔处理器上运行良好的时候,Oracle的VirtualBox(最新版本,v4.2.16)相对慢得多。虽然VirtualBox的一个优点是支持客户机3D加速,但这会在未来的一篇Phoronix文章中再次进行测试。而把Haswell和前几代的英特尔处理器和AMD处理器比较不同虚拟化方法的性能开销也会在不久之后在Phoronix上进行测试。


via: http://www.phoronix.com/scan.php?page=article&item=intel_haswell_virtualization

译者:KayGuoWhu 校对:wxy

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

Ubuntu tweak 是一款知名度很高的应用程序软件,Ubuntu 用户可以用它来调整系统的性能、功能等各个细节。项目的创始人,周鼎又名 Tualatrix Chou ,正与我们分享 Ubuntu Tweak 的特性、使用感觉以及它跟 Canonical 的关系,并且勾勒了项目的未来计划蓝图。享受吧!

你什么时候开始使用 Linux 的,并基于什么使你决定开发 Ubuntu tweak ?

我开始使用 Linux 是在2006年底,那时刚开始我的大学生活。当时我正在学 C 编程语言,一个朋友建议说要学习编程的话 Linux 是最好的平台环境,所以我就开始了我的 Linux 生涯,是从 Fedora Core 6 开始的。但用了仅仅只有一周的时间,我就换成 Ubuntu 6.10,因为Ubuntu在中国有更好的社区,也有更好更快的源库/镜像。我立马就爱上了 Ubuntu,就一周时间,就从 Windows 环境完全切换到 Ubuntu 环境。

在苦乐参半的半年使用时间后,我意识到 Ubuntu 对中国用户来说不是太友好,因为全新安装系统后,用户必须得自己配置字体、输入法以及其它很多很多设置。所以,我决定开发出一款应用程序来帮助新手,让他们很简单的就可以对系统做相应配置。

因此在2007年7月,我就开始开发 Ubuntu Tweak,刚开始的时候,仅仅提供了汉语版本的,但很快就考虑了 Ubuntu Tweak 的国际版本,并且在2007年9月份就发布了首个国际版本。

Ubuntu tweak 已经是非常成功的项目了。很多 Ubuntu 用户用它来调整系统的性能、功能等各个细节。能给我们谈论下 Ubuntu Tweak 能做些什么吗?

Ubuntu Tweak 可以用来切换桌面图标的显示方式、设置字体、启用/禁用多用户切换功能以及登陆的标识(logo)等等。

在最新的 Ubuntu Tweak 0.6版本中,你也可以调整你的 Unity 桌面以及关机功能。

你也能使用 Ubuntu Tweak 来清理系统的垃圾以释放空间和使系统保持干净。

Canonical 在他们的默认发布源中不考虑加入 Ubuntu Tweak。这意味着什么?这对那些没有经验,但又想要使用你的应用程序来调整他们的系统的用户来说,存在某些风险吗?

对的。因为在以前的 Ubuntu Tweak 发布版本中,为流行的 PPA 都提供了可用源,但我不能保证所有的 PPA 都是安全的,所以 Ubuntu Tweak 会有一些安全风险。

如你们所见,从0.6版本后 Ubuntu Tweak 就已经移除了源中心(Source Center)。但请不要混淆“Ubuntu默认包含”和“加入源仓库”这两个概念。Ubuntu Tweak 首先应该要被加入通用资源仓库,然后才能被 Ubuntu 默认包含。

从错误报告和用户反馈来看,Ubuntu Tweak 已经比老版本更加稳定及更易使用。

你有收到来自 Canonical 和 Ubuntu 开发者的支持或有跟他们合作(不论什么)的事项吗,是哪些方面的?

当然,我得到 Canonical 公司的一些帮助,他们试着帮我把 Ubuntu Tweak 放入源仓库。这工作现在仍然在进行。

也得到社区的很多热心帮助,他们帮我翻译、设计、测试、报告错误,甚至提交代码分支。

开发 Ubuntu Tweak 的有多少人?

如果你说的是“代码开发者”,就仅仅我一个,但我们有很多设计人员:logo 是M.Sharp设计的,Kevin Chou 帮助设计了 Ubuntu Tweak 的用户界面(UI)原型,就是0.6版本的样子。现在 Jeonkwan Chan 正在帮我重新美化用户界面,将会用在0.7版本上。任何人,只要愿意就可以加入到 Ubuntu Tweak 的开发中来:)

在Ubuntu11.04版本中当 Unity 出现时,许多 Ubuntu 用户抱怨其可配置性不好,您对这个怎么看的?这个特殊的桌面环境能有些什么多适用性的配置能力呢?

我喜欢桌面系统的可配置高适应性,这是 Linux 系统的优点,不是吗?

例如,我不喜欢 Unity Launcher 的自动隐藏功能,所以我设置让他不会隐藏。

事实上,Unity 是可配置的,仅仅是它缺少 CompizConfig 设置管理器,所以你不能把 Unity Launcher 放到桌面底部或右面,这对左撇子来说很不友好。哈哈,开玩笑的。

如大家所见,Ubuntu 12.04已经增加了隐藏/显示切换功能,Launcher 的大小在系统设置中也可以自定义设置。我认为 Unity 将会有更多的可配置功能。

一般来说,你认为 Canonical 公司开发 Unity 桌面环境是正确的决策吗?他们与 Gnome 开发者之间有合作争议,这有些是不可避免的吗?

是的,对于 Canonical 公司来说,我觉得他们的决策很正确。回顾三年前,当 Ubuntu 首次引入基于 GNOME Panel 的Indicator ,它的设计就要比原来直接的 GNOME Panel 小程序更优雅。但 Canonical 开发者和 GNOME 开发者之间合作有些问题,因为他们从来没有着眼于 GNOME。直到 GNOME 3 的面世,情况才有所好转,它的 GNOME Shell 已经从 GNOME Panel 移出来了,并且 GNOME Shell 的面板已经和上面提到的 Indicator 用的是同一套设计方式。如果他们之间共用相同的 API 的话,桌面Linux应该会更好用。

所以来自于公司、社区、GNOME 桌面等的不同的关于用户界面的见解,综合起来最终就形成了 Unity。

我认为这是好事。至少,到目前为至,比起 GNOME Shell 来说,我更喜欢 Unity。

虽然你正在开发的是一款 Ubuntu 系统专用的程序,但我假设你为了使用更多的高级用户功能,会使用其它的发行版本。你会选择哪些发行版本呢?为什么?

当然,我已经玩过 Fedora、Arch、 OpenSUSE,特别是 Gentoo,我已经整整使用了一年。它是我第二喜欢的 Linux 发行系统,因为它拥有一个最先进的包管理系统。

但现在我仅仅只使用 Ubuntu 的桌面版本和服务版,也使用 Mac OS X,很多的设计灵感就来自于它 :)

Ubuntu Tweak 能被优化或做几个分支或者改变一点点,以便能在其它的 linux 发行版本比如 Fedora、OpenSue 或者 Debian 上使用吗?有做成统一的一个叫做“Linux Tweak”的应用程序,用户不管选择什么样的发布版本或桌面环境都可以用这种想法吗?不知道是否可行?

可以的,要让 Ubuntu Tweak 在其它发行版本中运行非常容易。它是模块化的,很轻松的就可以改造(hack)。

2008年的时候,我就发布了一版 Fedora 的“Ubuntu Tweak for Fedora”,但最终我放弃维护这个版本了,因为我主要关注 Ubuntu 版本的,所以没有那么多精力。

那 Ubuntu Tweak 的未来计划是什么?也许 Canonical 公司会内嵌进系统,然后把它做为发布版本默认的工具或者他们会基于他们自己的系统调整工具来使用它。您认为呢?您的下一步计划会是什么的呢?

Ubuntu Tweak 的未来当然会一片光明。哈哈。

我已经开始实现把 Ubuntu Tweak 加入软件中心这个工作了。如果用户能从软件中心直接安装 Ubuntu Tweak,它会更容易。

现在我正在开发0.7版本的,它将更美观,并且与 Unity 桌面的集成度更好,也加入了一些很有用的新功能。我想使Ubuntu Tweak 在 Unity 桌面环境下尽可能的发挥作用。

跟随着 Ubuntu 12.04的发布,我也计划发布新的版本,希望大家喜欢 :)

还有一件事要透露下,我已经加入 Canonical 北京公司,负责处理 OEM 的事情。虽然 Ubuntu Tweak 仍是一个个人项目,我还没有参与进 Ubuntu 的开发任务,但有可能话我会试着加入开发团队 :)

太伟大了!谢谢 Tualatrix。


via: http://www.unixmen.com/interview-with-ding-zhou-of-ubuntu-tweak/

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

译者:runningwater 校对:wxy

By: [email protected]

项目平台基础信息:

系统信息:Ubuntu 12.04 LTS X64 Desktop

硬件信息:Intel® Core™2 Duo CPU P8400 @ 2.26GHz × 2,3G RAM

具体项目实施过程:

1. Ubuntu 系统安装的注意事项及操作系统基础环境配置

系统的安装。在安装Ubuntu系统的时候根据自己计算机情况合理清晰的构建新的系统,不可盲目选择。建议安装的时候选择全新安装或者事先预留空白分区手动分配磁盘。切忌不了解LVM的情况下不使用LVM管理方式安装。
在安装完成后首先选择合适的源来更新系统(可使用系统内置的源测速),其实主要更新的内容是系统语言包。在安装完更新以后即可随手安装些常用必备工具:Vim、Gcc、G++、Adobe Flash、Chromium等。

2. Android 开发平台的搭建

首先TaintDroid其实是一个自定义的Android ROM,所以必须自己编译Android源码来实“TaintDroid Build Instructions for Android”。那么首先要做的就是下载源码(Android及TaintDroid代码),然后进行编译并嵌入TaintDroid来实现自定义 ROM并刷入设备。

平台基础JDK 的安装:
由于Android代码编译使用的是JDK6,所以必须去Oracle上面寻找旧的对应平台的版本,而且需要注册并同意一些协议才会允许你去下载。下载到 的文件大概是类似于:jdk-6u45-linux-i586.bin,具体小版本号Google没有具体要求所以并不需要纠结。然就是安装JDK并配置 环境变量,具体操作如下:

ahaxzh@T400:~$ cd /workspace/soft
ahaxzh@T400:~$ chmod 701 jdk-6u45-linux-i586.bin
ahaxzh@T400:~$ sudo ./jdk-6u45-linux-i586.bin

(需要注意的是:其会在当前目录下解压JDK,也就是JDK所在的位置,需要记录下来并写在环境变量中)。
添加环境变量的方法:
编辑/etc/profile文件在文件最后添加内容:

#set java environment
JAVA_HOME=/home/ahaxzh/workspace/soft/jdk1.6.0_45
export JRE_HOME=/home/ahaxzh/workspace/soft/jdk1.6.0_45/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

然后注销系统并重新登录,在终端使用命令:java -version来查看JDK是否安装完成。 若安装成功则会显示当前JDK版本号:

java version "1.6.0_45"
Java(TM) SE RuntimeEnvironment(build 1.6.0_45-b06)
JavaHotSpot(TM)Server VM (build 20.45-b01, mixed mode)

Android 源代码的下载:
根据官方网址说明需要的是首先需要安装以下工具软件:curl和git-core。在终端输入:

ahaxzh@T400:~$ sudo apt-get install curl
ahaxzh@T400:~$ mkdir ~/bin
ahaxzh@T400:~$ PATH=~/bin:$PATH
ahaxzh@T400:~$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
ahaxzh@T400:~$ sudo chmod a+x ~/bin/repo

(需要注意的是,首先要在~/home下建立bin目录,并给与repo目录以权限。)

然后就可以新建一个目录用来存放Android源代码,如:workspace/tdroid/ tdroid-4.1.1\_r6)
进入到用于存放代码的目录使用repo命令来获取Android源代码:

ahaxzh@T400:~/workspace/tdroid$ mkdir -p ~/tdroid/tdroid-4.1.1_r6
ahaxzh@T400:~/workspace/tdroid$ cd ~/tdroid/tdroid-4.1.1_r6
ahaxzh@T400:~/workspace/tdroid$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r6
ahaxzh@T400:~/workspace/tdroid$ repo sync

然后就进入漫长的等待过程。

在执行上面的步骤时需要注意的事项:
在使用repo命令时会遇到很多很多的问题下面进行详细说明:
关于repo只是google用Python写的一个用来调用git的脚本,主要是用来下载、管理Android项目的软件仓库。
官方安装介绍:http://source.android.com/source/downloading.html
官方使用说明:http://source.android.com/source/using-repo.html
在首次安装完git、curl及repo如果立即执行repo init操作可能会出现各种异常情况,这个主要和地域互联网环境有关。例如:直接链接不了源码服务器、出现读取失败等等。即使你能够链接并读取正常,第一 次还会出现要求你编辑git的配置文件(根据提示输入邮件、用户名字等)。至于出现问题的解决方案可以使用代理服务器、备份服务器及本地安装等。在漫长的 下载Android代码的过程中很容易出现repo sync 中断的现象,不得不重新执行repo sync命令。

关于repo init -u URL , 在当前目录安装 repository ,会在当前目录创建一个目录 “.repo” , -u 参数指定一个URL, 从这个URL 中取得repository 的 manifest 文件,然后才能够使用repo sync命令根据manifest文件抓取源码。抓取源代码是一个非常非常漫长的过程,我用了将近7小时。直到出现:

Fetching projects:100%(294/294),done.
Syncing work tree:100%(294/294),done.

算是下载完源代码了。这时候源代码目录(~/workspace/tdroid/tdroid-4.1.1\_r6)中 .reop目录大小为12G,而整个 tdroid-4.1.1\_r6目录将近20G左右。

Android源码的编译:

下载完源代码以后就可以开始着手准备源码编译工作了。官方编译说明:http://source.android.com/source/initializing.html
在着手编译的时候你需要再次确认一下问题:
首先你的操作系统必须是64位的(前面的几个Android版本貌似可以在32位编译,但是4.x的就没有遇到说可以在32位机器编译运行的 了)Linux发行版本。官方推荐的是Ubuntu 12.04 LTS版本,另外官方要求的编译环境必须是:Python 2.6 — 2.7, GNU Make 3.81 — 3.82,JDK 6,Git 1.7。除了这些以外还需要有的软件包:

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1/usr/lib/i386-linux-gnu/libGL.so

这其中会出现的问题:libgl1-mesa-glx:i386 会提示找不到。这时候就陷入了一个痛苦的循环。具体见:http://askubuntu.com/questions/335853/ubuntu- wont-boot-after-initializing-the-build-environment-for-android/335865#335865
总之最后的解决方法是一次启动之内完成编译工作,然后重新启动以后需要在非GUI环境下安装xorg。
上述基本必须环境搭建完毕就可以开始编译Android源代码了。具体编译流程如下:

ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ . build/envsetup.sh
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ lunch 1
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ make -j4

然后就是漫长的编译等待了。整个过程花费的时间视机器硬件配置不通,我编译完成大概用了一整夜。等待编译完成以后就可以运行emulator命令来 测试原版(没有安装TaintDroid的)的Android原版系统了,这时候在工作目录里面会多一个out文件夹,大小13G。

上面所做的这些其实说白了只是为了测试。如果这些都通不过就没有办法接下来进行下面的事情。在第一次运行模拟器的时候,如果出现找不到emulator命令的话需要进行初始化操作:

ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ source build/envsetup.sh
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ lunch full-eng
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ emulator

3. 将TaintDroid定制到Android系统内并重新编译

下载TaintDroid源代码:
TaintDroid并不是一个软件,而是嵌入到系统本身的一个服务。所以并不可以直接有Apk文件来安装。需要的是讲其源代码加入到Android系统源代码中编译出来一个含有TaintDroid的定制版系统。
根据官方说明,需要:

Download the TaintDroid4.1 local_manifest.xml and place it in~/tdroid/tdroid-4.1.1_r6/.repo or copy and paste the following content into.repo/local_manifest.xml

其中的XML文件包含了托管在github上的TaintDroid源代码。然后执行如下操作来具体实施下载代码:

ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ repo sync
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ repo forall dalvik libcore frameworks/base frameworks/native system/vold system/core device/samsung/crespo device/samsung/tuna packages/apps/TaintDroidNotify-c 'git checkout -b taintdroid-4.1.1_r6 --track github/taintdroid-4.1.1_r6 && git pull'

在重新repo的时候会看到:

“warning: local_manifest.xml is deprecated; put local manifests in`/home/ahaxzh/workspace/tdroid/tdroid-4.1.1_r6/.repo/local_manifests` instead”

这样也就知道了local\_manifest.xml文件是什么用的了。等待repo完成以后就完成了TaintDroid的下载。就可以准备重新编译了。是的又要花将近一夜的时间来重新编译。

重新编译定制版Android系统:
首先要自己在工作目录写一个makefile,内容如下:

ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ gedit buildspec.mk

-

# Enable core taint tracking logic (always add this)
WITH_TAINT_TRACKING :=true# Enable taint tracking for ODEX files (always add this)
WITH_TAINT_ODEX :=true# Enable taint tracking in the "fast" (aka ASM) interpreter (recommended)
WITH_TAINT_FAST :=true# Enable additional output for tracking JNI usage (not recommended)#TAINT_JNI_LOG := true# Enable byte-granularity tracking for IPC parcels#WITH_TAINT_BYTE_PARCEL := true

然后执行下面的命令来重新编译定制版ROM(定制TaintDroid的Android系统):

ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ . build/envsetup.sh
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ lunch full-eng
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ make clean
ahaxzh@T400:~/workspace/tdroid/tdroid-4.1.1_r6$ make -j4

有了原版系统的编译通过,这次编译基本不会有什么问题,注意到编译的时候会出现一些警告,但是没有给编译造成什么困难。编译的时间同样很久,编译完 成了以后会在工作目录生成新的out文件夹make clear命令会删除原先的原版系统。有一点需要注意的是如果你不缺定是否在系统内嵌入了TaintDroid,你可以通过查看out/target /product/generic 目录下面的install-files.txt来查看是否含有tdroid。到这里一个定制版的ROM就已经生成了,同样可以通过emulator命令来 运行模拟器(可能需要初始化)。

4. 测试并统计TaintDroid实际效果

获取Android SDK及Eclipse
关于AVD(Android模拟器)的创建,Google提供了简单方便的可视化工具来创建。首先需要用到的是Android SDK。可以在:http://developer.android.com/sdk/index.html#download
找到与自己系统相对应的版本。下载并解压后会发现其包含了Android SDK和集成了众多Android应用调试插件的Eclipse IDE。由于SDK 中只含有最新版的SDK,所以需要对SDK 进行更新以便获取需要的版本(Android 4.1)。更新SDK 简单的方法是从Eclipse 重直接点击Android SDK Manager来启动SDK内容管理工具,选择需要的内容打勾安装(需要同意许可)即可。

创建一个TaintDroid定制版ROM的AVD
然后在Eclipse中使用Android Virtual Device Manager来创建一个AVD模拟器,如果直接选择的话,其实选择的是原版的ROM,而我们需要的是嵌入了TaintDroid的ROM,所以这里可以取巧,方法如下:
由于AVD需要的核心内容是system.img(系统镜像)这个系统文件,所以可以使用我们编译完成的Rom来替换掉原生SDK里面的 systen.img。我的自定义ROM的system.img文件在/out/target/product/generic目录里面,而SDK 的system.img文件在sdk/system-images/android-16中,操作时注意备份好原生系统镜像。上面的步骤昨晚了以后就可以 使用AVDM来创建一个我们需要的ADV了,内存、屏幕分辨率根据实际情况进行相应的调整。SDCard是必须的,大多数软件需要。

运行TaintDroid定制版ROM的AVD及测试统计
上面创建完成AVD以后就可以运行了,在AVDM界面点击Start来运行我们的模拟器初次运行会很慢,因为会创建sdcard.img、 userdata.img、userdata-qemu.img、等等一些列的相关镜像文件(放在~/.android/avd目录中)。
进入Android系统后,在系统设置界面里可以更改系统语言,非必要。打开TaintDroidNotify并开启监控。TaintDroid服务就会 在后台运行,这时候如果有程序出现违规操作,就会在系统通知处显示Notify,滑动即可查看具体违规的详细情况,会显示应用名称、违规操作内容、目标 IP地址、时间等。
在网易移动应用商城随机选择好评100W以上的几个应用进行测试结果统计:

酷狗音乐 发送IMEI 42.62.20.242

天天静听 发送IMEI到多个IP地 址202.75.220.21

酷我音乐盒 发送IMEI 221.238.18.38

辣妈帮 发送IMEI到多个IP地址 202.75.220.15等

++++++++++++++++++++++++++++++++++++++

BOSS啊,这什么编辑器嘛。。代码成这样了,我也不知道怎么弄了。就这么着吧。。

http://www.cnblogs.com/ahaxzh/archive/2013/12/02/3454540.html

一图胜千言,一个精心设计的指导视频更是能给你带来良好体验。Linux上有你需要的制作有用且高质量教学视频的所有工具。我们将用强大的kdenlive视频编辑器和Audacity音频录制器和编辑器制作一个简单的屏幕录像,并学习如何在YouTube上分享精彩的屏幕录像。

一台安装了Kdenlive和Audacit软件的Linux系统PC,一个质量好的麦克风或耳机,和一个YouTube的帐号就是你需要准备的全部。(是的,除了Youtube还有很多其他的免费视频共享服务,你也可以使用它们。)YouTube属于Google,Google想让你与全世界共享任何人和事。如果这不是你想做的,请说no。

我们的工作流程是这样的:

  • 用Kdenlive录制屏幕录像
  • 用Audacity录制音轨
  • 添加音轨到Kdenlive
  • 上传到YouTube
  • 全世界看你的视频,好开心

kdenlive支持最流行的数字视频格式,包括AVI,MP4,H.264,和MOV。它支持的图像文件包括GIF,PNG,SVG和TIFF;支持的音频文件格式,包括非压缩的PCM,Vorbis,WAV,MP3和 AC3。你甚至可以阅读和编辑Flash文件。总之,它可以处理很多东西。

你的配音与你的视频一样重要。请一定要重视你的音频。使音频保持干净和简单,去除杂乱的题外话、方言,并将背景噪声降到最低点。我喜欢用一个质量好的耳麦做讲述,这样你不必担心话筒位置,你可以反复听你自己的讲述而不会影响到你身边的人。

Kdenlive的文档已过期,它会告诉你制作屏幕录像需要RecordMyDesktop软件。我用的是kdenlive 0.9.4,其实不需要Recordmydesktop。

图 1:默认配置

制作屏幕录像

首次安装kdenlive,第一次运行时会启动配置向导。不必在意默认设置,因为你随时都可以改变它们。

这是我的屏幕录像的设置:高清720p每秒30帧,1280x720的屏幕尺寸。如何知道该使用什么设置项? Google上有一些说明。设置这些值可到Settings > Configure Kdenlive > Project Defaults > Default Profile > HD 720p 30fps(图1)。

设置捕捉屏幕的大小到 Settings > Configure Kdenlive > Capture > Screen Grab(图2)。虽然你也可以选择捕捉全屏幕,但最好还是坚持用YouTube规定的尺寸。因为如果使用的尺寸与YouTube规定的不一样,则YouTube将增加黑边来达到合适的尺寸。热切的观众会更加希望看到一个充满生动的内容的屏幕,而不是黑边。

图 2:屏幕录像的屏幕大小

默认的YouTube视频播放器的大小是640x360标清320p,又小又模糊。播放器有小屏,大屏,全屏,和多个质量等级的控制。这些设置只有你的观众会使用,640x360标清320p看起来真的不咋样,但郁闷的是你无法改变这个缺陷。尽管如此,你仍然想制作高质量视频的话,你可以添加一些文字来提醒观众尝试更好的配置。

保存你的项目

在你做任何其他事情之前,点击 File->Save as 保存您的项目,并记住周期性地保存它。

抓取屏幕

抓屏小菜一碟。到Record Monitor,选择Screen Grab,然后点击Record按钮。屏幕上将打开一个带虚线的框,框里面的所有内容都将被录制下来。因此,你需要做的所有事就是移动框并调整框的大小到你想要l录制的范围。完成后点击停止按钮(图3)。

图 3:屏幕抓取

单击Stop,自动打开Clip Monitor,你可以预览你的裁剪效果。如果你觉得不错,把它从Project Tree中拖到Video 1轨道。现在你可以编辑你的视频了。总会有需要你修剪的地方;一个快速的方法是,你在Project Monitor里播放你的剪辑片,直到播放到你需要移除部分的末尾。然后暂停,然后按下Shift+r。你的剪辑片将会在你按下停止的时间轴上的点上被切割为两个剪辑。点击你要删除的片断,按下Delete键,噗!它就消失了。

对于剩下的剪辑片断,可能你想要从时间轴上的某一点开始播放,也可能你想要加入一些好的变换。比如一些简单的渐变就相当不错;右键点击你的剪辑片断,点击Add Effect > Fade > Fade from black 和 Fade to black,然后Kdenlive将自动将这两个效果放到开头和末尾。

添加配音

请参阅Whirlwind Intro to Audacity on Linux: From Recording to CD in One Lesson来学习使用Audacity录音的基础操作。以16bit的wav格式导出你的音频文件,然后通过Project > Add Clip导入到Kdenlive。然后将你的新音频剪辑拖到Audio tracks。一个简单的制作视频讲述的方式是边播视频边说。运气好的话,你不需要做很多的清理工作,你的讲述就会与视频同步。

图 4:用Shift+r切割音轨,然后将其中一个剪辑片从切割点拖离,创建一个静音间隙

如果你的语速比视频快,你可以在音轨中添加空档时间.很简单,用Shift+r切割音轨,然后将其中一个剪辑片从切割点拖离,创建一个静音间隙。(图4)。

Rendering Your Project ### 渲染你的项目

当你满意自己的编辑,并准备导出你的最终格式时,点击Render按钮。这需要几分钟的时间,取决于你的电脑速度和项目大小。已有为网站预先设定的值,如果你选择File Rendering, 你可以调整你的设置(图5)。我用File Rendering中的H.264,Video比特率12000, Audio比特率384取得了不错的效果。H.264是一种超压缩格式,使用这种格式发布的文件小但质量好。

图 5:选择文件渲染,调整你的网页设置

发布到YouTube

现在你可以在VLC或MPlayer或你喜欢的任何播放器中播放你的视频了,如果它看起来很好,那么你就可以将它上传到你的YouTube帐户里了。YouTube是典型的Google风格,信息中心和视频管理器会混乱又复杂,不过请坚持多研究下,你会理出头绪的。在你做任何事情之前,你必须对你的账户做资格认证,也就是通过短信和邮件获得一个验证码。通过输入验证码证明你不是一个网络爬虫后,你就能上传你的视频了。

你可以上传你的视频,然后标记它们为私人可见或所有人可见。Google有一些编辑工具,你可能会喜欢,比如自动纠错和配背景音乐。不过以我的拙见,几乎没有人是这样子做背景音乐的,所以这种工具只会令人讨厌。不过你有可能是第一个正确使用这个工具的人哦。

最有用的编辑工具是自动字幕。我推荐在你所有的视频上使用此功能,不光是为了那些听觉障碍的人,也为了那些需要保持低音量观看的人,确保所有的人都明白你在说什么。字幕工具也能创建副本。

另一个有用的工具是注释工具,它支持对话气泡,标题,聚光灯和标签。当然,在Kdenlive中,这些你都可以做到,所以都可以尝试一下。

好吧,到这里就结束了,但似乎我们刚刚开始。请分享你的视频,并在评论中添加Youtube的小建议和技巧。如果可以的话,请在video.linux.com分享你的新的视频教程,并参加100个Linux教程比赛。


来源于: http://www.linux.com/learn/tutorials/745745-how-to-make-a-youtube-instructional-screencast-video-on-linux/

译者:coolpigs 校对:jasminepeng

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

Linux ps 命令

linux的ps命令是一个查看系统运行的进程的一个最基础的工具。它提供了一个当前进程的快照,还带有一些具体的信息,比如用户id,cpu使用率,内存使用,命令名等,它不会像top或者htop一样实时显示数据。虽然它在功能和输出上更加简单,但它仍然是每个linux新手需要了解和学好的必要进程管理/检测工具。

在本篇中,我们会学习ps命令基本的用法:查找、过滤,以不同的方式排序。

语法说明

ps命令有两种不同风格的语法规则:BSD风格和UNIX风格。Linux新手经常感到困惑并会误解这两种风格,所以在继续下一步之前,我们来弄清楚一些基本的信息。

注意: "ps aux"不等同于"ps -aux"。比如"-u"用于显示用户的进程,但是"u"意味着显示具体信息。

BSD 形式 - BSD形式的语法的选项前没有破折号,如:

ps aux

UNIX/LINUX 形式 - linux形式的语法的选项前有破折号,如:

ps -ef
在linux系统上混合这两种语法是可以的。比如 "ps ax -f"。但是本章中我们主要讨论UNIX形式语法。

如何使用ps命令

1. 显示所有进程

下面的命令可以显示所有进程的列表。

$ ps ax
$ ps -ef

通过管道输出到"less"可以分页。

使用"u"或者"-f"选项可以显示进程的具体信息。

$ ps aux
$ ps -ef -f
为什么USER列显示的不是我的用户名,但是其他的像root,www-data等却显示? 对于所有的用户(包括你们的),如果长度大于8个字符,那么ps只会显示你的UID而不是用户名。

2. 显示用户进程

使用"-u"选项后跟用户名来过滤所属用户的进程。多个用户名可以用逗号分隔。

$ ps -f -u www-data
UID        PID  PPID  C STIME TTY          TIME CMD
www-data  1329  1328  0 09:32 ?        00:00:00 nginx: worker process
www-data  1330  1328  0 09:32 ?        00:00:00 nginx: worker process
www-data  1332  1328  0 09:32 ?        00:00:00 nginx: worker process
www-data  1377  1372  0 09:32 ?        00:00:00 php-fpm: pool a.localhost                                               
www-data  1378  1372  0 09:32 ?        00:00:00 php-fpm: pool a.localhost                                               
www-data  4524  2359  0 10:03 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  4527  2359  0 10:03 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  4528  2359  0 10:03 ?        00:00:00 /usr/sbin/apache2 -k start

3. 通过名字或者进程id显示进程

通过"-C"选项后面加上名字或者命令来搜索进程。

$ ps -C apache2
  PID TTY          TIME CMD
 2359 ?        00:00:00 apache2
 4524 ?        00:00:00 apache2
 4525 ?        00:00:00 apache2
...

要通过进程id显示进程,就使用"-p"选项,并且还可以通过逗号分隔来指定多个进程id。

$ ps -f -p 3150,7298,6544

"-C"必须提供精确的进程名,并且它并不能通过部分名字或者通配符查找。为了更灵活地搜索进程列表,通常使用grep命令。

$ ps -ef | grep apache

4. 通过cpu或者内存使用排序进程

系统管理员通常想要找出那些消耗最多内存或者CPU的进程。排序选项会基于特定的字段或者参数来排序进程列表。

可以用'--sort'指定多个字段,并用逗号分割。除此之外,字段前面还可以跟上'-'或者'+'的前缀来相应地表示递减和递增排序。这里有很多的用于排序的选项,通过man页来获取完整的列表。

$ ps aux --sort=-pcpu,+pmem

显示前5名最耗cpu的进程。

$ ps aux --sort=-pcpu | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  2.6  0.7  51396  7644 ?        Ss   02:02   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
root      1249  2.6  3.0 355800 30896 tty1     Rsl+ 02:02   0:02 /usr/bin/X -background none :0 vt01 -nolisten tcp
root       508  2.4  1.6 248488 16776 ?        Ss   02:02   0:03 /usr/bin/python /usr/sbin/firewalld --nofork
silver    1525  2.1  2.3 448568 24392 ?        S    02:03   0:01 /usr/bin/python /usr/share/system-config-printer/applet.py

5. 以树的形式显示进程层级

许多进程实际上是从同一个父进程fork出来的,了解父子关系通常是很有用的。"--forest" 选项会构造一个ascii艺术形式的进程层级视图。

下面的命令会用apache2的进程名来搜索并构造一个树来显示具体信息。

$ ps -f --forest -C apache2
UID        PID  PPID  C STIME TTY          TIME CMD
root      2359     1  0 09:32 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  4524  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4525  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4526  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4527  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4528  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
不要在排序中使用树状显示,因为两者都会以不同方式影响显示的顺序。

6. 显示父进程的子进程

下面一个是找出所有从apache进程fork出来的进程的例子。

$ ps -o pid,uname,comm -C apache2
  PID USER     COMMAND
 2359 root     apache2
 4524 www-data apache2
 4525 www-data apache2
 4526 www-data apache2
 4527 www-data apache2
 4528 www-data apache2

第一个属于root的进程是apache2的主进程,其他的apache进程都是从主进程fork出来的。下面的命令使用apache2主进程的pid列出了所有的apache2的子进程。

$ ps --ppid 2359
  PID TTY          TIME CMD
 4524 ?        00:00:00 apache2
 4525 ?        00:00:00 apache2
 4526 ?        00:00:00 apache2
 4527 ?        00:00:00 apache2
 4528 ?        00:00:00 apache2

7. 显示进程的线程

"-L"选项会随着进程一起显示线程。它可用于显示所有指定进程或者所有进程的线程。

下面的命令会显示进程id为3150的进程的所有线程。

$ ps -p 3150 -L

8. 改变显示的列

ps命令可以被配置用来只显示被选中的列。很多列可以被用来显示,完整的列表可以查看man页。

下面的命令会只显示pid、用户名、cpu、内存、命令列。

$ ps -e -o pid,uname,pcpu,pmem,comm

同样可以重命名列的名字。

$ ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm
  PID USERNAME CPU_USAGE %MEM COMMAND
    1 root           0.0  0.0 init
    2 root           0.0  0.0 kthreadd
    3 root           0.0  0.0 ksoftirqd/0
    4 root           0.0  0.0 kworker/0:0
    5 root           0.0  0.0 kworker/0:0H
    7 root           0.0  0.0 migration/0
    8 root           0.0  0.0 rcu_bh
    9 root           0.0  0.0 rcuob/0
   10 root           0.0  0.0 rcuob/1

非常灵活。

9. 显示进程运行的时间

运行的时间指的是,进程已经运行的时间。运行时间的列并没有默认显示,需要使用-o选项带入。

$ ps -e -o pid,comm,etime

10. 将ps转换为实时进程查看器

通常上,watch命令可将ps命令变成实时进程查看器。像这个简单的命令

$ watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'

我桌面上的输出如下。

Every 1.0s: ps -e -o pid,uname,cmd,pmem,pcpu --...  Sun Dec  1 18:16:08 2013

  PID USER     CMD                         %MEM %CPU
 3800 1000     /opt/google/chrome/chrome -  4.6  1.4
 7492 1000     /opt/google/chrome/chrome -  2.7  1.4
 3150 1000     /opt/google/chrome/chrome    2.7  2.5
 3824 1000     /opt/google/chrome/chrome -  2.6  0.6
 3936 1000     /opt/google/chrome/chrome -  2.4  1.6
 2936 1000     /usr/bin/plasma-desktop      2.3  0.2
 9666 1000     /opt/google/chrome/chrome -  2.1  0.8
 3842 1000     /opt/google/chrome/chrome -  2.1  0.8
 4739 1000     /opt/google/chrome/chrome -  1.8  1.0
 3930 1000     /opt/google/chrome/chrome -  1.7  1.0
 3911 1000     /opt/google/chrome/chrome -  1.6  0.6
 3645 1000     /opt/google/chrome/chrome -  1.5  0.4
 3677 1000     /opt/google/chrome/chrome -  1.5  0.4
 3639 1000     /opt/google/chrome/chrome -  1.4  0.4

输出会每秒刷新状态,但是这其实很top不同。你会发现top/htop命令的输出相比上面的ps命令刷新得更频繁。

这是因为top输出是结合了cup使用值和内存使用值后的排序值。但是上面的ps命令是一个更简单的行为的排序,每次获取一列(像学校的数学),因此它不会像top那样快速更新。


via: http://www.binarytides.com/linux-ps-command/

译者:geekpi 校对:Caroline

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