月份: 2012-05

亲测,Windows2008 service r2激活程序

用了好久2003,还是换一个2008玩一玩吧,找了半天都没有找到激活码,好郁闷额,找了这么多,不过还是有一个能用的,发出来吧。不知道会不会引来什么版权问题?我只是搜集互联网而已……发出来的是一个整体的包,里面有一个能激活08,其他的没办法。最后一句,亲测可激活!

下载: win2008激活.rar

浅谈Nginx服务器反向代理的一些应用

Nginx作为反向代理的简单应用
对于Nginx的反向代理主要在四个方面:
1、URL重写 URL rewirte
2、反向代理 reverse proxy 并启用缓存功能
3、负载均衡
4、安装第三方模块,实现健康状态检测。

关于一些Nginx的应用,可以在Nginx的官方网站上看到,内容介绍的也相当的详细。这里只浅谈一些我对于Nginx服务器学习到和一些认识。网站地址: http://wiki.nginx.org/Modules

一、URL重写 URL rewirte

要想使Nginx有rewirte功能,要在编译Nginx时要用到–with-http_rewirte_module这个模块,这个功能在编译的时候也是默认打开,如果不想使用这个功能就用–without-http_rewirte_module
这个功能也支持URI重写。

在这个功能中有 if(URL重写在什么的条件下) set rewirte等相关的应用,有兴趣的可到其官方网站到看。
下面来说一下rewirte 和 if 的使用。
1、rewirte
这是个模式匹配如下:
rewrite regex replacement flag
来简单的解释一下这句的意思:rewirte 是关键字,regex是匹配的模式,replacement 是把匹配到的替换成什么,flag是标志位。
例如:将htt://www.zhou123.com/attatch.php?value=111223 改写为http://www.zhou123.com/111223/attatch
就可如下所示的形式:

rewirte ^/(attatch)\.php\?value=(.*)$ /$2/$1 last;

下面来说一下标志位:
last: 当前的内容已经完成了,可以继续以后的语句(如果有多条语句时)
break: (当重写的语句执行完成后就直接跳出去支行后面的语句)
redirect: 重定向到一个完整的URL中去如:http://。用302来表示,这个是临时性的。
permanent: 永久重定向 用301表示;
下面来举个小例子:
如用户访问:www.zhou123.com/forum/ 重写为www.zhou123.com/bbs/

rwirte ^/forum/?$ /bbs/ permanent;

编辑nginx的配置文件来测试一下:
vim /etc/nginx/nginx.conf
定位到 server 这行在这个server加入如上内容即可:

location / {
root html;
rwirte ^/forum/?$ /bbs/ permanent; #####这行是新加的内容。
index index.html;
}

在浏览器中输入:http://www..zhou123.com/forum/就会把地址改成www.zhou123.com/bbs/。
rewirte比较简单这里就不测试了。

2、 关于if的应用

语法: if (condition) {…}
应用环境;server,location
条件:
1、变量名: false values are:empty string (“”,or any string starting with “0”;)
2、对于变量进行的比较表达式,可使用=或!= 进行测试 ;
3、正则表达式的模式匹配:
~ 区分大小的模式匹配
~* 不区分字母的大小写的模式匹配
!~ 和!~* 分别对上面的两种测试取反
4、测试文件是否存在-f 或!-f
5、测试目录是否存在-d或!-d
6、测试目录、文件或链接文件的存在性-e或!-e
7、检查一个文件的执行权限-x或!-x
在正则表达式中,可以使用圆括号标记匹配到的字符串,并分别可以使用$1、$2….

3、实现域名跳转:
要在配置文件中修改成如下所示的内容:
server
{
listen 80;
server_name jump.magedu.com;
index index.html index.php;
root /www/htdocs;
rewrite ^/ http://www.magedu.com/;
}
这样就可以把jump.magedu.com 改成http://www.magedu.com/这个域名了。
4、实现域名镜像
server
{
listen 80;
server_name mirror.magedu.com;
index index.html index.php;
root /www/htdocs;
rewrite ^/(.*)$ http://www.magedu.com/$1 last;
}
对于Nginx的URL重写就简单的介绍到这。

二、下面来谈谈Nginx的反向代理功能:

1、proxy
这个模块在Nginx编译时也是默认开启的。
用法:proxy_pass URL地址。
就说通过Nginx要反向代理到什么地方去,后面的URL就是要代理的后台服务器的地址 。
下面用一个事例来说明一下:
在Nginx服务器的ip为:192.168.35.1/24
后台的服务器ip是: 172.16.35.3/16 安装了apachen服务器,提供网页。
在nginx的配置文件中只要加入如下所示的内容即可:
location / {
#root html;
#index index.html;
proxy_pass http://172.16.35.3; ## 添加这条内容即可。
}

在后台的apache服务器的网页内容:
# echo “172.16.35.3” > /var/www/html/index.html
在浏览器中输入:http://192.168.35.1就会如下图所示的结果:

此时的Nginx的反向代理并没有什么实际的意义,只是在用户和服务器之间多加了一台服务器而已。要为Nginx添加缓存功能此时才能把Nginx的优势发挥出来。

2、为反向代理启用缓存功能:
在配置文件中加入如下所示的内容:

http {
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g;
server {
location / {
proxy_pass http://172.16.35.3;
proxy_set_header Host $host;
proxy_cache STATIC;
proxy_cache_valid 200 1d;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
}
}
}
下面要实现的环境与上面所提到的例子的环境一样。
在Nginx服务器的ip为:192.168.35.1/24
后台的服务器ip是: 172.16.35.3/16 apache服务
添加完成后来进行一下压力测试:
在另外的一台服务器上用命令:
ab -c 100 -n 10000 http://192.168.35.1/index.html ###通过nginx服务器来访问apache服务器。
在结果中找到如下一行:
Requests per second: 7354.40 [#/sec] (mean) ####### 7354表示每秒接受请求的个数

ab -c 100 -n 10000 http://172.16.35.3/index.html ###来访问apache服务器。
同样在结果中找到如下一行:
Requests per second: 1489.96 [#/sec] (mean)
从两个结果就可以清晰的看到Nginx的反向代理加上缓存功能是多么的强大。几乎是apache服务器的10倍。

三、反向代理多台服务器实现负载均衡:

再添加一台后台的服务器:ip:172.16.35.2/16 也提供apache服务器。
这时的实验环境是:三台虚拟机了

nginx:192.168.35.1/24
两台apache服务器ip分别为:
172.16.35.2/16
172.16.35.3/16
要保证三台服务器之间的网络能正常通信哟!!!

新加入的服务器网页内容为:“172.16.35.2”
# echo “

172.16.35.2

” > /var/www/html/index.html

在nginx的配置文件中加入如下所示的内容:

http {

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g;
upstream myload {
server 172.16.35.2;
server 172.16.35.3 weight=2;
#################### 定义这两个后台服务器并加上了权重。
}

server {
listen 80;
server_name localhost;
location / {
proxy_pass http://myload; #### 这个名称一定要与前面定义的相同。
}

在浏览器中输入:http://192.168.35.1如图所示的结果:

经过刷新网页的内容在如此图所示的结果来回切换。这是为了显示结果所以为两个服务器设置了不同的网页。

四、安装配置第三方模块,实现upstream中对后端http

server的健康状态检测:
说明:这需要为nginx打补丁才能应用,所要重新源码编译nginx。

模块下载地址:https://github.com/cep21/healthcheck_nginx_upstreams;模块名称:ngx_http_healthcheck_module

安装配置方法:
1、首先解压healcheck模块到某路径下,这里假设为/tmp/healthcheck_nginx_upstreams

2、对nginx打补丁

首先解压nginx,并进入nginx源码目录:
# tar xf nginx-1.0.11.tar.gz
# cd nginx-1.0.11
# patch -p1 < /tmp/healthcheck_nginx_upstreams/nginx.patch 而后编译nginx,在执行configure时添加类似下面的选项: --add-module=/tmp/healthcheck_nginx_upstreams 所以,这里就使用如下命令: # ./configure \ --prefix=/usr \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_flv_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/tmp/nginx/client/ \ --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ --with-pcre \ --add-module=/tmp/healthcheck_nginx_upstreams # make && make install ngx_http_healthcheck_module模块的使用方法: 1、此模块支持的指令有: healthcheck_enabled 启用此模块 healthcheck_delay 对同一台后端服务器两次检测之间的时间间隔,单位毫秒,默认为1000; healthcheck_timeout 进行一次健康检测的超时时间,单位为毫秒,默认值2000; healthcheck_failcount 对一台后端服务器检测成功或失败多少次之后方才确定其为成功或失败,并实现启用或禁用此服务器; healthcheck_send 为了检测后端服务器的健康状态所发送的检测请求;如:healthcheck_send "GET /health HTTP/1.0" 'Host: www.zhou123.com'; healthcheck_expected 期望从后端服务器收到的响应内容;如果未设置,则表示从后端服务器收到200状态码即为正确; healthcheck_buffer 健康状态检查所使用的buffer空间大小; healthcheck_status 通过类似stub_status的方式输出检测信息,使用方法如下: location /stat { healthcheck_status; } 一个例子: 在配置文件中写上如下内容: http { ... ... proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g; upstream myload { server 172.16.35.2; server 172.16.35.3 weight=2; healthcheck_enabled; healthcheck_delay 1000; healthcheck_timeout 1000; healthcheck_failcount 2; healthcheck_send "GET /.health.html HTTP/1.0"; ## 这个是检测网页,这个网页的内容不作要求。只要这个网页存在即可。 } server { listen 80; server_name localhost; location / { proxy_pass http://myload; } location /stat { healthcheck_status; } ##############这个可以查看状态; 在浏览器中输入:http://192.168.35.1/stat 下图是测试的结果:

上图是两个服务器都正常的情况的结果。

当有一个服务器挂了就会显示如下的结果:

OK! 这些关于Nginx服务器反向代理的应用,就先说到这吧。
有想了解的更多的最好在nginx的官方网站阅读nginx的文档。其文档是相当的详细,唯一缺点就这个是用英语写的,看的好不辛苦啊!英语不好,也是个大问题啊!要努力学习这个又爱又恨的英语。

本文出自 “linux学习” 博客,请务必保留此出处http://zhou123.blog.51cto.com/4355617/840837

一些有用的iptables规则

iptables -I INPUT -p tcp –dport 80 -m connlimit –connlimit-above 30 -j REJECT
允许单个IP的最大连接数为 30

iptables -t filter -A INPUT -p tcp –dport 80 –tcp-flags FIN,SYN,RST,ACK SYN -m connlimit –connlimit-above 10 –connlimit-mask 32 -j REJECT
iptables限制单个地址的并发连接数量

iptables -t filter -A INPUT -p tcp –dport 80 –tcp-flags FIN,SYN,RST,ACK SYN -m connlimit –connlimit-above 10 –connlimit-mask 24 -j REJECT
使用iptables限制单个c类子网的并发链接数量

iptables -A INPUT -s 192.168.0.8|192.168.0.0/24 -p tcp –dport 22 -j ACCEPT
只允许某IP或某网段的机器进行SSH连接

iptables -A FORWARD -p TCP ! –syn -m state –state NEW -j DROP
丢弃坏的TCP包

iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT
处理IP碎片数量,防止攻击,允许每秒100个

iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT
设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包

iptables -A FORWARD -m state –state INVALID -j DROP
iptables -A INPUT -m state –state INVALID -j DROP
iptables -A OUTPUT -m state –state INVALID -j DROP
禁止非法连接

iptables -N syn-flood
iptables -A INPUT -p tcp –syn -j syn-flood
iptables -A syn-flood -p tcp -m limit –limit 3/s –limit-burst 6 -j RETURN
iptables -A syn-flood -j REJECT
防止SYN攻击 轻量

iptables -A INPUT -p tcp –syn –dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp –syn –dport 22 -j ACCEPT
允许访问22端口

iptables -A INPUT -p tcp –syn –dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp –syn –dport 80 -j ACCEPT
允许访问80端口

iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT
禁止其他未允许的规则访问(注意:如果22端口未加入允许规则,SSH链接会直接断开。)

linux提高ssh安全性的方法

1. 修改sshd服务器的配置文件/etc/ssh/sshd_config,将部分参数参照如下修改,增强安全性。

# Port 5555
系统缺省使用22号端口,将监听端口更改为其他数值(最好是1024以上的高端口,以免和其他常规服务端口冲突),这样可以增加入侵者探测系统是否运行了 sshd守护进程的难度。

# ListenAddress 192.168.0.1
对于在服务器上安装了多个网卡或配置多个IP地址的情况,设定sshd只在其中一个指定的接口地址监听,这样可以减少sshd的入口,降低入侵的可能性。

# PermitRootLogin no
如果允许用户使用root用户登录,那么黑客们可以针对root用户尝试暴力破解密码,给系统安全带来风险。

# PermitEmptyPasswords no
允许使用空密码系统就像不设防的堡垒,任何安全措施都是一句空话。

# AllowUsers sshuser1 sshuser2
只允许指定的某些用户通过ssh访问服务器,将ssh使用权限限定在最小的范围内。

# AllowGroups sshgroup
同上面的AllowUsers类似,限定指定的用户组通过ssh访问服务器,二者对于限定访问服务器有相同的效果。

# Protocol 2
禁止使用版本1协议,因为其存在设计缺陷,很容易使密码被黑掉。
禁止所有不需要的(或不安全的)授权认证方式。

# X11Forwarding no
关闭X11Forwarding,防止会话被劫持。

# MaxStartups 5
sshd服务运行时每一个连接都要使用一大块可观的内存,这也是ssh存在拒绝服务攻击的原因。一台服务器除非存在许多管理员同时管理服务器,否则上面这 个连接数设置是够用了。
注意:以上参数设置仅仅是一个示例,用户具体使用时应根据各自的环境做相应的更改。

2. 修改sshd服务器的配置文件/etc/ssh/sshd_config的读写权限,对所有非root用户设置只读权限,防止非授权用户修改sshd 服务的安全设置。

# chmod 644 /etc/ssh/sshd_config

3. 设置TCP Wrappers。服务器默认接受所有的请求连接,这是非常危险的。使用TCP Wrappers可以阻止或允许应用服务仅对某些主机开放,给系统在增加一道安全屏障。这部分设置共涉计到两个文件:hosts.allow和 hosts.deny。
将那些明确允许的请求添加到/etc/hosts.allow中。如系统仅允许IP地址为192.168.0.15和10.0.0.11的主机使用 sshd服务,则添加如下内容:

# sshd:192.168.0.15 10.0.0.11
将需要禁止使用的信息添加到/etc/hosts.deny中。如对除了在hosts.allow列表中明确允许使用sshd的用户外,所有其他用户都禁 止使用sshd服务,则添加如下内容到hosts.deny文件中:

# sshd:All
注意:系统对上述两个文件的判断顺序是先检查hosts.allow文件再查看hosts.deny文件,因此一个用户在hosts.allow允许使用 网络资源,而同时在hosts.deny中禁止使用该网络资源,在这种情况下系统优先选择使用hosts.allow配置,允许用户使用该网络资源。

4. 尽量关闭一些系统不需要的启动服务。系统默认情况下启动了许多与网络相关的服务,因此相对应的开放了许多端口进行LISTENING(监听)。我们知 道,开放的端口越多,系统从外部被入侵的可能也就越大,所以我们要尽量关闭一些不需要的启动服务,从而尽可能的关闭端口,提供系统的安全性。
通过以上步骤基本上将sshd服务设置上可能出现的漏洞堵上了,不需要投资,只要我们稍微花点时间调整一下配置,就可极大提高系统的安全环境,何乐而不为呢?

另一个用U盘安装linux的方法

1、格式化优盘,文件系统FAT32类型,打开Disk Genius软件。
3、将U盘制作为启动盘,点击工具–>制作为USB-ZIP启动盘,等待结束,结束完毕后可以看到U盘里面有了一些文件。
4、打开grub4dos软件,将grub.exe、grldr、menu.lst三个文件复制到U盘中,并且建立一个boot的文件夹
后,将ios镜像文件解压后,会生成很多目录和网页文件,进入images目录后再进入pxeboot目录,把initrd.img和vmlinuz两个文件拷贝至我们在U盘里面新建的boot目录下。
5、修改U盘里面的menu.lst文件,在文件最后面加入如下内容:
title Linux Install Setup
root (hd0,0)
kernel /boot/vmlinuz root=/dev/hda1
initrd /boot/initrd.img
6、最后将iso文件拷贝至U盘,至此制作过程完毕。
7、用U盘启动安装linux。

解决优盘安装linux后必须插上优盘才能启动

本文用于帮助那些grub装在优盘上的童鞋,可以试一下。

由于用U盘安装完linux系统后,拔下U盘,系统起不来,所以在拔U盘前得安装grub。
步骤如下:
1、将grub写到第一个硬盘的MBR上。
在终端下进行操作:
[root@localhost~]#grub
Grub>root (hd0,0)
Grub>setup (hd0)
Grub>quit
说明:root (hd0,0) 第一个“0”表示系统中的第一块硬盘,第二个“0”表示第一个硬盘的
第一个分区,刚才安装系统时装在了硬盘的第一根分区即hd0,0。
2、修改/etc/grub.conf 配置文件。
修改其中的(hd1,0)为(hd0,0)
3、保存grub.conf 配置文件退出并重启系统。

TTL值的含义以及域名TTL值的区别

什么是TTL?
TTL是IP协议包中的一个值,指定数据报被路由器丢弃之前允许通过的网段数量。
在很多情况下数据包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小1。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。

TTL值帮助我们大致的识别主机的操作系统类型。
UNIX 及类 UNIX 操作系统 ICMP 回显应答的 TTL 字段值为 255
Compaq Tru64 5.0 ICMP 回显应答的 TTL 字段值为 64
微软 Windows NT/2K操作系统 ICMP 回显应答的 TTL 字段值为 128
微软 Windows 95 操作系统 ICMP 回显应答的 TTL 字段值为 32

特殊情况:
LINUX Kernel 2.2.x & 2.4.x ICMP 回显应答的 TTL 字段值为 64
FreeBSD 4.1, 4.0, 3.4;
Sun Solaris 2.5.1, 2.6, 2.7, 2.8;
OpenBSD 2.6, 2.7,
NetBSD
HP UX 10.20
ICMP 回显应答的 TTL 字段值为 255
Windows 95/98/98SE
Windows ME
ICMP 回显应答的 TTL 字段值为 32
Windows NT4 WRKS
Windows NT4 Server
Windows 2000
Windows XP
ICMP 回显应答的 TTL 字段值为 128

什么是域名的TTL值?
TTL(Time- To-Live),简单的说它表示一条域名解析记录在dns服务器上缓存时间.当各地的dns服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。

合理设置域名TTL值:
一.增大TTL值,以节约域名解析时间。
通常情况下域名解析记录是很少更改的。我们可以通过增大域名记录的TTL值让记录在各地DNS服务器中缓存的时间加长,这样在更长的时间段内,我们访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从本地缓存中返回域名解析记录。
TTL值是以秒为单位的,通常的默认值都是3600,也就是默认缓存1小时。我们可以根据实际需要把TTL值扩大,例如要缓存一天就设置成86400。

二.减小TTL值,减少更换空间时的不可访问时间。
更换域名空间时会对DNS记录进行修改,因为DNS记录缓存的问题,新的域名记录在有的地方可能生效了,但在有的地方可能等上一两天甚至更久才生效,只就导致有部分用户在一段时间内无法不可访问网站了。

那么TTL值到底应该设置成多大呢?
首先向大家介绍一下TTL值设置大一点和设置小一点的区别:较大的TTL值可以减少域名解析时间,加快网站访问速度。较小的TTL值,可以减少在更换空间修改域名解析后,网站不可访问的时间。
所以对于TTL值设置的建议为:网站刚建立的时候设置为半小时或一小时,方便调试及更换空间。等到稳定以后,TTL设置为一天(baidu,google等域名TTL都设置为一天)。

在实际使用中,关于TTL值的经验分享
首先,本人并没有发现TTL=1小时与TTL=1天,网站访问速度有明显区别。
其次,每次修改域名解析A记录后,虽然TTL设置的为1小时或者1天,但一般3-5分钟后域名解析修改就生效了。这种情况的原因可能是,本人所在的本地ISP的DNS服务器并没有完全遵守标准规范。

为了尽可能的减小这个各地的解析时间差,合理的做法是:
1.先查看域名当前的TTL值。
2.修改TTL值为可设定的最小值,建议为60秒。
3.等待一天,保证各地的DNS服务器缓存都过期并更新了记录。
4.设置修改DNS解析到新的记录,这个时候各地的DNS就能以最快的速度更新到新的记录。
5.确认各地的DNS已经更新完成后,再TTL值设置成常用的值(如: TTL=86400)。TTL=60还是太小了点。
这一切都能起作用的前提,是那些DNS服务器完全遵守这些标准和规范,否则NS服务器上怎么设置TTL都是白搭,但目前来看还没发现这么不讲规矩的DNS服务器。

linux系统平均负载定义

1,平均负载是什么?
特定时间间隔内运行队列中的平均进程数,好象还不够明白:就是进程队列的长度,有多少个进程在排队等待运行

2,什么是“进程队列”?
一个进程满足以下条件就会位于进程队列中
1,它没有在等待I/O操作的结果
2,它没有主动进入等待状态(即没有调用wait)
3,它没有被停止

3,如何查看平均负载?
最简单的命令是uptime
例子:
[lhd@localhost ~]$ uptime
00:44:22 up 1:17, 3 users, load average: 8.13, 5.90, 4,94

4,显示的内容是什么意思?
load average: 8.13,5.90,4,94
显示的是过去的1,5,15分钟内进程队列中的平均进程数量

5,如何衡量当前系统是否负载过高?
如果每个cpu(可以按CPU核心的数量计算)上当前活动进程数不大于3,则系统性能良好,
不大于4,表示可以接受
如大于5,则系统性能问题严重
上面例中的8.13,如果有2个cpu核心,则8.13/2=4.065, 此系统性能可以接受
建议设置严格的报警值为: CPU核心的数量
比如:CPU核心数量为2,则设置报警值为2
(这样设置是合理的,因为毕竟不是每个应用都支持多CPU及多核心)

6,查看平均负载的命令
有5个可用:
tload 能够绘制出负载变化的图形
uptime 同时显示开机以来的时间
w 同时显示出已登录的用户
top 这个对资源占用太高,不建议使用
cat /proc/loadavg 通过/proc系统信息得到平均负载
注意:如果你要持续的观察平均负载,建议用 watch uptime 或 watch cat /proc/loadavg
备注:关于watch:每隔一定时间执行指定的程序,并全屏显示结果。时间默认是2秒

iptables防火墙开启关闭指定端口

一般情况下iptables已经包含在Linux发行版中
运行iptables –version来查看系统是否安装iptables

启动iptables
service iptables start
iptables –list //*查看iptables规则集*//
下面是没有定义规划时iptables的样子:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

如何开启/关闭指定端口
例如:
开启81端口:
iptables -I INPUT -i eth0 -p tcp –dport 81 -j ACCEPT
iptables -I OUTPUT -o eth0 -p tcp –sport 81 -j ACCEPT
关闭81端口:
iptables -I INPUT -i eth0 -p tcp –dport 81 -j DROP
iptables -I OUTPUT -o eth0 -p tcp –sport 81 -j DROP
然后保存
/etc/rc.d/init.d/iptables save

eth0为网卡名称,可以输入ifconfig来查看网卡信息,注意填写正确的网卡名称。

可以使用lsof命令来查看某一端口是否开放.查看端口可以这样来使用.
我就以81端口为例:
lsof -i:81
如果有显示说明已经开放了,如果没有显示说明没有开放。

DD测试磁盘性能

常用的vps测试命令
dd if=/dev/zero of=test bs=64k count=4k oflag=dsync

dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
注意:指定数字的地方若以下列字符结尾则乘以相应的数字:b=512;c=1;k=1024;w=2
参数:
1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
4. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
5. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
6. seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
7. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
8. conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

二、dd应用实例。
1.将本地的/dev/hdb整盘备份到/dev/hdd
dd if=/dev/hdb of=/dev/hdd
2.将/dev/hdb全盘数据备份到指定路径的image文件
dd if=/dev/hdb of=/root/image
3.将备份文件恢复到指定盘
dd if=/root/image of=/dev/hdb
4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径
dd if=/dev/hdb | gzip > /root/image.gz
5.将压缩的备份文件恢复到指定盘
gzip -dc /root/image.gz | dd of=/dev/hdb
6.备份磁盘开始的512个字节大小的MBR信息到指定文件
dd if=/dev/hda of=/root/image count=1 bs=512
count=1指仅拷贝一个块;bs=512指块大小为512个字节。
恢复:dd if=/root/image of=/dev/hda
7.备份软盘
dd if=/dev/fd0 of=disk.img count=1 bs=1440k (即块大小为1.44M)
8.拷贝内存内容到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k)
9.拷贝光盘内容到指定文件夹,并保存为cd.iso文件
dd if=/dev/cdrom(hdc) of=/root/cd.iso
10.增加swap分区文件大小
第一步:创建一个大小为256M的文件:
dd if=/dev/zero of=/swapfile bs=1024 count=262144
第二步:把这个文件变成swap文件:
mkswap /swapfile
第三步:启用这个swap文件:
swapon /swapfile
第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:
/swapfile swap swap default 0 0
11.销毁磁盘数据
dd if=/dev/urandom of=/dev/hda1
注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。
12.测试硬盘的读写速度
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。
13.确定硬盘的最佳块大小:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。
14.修复硬盘:
dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda
当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。并且这个过程是安全、高效的。
/dev/null和/dev/zero的区别 /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着! /dev/zero,是一个输入设备,你可你用它来初始化文件。 /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着! /dev/zero,是一个输入设备,你可你用它来初始化文件。
/dev/null——它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。 /dev/zero——该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。 oracle@localhost oracle]
eg,
find / -name access_log 2>/dev/null
使用/dev/null 把/dev/null看作”黑洞”. 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.
禁止标准输出. 1 cat $filename >/dev/null
2 # 文件内容丢失,而不会输出到标准输出.
禁止标准错误 (来自例子 12-3). 1 rm $badname 2>/dev/null
2 # 这样错误信息[标准错误]就被丢到太平洋去了.
禁止标准输出和标准错误的输出. 1 cat $filename 2>/dev/null >/dev/null
2 # 如果”$filename”不存在,将不会有任何错误信息提示.
3 # 如果”$filename”存在, 文件的内容不会打印到标准输出.
4 # 因此Therefore, 上面的代码根本不会输出任何信息.
5 #
6 # 当只想测试命令的退出码而不想有任何输出时非常有用。
7 #
8 #
9 # cat $filename &>/dev/null
10 # 也可以, 由 Baris Cicek 指出.
Deleting contents of a file, but preserving the file itself, with all attendant permissions (from Example 2-1 and Example 2-3): 1 cat /dev/null > /var/log/messages
2 # : > /var/log/messages 有同样的效果, 但不会产生新的进程.(因为:是内建的)
3
4 cat /dev/null > /var/log/wtmp
自动清空日志文件的内容 (特别适合处理这些由商业Web站点发送的讨厌的”cookies”):
例子 28-1. 隐藏cookie而不再使用
1 if [ -f ~/.netscape/cookies ] # 如果存在则删除.
2 then
3 rm -f ~/.netscape/cookies
4 fi
5
6 ln -s /dev/null ~/.netscape/cookies
7 # 现在所有的cookies都会丢入黑洞而不会保存在磁盘上了.
使用/dev/zero 像/dev/null一样, /dev/zero也是一个伪文件, 但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的). 写入它的输出会丢失不见, 而从/dev/zero读出一连串的null也比较困难, 虽然这也能通过od或一个十六进制编辑器来做到. /dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件.
例子 28-2. 用/dev/zero创建一个交换临时文件
1 #!/bin/bash
2 # 创建一个交换文件.
3
4 ROOT_UID=0 # Root 用户的 $UID 是 0.
5 E_WRONG_USER=65 # 不是 root?
6
7 FILE=/swap
8 BLOCKSIZE=1024
9 MINBLOCKS=40
10 SUCCESS=0
11
12
13 # 这个脚本必须用root来运行.
14 if [ “$UID” -ne “$ROOT_UID” ]
15 then
16 echo; echo “You must be root to run this script.”; echo
17 exit $E_WRONG_USER
18 fi
19
20
21 blocks=${1:-$MINBLOCKS} # 如果命令行没有指定,
22 #+ 则设置为默认的40块.
23 # 上面这句等同如:
24 # ————————————————–
25 # if [ -n “$1” ]
26 # then
27 # blocks=$1
28 # else
29 # blocks=$MINBLOCKS
30 # fi
31 # ————————————————–
32
33
34 if [ “$blocks” -lt $MINBLOCKS ]
35 then
36 blocks=$MINBLOCKS # 最少要有 40 个块长.
37 fi
38
39
40 echo “Creating swap file of size $blocks blocks (KB).”

41 dd if=/dev/zero of=$FILE bs=$BLOCKSIZE count=$blocks # 把零写入文件.
42
43 mkswap $FILE $blocks # 将此文件建为交换文件(或称交换分区).
44 swapon $FILE # 激活交换文件.
45
46 echo “Swap file created and activated.”
47
48 exit $SUCCESS
关于 /dev/zero 的另一个应用是为特定的目的而用零去填充一个指定大小的文件, 如挂载一个文件系统到环回设备 (loopback device) (参考例子 13-8) 或”安全地” 删除一个文件(参考例子 12-55).
例子 28-3. 创建ramdisk
1 #!/bin/bash
2 # ramdisk.sh
3
4 # “ramdisk”是系统RAM内存的一段,
5 #+ 它可以被当成是一个文件系统来操作.
6 # 它的优点是存取速度非常快 (包括读和写).
7 # 缺点: 易失性, 当计算机重启或关机时会丢失数据.
8 #+ 会减少系统可用的RAM.
9 #
10 # 那么ramdisk有什么作用呢?
11 # 保存一个较大的数据集在ramdisk, 比如一张表或字典,
12 #+ 这样可以加速数据查询, 因为在内存里查找比在磁盘里查找快得多.
13
14
15 E_NON_ROOT_USER=70 # 必须用root来运行.
16 ROOTUSER_NAME=root
17
18 MOUNTPT=/mnt/ramdisk
19 SIZE=2000 # 2K 个块 (可以合适的做修改)
20 BLOCKSIZE=1024 # 每块有1K (1024 byte) 的大小
21 DEVICE=/dev/ram0 # 第一个 ram 设备
22
23 username=`id -nu`
24 if [ “$username” != “$ROOTUSER_NAME” ]
25 then
26 echo “Must be root to run \”`basename $0`\”.”

27 exit $E_NON_ROOT_USER
28 fi
29
30 if [ ! -d “$MOUNTPT” ] # 测试挂载点是否已经存在了,
31 then #+ 如果这个脚本已经运行了好几次了就不会再建这个目录了
32 mkdir $MOUNTPT #+ 因为前面已经建立了.
33 fi
34
35 dd if=/dev/zero of=$DEVICE count=$SIZE bs=$BLOCKSIZE # 把RAM设备的内容用零填充.
36 # 为何需要这么做?
37 mke2fs $DEVICE # 在RAM设备上创建一个ext2文件系统.
38 mount $DEVICE $MOUNTPT # 挂载设备.
39 chmod 777 $MOUNTPT # 使普通用户也可以存取这个ramdisk.
40 # 但是, 只能由root来缷载它.
41
42 echo “\”$MOUNTPT\” now available for use.”
43 # 现在 ramdisk 即使普通用户也可以用来存取文件了.
44
45 # 注意, ramdisk是易失的, 所以当计算机系统重启或关机时ramdisk里的内容会消失.
46 #
47 # 拷贝所有你想保存文件到一个常规的磁盘目录下.
48
49 # 重启之后, 运行这个脚本再次建立起一个 ramdisk.
50 # 仅重新加载 /mnt/ramdisk 而没有其他的步骤将不会正确工作.
51
52 # 如果加以改进, 这个脚本可以放在 /etc/rc.d/rc.local,
53 #+ 以使系统启动时能自动设立一个ramdisk.
54 # 这样很合适速度要求高的数据库服务器.
55
56 exit 0
这样,一些诸如一些错误信息就不会显示出来。
// ]]>

linux dd命令使用详解

dd 的主要选项:

指定数字的地方若以下列字符结尾乘以相应的数字:

b=512, c=1, k=1024, w=2, xm=number m

if=file

输入文件名,缺省为标准输入。

of=file

输出文件名,缺省为标准输出。

ibs=bytes

一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。

obs=bytes

一次写 bytes 个字节(即一个块大小为 bytes 个字节)。

bs=bytes

同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。

cbs=bytes

一次转换 bytes 个字节,即转换缓冲区大小。

skip=blocks

从输入文件开头跳过 blocks 个块后再开始复制。

seek=blocks

从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)。

count=blocks

仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。

conv=conversion[,conversion…]

用指定的参数转换文件。

转换参数:

ascii 转换 EBCDIC 为 ASCII。

ebcdic 转换 ASCII 为 EBCDIC。

ibm 转换 ASCII 为 alternate EBCDIC.

block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。

unblock 使每一行的长度都为 cbs ,不足部分用空格填充。

lcase 把大写字符转换为小写字符。

ucase 把小写字符转换为大写字符。

swab 交换输入的每对字节。

noerror 出错时不停止。

notrunc 不截短输出文件。

sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

2.实例分析

2.1.数据备份与恢复

2.1.1整盘数据备份与恢复
备份:

dd if=/dev/hdx of=/dev/hdy
将本地的/dev/hdx整盘备份到/dev/hdy

dd if=/dev/hdx of=/path/to/image
将/dev/hdx全盘数据备份到指定路径的image文件

dd if=/dev/hdx | gzip >/path/to/image.gz
备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径

恢复:
dd if=/path/to/image of=/dev/hdx
将备份文件恢复到指定盘

gzip -dc /path/to/image.gz | dd of=/dev/hdx
将压缩的备份文件恢复到指定盘

2.1.2.利用netcat远程备份

dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234
在源主机上执行此命令备份/dev/hda

netcat -l -p 1234 | dd of=/dev/hdc bs=16065b
在目的主机上执行此命令来接收数据并写入/dev/hdc

netcat -l -p 1234 | bzip2 > partition.img
netcat -l -p 1234 | gzip > partition.img
以上两条指令是目的主机指令的变化分别采用bzip2 gzip对数据进行压缩,并将备份文件保存在当前目录。

2.1.3.备份MBR
备份:

dd if=/dev/hdx of=/path/to/image count=1 bs=512
备份磁盘开始的512Byte大小的MBR信息到指定文件

恢复:

dd if=/path/to/image of=/dev/hdx
将备份的MBR信息写到磁盘开始部分

2.1.4.备份软盘

dd if=/dev/fd0 of=disk.img count=1 bs=1440k
将软驱数据备份到当前目录的disk.img文件

2.1.5.拷贝内存资料到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024
将内存里的数据拷贝到root目录下的mem.bin文件

2.1.6.从光盘拷贝iso镜像

dd if=/dev/cdrom of=/root/cd.iso
拷贝光盘数据到root文件夹下,并保存为cd.iso文件

2.2.增加Swap分区文件大小

dd if=/dev/zero of=/swapfile bs=1024 count=262144
创建一个足够大的文件(此处为256M)

mkswap /swapfile
把这个文件变成swap文件

swapon /swapfile
启用这个swap文件

/swapfile swap swap defaults 0 0
在每次开机的时候自动加载swap文件, 需要在 /etc/fstab 文件中增加一行

2.3.销毁磁盘数据

dd if=/dev/urandom of=/dev/hda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作无法执行。

2.4磁盘管理

2.4.1.得到最恰当的block size

dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小

2.4.2测试硬盘读写速度

dd if=/root/1Gb.file bs=64k | dd of=/dev/null
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
通过上两个命令输出的执行时间,可以计算出测试硬盘的读/写速度

2.4.3.修复硬盘

dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生magnetic flux point。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。