分类 系统运维 下的文章

rsync是一个十分有用,而且十分流行的linux工具。它用于备份和恢复文件,也用于对比和同步文件。我们已经在前面的文章讲述了如何在Linux下使用rsync,而今天我们将增加一些更为有用的rsync使用技巧。

排除文件和目录列表

有时候,当我们做大量同步的时候,我们可能想要从同步的文件和目录中排除一个文件和目录的列表。一般来说,像设备文件和某些系统文件,或者像临时文件或者缓存文件这类占据不必要磁盘空间的文件是不合适同步的,这类文件是我们需要排除的。

首先,让我们创建一个名为“excluded”的文件(当然,你想取什么名都可以),然后将我们想要排除的文件夹或文件写入该文件,一行一个。在我们的例子中,如果你想要对根分区进行完整的备份,你应该排除一些在启动时创建的设备目录和放置临时文件的目录,列表看起来像下面这样:

rsync excluded

然后,你可以运行以下命令来备份系统:

$ sudo rsync -aAXhv --exclude-from=excluded / /mnt/backup

rsync exclude file

从命令行排除文件

你也可以从命令行直接排除文件,该方法在你要排除的文件数量较少,并且在你想要将它写成脚本或加到crontab中又不想脚本或cron依赖于另外一个文件运行时十分有用。

例如,如果你想要同步/var到一个备份目录,但是你不想要包含cache和tmp这些通常不会有重要内容的文件夹,你可以使用以下命令:

$ sudo rsync -aAXhv --exclude={"/var/cache","/var/tmp"} /var /home/adrian/var

rsync exclude

该命令易于在脚本或cron中使用,也不会依赖其它文件。


via: http://linoxide.com/linux-command/exclude-files-rsync-examples/

作者:Adrian Dinu 译者:GOLinux 校对:wxy

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

从很久很久以前我们就在使用静态运行级别。而systemd提供了更为动态灵活的机制,来管控你的系统。

在开始介绍systemd命令前,让我们先简单的回顾一下历史。在Linux世界里,有一个很奇怪的现象,一方面Linux和自由软件(FOSS)在不断的向前推进,另一方面人们对这些变化却不断的抱怨。这就是为什么我要在此稍稍提及那些反对systemd所引起的争论的原因,因为我依然记得历史上有不少类似的争论:

  • 软件包(Pacakge)是邪恶的,因为真正的Linux用户会从源码构建他所想要的的一切,并严格的管理系统中安装的软件。
  • 解析依赖关系的包管理器是邪恶的,真正的Linux用户会手动解决这些该死的依赖关系。
  • apt-get总能把事情干好,所以只有Yum是邪恶的。
  • Red Hat简直就是Linux中的微软。
  • 好样的,Ubuntu!
  • 滚蛋吧,Ubuntu!

诸如此类...就像我之前常常说的一样,变化总是让人沮丧。这些该死的变化搅乱了我的工作流程,这可不是一件小事情,任何业务流程的中断,都会直接影响到生产力。但是,我们现在还处于计算机发展的婴儿期,在未来的很长的一段时间内将会持续有快速的变化和发展。想必大家应该都认识一些因循守旧的人,在他们的心里,商品一旦买回家以后就是恒久不变的,就像是买了一把扳手、一套家具或是一个粉红色的火烈鸟草坪装饰品。就是这些人,仍然在坚持使用Windows Vista,甚至还有人在使用运行Windows 95的老破烂机器和CRT显示器。他们不能理解为什么要去换一台新机器。老的还能用啊,不是么?

这让我回忆起了我在维护老电脑上的一项伟大的成就,那台破电脑真的早就该淘汰掉。从前我有个朋友有一台286的老机器,安装了一个极其老的MS-DOS版本。她使用这台电脑来处理一些简单的任务,比如说约会、日记、记账等,我还用BASIC给她写了一个简单的记账软件。她不用关注任何安全更新,是这样么?因为它压根都没有联网。所以我会时不时给她维修一下电脑,更换电阻、电容、电源或者是CMOS电池什么的。它竟然还一直能用。它那袖珍的琥珀CRT显示器变得越来越暗,在使用了20多年后,终于退出了历史舞台。现在我的这位朋友,换了一台运行Linux的老Thinkpad,来干同样的活。

前面的话题有点偏题了,下面抓紧时间开始介绍systemd。

运行级别 vs. 状态

SysVInit使用静态的运行级别来构建不同的启动状态,大部分发布版本中提供了以下5个运行级别:

  • 单用户模式(Single-user mode)
  • 多用户模式,不启动网络服务(Multi-user mode without network services started)
  • 多用户模式,启动网络服务(Multi-user mode with network services started)
  • 系统关机(System shutdown)
  • 系统重启(System reboot)

对于我来说,使用多个运行级别并没有太大的好处,但它们却一直在系统中存在着。 不同于运行级别,systemd可以创建不同的状态,状态提供了灵活的机制来设置启动时的配置项。这些状态是由多个unit文件组成的,状态又叫做启动目标(target)。启动目标有一个清晰的描述性命名,而不是像运行级别那样使用数字。unit文件可以控制服务、设备、套接字和挂载点。参考下/usr/lib/systemd/system/graphical.target,这是CentOS 7默认的启动目标:

[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
After=multi-user.target
Conflicts=rescue.target
Wants=display-manager.service
AllowIsolate=yes
[Install]
Alias=default.target

现在再看看unit文件长什么样? 我来给大家找个例子。 unit文件存放在下面的两个目录下:

  • /etc/systemd/system/
  • /usr/lib/systemd/system/

我们可以修改第一个目录中的文件来进行自定义配置,而第二个目录中的文件是包安装时保存的备份。/etc/systemd/system/的优先级高于/usr/lib/systemd/system/。不错,用户优先级高于机器。下面是Apache Web server的unit文件:

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd/ $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi.user.target

就算是对于新手而言,上面的文件也是非常简单易懂的。这可比SysVInit的init文件要简单多了,为了便于比较,下面截取了/etc/init.d/apache2的一个片段:

SCRIPTNAME="${0##*/}"
SCRIPTNAME="${SCRIPTNAME##[KS][0-9][0-9]}"
if [ -n "$APACHE_CONFDIR" ] ; then
    if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
            DIR_SUFFIX="${APACHE_CONFDIR##/etc/apache2-}"
    else
            DIR_SUFFIX=

整个文件一共有410行。

你可以检查unit文件的依赖关系,我常常被这些复杂的依赖关系给吓到:

$ systemctl list-dependencies httpd.service

cgroups

cgroups,或者叫控制组,在Linux内核里已经出现好几年了,但直到systemd的出现才被真正使用起来。The kernel documentation中是这样描述cgroups的:“控制组提供层次化的机制来管理任务组,使用它可以聚合和拆分任务组,并管理任务组后续产生的子任务。”换句话说,它提供了多种有效的方式来控制、限制和分配资源。systemd使用了cgroups,你可以便捷的查看它,使用下面的命令可以展示你系统中的整个cgroup树:

$ systemd-cgls

你可以使用ps命令来进行查看cgroup树:

$ ps xawf -eo pid,user,cgroup,args

常用命令集

下面的命令行展示了如何为守护进程重新装载配置文件,注意不是systemd服务文件。 使用这个命令能够激活新的配置项,且尽可能少的打断业务进程,下面以Apache为例:

# systemctl reload httpd.service

重新装载服务文件(service file)需要完全停止和重新启动服务。如果服务挂死了,用下面的命令行可以恢复它:

# systemctl restart httpd.service

你还可以用一个命令重启所有的守护进程。这个命令会重新装载所有守护进程的unit文件,然后重新生成依赖关系树:

# systemctl daemon-reload

在非特权模式下,你也可以进行重启、挂起、关机操作:

$ systemctl reboot
$ systemctl suspend
$ systemctl poweroff

按照惯例,最后给大家介绍一些systemd的学习材料。Here We Go Again, Another Linux Init: Intro to systemdUnderstanding and Using Systemd 是不错的入门材料,这两份文档里会链接到更多其他资源。


via: http://www.linux.com/learn/tutorials/794615-systemd-runlevels-and-service-management

作者:Carla Schroder 译者:coloka 校对:wxy

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

对于各种组织和公司,数据对他们是最重要的,即使对于电子商务,数据也是同样重要的。Rsync是一款通过网络备份重要数据的工具/软件。它同样是一个在类Unix和Window系统上通过网络在系统间同步文件夹和文件的网络协议。Rsync可以复制或者显示目录并复制文件。Rsync默认监听TCP 873端口,通过远程shell如rsh和ssh复制文件。Rsync必须在远程和本地系统上都安装。

rsync的主要好处是:

速度:最初会在本地和远程之间拷贝所有内容。下次,只会传输发生改变的块或者字节。

安全:传输可以通过ssh协议加密数据。

低带宽:rsync可以在两端压缩和解压数据块。

语法:

#rsysnc [options] source path destination path

示例: 1 - 启用压缩

[root@localhost /]# rsync -zvr /home/aloft/ /backuphomedir
building file list ... done
.bash_logout
.bash_profile
.bashrc
sent 472 bytes received 86 bytes 1116.00 bytes/sec
total size is 324 speedup is 0.58

上面的rsync命令使用了-z来启用压缩,-v是可视化,-r是递归。上面在本地的/home/aloft/和/backuphomedir之间同步。

示例: 2 - 保留文件和文件夹的属性

[root@localhost /]# rsync -azvr /home/aloft/ /backuphomedir
building file list ... done
./
.bash_logout
.bash_profile
.bashrc

sent 514 bytes received 92 bytes 1212.00 bytes/sec
total size is 324 speedup is 0.53

上面我们使用了-a选项,它保留了所有人和所属组、时间戳、软链接、权限,并以递归模式运行。

示例: 3 - 同步本地到远程主机

root@localhost /]# rsync -avz /home/aloft/ [email protected]:192.168.1.4:/share/rsysnctest/
Password:

building file list ... done
./
.bash_logout
.bash_profile
.bashrc
sent 514 bytes received 92 bytes 1212.00 bytes/sec
total size is 324 speedup is 0.53

上面的命令允许你在本地和远程机器之间同步。你可以看到,在同步文件到另一个系统时提示你输入密码。在做远程同步时,你需要指定远程系统的用户名和IP或者主机名。

示例: 4 - 远程同步到本地

[root@localhost /]# rsync -avz [email protected]:192.168.1.4:/share/rsysnctest/ /home/aloft/
Password:
building file list ... done
./
.bash_logout
.bash_profile
.bashrc
sent 514 bytes received 92 bytes 1212.00 bytes/sec
total size is 324 speedup is 0.53

上面的命令同步远程文件到本地。

示例: 5 - 找出文件间的不同

[root@localhost backuphomedir]# rsync -avzi /backuphomedir /home/aloft/
building file list ... done
cd+++++++ backuphomedir/
>f+++++++ backuphomedir/.bash_logout
>f+++++++ backuphomedir/.bash_profile
>f+++++++ backuphomedir/.bashrc
>f+++++++ backuphomedir/abc
>f+++++++ backuphomedir/xyz

sent 650 bytes received 136 bytes 1572.00 bytes/sec
total size is 324 speedup is 0.41

上面的命令帮助你找出源地址和目标地址之间文件或者目录的不同。

示例: 6 - 备份

rsync命令可以用来备份linux。

你可以在cron中使用rsync安排备份。

0 0 * * * /usr/local/sbin/bkpscript &> /dev/null

vi /usr/local/sbin/bkpscript

rsync -avz -e ‘ssh -p2093′ /home/test/ [email protected]:/oracle/data/

via: http://linoxide.com/how-tos/rsync-copy/

作者:Bobbin Zachariah 译者:geekpi 校对:wxy

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

本文简短的教程,将会向你展示如何不使用DBCA(数据库配置助手)在Oracle 11中删除数据库。

1- 导入数据库的SID,如果没有定义的话

export ORACLE_SID=database

2- 以操作系统认证连接数据库

[oracle@Oracle11 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 1 17:38:02 2014
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.

3- 启动数据库实例

SQL> startup

ORACLE instance started.
Total System Global Area 3340451840 bytes
Fixed Size 2217952 bytes
Variable Size 1828718624 bytes
Database Buffers 1493172224 bytes
Redo Buffers 16343040 bytes
Database mounted.
Database opened.

4- 关闭数据库

SQL> shutdown immediate;

Database closed.
Database dismounted.
ORACLE instance shut down.

5- 启动独占模式

SQL> startup mount exclusive restrict

ORACLE instance started.

Total System Global Area 3340451840 bytes
Fixed Size 2217952 bytes
Variable Size 1828718624 bytes
Database Buffers 1493172224 bytes
Redo Buffers 16343040 bytes
Database mounted.

6- 删除数据库

SQL> drop database;
<br>Database dropped.

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

完成!


via: http://www.unixmen.com/drop-database-oracle-11-without-using-dcba/

作者:M.el Khamlichi 译者:VicYu/Vic020 校对:wxy

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

Linux 操作系统和许多应用程序会创建特殊的文件来记录它们的运行事件,这些文件通常被称作“日志”。当要了解操作系统或第三方应用程序的行为或进行故障排查时,这些系统日志或特定的应用程序日志文件是必不可少的的工具。但是,日志文件并没有您们所谓的“清晰”或“容易”这种程度的可读性。手工分析原始的日志文件简直是浪费时间,并且单调乏味。出于这个原因,对于系统管理员来说,发现任何一款能把原始的日志文件转换成更人性化的记录摘要的工具,将会受益无穷。

logwatch 是一款用 Perl 语言编写的开源日志解析分析器。它能对原始的日志文件进行解析并转换成结构化格式的文档,也能根据您的使用情况和需求来定制报告。logwatch 的主要目的是生成更易于使用的日志摘要,并不是用来对日志进行实时的处理和监控的。正因为如此,logwatch 通常被设定好时间和频率的自动定时任务来调度运行或者是有需要日志处理的时候从命令行里手动运行。一旦日志报告生成,logwatch 可以通过电子邮件把这报告发送给您,您可以把它保存成文件或者直接显示在屏幕上。

Logwatch 报告的详细程度和报告覆盖范围是完全可定制化的。Logwatch 的日志处理引擎也是可扩展的,从某种意义上来说,如果您想在一个新的应用程序中使用 logwatch 功能的话,只需要为这个应用程序的日志文件编写一个日志处理脚本(使用 Perl 语言),然后挂接到 logwatch 上就行。

logwatch 有一点不好的就是,在它生成的报告中没有详细的时间戳信息,而原来的日志文件中是存在的。您只能知道被记录下来的一段时间之内的特定事件,如果想要知道精确的时间点的信息,就不得不去查看原日志文件了。

安装 Logwatch

在 Debian 系统或其派生的系统上:

# aptitude install logwatch 

在基于 Red Hat 的发布系统上:

# yum install logwatch 

配置 Logwatch

安装时,主要的配置文件(logwatch.conf)被放到 /etc/logwatch/conf 目录中。此文件(默认是空的)定义的设置选项会覆盖掉定义在 /usr/share/logwatch/default.conf/logwatch.conf 文件中的系统级设置。

在命令行中,启动 logwatch, 如果不带参数的话,将会使用 /etc/logwatch/conf/logwatch.conf 文件中定义的选项。但,只要一指定参数,它们就会覆盖 /etc/logwatch/conf/logwatch.conf 文件中的任意默认/自定义设置。

这篇文章里,我们会编辑 /etc/logwatch/conf/logwatch.conf 文件来对一些默认的设置项做些个性化设置。

Detail = <Low, Med, High, 或数字>

“Detail” 配置指令控制着 logwatch 报告的详细程度。它可以是个正整数,也可以是分别代表着10、5和0数字的 High、Med、Low 几个选项。

MailTo = [email protected]

如果您让把一份 logwatch 的报告邮件给您,就要使用 “MailTo” 这个配置指令。要把一份报告发送给多个用户,只需要把他们的邮件地址用空格格开,然后配置上去。但是,您需要在 logwatch 运行的服务器上配置好本地邮件传输代理(MTA)如,sendmail、 Postfix 等,这个配置指令项才能起作用。

Range = <Yesterday|Today|All>

"Range" 配置指令定义了生成 logwatch 报告的时间段信息。这个指令通常可选的值是 Yesterday、Today、All。当作用了“Rang = All”时,“Archive = yes” 这个指令项也必须配置上,那么所有的已存档的日志文件 (比如,/var/log/maillog、/var/log/maillog.X 或 /var/log/maillog.X.gz 文件)都会被处理到。

除了这些通用的 range 值,您也可以使用复杂点的选择值,如下所示:

  • Range = "2 hours ago for that hour"
  • Range = "-5 days"
  • Range = "between -7 days and -3 days"
  • Range = "since September 15, 2014"
  • Range = "first Friday in October"
  • Range = "2014/10/15 12:50:15 for that second"

要使用上面例子中自由形式的 range,您需要从 CPAN(注:Comprehensive Perl Archive Network) 上下载安装 Perl 的 Date::Manip 模块。关于 CPAN 模块的安装说明,请请参阅此帖

Service = <service-name-1>
Service = <service-name-2>
. . .

“Service” 选项指定想要监控的一个或多个服务。在 /usr/share/logwatch/scripts/services 目录下列出的服务都能被监控,它们已经涵盖了重要的系统服务(例如:pam,secure,iptables,syslogd 等),也涵盖了一些像 sudo、sshd、http、fail2ban、samba等主流的应用服务。如果您想添加新的服务到列表中,得编写一个相应的日志处理 Perl 脚本,并把它放在这个目录中。

如果这个选项要用来选择特定的服务话,您需要把 /usr/share/logwatch/default.conf/logwatch.conf 文件中的 "Service = All " 这一行注释掉。

Format = <text|html>

“Format” 配置指令定义了一份 logwatch 报告的格式(比如 text 或者 HTML)。

Output = <file|mail|stdout>

"Output" 配置指令定义生成的 logwatch 报告要发送的目的地。它能被保存成文件(file),生成电子邮件(mail)或者是直接在屏幕上显示(stdout)。

用 Logwatch 来分析日志文件

要弄明白怎么使用 logwatch 来分析日志文件,可以参考下面的 logwatch.conf 文件例子:

Detail = High
MailTo = [email protected]
Range = Today
Service = http
Service = postfix
Service = zz-disk_space
Format = html
Output = mail

使用这些设置,logwatch 将会处理三个应用服务(http、postfix 和 zz-disk\_space)当天产生的日志,生成一份非常详细的 HTML 格式报告,然后邮件给您。

如果您不想个性化 /etc/logwatch/conf/logwatch.conf,您可以不修改此文件让其默认,然后在命令行里运行如下所示的命令。也会得到同样的输出。

# logwatch --detail 10 --mailto [email protected] --range today --service http --service postfix --service zz-disk_space --format html --output mail 

电子邮件发送的报告样子如图示:

这份电子邮件头部包含指向导航到报告细节的链接,在每个选中的服务细节,也会有“返回顶部”的链接。

接收人很少的情况下您可能会使用电子邮件发送报告这个选项。其它情况下,您可能会把让其生成为 HTML 格式的报告,这样每个想看这份报告的人都可以从网络共享里看到。只需要把上面例子中的配置做些修改就可以实现:

Detail = High
Range = Today
Service = http
Service = postfix
Service = zz-disk_space
Format = html
Output = file
Filename = /var/www/html/logs/dev1.html

同样的,也可以在命令行中运行如下的命令。

# logwatch --detail 10 --range today --service http --service postfix --service zz-disk_space --format html --output file --filename /var/www/html/logs/dev1.html 

最后,让我们使用 cron 来配置 logwatch 的定时执行任务。下面的例子中,将会在每个工作日的下午 12:15 分运行 logwatch 调度任务。

# crontab -e 

15 12 * * 1,2,3,4,5 /sbin/logwatch

希望这会有所帮助。欢迎到社区发表评论或分享自己的心得和体会!


via: http://xmodulo.com/monitor-log-file-linux-logwatch.html

作者:Gabriel Cánepa 译者:runningwater 校对:wxy

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

一段时间以来,我们在网上向读者介绍了如何为Linux以及类Linux操作系统配置多种不同的性能监控工具。在这篇文章中我们将罗列一系列使用最频繁的性能监控工具,并对介绍到的每一个工具提供了相应的简介链接,大致将其划分为两类,基于命令行的和提供图形化接口的。

基于命令行的性能监控工具

1. dstat - 多类型资源统计工具

该命令整合了vmstatiostatifstat三种命令。同时增加了新的特性和功能可以让你能及时看到各种的资源使用情况,从而能够使你对比和整合不同的资源使用情况。通过不同颜色和区块布局的界面帮助你能够更加清晰容易的获取信息。它也支持将信息数据导出到cvs格式文件中,从而用其他应用程序打开,或者导入到数据库中。你可以用该命令来监控cpu,内存和网络状态随着时间的变化

2. atop - 相比top更好的ASCII码体验

这个使用ASCII码显示方式的命令行工具是一个显示所有进程活动的性能监控工具。它可以展示每日的系统日志以进行长期的进程活动分析,并高亮显示过载的系统使用资源。它包含了CPU,内存,交换空间,磁盘和网络层的度量指标。所有这些功能只需在终端运行atop即可。

# atop

当然你也可以使用交互界面来显示数据并进行排序。

3. Nmon - 类Unix系统的性能监控

Nmon是Nigel's Monitor缩写,它最早开发用来作为AIX的系统监控工具。如果使用在线模式,可以使用光标键在屏幕上操作实时显示在终端上的监控信息。使用捕捉模式能够将数据保存为CSV格式,方便进一步的处理和图形化展示。

更多的信息参考使用nmon进行性能监控的文章。

4. slabtop - 显示内核slab缓存信息

这个应用能够显示缓存分配器是如何管理Linux内核中缓存的不同类型的对象。这个命令类似于top命令,区别是它的重点是实时显示内核slab缓存信息。它能够显示按照不同排序条件来排序显示缓存列表。它同时也能够显示一个slab层信息的统计信息的题头。举例如下:

# slabtop --sort=a
# slabtop -s b
# slabtop -s c
# slabtop -s l
# slabtop -s v
# slabtop -s n
# slabtop -s o

更多的信息参考监控内核slab缓存的文章。

5. sar - 性能监控和瓶颈检查

sar 命令可以将操作系统上所选的累积活动计数器内容信息输出到标准输出上。其基于计数值和时间间隔参数的审计系统,会按照指定的时间间隔输出指定次数的监控信息。如果时间间隔参数为设置为0,那么sar命令将会显示系统从开机到当时时刻的平均统计信息。有用的命令如下:

# sar -u 2 3
# sar -u -f /var/log/sa/sa05
# sar -P ALL 1 1
# sar -r 1 3
# sar -W 1 3

6. Saidar - 简单的统计监控工具

Saidar是一个简单轻量的系统信息监控工具。虽然它无法提供大多性能报表,但是它能够通过一个简单明了的方式显示最有用的系统运行状况数据。你可以很容易地看到运行时间、平均负载、CPU、内存、进程、磁盘和网络接口统计信息。

Usage: saidar [-d delay] [-c] [-v] [-h]

-d 设置更新时间(秒)
-c 彩色显示
-v 显示版本号
-h 显示本帮助

7. top - 经典的Linux任务管理工具

作为一个广为人知的Linux工具,top是大多数的类Unix操作系统任务管理器。它可以显示当前正在运行的进程的列表,用户可以按照不同的条件对该列表进行排序。它主要显示了系统进程对CPU和内存的使用状况。top可以快速检查是哪个或哪几个进程挂起了你的系统。你可以在这里看到top使用的例子。 你可以在终端输入top来运行它并进入到交互模式:

交互模式的一些快捷操作:

    全局命令: <回车/空格> ?, =, A, B, d, G, h, I, k, q, r, s, W, Z
    统计区的命令: l, m, t, 1
    任务区的命令:
         外观: b, x, y, z 内容: c, f, H, o, S, u 大小: #, i, n 排序: <, >, F, O, R
    色彩方案: <Ret>, a, B, b, H, M, q, S, T, w, z, 0 - 7
    窗口命令:  -, _, =, +, A, a, G, g, w

8. Sysdig - 系统进程的高级视图

Sysdig是一个能够让系统管理员和开发人员以前所未有方式洞察其系统行为的监控工具。其开发团队希望改善系统级的监控方式,通过提供关于存储,进程,网络和内存子系统的统一有序以及粒度可见的方式来进行错误排查,并可以创建系统活动记录文件以便你可以在任何时间轻松分析。

简单例子:

# sysdig proc.name=vim
# sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"
# sysdig evt.type=chdir and user.name=root
# sysdig -l
# sysdig -L
# sysdig -c topprocs_net
# sysdig -c fdcount_by fd.sport "evt.type=accept"
# sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"
# sysdig -c topprocs_file
# sysdig -c fdcount_by proc.name "fd.type=file"
# sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open
# sysdig -c topprocs_cpu
# sysdig -c topprocs_cpu evt.cpu=0
# sysdig -p"%evt.arg.path" "evt.type=chdir and user.name=root"
# sysdig evt.type=open and fd.name contains /etc

更多的信息参考:如何利用sysdig改善系统层次的监控和错误排查

9. netstat - 显示开放的端口和连接

它是Linux管理员使用来显示各种网络信息的工具,如查看什么端口开放和什么网络连接已经建立以及何种进程运行在该连接之上。同时它也显示了不同程序间打开的Unix套接字的信息。作为大多数Linux发行版本的一部分,netstat的许多命令在netstat和它的不同输出中有详细的描述。最为常用的如下:

$ netstat | head -20
$ netstat -r
$ netstat -rC
$ netstat -i
$ netstat -ie
$ netstat -s
$ netstat -g
$ netstat -tapn

10. tcpdump - 洞察网络封包

tcpdump可以用来查看网络连接封包内容。它显示了传输过程中封包内容的各种信息。为了使得输出信息更为有用,它允许使用者通过不同的过滤器获取自己想要的信息。可以参照的例子如下:

# tcpdump -i eth0 not port 22
# tcpdump -c 10 -i eth0
# tcpdump -ni eth0 -c 10 not port 22
# tcpdump -w aloft.cap -s 0
# tcpdump -r aloft.cap
# tcpdump -i eth0 dst port 80

更多的信息可以在使用topdump捕捉包中找到详细描述。

11. vmstat - 虚拟内存统计信息

vmstat是虚拟内存(virtual memory statistics)的缩写,作为一个内存监控工具,它收集和显示关于内存进程终端分页I/O阻塞的概括信息。作为一个开源程序,它可以在大部分Linux发行版本中找到,包括Solaris和FreeBSD。它用来诊断大部分的内存性能问题和其他相关问题。

更多的信息参考vmstat命令的文章。

12. free - 内存统计信息

free是另一个能够在终端中显示内存和交换空间使用的命令行工具。由于它的简易,它经常用于快速查看内存使用或者是应用于不同的脚本和应用程序中。在这里你可以看到这个小程序的许多应用。几乎所有的系统管理员日常都会用这个工具。:-)

13. Htop - 更加友好的top

Htop基本上是一个top改善版本,它能够以更加多彩的方式显示更多的统计信息,同时允许你采用不同的方式进行排序,它提供了一个用户友好的接口。

更多的信息参考我们的文章:“关于htop和top的比较”。

14. ss - 网络管理的现代替代品

ssiproute2包的一部分。iproute2是用来替代一整套标准的Unix网络工具组件,它曾经用来完成网络接口配置,路由表和管理ARP表任务。ss工具用来记录套接字统计信息,它可以显示类似netstat一样的信息,同时也能显示更多TCP和状态信息。一些例子如下:

# ss -tnap
# ss -tnap6
# ss -tnap
# ss -s
# ss -tn -o state established -p

15. lsof - 列表显示打开的文件

lsof命令,意为“list open files”, 用于在许多类Unix系统中显示所有打开的文件及打开它们的进程。在大部分Linux发行版和其他类Linux操作系统中系统管理员用它来检查不同的进程打开了哪些文件。

# lsof +p process_id
# lsof | less
# lsof –u username
# lsof /etc/passwd
# lsof –i TCP:ftp
# lsof –i TCP:80

更多的信息参考我们的文章:lsof 的使用

16. iftop - 类似top的了网络连接工具

iftop是另一个基于网络信息的类似top的程序。它能够显示当前时刻按照带宽使用量或者上传或者下载量排序的网络连接状况。它同时提供了下载文件的预估完成时间。

更多的信息参考Linux流量监控工具:iftop

17. iperf - 网络性能工具

iperf是一个网络测试工具,能够创建TCPUDP数据连接并在网络上测量它们的传输性能。它支持调节关于时间,协议和缓冲等不同的参数。对于每一个测试,它会报告带宽,丢包和其他的一些参数。

如果你想用使用这个工具,可以参考这篇文章: 如何安装和使用iperf

18. Smem - 高级内存报表工具

Smem是最先进的Linux命令行工具之一,它提供关于系统中已经使用的和共享的实际内存大小,试图提供一个更为可靠的当前内存使用数据。

$ smem -m
$ smem -m -p | grep firefox
$ smem -u -p
$ smem -w -p

参考我们的文章:Smem更多的例子

图形化或基于Web的性能工具

19. Icinga - Nagios的社区分支版本

Icinga是一个开源免费的网络监控程序,作为Nagios的分支,它继承了前者现有的大部分功能,同时基于这些功能又增加了社区用户要求已久的功能和补丁。

更多信息请参考安装和配置lcinga文章

20. Nagios - 最为流行的监控工具

作为在Linux上使用最为广泛和最为流行的监控方案,它有一个守护程序用来收集不同进程和远程主机的信息,这些收集到的信息都通过功能强大的web界面进行呈现。

你可以在文章“如何安装nagios”里面找到更多的信息。

21. Linux process explorer - Linux下的procexp

Linux process explorer是一个Linux下的图形化进程浏览工具。它能够显示不同的进程信息,如进程数,TCP/IP连接和每一个进程的性能指标。作为Windowsprocexp在Linux的替代品,是由Sysinternals开发的,其目标是比topps提供更好用户体验。

查看 linux process explorer 的文章获取更多信息。

22. Collectl - 性能监控工具

你可以既可以通过交互的方式使用这个性能监控工具,也可以用它把报表写到磁盘上,并通过web服务器来访问。它以一种易读易管理的格式,显示了CPU,磁盘,内存,网络,网络文件系统,进程,slabs等统计信息。

更多信息请参看Collectl的文章

23. MRTG - 经典网络流量监控图形工具

这是一个采用rrdtool的生成图形的流量监控工具。作为最早的提供图形化界面的流量监控工具,它被广泛应用在类Unix的操作系统中。查看我们关于如何使用MRTG的文章获取更多关于安装和配置的信息。

24. Monit - 简单易用的监控工具

Monit是一个用来监控进程系统加载文件系统目录文件等的开源的Linux工具。你能够让它自动化维护和修复,也能够在运行错误的情景下执行特定动作或者发邮件报告提醒系统管理员。

如果你想要用这个工具,你可以查看如何使用Monit的文章

25. Munin - 为服务器提供监控和提醒服务

作为一个网络资源监控工具,Munin能够帮助分析资源趋势和查看薄弱环节以及导致产生性能问题的原因。开发此软件的团队希望它能够易用和用户体验友好。该软件是用Perl开发的,并采用rrdtool来绘制图形,使用了web界面进行呈现。开发人员推广此应用时声称当前已有500多个监控插件可以“即插即用”。

更多信息可以在关于Munin的文章中找到。


via: http://linoxide.com/monitoring-2/linux-performance-monitoring-tools/

作者:Adrian Dinu 译者:andyxue 校对:wxy

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