标签 技巧 下的文章

问题: 我该如何在 Elemetary OS Luna 上安装Oracle Java 7?

回答: 在 Elementary OS Luna 安装 Java 7 的步骤如下: 由于Elementary OS是基于Ubuntu,所以我们允许使用具有多种Java包的WEPUD8 PPA

  1. 打开终端。
  2. 运行以下指令添加Java的PPA到你的软件仓:
$ sudo add-apt-repository ppa:webupd8team/java

You are about to add the following PPA to your system:
Oracle Java (JDK) Installer (automatically downloads and installs Oracle JDK6 / JDK7 / JDK8). There are no actual Java files in this PPA. More info: http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html
Debian installation instructions: http://www.webupd8.org/2012/06/how-to-install-oracle-java-7-in-debian.html
More info: https://launchpad.net/~webupd8team/+archive/java
Press [ENTER] to continue or ctrl-c to cancel adding it
  1. 按回车继续
gpg: keyring `/tmp/tmpB5WwDG/secring.gpg' created
gpg: keyring `/tmp/tmpB5WwDG/pubring.gpg' created
gpg: requesting key EEA14886 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpB5WwDG/trustdb.gpg: trustdb created
gpg: key EEA14886: public key "Launchpad VLC" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK
  1. 现在更新你的系统
$ sudo apt-get update
  1. 运行以下命令安装Java 7:
$ sudo apt-get install oracle-java7-installer

[sudo] password for enock:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
gir1.2-gstreamer-0.10 libilmbase6 libmagickcore4 libmagickwand4 libcdt4
libmagickcore4-extra liblqr-1-0 imagemagick-common libpathplan4 libopenexr6
rsync netpbm libgvc5 libnetpbm10 libgraph4
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
gsfonts-x11 java-common
Suggested packages:
default-jre equivs binfmt-support visualvm ttf-baekmuk ttf-unfonts
ttf-unfonts-core ttf-kochi-gothic ttf-sazanami-gothic ttf-kochi-mincho
ttf-sazanami-mincho ttf-arphic-uming
The following NEW packages will be installed:
gsfonts-x11 java-common oracle-java7-installer
0 upgraded, 3 newly installed, 0 to remove and 196 not upgraded.
Need to get 88.5 kB of archives.
After this operation, 473 kB of additional disk space will be used.
Do you want to continue [Y/n]?
  1. 输入代表Yes的Y以及回车键继续安装。
  2. 在安装过程中,你需要同意条款才能继续。选择OK

  1. 然后选择Yes继续。

  1. 现在请等待安装包的下载与自动安装:

  1. 安装完成。你可以在终端上查看Java版本:
$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

via: http://www.unixmen.com/install-oracle-java-7-elementary-os-luna-via-ppa/

译者:whatever1992 校对:wxy

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

喜欢GNOME风格菜单?安装Class Menu Indicator吧。

对于那些从开始就一直关注Ubuntu操作系统的人,他们看见几乎所有的Ubuntu经历的改变。发生了许多的改变,尤其是在桌面部分。从经典的GNOME桌面环境到Unity,Ubuntu已经完全地重新设计了。

对于那些新用户,他们所知道的就是Unity桌面环境,仅仅只是听说过或者见过之前Ubuntu的原始GNOME桌面环境。

如果你是一个老资格用户,想要在Ubuntu的Unity回到GNOME风格的菜单,安装Classic Menu Indicator 可以解决这个问题。这个有趣的包被安装在顶部面板的通知区域,在Ubuntu中带回了GNOME风格菜单体验。

像经典的GNOME菜单一样,它包括所有的应用和经典菜单结构。对于曾经使用过它的人们是容易导航和开启应用。对于新用户,它也是容易掌握。

接下来的简短指导将会告诉你如何在Ubuntu中安装这个包。

马上开始,在键盘上按下 Ctrl – Alt – T 打开终端。

打开完毕后,运行下列命令,加入它的PPA文件

sudo apt-add-repository ppa:diesch/testing

接来下,运行下列命令安装它。

sudo apt-get update && sudo apt-get install classicmenu-indicator

安装完成后,在Unity Dash中启动。它叫Classic Menu Indicator。当你启动它的时候,它会自动的嵌入顶部面板,如下图。

就是这样,使用并享受吧!

via: http://www.liberiangeek.net/2013/11/daily-ubuntu-tipslike-gnome-classic-menu-get-classic-menu-indicator/

译者:Vic\_\_\_ 校对:wxy

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

你有没有遇到过一个程序占用了你所有的网络带宽的情况?如果你遇到过,那么你就需要限制带宽的应用。不管你是一个系统管理员还是一名普通Linux用户,您都应该学习如何控制应用的上传和下载速度来确保你的网络带宽不会被一个程序耗光。

Trickle 是什么?

Trickle是一款带宽控制供给,用来限制如Firefox, FTP , SSH以及其他使用网络带宽的程序的带宽。你希望你的Youtube音乐体验影响到你的ftp下载么?如果不想,请继续阅读这篇文章,学习如何在你的机器上安装和使用trickle。

怎样在Linux上安装Trickle

trickle工具有一些依赖包,安装和使用trickle之前必须安装“libevent 库”,不过这个库在大多数现在的Linux机器上已经默认安装。

在 Debian/Ubuntu/Linux Mint 上

Debian/Ubuntu/Mint 机器上运行 apt-get install trickle进行安装。请确保源列表已经更新,接着安装你想要的应用。

$ sudo apt-get update
$ sudo apt-get install trickle

在 RHEL/CentOS/Fedora 上

首先你需要更新系统,然后使用下面的命令安装trickle。

# yum update
# yum install trickle

Trickle如何工作?

Trickle通过控制socket数据读写量来控制和限制应用的上传/下载速度。它使用另一个版本的BSD套接字API,但是区别是trickle还管理socket调用。

要注意的是trickle使用动态链接和加载,所以它只对于使用"Glibc库"的程序有用。由于trickle可以设置数据在socket上的传输延迟,所以它可以用来限制一个应用的网络带宽。

Trickle不能做什么?

Trickle不能用于限制使用UDP协议的应用的带宽,它只可用于TCP连接,但是你要知道它也并不是对所有的TCP连接有效。如果你一直仔细地看这篇文章,你可以猜到原因是什么。你还记得trickle只对使用Glibc库应用有效吧?

还要说一下,trickle无法工作在使用静态链接的可执行程序上。

确定Trickle是否可运行在某个特定应用上

既然trickle无法限制每个应用的上传/下载速度,就应该有个方法找出trickle可以工作的应用。

ldd工具可以帮我们找出某个特定的程序是否使用了libc.so库。如果程序使用了这个库,就可以使用trickle来限制它的网络带宽使用。

ldd命令用于打印每个程序需要的共享库。如果你是一个好奇的Linux Geek,那么你可以使用man命令来找出关于ldd工具的更多信息。

# man ldd

Filezilla是一款使用ftp协议传输文件的程序,trickle可以用来限制它的下载或者上传速度么?在你考虑的时候,我使用以下的命令来找出trickle是否可用于filezilla。

# ldd filezilla | grep libc.so

就我而言,它输出了如下:

oltjano@oltjano-X55CR:/usr/bin$ ldd filezilla | grep libc.so
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb6bc4000)

既然filezilla使用了“libc.so”库,那么trickle可以用来限制它的网络带宽。这个方法可以用在任何你感兴趣的程序上。

学习如何使用Trickle

使用下面的命令输出trickle工具的版本

root@oltjano-X55CR:~# trickle -V
trickle: version 1.07

Linux有很多命令行工具使测试(实验)变得有趣和美丽。下面的命令使用wget 工具来下载最新的Pear OS镜像.

root@oltjano-X55CR:~# wget http://sourceforge.net/projects/pearoslinux/files/Pear%20OS%208/pearos8-i386.iso/download

--2013-11-20 11:56:32--  http://sourceforge.net/projects/pearoslinux/files/Pear%20OS%208/pearos8-i386.iso/download
Resolving sourceforge.net (sourceforge.net)... 216.34.181.60
Connecting to sourceforge.net (sourceforge.net)|216.34.181.60|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://downloads.sourceforge.net/project/pearoslinux/Pear%20OS%208/pearos8-i386.iso?r=&ts=1384928843&use_mirror=kaz [following]
--2013-11-20 11:56:33--  http://downloads.sourceforge.net/project/pearoslinux/Pear%20OS%208/pearos8-i386.iso?r=&ts=1384928843&use_mirror=kaz
Resolving downloads.sourceforge.net (downloads.sourceforge.net)... 216.34.181.59
Connecting to downloads.sourceforge.net (downloads.sourceforge.net)|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://kaz.dl.sourceforge.net/project/pearoslinux/Pear%20OS%208/pearos8-i386.iso [following]
--2013-11-20 11:56:33--  http://kaz.dl.sourceforge.net/project/pearoslinux/Pear%20OS%208/pearos8-i386.iso
Resolving kaz.dl.sourceforge.net (kaz.dl.sourceforge.net)... 88.204.157.163
Connecting to kaz.dl.sourceforge.net (kaz.dl.sourceforge.net)|88.204.157.163|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1093664768 (1.0G) [application/octet-stream]
Saving to: ‘download’

0% [                                                                                                    ] 30,78,278    381KB/s  eta 1h 50m

从输出可以看到,下载速度大约是381 KB/s。我想限制下载速度到13 K/s,这样我就可以用我的带宽做其他的事情了。下面的命令用来限制wget速度到13 K/s

ravisaive@ravisaive-OptiPlex-380:~$ trickle -d 13 wget http://sourceforge.net/projects/pearoslinux/files/Pear%20OS%208/pearos8-i386.iso/download

--2013-11-20 12:01:19--  http://sourceforge.net/projects/pearoslinux/files/Pear%20OS%208/pearos8-i386.iso/download
Resolving sourceforge.net (sourceforge.net)... 216.34.181.60
Connecting to sourceforge.net (sourceforge.net)|216.34.181.60|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://downloads.sourceforge.net/project/pearoslinux/Pear%20OS%208/pearos8-i386.iso?r=&ts=1384929129&use_mirror=kaz [following]
--2013-11-20 12:01:19--  http://downloads.sourceforge.net/project/pearoslinux/Pear%20OS%208/pearos8-i386.iso?r=&ts=1384929129&use_mirror=kaz
Resolving downloads.sourceforge.net (downloads.sourceforge.net)... 216.34.181.59
Connecting to downloads.sourceforge.net (downloads.sourceforge.net)|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://kaz.dl.sourceforge.net/project/pearoslinux/Pear%20OS%208/pearos8-i386.iso [following]
--2013-11-20 12:01:20--  http://kaz.dl.sourceforge.net/project/pearoslinux/Pear%20OS%208/pearos8-i386.iso
Resolving kaz.dl.sourceforge.net (kaz.dl.sourceforge.net)... 88.204.157.163
Connecting to kaz.dl.sourceforge.net (kaz.dl.sourceforge.net)|88.204.157.163|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1093664768 (1.0G) [application/octet-stream]
Saving to: ‘download.1’

0% [                                                                                                   ] 2,01,550    13.1KB/s  eta 21h 5m

从输出可以看到,下载速度被限制到了13K/s。下载将会持续21小时5分钟。上面的“-d”选项表示下载,还可以结合使用 “-d”选项和上传选项(-u),如下例所示。

# trickle -u 100 -d 50 ftp

上面的命令限制ftp 客户端的上传速度为100K/s,下载速度为50K/s。还可以使用下面的命令,限制在一个shell里运行的所有命令的带宽。

trickle -d 130 -u 13 bash

每个命令行工具都对用户提供了帮助,使用"trickle -h"命令来找出更多trickle工具的用法。

root@oltjano-X55CR:/usr/bin# trickle -h

Usage: trickle [-hvVs] [-d ] [-u ] [-w ] [-t ]
               [-l ] [-n ] command ...
    -h Help (this)
    -v Increase verbosity level
    -V Print trickle version
    -s Run trickle in standalone mode independent of trickled
    -d     Set maximum cumulative download rate to  KB/s
    -u     Set maximum cumulative upload rate to  KB/s
    -w   Set window length to  KB 
    -t  Set default smoothing time to  s
    -l   Set default smoothing length to  KB
    -n     Use trickled socket name 
    -L       Set latency to  milliseconds
    -P     Preload the specified .so instead of the default one

总结

本篇文章介绍如何在Linux机器上安装trickle工具,并用它如何做一些简单的事情。无论你为大公司工作还是自己使用,trickle都是高级Linux用户的必备工具。


via: http://www.tecmint.com/manage-and-limit-downloadupload-bandwidth-with-trickle-in-linux/

译者:geekpi 校对:jasminepeng

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

TeamViewer,是一款热门的远程支持和桌面共享工具,并且它的Windows版、Mac OS X版和Linux版(包含Ubuntu)已经更新到版本 9 了。TeamViewer 允许你在任何地方通过网络控制任何电脑。

如果你在谈一桩生意或者帮助别人解决一些与电脑相关的问题,例如杀毒,又或者远程共享你的屏幕内容,那同样,它是一款功能强大的工具,值得拥有。

以下是这个支持工具如何使用的例子。

最近,我妈妈打电话给我说她想弄清楚如何安装一个程序。当我在电话中花了几分钟尝试帮她弄那个程序,不过都失败后,我决定自己来。

因此我们两个人都花了几分钟下载了 TeamViewer,我连接上了她的电脑并且帮她安装了那个程序。

这是一个 TeamViewer 如何帮助你解决问题的例子,如果你准备使用 TeamViewer 来帮助你的顾客或者是客户的话,你可能需要购买一个授权许可来遵守公司的政策。

我宁愿选择 TeamViewer 而不选择其它远程支持工具的另外一个原因是它允许你直接使用,无需安装,至少在 Windows 上是这样。如果你只使用一次的话,那么你只需要运行它,而它却不会占用你的磁盘空间。

现在 TeamViewer 能够在几乎所有操作系统上运行,包括 Android 和 IOS。

Windows 用户可以 从这里下载 TeamViewer

Ubuntu 用户可以 从这链接下载并运行 TeamViewer

在 Ubuntu 轻松安装 TeamViewer,运行下面的命令来下载安装程序

wget http://download.teamviewer.com/download/teamviewer_linux.deb

对于 64位操作系统, 使用下面的链接.

wget http://download.teamviewer.com/download/teamviewer_linux_x64.deb

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

sudo dpkg -i teamviewer_linux*.deb; sudo apt-get -f install

去试试吧!

如果上述的命令不能成功运行的话,那么就去 TeamViewer 下载页面来下载.


via: http://www.liberiangeek.net/2013/12/daily-ubuntu-tips-teamviewer-9-is-available-for-download/

译者:hyaocuk 校对:Caroline

本文由 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中国 荣誉推出

Linux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。在本篇中,我们会探索top命令的细节。top命令是一个交互命令。在运行top的时候还可以运行很多命令。我们也会探索这些命令。

(译注:不同发行版的top命令在各种细节有不同,如果发现不同时,请读你的帮助手册和命令内的帮助。)

  1. Top 命令输出:

首先,让我们了解一下输出。top命令会显示系统的很多信息。我们需要理解不同部分输出的意义:默认运行时,top命令会显示如下输出:

默认显示

前几行水平显示了不同系统参数的概括,接下来是进程和它们在列中的属性。

1.1 系统运行时间和平均负载:

显示运行时间

top命令的顶部显示与uptime命令相似的输出。

这些字段显示:

  • 当前时间
  • 系统已运行的时间
  • 当前登录用户的数量
  • 相应最近5、10和15分钟内的平均负载。

可以使用'l'命令切换uptime的显示。

1.2 任务:

任务概况

第二行显示的是任务或者进程的总结。进程可以处于不同的状态。这里显示了全部进程的数量。除此之外,还有正在运行、睡眠、停止、僵尸进程的数量(僵尸是一种进程的状态)。这些进程概括信息可以用't'切换显示。

1.3 CPU 状态:

CPU状态显示

下一行显示的是CPU状态。 这里显示了不同模式下的所占CPU时间的百分比。这些不同的CPU时间表示:

  • us, user: 运行(未调整优先级的) 用户进程的CPU时间
  • sy,system: 运行内核进程的CPU时间
  • ni,niced:运行已调整优先级的用户进程的CPU时间
  • wa,IO wait: 用于等待IO完成的CPU时间
  • hi:处理硬件中断的CPU时间
  • si: 处理软件中断的CPU时间
  • st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。

可以使用't'命令切换显示。

1.4 内存使用:

内存使用情况

接下来两行显示内存使用率,有点像'free'命令。第一行是物理内存使用,第二行是虚拟内存使用(交换空间)。

物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存。相似地:交换部分显示的是:全部、已使用、空闲和缓冲交换空间。

内存显示可以用'm'命令切换。

1.5 字段/列:

任务信息列

在横向列出的系统属性和状态下面,是以列显示的进程。不同的列代表下面要解释的不同属性。

默认上,top显示这些关于进程的属性:

PID

进程ID,进程的唯一标识符

USER

进程所有者的实际用户名。

PR

进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。

NI

进程的nice值(优先级)。越小的值意味着越高的优先级。

VIRT

进程使用的虚拟内存。

RES

驻留内存大小。驻留内存是任务使用的非交换物理内存大小。

SHR

SHR是进程使用的共享内存。

S

这个是进程的状态。它有以下不同的值:

  • D - 不可中断的睡眠态。
  • R – 运行态
  • S – 睡眠态
  • T – 被跟踪或已停止
  • Z – 僵尸态

%CPU

自从上一次更新时到现在任务所使用的CPU时间百分比。

%MEM

进程使用的可用物理内存百分比。

TIME+

任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND

运行进程所使用的命令。

还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组ID和其他更多的信息。

  1. 交互命令:

我们之前说过top是一个交互命令。上一节我们已经遇到了一些命令。这里我们会探索更多的命令。

2.1 ‘h’: 帮助

首先,我们可以用'h'或者'?'显示交互命令的帮助菜单。

帮助菜单

2.2 ‘’ 或者 ‘’: 刷新显示

top命令默认在一个特定间隔(3秒)后刷新显示。要手动刷新,用户可以输入回车或者空格。

2.3 ‘A’: 切换交替显示模式

这个命令在全屏和交替模式间切换。在交替模式下会显示4个窗口(译注:分别关注不同的字段):

  1. Def (默认字段组)
  2. Job (任务字段组)
  3. Mem (内存字段组)
  4. Usr (用户字段组)

这四组字段共有一个独立的可配置的概括区域和它自己的可配置任务区域。4个窗口中只有一个窗口是当前窗口。当前窗口的名称显示在左上方。(译注:只有当前窗口才会接受你键盘交互命令)

交替显示

我们可以用'a'和'w'在4个 窗口间切换。'a'移到后一个窗口,'w'移到前一个窗口。用'g'命令你可以输入一个数字来选择当前窗口。

在交替显示中选择窗口

2.4 ‘B’: 触发粗体显示

一些重要信息会以加粗字体显示。这个命令可以切换粗体显示。

关闭粗体

2.5 ‘d’ 或‘s’: 设置显示的刷新间隔

当按下'd'或's'时,你将被提示输入一个值(以秒为单位),它会以设置的值作为刷新间隔。如果你这里输入了1,top将会每秒刷新。

刷新间隔l

2.6 ‘l’、‘t’、‘m’: 切换负载、任务、内存信息的显示

这会相应地切换顶部的平均负载、任务/CPU状态和内存信息的概况显示。

不显示平均负载

不显示CPU概况

不显示内存和交换内存概况

上面三个全不显示

2.7 ‘f’: 字段管理

用于选择你想要显示的字段。用'*'标记的是已选择的。

管理显示列

上下光标键在字段内导航,左光标键可以选择字段,回车或右光标键确认。

按'<'移动已排序的字段到左边,'>'则移动到右边。

2.8 ‘R’: 反向排序

切换反向/常规排序。

2.9 ‘c’: 触发命令

切换是否显示进程启动时的完整路径和程序名。

完整命令路径

2.10 ‘i’: 空闲任务

切换显示空闲任务。

不显示空闲命令

2.11 ‘V’: 树视图

切换树视图。

树视图

2.12 ‘Z’: 改变配色

按下'Z'向用户显示一个改变top命令的输出颜色的屏幕。可以为8个任务区域选择8种颜色。

定制颜色

下面显示的是4中颜色显示的top视图。

彩色显示

2.13 ‘z’: 切换彩色显示

切换彩色,即打开或关闭彩色显示。

2.14 ‘x’ 或者 ‘y’

切换高亮信息:'x'将排序字段高亮显示(纵列);'y'将运行进程高亮显示(横行)。依赖于你的显示设置,你可能需要让输出彩色来看到这些高亮。

X 和 Y高亮

2.15 ‘u’: 特定用户的进程

显示特定用户的进程。你会被提示输入用户名。空白将会显示全部用户。

raghu的进程

2.16 ‘n’ 或 ‘#’: 任务的数量

设置最大显示的任务数量

设置最大显示的任务数量

2.17 ‘k’: 结束任务

top命令中最重要的一个命令之一。用于发送信号给任务(通常是结束任务)。

杀死一个任务

2.18 ‘r’: 重新设置优先级

重新设置一个任务的调度优先级。

  1. 命令行选项:

这些命令行选项与上面讨论的命令大多相同。top的输出可以用命令交互操作,但是你也可以带参数运行top来设置你想要的效果。

3.1 -b: 批处理模式

-b选项以批处理模式启动top命令。当你想要在文件中保存输出时是很有用的。

3.2 -c: 命令/程序名 触发:

如上面所讨论到的命令,这个选项会以上次记住的程序/命令显示的状态显示(是否显示完整路径)。

3.3 -d: 设置延迟间隔

设置top的显示间隔(以秒计)。比如。

$ top -d 1 

将会以1秒的刷新间隔启动top。

3.4 -i: 切换显示空闲进程

这个选项设置top命令的上一次记住的相反的'i'状态。

3.5 -n: 设置迭代数量

用-n选项,你可以设置top退出前迭代的次数。

$ top -n 3 

将会在刷新输出3次后退出。

3.6 -p: 监控特定的PID

你可以用-p选项监控指定的PID。PID的值为0将被作为top命令自身的PID。

3.7 -u 或 -U: 用户名 或者 UID

可以用这些选项浏览特定用户的进程。用户名或者UID可以在选项中指定。-p、-u和-U选项是互斥的,同时只可以使用这其中一个选项。当你试图组合使用这些选项时,你会得到一个错误:

$ top -p 28453 -u raghu
top: conflicting process selections (U/p/u) 

via: http://linoxide.com/linux-command/linux-top-command-examples-screenshots/

译者:geekpi 校对:wxy

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

LCTT(Linux中国翻译组)募新公告

LCTT是Linux中国社区(http://linux.cn/)的翻译组,负责从国外优秀媒体翻译Linux相关的技术、资讯、杂文等内容。

LCTT已经拥有二十余名活跃成员,并欢迎更多的Linux志愿者加入我们的团队。

项目地址: http://lctt.github.io/