标签 Linux 下的文章

2013年是开源界丰收的一年。随着Android系统的崛起,在移动设备领域拥有超过85%的市场份额,让Linux前所未有的站在了最前沿。已经在日益增多的报道关于基于Linux发行版受欢迎度增加呈现出来,在今年新出了14个新的发行版。如果你不巧错过了他们,那么瞧一瞧吧!

  1. Slackel Linux:该发行版基于 Slackware Linux 和 Salix Os 。并将KDE作为默认的桌面环境。
  2. SalentOS:基于目前非常流行的 Ubuntu 操作系统,这个发行版用 Openbox 作为默认的窗口管理器。他针对于初学者,是一个比较轻量级的 Linux 发行版。(译注:超爱Openbox :P)
  3. Linux Lite: 这款基于 Linux 的轻量级操作系统受用于新手,用的是 XFCE 桌面环境。
  4. Kali Linux: BackTrack Linux 复兴了!,众所周知的发行版,全新 Kali Linux 备战待敌。这是一款用于渗透测试的发行版,在它正式推出后,立马得到了社区的支持。
  5. Springdale Linux: 基于红帽的一款发行版,Springdale Linux发行版最初称为 PUIAS linux。它由美国的高级研究所连同普林斯顿大学一起维护。
  6. Emmabuntüs: 该发行版有大量的预加载程序,便于日常的操作。基于 Xubuntu 操作系统,是一款轻量级 OS。
  7. Antergos: 该发行版起初命名为 Cinnarch 。这个名字是由 Archlinux 发行版和 Cinnamon 桌面环境组合而成。
  8. SolydXK: SolydX 和 SolydK 都基于 Debian Linux 发行版,分别使用了 XFCE 和 KDE 桌面。而 SolydXK 是这两者的混合版兼具家庭版和商业版。
  9. Point Linux: 结合了 Debian 发行版和 Mate 桌面环境,Mate 是 GNOME2 的一个分支。这个发行版的目标在于简易的设置和使用。
  10. Simplicity Linux: 此发行版的默认桌面是 LXDE,平台本身衍生于 Puppy Linux发行版。
  11. LXLE: 名字再次暗示了该发行版的本质。它基于 Lubuntu 系统的长期支持版本,是一个轻量级的发行版。
  12. Kwheezy: 基于 Debian Linux 发行版同时携带 KDE 桌面环境。该系统已经默认安装了各样的应用程序和媒体解码器。
  13. MakuluLinux: 在这个基于 Debian 的发行版中预装了大量的应用程序,于2013年发布。
  14. OpenMandriva LX: 该发行版基于俄罗斯的 ROSA 发行版。该发行版也受 Mandriva 发行版的支持。事实上,早些时候 Mandriva 也是由 ROSA 分支出来的。

via: http://itsfoss.com/new-linux-distros-2013/

译者:Luoxcat 校对:wxy

本文由 LCTT 原创翻译,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

间隔3s显示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中国 荣誉推出

作为一名系统管理员,我们需要弄清楚在一个特定的时间点都有谁活跃在系统上。必须严密监视我们的服务器。但是,我们当然不可能一天24小时都盯着系统。在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

总结

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


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

译者:l3b2w1 校对:Caroline

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

2013 – What A Year, Right?

2013 - 怎样的一年呢?

去年的这个时候我们还对 Ubuntu Touch 一无所知;Canonical试图募集3200万美金研发高端智能手机,这本来听起来是多么的疯狂啊;Mir还是太空站,而 Wayland 面向未来;至于 Ubuntu的下两个版本,Saucy Salamanders 和 Trusty Tahrs,虽然它们还没影子,但是一切总在按部就班中进行。

今年是繁忙的一年。虽然有约2500万人继续使用普通桌面版以满足日常工作需要,Canonical仍继续大步迈向融合未来的操作系统。

两者的关键是在APP上。在上一年我们盘点了10大最受欢迎的桌面软件。今年我们做了一些小小的改动,也包括这一年内发布更新的APP。

我们会排除一些‘显而易见’的APP,比如Firefox,Chrome,LibreOffice和Steam (因为我们都知道它们是多么的强大啊)来突出在今年使桌面体验更加完善,而又不太知名的应用程序和实用工具。

我们挑选了哪些呢?往下看吧。

Geary

2013见证了Yorba,那个Geary背后的非营利组织,尝试通过群众募集来保证Geary的未来,却募集失败了。这可能会让这个APP终结;好多APP并没有展现它们真正的潜能,却只能淹没在历史的尘埃中。庆幸的是,Geary依然还在!

在令人失望的计划后几个月,Geary 0.4.x 发布,这证明了这个开发团队的奉献精神和耐心。从今年早先时候的一个重要版本的发布,到十月Geary 0.4推出,它提升了稳定性和性能,同时增强了功能。

那些坚持认为桌面邮件客户端时代已终结的人们不得不被Yorba折服,承认了错误。现在,Geary在Linux和其他各大平台都是最好的邮件软件之一。

Birdie 推特APP

在Linux平台上的推特APP总有些异常。虽然有大量的推特APP,但很少能像在其他操作系统的专有APP那样运行稳定。而当Birdie在今年的三月份发布时,一切都改变了。一年过去了,我们亲眼看到它的成长,从起初不稳定,怨声载道地‘小鸡’成长为一个真正成熟和自信的应用程序。

虽然它仍是只羽翼未满的小雏,但它在这仍有一席之地,因为它知道自己的目标,翱翔蓝天,未来铁翅横空。

Springseed

对笔记使用者来说,2013年笔记工具的选择可不少 --从 GNOME下的Bijiben(译注:笔记本!)到强大的Nitro。但是对于我来说,小工具Springseed更引起了我的关注。

围绕着易用性的开发,APP响应更迅速界面更加清新。特性中包含实现条理化所需的所有至关重要的功能 - 创建笔记,文本排版,markdown的支持和同步dropbox,等等 - 所有都呈现在一个迷人的界面中,不带任何繁琐而不必要的东西。

Springseed是一款免费而且开源的软件,能从官方项目网站中直接下载。

Unity Tweak Tool

自从年初发布第一个版本,Unity Tweak Tool已成为’必备’的APP之一,使那些提供Ubuntu后安装建议的人无言以对。用自行设置和定制化工具,可轻而易举的量身定制符合自己习惯的 Unity 体验。

定期更新,利用每一个新的Ubuntu版本能支持的最新选项,并提供安全的取消按钮‘undo’来取消操作,也就很容易理解为什么该APP已成为众多人喜爱的工具了。

Intel 显卡驱动安装程序

Intel (尤其是 Intel的开源技术中心)使得用今年发布的 Intel 显卡驱动管理程序,使得在Linux下安装最新最好的Intel显卡驱动更加方便。程序能为用户实现自动检测,下载和安装,你只需要轻点几下鼠标和一点点耐心。

最初的版本不是没有问题。幸好,随后的版本已经修补了Bug和其他一些稀奇古怪的问题。如果你在今年早些时候尝试时没有成功,那么现在你值得再试一下。

Ubuntu SDK

这是一个独具一格且重要的选择。今年发布的Ubuntu SDK具备了Ubuntu开发者在手机和平板电脑为 Ubuntu Touch 开发APP 所需的一切。

这虽然不会让多数桌面用户使用到,但是在七月的更新特别的加入了一些强大的功能 - 包含一个统一行为的API,能与Ubuntu One数据库同步,支持创建聚合式布局等。

VoD Enablement App

这个条目与其说是一个APP,还不如说作为一个黑客的智慧结晶。无论如何,幸亏有聪明的Erich Hoover,让Netflix,LoveFilm和其他许多基于Silverlight视频流的站点现在首次能在Ubuntu下轻松的观看 - 当然,尽管是非正式的!

你可以阅览我们一月份以后的文章,了解它支持什么,如何安装,以及如何观看。

VLC

这个也许是每个人(也许有人说,不是我喜爱的)都喜爱的媒体播放器在2013进行了大量的更新,并在九月完成了最主要更新。

在其Linux版本的一系列特性和改进中,包括支持4k的视频流;VDPAU硬件解码;.MKV文件回放按钮和改进DBus和MPRIS接口等。

Lightworks for Linux

Lightworks颇富盛名,奇特而又卓越:有许多特色,强大的功能,面向专业人士,对于多数桌用户来说是不可或缺的利器。无可否认拥有这个APP多么让人震惊啊(常用于编辑一些奥斯卡获奖电影和知名唱片)。

该APP幕后公司 Editshare 发布了Linux测试版(虽然有特殊事件延时了发布时间)。但是,自从在四月份发布,他们严格确保维持特性能与Windows版本相差不大 - 这个壮举会在之后的更新中实现。

目前,新的特性和调整会在这个星期到来,对于那些幻想自己是下一个伟大的电影制造者,没有比这更好工具了,尝试一下吧。

GNOME Music 预览

好吧,好吧:这还没竣工呢。事实上,如果你没有运行高度不稳定的GNOME PPAs,你甚至不可能在Ubuntu下用这个。

但这无关紧要;我认为GNOME Music是本年度突出的Apps之一. 有些人认为其简单无为,而另一些人则认为小即是美。当然,该APP和做“所有事”的Apps不能相比,但那也偏离了初衷。

它在注重设计细节和用户体验方面是首屈一指的。


via: http://www.omgubuntu.co.uk/2013/12/top-10-linux-apps-of-2013

译者:Luoxcat 校对:jasminepeng

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

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