Centos UUID方式挂载
今天早晨到公司发现部分客户网站无法打开, 上服务器一看,原来是重启的时候挂载目录混乱了, 干脆就用UUID方式挂载了,下边分享出查询UUID的几条命令
1.blkid -o list
2.blkid -s UUID
3.ls -l /dev/disk/by-uuid
相见,不如怀念.
今天早晨到公司发现部分客户网站无法打开, 上服务器一看,原来是重启的时候挂载目录混乱了, 干脆就用UUID方式挂载了,下边分享出查询UUID的几条命令
1.blkid -o list
2.blkid -s UUID
3.ls -l /dev/disk/by-uuid
如何将 memcached 融入到您的环境中?
在开始安装和使用 using memcached 之前,我们需要了解如何将 memcached 融入到您的环境中。虽然在任何地方都可以使用 memcached,但我发现需要在数据库层中执行几个经常性查询时,memcached 往往能发挥最大的效用。我经常会在数据库和应用服务器之间设置一系列 memcached 实例,并采用一种简单的模式来读取和写入这些服务器。图 1 可以帮助您了解如何设置应用程序体系结构:
图 1. 使用 memcached 的示例应用程序体系结构
体系结构相当容易理解。我建立了一个 Web 层,其中包括一些 Apache 实例。下一层是应用程序本身。这一层通常运行于 Apache Tomcat 或其他开源应用服务器之上。再下面一层是配置 memcached 实例的地方 — 即应用服务器与数据库服务器之间。在使用这种配置时,需要采用稍微不同的方式来执行数据库的读取和写入操作。
我执行读取操作的顺序是从 Web 层获取请求(需要执行一次数据库查询)并检查之前在缓存中存储的查询结果。如果我找到所需的值,则返回它。如果未找到,则执行查询并将结果存储在缓存中,然后再将结果返回给 Web 层。
将数据写入到数据库中时,首先需要执行数据库写入操作,然后将之前缓存的任何受此写入操作影响的结果设定为无效。此过程有助于防止缓存和数据库之间出现数据不一致性。
memcached 支持一些操作系统,包括 Linux®、Windows®、Mac OS 和 Solaris。在本文中,我将详细介绍如何通过源文件构建和安装 memcached。采用这种方式的主要原因是我在遇到问题时可以查看源代码。
libevent 是安装 memcached 的唯一前提条件。它是 memcached 所依赖的异步事件通知库。您可以在 monkey.org 上找到关于 libevent 的源文件。接下来,找到其最新版本的源文件。对于本文,我们使用稳定的 1.4.11 版本。获取了归档文件之后,将它解压到一个方便的位置,然后执行清单 1 中的命令:
清单 1. 生成和安装 libevent
cd libevent-1.4.11-stable/ ./configure make make install |
从 Danga Interactive 获取 memcached 源文件,仍然选择最新的分发版。在撰写本文时,其最新版本是 1.4.0。将 tar.gz 解压到方便的位置,并执行清单 2 中的命令:
清单 2. 生成和安装 memcached
cd memcached-1.4.0/ ./configure make make install |
完成这些步骤之后,您应该安装了一个 memcached 工作副本,并且可以使用它了。让我们进行简单介绍,然后使用它。
要开始使用 memcached,您首先需要启动 memcached 服务器,然后使用 telnet 客户机连接到它。
要启动 memcached,执行清单 3 中的命令:
清单 3. 启动 memcached
./memcached -d -m 2048 -l 10.0.0.40 -p 11211 |
这会以守护程序的形式启动 memcached(
-d
),为其分配 2GB 内存(
-m 2048
),并指定监听 localhost,即端口 11211。您可以根据需要修改这些值,但以上设置足以完成本文中的练习。接下来,您需要连接到 memcached。您将使用一个简单的 telnet 客户机连接到 memcached 服务器。
大多数操作系统都提供了内置的 telnet 客户机,但如果您使用的是基于 Windows 的操作系统,则需要下载第三方客户机。我推荐使用 PuTTy。
安装了 telnet 客户机之后,执行清单 4 中的命令:
清单 4. 连接到 memcached
telnet localhost 11211 |
如果一切正常,则应该得到一个 telnet 响应,它会指示 Connected to localhost(已经连接到 localhost)。如果未获得此响应,则应该返回之前的步骤并确保 libevent 和 memcached 的源文件都已成功生成。
您现现已经登录到 memcached 服务器。此后,您将能够通过一系列简单的命令来与 memcached 通信。9 个 memcached 客户端命令可以分为三类:
您将使用五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:
set
add
replace
get
delete
前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令。它们都非常简单易用,且都使用清单 5 所示的语法:
清单 5. 修改命令语法
command <key> <flags> <expiration time> <bytes> <value> |
表 1 定义了 memcached 修改命令的参数和用法。
表 1. memcached 修改命令参数
参数 | 用法 |
---|---|
key | key 用于查找缓存值 |
flags | 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 |
expiration time | 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) |
bytes | 在缓存中存储的字节点 |
value | 存储的值(始终位于第二行) |
现在,我们来看看这些命令的实际使用。
set
set
命令用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。
注意以下交互,它使用了
set
命令:
set userId 0 0 5 12345 STORED |
如果使用
set
命令正确设定了键值对,服务器将使用单词 STORED 进行响应。本示例向缓存中添加了一个键值对,其键为
userId
,其值为
12345
。并将过期时间设置为 0,这将向 memcached 通知您希望将此值存储在缓存中直到删除它为止。
add
仅当缓存中不存在键时,
add
命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。
下面是使用
add
命令的标准交互:
set userId 0 0 5 12345 STORED add userId 0 0 5 55555 NOT_STORED add companyId 0 0 3 564 STORED |
replace
仅当键已经存在时,
replace
命令才会替换缓存中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条 NOT_STORED 响应。
下面是使用
replace
命令的标准交互:
replace accountId 0 0 5 67890 NOT_STORED set accountId 0 0 5 67890 STORED replace accountId 0 0 5 55555 STORED |
最后两个基本命令是
get
和
delete
。这些命令相当容易理解,并且使用了类似的语法,如下所示:
command <key> |
接下来看这些命令的应用。
get
get
命令用于检索与之前添加的键值对相关的值。您将使用
get
执行大多数检索操作。
下面是使用
get
命令的典型交互:
set userId 0 0 5 12345 STORED get userId VALUE userId 0 5 12345 END get bob END |
如您所见,
get
命令相当简单。您使用一个键来调用
get
,如果这个键存在于缓存中,则返回相应的值。如果不存在,则不返回任何内容。
delete
最后一个基本命令是
delete
。
delete
命令用于删除 memcached 中的任何现有值。您将使用一个键调用
delete
,如果该键存在于缓存中,则删除该值。如果不存在,则返回一条 NOT_FOUND 消息。
下面是使用
delete
命令的客户机服务器交互:
set userId 0 0 5 98765 STORED delete bob NOT_FOUND delete userId DELETED get userId END |
可以在 memcached 中使用的两个高级命令是
gets
和
cas
。
gets
和
cas
命令需要结合使用。您将使用这两个命令来确保不会将现有的名称/值对设置为新值(如果该值已经更新过)。我们来分别看看这些命令。
gets
gets
命令的功能类似于基本的
get
命令。两个命令之间的差异在于,
gets
返回的信息稍微多一些:64 位的整型值非常像名称/值对的 “版本” 标识符。
下面是使用
gets
命令的客户机服务器交互:
set userId 0 0 5 12345 STORED get userId VALUE userId 0 5 12345 END gets userId VALUE userId 0 5 4 12345 END |
考虑
get
和
gets
命令之间的差异。
gets
命令将返回一个额外的值 — 在本例中是整型值 4,用于标识名称/值对。如果对此名称/值对执行另一个
set
命令,则
gets
返回的额外值将会发生更改,以表明名称/值对已经被更新。清单 6 显示了一个例子:
清单 6. set 更新版本指示符
set userId 0 0 5 33333 STORED gets userId VALUE userId 0 5 5 33333 END |
您看到
gets
返回的值了吗?它已经更新为 5。您每次修改名称/值对时,该值都会发生更改。
cas
cas
(check 和 set)是一个非常便捷的 memcached 命令,用于设置名称/值对的值(如果该名称/值对在您上次执行
gets
后没有更新过)。它使用与
set
命令相类似的语法,但包括一个额外的值:
gets
返回的额外值。
注意以下使用
cas
命令的交互:
set userId 0 0 5 55555 STORED gets userId VALUE userId 0 5 6 55555 END cas userId 0 0 5 6 33333 STORED |
如您所见,我使用额外的整型值 6 来调用
gets
命令,并且操作运行非常顺序。现在,我们来看看清单 7 中的一系列命令:
清单 7. 使用旧版本指示符的
cas
命令
set userId 0 0 5 55555 STORED gets userId VALUE userId 0 5 8 55555 END cas userId 0 0 5 6 33333 EXISTS |
注意,我并未使用
gets
最近返回的整型值,并且
cas
命令返回 EXISTS 值以示失败。从本质上说,同时使用
gets
和
cas
命令可以防止您使用自上次读取后经过更新的名称/值对。
最后两个 memcached 命令用于监控和清理 memcached 实例。它们是
stats
和
flush_all
命令。
stats
stats
命令的功能正如其名:转储所连接的 memcached 实例的当前统计数据。在下例中,执行
stats
命令显示了关于当前 memcached 实例的信息:
stats STAT pid 63 STAT uptime 101758 STAT time 1248643186 STAT version 1.4.11 STAT pointer_size 32 STAT rusage_user 1.177192 STAT rusage_system 2.365370 STAT curr_items 2 STAT total_items 8 STAT bytes 119 STAT curr_connections 6 STAT total_connections 7 STAT connection_structures 7 STAT cmd_get 12 STAT cmd_set 12 STAT get_hits 12 STAT get_misses 0 STAT evictions 0 STAT bytes_read 471 STAT bytes_written 535 STAT limit_maxbytes 67108864 STAT threads 4 END |
此处的大多数输出都非常容易理解。稍后在讨论缓存性能时,我还将详细解释这些值的含义。至于目前,我们先来看看输出,然后再使用新的键来运行一些
set
命令,并再次运行
stats
命令,注意发生了哪些变化。
flush_all
flush_all
是最后一个要介绍的命令。这个最简单的命令仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则
flush_all
能提供很大的用处。下面是一个使用
flush_all
的例子:
set userId 0 0 5 55555 STORED get userId VALUE userId 0 5 55555 END flush_all OK get userId END |
在本文的最后,我将讨论如何使用高级 memcached 命令来确定缓存的性能。
stats
命令用于调优缓存的使用。需要注意的两个最重要的统计数据是 et_hits 和 get_misses。这两个值分别指示找到名称/值对的次数(get_hits)和未找到名称/值对的次数(get_misses)。
结合这些值,我们可以确定缓存的利用率如何。初次启动缓存时,可以看到 get_misses 会自然地增加,但在经过一定的使用量之后,这些 get_misses 值应该会逐渐趋于平稳 — 这表示缓存主要用于常见的读取操作。如果您看到 get_misses 继续快速增加,而 get_hits 逐渐趋于平稳,则需要确定一下所缓存的内容是什么。您可能缓存了错误的内容。
确定缓存效率的另一种方法是查看缓存的命中率(hit ratio)。缓存命中率表示执行
get
的次数与错过
get
的次数的百分比。要确定这个百分比,需要再次运行
stats
stats STAT pid 6825 STAT uptime 540692 STAT time 1249252262 STAT version 1.2.6 STAT pointer_size 32 STAT rusage_user 0.056003 STAT rusage_system 0.180011 STAT curr_items 595 STAT total_items 961 STAT bytes 4587415 STAT curr_connections 3 STAT total_connections 22 STAT connection_structures 4 STAT cmd_get 2688 STAT cmd_set 961 STAT get_hits 1908 STAT get_misses 780 STAT evictions 0 STAT bytes_read 5770762 STAT bytes_written 7421373 STAT limit_maxbytes 536870912 STAT threads 1 END |
现在,用 get_hits 的数值除以 cmd_gets。在本例中,您的命中率大约是 71%。在理想情况下,您可能希望得到更高的百分比 — 比率越高越好。查看统计数据并不时测量它们可以很好地判定缓存策略的效率。
常有命令如下:
启动/结束
memcached -d -m 10 -u root -l 192.168.0.122 -p 11200 -c 256 -P /tmp/memcached.pid
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,这里是10MB
-u 是运行Memcache的用户,这里是root
-l 是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址192.168.0.122
-p 是设置Memcache监听的端口,这里设置了12000,最好是1024以上的端口
-c 选项是最大运行的并发连接数,默认是1024,这里设置了256,按照你服务器的负载量来设定
-P 是设置保存Memcache的pid文件
kill `cat /tmp/memcached.pid`
获取运行状态
echo stats | nc 192.168.1.123 11200
watch “echo stats | nc 192.168.1.123 11200” (实时状态)
1.查看mysql状态,报错如下:
MySQL is running but PID file could not be found
查询日志发现如下提示:
mysqld_safe mysqld from pid file /usr/local/mysql/data/centos.pid ended
解决方法:初始化mysql
/usr/local/mysql/bin/mysql_install_db –user=mysql
2.mysql无法启动,查看日志:
/usr/local/mysql/libexec/mysqld: Disk is full writing ‘./mysql-bin.~rec~’ (Errcode: 28). Waiting for someone to free space… (Expect up to 60 secs delay for server to continue after freeing disk space)
清理磁盘空间,重启OK!
一、.htaccess简介
1.什么是.htaccess
.htaccess是一个纯文本文件,里面存放着Apache服务器配置相关的一些指令,它类似于Apache的站点配置文件,如httpd.conf(Apache2已经支持多站点,因此你的站点配置文件可能在/etc/apache2/conf.d/目录下)。
.htaccess与httpd.conf配置文件不同的是,它只作用于当前目录。另外httpd.conf是在Apache服务启动的时候就加载的,而.htaccess只有在用户访问目录时加载,开销大、速度慢。
既然如此,为什么我们还要用.htaccess呢?因为它配置起来简单,它还支持重定向、URL重写以及访问验证,另外它管理起来很方便,可以很好适应网站迁移。总之,各有优缺点,主要就看你是要从全局考虑还是只配置单个目录。
2.AllowOverride All
通常情况下,Apache是默认启用.htaccess的,但是为了以防万一,请检查一下自己站点的配置文件,如httpd.conf,是否有这行:
AllowOverride All
这行允许重写配置文件。也就是如果能够从.htaccess加载配置文件,那么就以.htaccess为配置文件对其所在目录进行配置。
3.500错误
如果你租用了云服务提供商的主机或者空间,那么他们可能不会给你读写httpd.conf文件的权限,你也不可能检查AllowOverride命令参数是否为All,这时,你可以新建一个目录,在里面写一个.htaccess文件,文件中随意写入一些服务器看不懂的东西,然后访问该目录里的一个页面,耐心等待500错误的出现。
如果没有出现,那么.htaccess没有被启用,你需要向你的服务供应商寻求帮助;如果出现了,那么恭喜你,你可以对当前目录重写Apache配置。
/!注意:.htaccess语法错误可能会影响整个站点,如果你不确定这样做是否安全,请联系你的云服务供应商。
二、.htaccess访问控制(Allow/Deny)
1.访问控制基础:Order命令
为了限制用户访问一些关键目录,.htaccess可以提供目录访问限制。你只需要在要限制的目录中,加入如下.htaccess文件:
# no one gets in here! deny from all
这会限制所有用户通过浏览器访问该目录,这太一刀切了,因此我们还可以增加一些特定的条件,如允许指定IP地址的访问:
Order Allow,Deny Deny from All Allow from 192.168.0.0/24
Order命令是一个难点,也是配置apache的基础,它决定了Apache处理访问规则的顺序。
了解Order的用法后,再仔细考虑下上面的例子,你或许能够发现Deny命令是多余的,以下用法和之前的描述语义相同:
Order Allow,Deny Allow from 192.168.0/24
2.利用.htaccess过滤域名或网络主机(Allow/Deny)
下例可以限制所有含有“domain.com”的网络主机访问网站:
Order Allow,Deny Allow from all Deny from .*domain.com.*
3.利用.htaccess禁止访问指定文件(Files)
Files命令可以用于过滤指定文件:
# secure htaccess file <Files .htaccess> order allow,deny deny from all </Files>
4.利用.htaccess禁止访问指定文件类型(FilesMatch)
下面的代码将限制访问所有.log和.exe文件:
<FilesMatch ".(log|exe)$"> Order allow,deny Deny from all </FilesMatch>
我们还可以通过Files命令描述文件类型,但是需要在命令后面加一个波浪线(~),该符号启用Files命令的正则表达解析功能:
<Files ~ "^.*.([Ll][Oo][Gg])|([eE][xX][eE])"> Order allow,deny Deny from all Satisfy All </Files>
有以下几点需要读者注意:
三、利用.htaccess进行密码保护与验证
1.配置.htaccess
AuthType Basic AuthName "restricted area" AuthUserFile /usr/local/var/www/html/.htpasses require valid-user
这个配置文件可以保护.htaccess所在的整个目录,简单说明下参数:
如果验证失败,则会出现401错误。
2.生成.htpasses文件
如何生成.htpasses文件呢?我们通过htpasswd命令生成密码文件:
htpasswd -c /usr/local/var/www/html/.htpasses lesca
它会提示你输入密码,并确认。之后将密码文件.htpasses保存在/usr/local/var/www/html/目录下。
3.对文件进行密码保护
保护与.htaccess在同一目录下的文件secure.php:
# password-protect single file <Files secure.php> AuthType Basic AuthName "Prompt" AuthUserFile /home/path/.htpasswd Require valid-user </Files>
保护.htaccess所在目录下的多个文件:
# password-protect multiple files <FilesMatch "^(execute|index|secure|insanity|biscuit)*$"> AuthType basic AuthName "Development" AuthUserFile /home/path/.htpasswd Require valid-user </FilesMatch>
4.对指定IP进行密码保护
仅允许IP地址为99.88.77.66的主机直接访问该目录,其他IP需要验证。
AuthType Basic AuthName "Personal" AuthUserFile /home/path/.htpasswd Require valid-user Allow from 99.88.77.66 Satisfy Any
5.安全性
出于安全考虑,将.htpasses文件存放在WEB目录树之外也许是个好方法,但是由于.htpasses是隐藏文件,而且Apache不会输出隐藏文件,因此可以满足基本的安全要求。这是通过在主配置文件中加入如下限制实现的:
<Files ~ "^.ht"> Order allow,deny Deny from all Satisfy All </Files>
一般而言,这是默认设置,用户无需手动添加。我们唯一需要担心的是密码在网络传输过程中是明文形式,这很容易被黑客破译。Coz提供了一个开源项目Pajamas可以在本地利用JS对密码进行MD5加密,有兴趣的读者可以前去研究一下。
四、目录浏览与主页
1.启用目录浏览
# enable directory browsing Options All +Indexes
2.禁用目录浏览
# disable directory browsing Options All -Indexes
我们还可以通过IndexIgnore指令来禁用目录浏览。
# prevent folder listing IndexIgnore *
通过IndexIgnore指令,我们可以禁止对指定类型的文件浏览:
# prevent display of select file types IndexIgnore *.wmv *.mp4 *.avi *.etc
3.自定义目录浏览
如果你希望Apache在展示你的WEB目录时看起来与众不同,那么你需要启用FancyIndexing选项:
<IfModule mod_autoindex.c> IndexOptions FancyIndexing </ifModule>
通过这个选项,你可以实现自定义图标、添加文件类型描述、按日期排序等。
4.配置目录主页文件
即使启用了目录浏览,Apache未必会展示该目录的内容,因为该目录可能存在像index.htm这样的默认主页文件。Apache会有限展示主页文件,我们可以通过.htaccess设置:
DirectoryIndex index.html index.php index.htm
5.配置错误页面
如果Apache遇到错误,就会输出错误页面。配置自定义的错误页面,也许可以挽留即将离开的用户。
# custom error documents ErrorDocument 401 /err/401.php ErrorDocument 403 /err/403.php ErrorDocument 404 /err/404.php ErrorDocument 500 /err/500.php 转自:http://www.oseye.net/user/199/blog/99
Slave_SQL_Running: No mysql同步故障解决
(1) ppp-2.4.4-14.1.rhel5.x86_64.rpm
PPTP需要PPP的支持,一般情况下linux系统都已安装有PPP软件包,最好安装较新的ppp软件包,用Uvh这个参数来更新系统的PPP组件。也可以用yum –y instll ppp命令安装。
(2) pptpd-1.3.4-2.rhel5.x86_64.rpm (pptpd服务软件)
(3) dkms-2.0.17.5-1.noarch.rpm CentOS5x/RHEL5x(内核支持mppe)不用安装
DKMS全称是 Dynamic Kernel Module Support,它可以帮我们维护内核外的这些驱动程序,在内核版本变动之后可以自动重新生成新的模块。
(4) kernel_ppp_mppe-1.0.2-3dkms.noarch(MPPE的内核补丁),CentOS5x/RHEL5x(内核支持mppe)不用安装
(5) 在ADSL拨号环境中由于PPP包头占用8字节,MTU为1492字节,MSS为1452字节,如不能正确设置会导致网络不正常,可以通过TCPMSS模块调整MSS大小
关于iptables的:MASQUERADE
假如当前系统用的是ADSL动态拨号方式,那么每次拨号,出口ip192.168.5.3都会改变
而且改变的幅度很大,不一定是192.168.5.3到192.168.5.5范围内的地址
这个时候如果按照现在的方式来配置iptables就会出现问题了
因为每次拨号后,服务器地址都会变化,而iptables规则内的ip是不会随着自动变化的
每次地址变化后都必须手工修改一次iptables,把规则里边的固定ip改成新的ip
这样是非常不好用的
MASQUERADE就是针对这种场景而设计的,他的作用是,从服务器的网卡上,自动获取当前ip地址来做NAT
比如下边的命令:
iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
如此配置的话,不用指定SNAT的目标ip了
不管现在eth0的出口获得了怎样的动态ip,MASQUERADE会自动读取eth0现在的ip地址然后做SNAT出去
这样就实现了很好的动态SNAT地址转换
注:
对于MASQUERADE,只是计算机的负荷稍微多一点。因为对每个匹配的包,MASQUERADE都要查找可用的IP地址,而不象SNAT用的IP地址 是配置好的。当然,这也有好处,就是我们可以使用通过PPP、 PPPOE、SLIP等拨号得到的地址,这些地址可是由ISP的DHCP随机分配的。
|
定位到你的Apache安装目录下的conf文件夹,
找到httdp.conf文件,
加入如下内容:
Options Indexes FollowSymLinks AllowOverride None Order deny,allow Deny from 192.168.1.99
解释如下:
1、
使用
DocumentRoot “你的网站根目录” 语句定义的 双引号 “……” 里的值,比如说/var/www/html之类的。
2、AllowOverride None
# AllowOverride 这个属性有两个值,None和All
当 AllowOverride 的值为All时,网站根目录里面的 .htaccess文件才能生效。
至于什么是.htaccess文件,请自己Google。
3、
Order deny,allow Deny from 192.168.1.99
使用这个命令来达到屏蔽IP的作用,类似的用法还有:
# 允许所有主机访问 Order deny,allow Allow from All # 禁止所有主机访问 Order deny,allow Deny from All
把上面的All改成指定的IP即可达到屏蔽某个IP的效果。
屏蔽IP端也一样,比如说屏蔽192.168.1.123这个IP所在的192.168.1这个IP段,只需要这样写:
# 禁止192.168.1这个IP段访问 Order deny,allow Deny from 192.168.1.123/24
另注:
当书写为:
Order deny,allow Deny from All Allow from 192.168.1.100
此时是禁止除了192.168.1.100这个IP之外的所有IP访问,也就是Deny,Allow这两个命令,在最后一个命令完成时才确定允许那些IP,禁止哪些IP。
请举一反三:
Order deny,allow Allow from All Deny from 192.168.1.100
没错,这段的意思是 允许除了192.168.1.100之外的所有IP访问。
安装方法1、编译安装
如果采用编译安装可以到iftop官网下载最新的源码包。
安装前需要已经安装好基本的编译所需的环境,比如make、gcc、autoconf等。安装iftop还需要安装libpcap和libcurses。
CentOS上安装所需依赖包:
yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel
下载iftop
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make && make install
安装方法2:yum安装
直接省略上面的步骤
yum install flex byacc libpcap ncurses ncurses-devel
wget ftp://fr2.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/iftop-0.17-1.el5.rf.i386.rpm
rpm -ivh iftop-0.17-1.el5.rf.i386.rpm
四、运行iftop
直接运行: iftop
效果如下图:
五、相关参数及说明
1、iftop界面相关说明
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
2、iftop相关参数
常用的参数
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n使host信息默认直接都显示IP,如:# iftop -n
-N使端口信息默认直接都显示端口号,如: # iftop -N
-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b使流量图形条默认就显示;
-f这个暂时还不太会用,过滤计算包用的;
-P使host信息及端口信息默认就都显示;
-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M
进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或IP排序;
按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
按q退出监控。
六、常见问题
1、make: yacc: Command not found
make: *** [grammar.c] Error 127
解决方法:apt-get install byacc / yum install byacc
2、configure: error: Curses! Foiled again!
(Can’t find a curses library supporting mvchgat.)
Consider installing ncurses.
解决方法:apt-get install libncurses5-dev / yum install ncurses-deve
yum install ppp iptables
rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
vim /etc/ppp/options.pptpd
ms-dns 4.2.2.1 当地能用的dnsms-dns 4.2.2.2vim /etc/pptpd.conf
localip 10.8.8.1 为vpn管道的ip (VPN主机IP)remoteip 10.8.8.2-245 为给客户端连接分配的ip地址范围
chkconfig pptpd onservice pptpd start
echo -e ‘vpntest * vpntestpassword *’ >> /etc/ppp/chap-secrets
chkconfig iptables on/sbin/iptables -A INPUT -p tcp –dport 1723 -j ACCEPT/sbin/iptables -A INPUT -p tcp –dport 47 -j ACCEPT/sbin/iptables -A INPUT -p gre -j ACCEPTiptables -A POSTROUTING -t nat -s 10.10.10.0/24 -o eth0 -j MASQUERADEservice iptables start
在Linux 底下,使用 top 命令可以监控系统的进程情况,但是很多时候,我们需要根据进程的PID来找到对应的文件路径,例如图中的 29310 这个进程,如何知道 httpd 这个进程的文件路径呢?
ls -l /proc/29310/cwd 列出29310 就是httpd 这个进程的工作目录
ls -l /proce/29310/exe 列出29310 这个进程的文件路径
pwdx 29310 可以直接获得该进程的工作目录
转自:http://www.ofme.cn/post-39.html