标签 技巧 下的文章

Netstat 简介

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

以下的简单介绍来自 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中国 荣誉推出

vsftpd非常安全的文件传输协议守护进程) 是Unix/Linux系统中的一个安全快速的FTP服务器。 在这篇指导教程中,让我们看看在openSUSE 13.1中怎样使用vsftpd来配置一个基本的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 -> 安全性与用户 -> 防火墙.

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

单击下一步并关闭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服务通过防火墙,你将会得到一个连接超时的报错。

从浏览器连接

打开你的浏览器并导航到ftp://ip-address/。输入ftp用户名和密码。

使用FileZilla连接到FTP服务器

对于新手来说,在命令行模式下工作可能会很烦恼。所以让我们来安装一个叫Filezilla的图形化的FTP客户端。它可以让我们登陆FTP变得更加简单:

几乎所有的发行版在它们的官方软件仓库中都有filezilla客户端。 为了在基于Linux的系统上安装filezilla 需要键入以下的命令:

在基于Ubuntu的系统中:

$ sudo apt-get install filezilla

在Fedora/Redhat系统中:

$ sudo yum install filezilla

在openSUSE中:

# zypper in filezilla

安装完fielzilla后打开它。输入ftp服务器的IP地址、用户名和密码,然后点击快速连接。

为了增加安全性,你可以通过将用户添加到 /etc/vsftpd.chroot\_list文件中来限制特定用户对FTP服务器的访问。

编辑 vsftpd.conf 文件,

nano /etc/vsftpd.conf

设置如下的更改.

[...]
# Uncomment and set YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
[...]

创建 文件 /etc/vsftpd.chroot\_list,

nano /etc/vsftpd.chroot_list

添加你希望能够访问FTP服务器的用户。我添加了用户unixmen

unixmen

重启ftp服务.

# systemctl restart vsftpd.service

现在你能够使用chroot\_list文件中列出的用户来连接到FTP服务器。

如果chroot\_list以外的用户想访问FTP服务器,他们将得到如下错误提示。

500 OOPS: could not read chroot() list file:/etc/vsftpd.chroot_list
ftp: Login failed

就是现在这样,你的FTP服务器已经可以使用了,好好享受吧!


via: http://www.unixmen.com/setup-ftp-server-opensuse-13-1/

译者:zsJacky 校对:Caroline

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

以下教程将会为Ubuntu、Linux Mint和Debian GUN/Linux用户讲述,如何在它们基于Debian的Linux操作系统上轻松的解压和重新打包.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中国 荣誉推出

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

怎么样运行 whoami

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

% whoami

Whoami 的参数选项

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

% whoamin –help

下面这选项会输出和 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中国 荣誉推出

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

什么是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中国 荣誉推出

下面的教程将指导 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 来继续,并等待创建过程结束。

Create a new virtual machine

创建一个新的虚拟机

Set the memory size

设置内存大小

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

Enable EFI and remove Floppy

允许 EFI 并移除 Floppy

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

Set Video Memory size and 3D acceleration

设置 Video Memory 大小 和 3D 加速

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

Prepare to install SteamOS

准备安装 SteamOS

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

SteamOS boot loader

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

SteamOS command-line shell prompt

SteamOS 命令行提示

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

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

SteamOS with GNOME 3

SteamOS 和 GNOME 3


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

译者:pandachow 校对:wxy

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