首页 > 代码库 > 学习笔记

学习笔记

###########################################################################
1、查询外网出口IP:
elinks http://ip.zxinc.org/getip
elinks http://www.whatip.net/

############################################################################
rhel6或centos6关闭ipv6:

1、在/etc/modprobe.d/目录下增加一个新的配置文件ipv6.conf
/etc/modprobe.d/ipv6.conf
alias net-pf-10 off
alias ipv6 off 或 options ipv6 disable=1
注: 前者可以禁用ipv6,但是加载ipv6模块报错:FATAL: Module off not found.
后者加载ipv6模块可以加载成功。

2、在/etc/modprobe.d/目录下增加一个新的配置文件ipv6.conf
/etc/modprobe.d/ipv6.conf
install ipv6 /bin/true

注:的确能关闭IPv6但是会导致网卡bonding失败等各种问题,
加载ipv6模块没报错,但加载失败。

3、修改/etc/sysctl.conf
sed -i ‘/net.ipv6.conf.all.disable_ipv6=/d‘ /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.conf
sed -i ‘/net.ipv6.conf.default.disable_ipv6=/d‘ /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6=1" >> /etc/sysctl.conf


影响其他:
1、/etc/ssh/sshd_conf中的AddressFamily any改为AddressFamily inet,否则sshd会有问题;
2、关闭ip6tables;
3、/etc/sysconfig/network 里面添加NETWORKING_IPV6=no 或者 IPV6INIT=no 都是没有用的.
需要重启

################################################################################
java只监听在ipv4上
java.net.preferIPv4Stack=<true|false> java.net.preferIPv6Addresses=<true|false>
http://docs.oracle.com/javase/7/docs/technotes/guides/net/ipv6_guide/

################################################################################
使用rsync上传文件并删除本地文件
find /test -regex ".*logs/.*201.*" -a ! -regex ‘.*tar.gz‘ -exec tar -zcvf `basename {}`.tar.gz {} --remove-files --exclude=*tar.gz \;
rsync -aERtpvz --exclude=*.log --log-file=/tmp/rsync_192.168.6.143_oversea-plat.log --remove-source-files --skip-compress=*.gz /test/2logs/ 192.168.6.106::overseall


#################################################################################
使用awk对TCP的状态连接数进行统计的二种方法:
1、 netstat -an | awk ‘/tcp\>/ {s[$NF]++} END {for(a in s) {print a,s[a]}}‘
2、 netstat -an | awk ‘/tcp\>/ {print $NF}‘ | sort | uniq -c


##################################################################################
如何获取日志从$6到$NF的字段
方法一如下:
awk ‘{for(i=6;i<=NF;i++) printf " "$i;if (NF > 6) printf "\n";}‘ aa

方法二如下;
awk ‘{a=index($0,$6);print substr($0,a)}‘ aa

###################################################################################
从固定格式中取出IP所在的class
例:
class A {
192.168.1.1
192.168.2.1
192.168.3.1
192.168.169.69
}
class B {
192.168.1.1
192.168.169.69
}
sed -nr ‘/\{/{:1;N;/\}/!b1;/192.168.169.69/s#^([^{]+).*#\1#p}‘ file

awk -vRS=‘class *.‘ ‘/192.168.169.69/{print s}{s=RT}‘ file

sed -nr ‘/class/h;/192.168.169.69/{x;s#([^{]+).*#\1#p}‘ file

awk ‘/class/{s=$1" "$2}/192.168.169.69/{print s}‘ file


###################################################################################
linux下java导入证书cer

keytool -import -alias casclient -file casserver.cer -keypass changeit -keystore ../lib/security/cacerts


####################################################################################
1、wget 递归下载及替换URL

wget -r -p -np -k http://docs.saltstack.cn/zh_CN/latest/topics/tutorials/index.html

2、使用 Curl 测试cookie来记录session信息

像IE/FF这样的浏览器,当然可以轻易处理cookie信息,但curl呢?
option: -D 参数是用来存cookie

$curl -D cookie0001.txt http://www.php-oa.com
这样,当页面被存到page.html的同时,cookie信息也被存到了cookie0001.txt里面了
那么,下一次访问的时候,如何继续使用上次留下的cookie信息呢?要知道,高级防盗链在很多网站都是靠监视你的cookie信息,来判断你是不是不按规矩访问他们的网站的.
这次我们使用这个option来把上次的cookie信息追加到http request里面去: -b

$curl -D cookie0002.txt -b cookie0001.txt http://www.php-oa.com
这样,我们就可以几乎模拟所有的IE操作,去访问网页了!、


3、Curl 来控制是浏览器信息
在CDN的缓存服务器中,我们要看给的浏览器是什么类型,可以用curl给我们提供了一个有用的option,可以让我们随意指定自己这次访问所宣称的自己的浏览器信息: -A

$curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" http://www.php-oa.com
这样,服务器端接到访问的要求,会认为你是一个运行在Windows 2000上的IE6.0

4、 Curl 来控制 Referer
另外一个缓存服务器端常用的限制方法,就是检查http访问的referer.比如你先访问首页,再访问里面所指定的下载页,这第二次访问的referer地址就是第一次访问成功后的页面地址.这样,服务器端只要发现对下载页面某次访问的referer地址不 是首页的地址,就可以断定那是个盗连了~~~~~
curl给我们提供了设定referer的option: -e后,在DHCP允许

$curl -e "http://mail.php-oa.com" http://www.php-oa.com
这样,就可以骗对方的服务器,你是从mail.php-oa.com点击某个链接过来的了,呵呵呵


5、 Curl 多线程下载和断点续传的测试
在缓存服务器中可以控制req_header Range的参数,我们怎么用curl来控制啦.
比如我们下载aaa.jpg中,突然掉线了,我们就可以这样开始续传

$curl -c -O http://www.php-oa.com/aaa.jpg

6、多线程分片下载,:

$curl -r 0-10240 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3

####################################################################
安装koan后,在DHCP允许的情况下,在线重装系统:
koan --server=192.168.160.200 --replace-self --profile=centos6_64_San_Dun
reboot
会在grub里添加一条记录,方便重装系统
title kick1456909528
root (hd0,0)
kernel /boot/vmlinuz_koan ro rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD KEYTABLE=us SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rhgb quiet console=ttyS1,115200 console=tty0 ksdevice=eth0 lang= vnc text ks=http://192.168.160.200/cblr/svc/op/ks/profile/centos6_64_San_Dunbiosdevname=0 console=ttyS1,115200 console=tty0 kssendmac


######################################################################
在.bash_profile中添加:
keychain .ssh/id_dsa
keychain .ssh/ws/id_dsa
source .keychain/192_168_101_65-sh
/fort/bridge/192_168_101_65/script.sh

/fort/bridge/192_168_101_65/script.sh脚本内容:

date=`date +%Y%m%d%H%M`
date1=`date +%Y%m%d`
source=`echo $SSH_CLIENT|awk ‘{print $1}‘`
tty=`echo $SSH_TTY|cut -d ‘/‘ -f3,4|tr -d ‘/‘`
mkdir -p /scripts/`echo $date1`
#echo $date
#echo $date1
#echo $source
#echo $tty
exec /usr/bin/script -t 2>> /scripts/`echo $date1`/`whoami`_`echo $tty`_`echo $date`_`echo $source`.time -a -f -q /scripts/`echo $date1`/`whoami`_`echo $tty`_`echo $date`_`echo $source`.session


########################################################################
cisco防火墙里设置宽度
config terminal terminal width 200


########################################################################
ubuntu修改默认的编辑器
在终端输入: 
update-alternatives --config editor

########################################################################
修改sudo的输入时间间隔,默认是5分钟
Defaults env_reset , timestamp_timeout=30


########################################################################
windows:
中文系统:systeminfo|findstr "系统型号"
英文系统:systeminfo|findstr "Model"
wmic bios get SerialNumber /value


#########################################################################
忽略日志中的严重警告,因为这是关闭tomcat时候引起的,正常情况下不会发生这种内存泄露情况,
而且Tomcat6.18以上版本的Tomcat已经做了内存泄露保护,交给Tomcat完成吧,
我们只需要在shutdown.sh之后,补上一个kill -9 pid即可。
要是嫌这样太麻烦了,可以如下这样改:
==============================bin/shutdown.sh 
exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@" #加上 -force 

==============================bin/catalina.sh 
在PRGDIR=`dirname "$PRG"`后面加上
if [ -z "$CATALINA_PID" ]; then
CATALINA_PID=$PRGDIR/CATALINA_PID
cat $CATALINA_PID
fi


#############################################################################

我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了。下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时 候生效最关键的一点是,在server的设置里面添加这一行:
listen 80 default; 
后面的default参数表示这个是默认虚拟主机。
Nginx 禁止IP访问这个设置非常有用。
比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500.目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。就可以这样设置:
server { 
listen 80 default; 
return 500; 

也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置就可以:
server { 
listen 80 default; 
rewrite ^(.*) http://www.example.com permanent; 

按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:
server { 
listen 80; 
server_name www.example.com example.com 
}
没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:
[warn]: conflicting server name “example.com” on 0.0.0.0:80, 
ignored 
the configuration file /usr/local/Nginx/conf/
Nginx.conf syntax is ok 
configuration file /usr/local/Nginx/conf/Nginx.
conf test is successful
最后通过在listen 80 default;后再加server_name _;解决,形式如下:

#禁止IP访问 
server { 
listen 80 default; 
server_name _; 
server_name www.example.com example.com 
return 500; 

这样,通过example.com就能访问服务器了。


########################################################################

jstat -gc <pid>: 可以显示gc的信息,查看gc的次数,及时间。

显示列名

具体描述

S0C   

年轻代中第一个survivor(幸存区)的容量 (字节)

S1C   

年轻代中第二个survivor(幸存区)的容量 (字节)

S0U   

年轻代中第一个survivor(幸存区)目前已使用空间 (字节)

S1U     

年轻代中第二个survivor(幸存区)目前已使用空间 (字节)

EC      

年轻代中Eden(伊甸园)的容量 (字节)

EU       

年轻代中Eden(伊甸园)目前已使用空间 (字节)

OC        

Old代的容量 (字节)

OU      

Old代目前已使用空间 (字节)

PC    

Perm(持久代)的容量 (字节)

PU

Perm(持久代)目前已使用空间 (字节)

YGC    

从应用程序启动到采样时年轻代中gc次数

YGCT   

从应用程序启动到采样时年轻代中gc所用时间(s)

FGC   

从应用程序启动到采样时old代(全gc)gc次数

FGCT    

从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT

从应用程序启动到采样时gc用的总时间(s)


jstat -gcutil <pid>:统计gc信息

显示列名

具体描述

S0    

年轻代中第一个survivor(幸存区)已使用的占当前容量百分比

S1    

年轻代中第二个survivor(幸存区)已使用的占当前容量百分比

E     

年轻代中Eden(伊甸园)已使用的占当前容量百分比

O     

old代已使用的占当前容量百分比

P    

perm代已使用的占当前容量百分比

YGC    

从应用程序启动到采样时年轻代中gc次数

YGCT   

从应用程序启动到采样时年轻代中gc所用时间(s)

FGC   

从应用程序启动到采样时old代(全gc)gc次数

FGCT    

从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT

从应用程序启动到采样时gc用的总时间(s)


#####################################################################################
ubuntu修改时区

方法1:
tzselect命令只告诉你选择的时区的写法,并不会生效。所以现在它还不是东8区北京时间。你可以在.profile、.bash_profile或者/etc/profile中设置正确的TZ环境变量并导出。 例如在.bash_profile里面设置 TZ=‘Asia/Shanghai‘; export TZ并使其生效。
方法2:
复制相应的时区文件,替换系统时区文件;或者创建链接文件 ln /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
但好像ubuntu下的Shanghai是个软链接,复制没有实时生效

方法3:
使用dpkg-reconfigure tzdata设置时区,实时生效



#######################################################################################

linux记录bash下命令的实例

为所有用户添加history记录详细信息,把所有用户的操作指令都统一存到/var/log/bash_history目录下,并按每天生成一个日志文件
     这样可以通过查看这一个文件,来了解用户的所有操作。

export PROMPT_COMMAND=‘{ date "+[ %Y%m%d %H:%M:%S `whoami` ] `history 1 | { read x cmd; echo "$cmd"; }`"; }    >> /var/log/bash_history/bash.`date +%Y%m%d`‘



########################################################################################

tomcat404报错及隐藏版本号,操作如下:

 

cd /usr/share/tomcat7/lib

 

mkdir -p org/apache/catalina/util

 

cd org/apache/catalina/util

 

$ vi ServerInfo.properties

 

server.info=Apache Tomcat Version X

 

cd $CATALINA_HOME/bin

 

./catalina.sh stop

 

./catalina.sh start


#########################################################################################

nginx 的proxy_intercept_errors 和error_page的搭配使用,

 

proxy_intercept_errors 

 

当上游服务器响应头回来后,可以根据响应状态码的值进行拦截错误处理,与error_page 指令相互结合。用在访问上游服务器出现错误,由nginx直接返回自定义的错误页面

location /houtai {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/houtai;
proxy_intercept_errors on;
}

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;

location = /404.html {
root /usr/share/nginx/html;
internal;
}

location = /50x.html {
root /usr/share/nginx/html;
internal;


参考页面:https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-to-use-custom-error-pages-on-ubuntu-14-04

                  http://blog.csdn.net/hellolingyun/article/details/37934815


#######################################################################################

我用centos的最小安装,然后装了kvm,然后命令行创建了虚拟机,用的是vnc访问,创建命令是
virt-install --name mclinux --ram 3500 --vcpus=3 --accelerate --disk path=/home/mclinux.img,size=10 --vnc --vncport=5991 --vnclisten=0.0.0.0 --cdrom=/home/linuxiso/CentOS-6.4-x86_64-minimal.iso
虚拟机创建成功,但是用vnc-viewer访问服务器的ip:5591,vnc-viewer一闪而过,不能连接

举例:

qemu     28533     1  0 Aug17 ?        03:14:52 /usr/libexec/qemu-kvm -name shfdtdev04 -S -M rhel6.6.0 -enable-kvm -m 12288 -realtime mlock=off -smp 8,sockets=8,cores=1,threads=1 -uuid e560fb15-1d35-926d-1afd-f640f24ef22b -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/shfdtdev04.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x5.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x5 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x5.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x5.0x2 -drive file=/opt/vm/vdsk/shfdtdev04.img,if=none,id=drive-virtio-disk0,format=qcow2,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive file=/opt/vm/vdsk/shfdtdev04-opt.img,if=none,id=drive-virtio-disk1,format=qcow2,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk1,id=virtio-disk1 -netdev tap,fd=23,id=hostnet0,vhost=on,vhostfd=26 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:dd:7d:2e,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 192.168.4.90:1 -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 -msg timestamp=on

解决方法:

“设置vnc的 ColourLevel=rgb222”


#######################################################################################

Vmware扩展磁盘如何不需重启系统
在虚拟机Vmware中我们有时候需要添加新的虚拟磁盘或给已有虚拟磁盘扩容(expand),在新增磁盘或磁盘扩容后,Linux系统并不能马上识别到。也就是说你看不到磁盘空间变化(使用fdisk -l查看),这时我们可以通过重启系统(reboot)解决这个问题,但是很多时候,我们并不想在存储扩容时重启系统,因为这样会影响到现有的业务系统。那么为什么新增磁盘或磁盘扩容后,Linux系统识别不到呢?这个是因为连接存储设备的SCSI总线需要重新扫描,才能识别到这些新的存储设备。下面测试一下在添加新的虚拟磁盘或给已有虚拟磁盘扩容如何操作才能不用重启系统
1:Vmware虚拟磁盘扩容
Vmware虚拟磁盘扩容后,使用fdisk -l看不到任何变化


方法1:echo 1 > /sys/class/scsi_device/device/rescan

[root@localhost ~]# cd /sys/class/scsi_disk/
[root@localhost scsi_disk]# ls
0:0:0:0
[root@localhost scsi_disk]# cd 0\:0\:0\:0/
[root@localhost 0:0:0:0]# echo ‘1‘ > device/rescan


方法2:重新扫描特定的 SCSI Device

echo 1 > /sys/block/$DEVICE/device/rescan 用sda, sdb, sdc等替换$DEVICE

[root@localhost ~]# echo 1 > /sys/block/sda/device/rescan

方法2:Vmware新增虚拟磁盘

首先找到您的主机总线编号

[root@localhost ~]# grep mpt /sys/class/scsi_host/host?/proc_name

/sys/class/scsi_host/host0/proc_name:mptspi

使用下面命令扫描SCSI总线
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host0/scan


本文出自 “秋天的童话” 博客,请务必保留此出处http://wushank.blog.51cto.com/3489095/1857055

学习笔记