2013年6月24日星期一

linux 网络配置

redhat版本

配置文件:
/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE:设备 eth0,eth1...
ONBOOT:系统启动时是否自动启动网卡  YES,NO
BOOTPROTO:获取ip方式  static,auto(?即不用设置)
IPADDR:ip地址
NETMASK:子网掩码
GATEWAY:网关

eg:
DEVICE eth0
ONBOOT YES
BOOTPROTO static
IPADDR 192.168.1.110
NETMASK 255.255.255.0
GATEWAY 192.168.1.1

管理网络设备:
service network start|stop|restart|status

ifup   启动网卡
ifdown 关闭网卡
eg: ifdown eth0 #关闭第1块网卡
    ifup eth0 #启动第一块网卡

配置完成之后,重启网卡:
service network restart



ubuntu版本

配置文件:
/etc/network/interfaces 这里是IP,网关,掩码等配置
/etc/resolv.conf 这个文件保存DNS的有关信息

auto lo
iface lo inet loopback
#回环地址 127.0.0.1

#网卡eth0的配置
auto eth0

#staic 静态IP
iface eth0 inet static
address 192.168.1.110
netmask 255.255.255.0
gateway 192.168.1.1
#network 192.168.3.0
#broadcast 192.168.1.255
#后面两条是网络号和广播号,这个可以由其它信息计算,因此无需设置


还可以配置第二IP(虚拟IP)
auto eth0:1
iface eth0:1 inet static
address 192.168.1.110
netmask 255.255.255.0
#network x.x.x.x
#broadcast x.x.x.x
gateway x.x.x.x


配置DNS:
vi /etc/resolv.conf
nameserver 202.107.117.11

配置主机名:
vi /etc/hostname
主机名默认存在,不需修改

重启网络:
sudo /etc/init.d/networking restart

2013年5月17日星期五

linux常用指令简介


linux常用指令集列表(持续更新):
cd  ls  pwd  su  du  rm  cp  mv  >  >>  |  sort  find  cat  more  less  top  ps  free  df  wget  uname  grep  tar  kill  wc  chmod  chown  adduser  mkdir  touch  crontab  date  type/which  reboot  halt  shutdown  split  diff  mount  umount  fdisk  passwd  ssh  scp  rcp  sync  rsync  samba  ifconfig netstat  ping  man  sleep  alias  sed  ulimit  clear  uniq  awk  ftp  samba  head/tail  curl  ln  sudo  export  cut



cd 切换目录

常用参数:
~ 回到用户主目录
.. 返回上级目录



ls 列表方式查看指定目录下的文件和文件夹

常用参数:
-l list,列出指定目录下的所以文件和文件夹
-t time,按时间排列
-a all,包括隐藏文件,隐藏文件前带.



pwd 查看当前所在目录位置



su 切换登录用户
用法: su [username]



du 显示目录或文件的大小,占用磁盘空间

使用方式:
du [options] [目录或文件]
常用参数:
-h或--human-readable 以K,M,G为单位,提高信息的可读性
-s或--summarize 仅显示总计



rm 删除文件和目录

使用方式:
rm [options] source..
常用参数:
-r 递归删除目录和文件,强制删除
-f force不论文件是否存在,不用提示



cp 复制文件

使用方式:
cp [options] source dest(目的对象)
cp [options] source..  directory
cp aaa bbb 复制aaa并更名为bbb
常用参数:
-r 递归拷贝文件夹里的内容
-f 如果目标文件夹有同名文件,先删除再拷贝



mv 移动文件,文件重命名,剪切文件

使用方式:
mv [options] source dest
mv [options] source.. directory
mv aaa bbb aaa重命名为bbb



>>> 重定向
> 把标准输出写入到指定文件,从文件头开始,会覆盖原文件
>> 把标准输出写入到指定文件,从文件尾开始,追加到原文件之后



| 管道,导流,把标准输出导入到标准输入
使用方式:
ps aux | grep mysql >>a.log



sort 对文本文件内容排序,以行为单位

使用方式:
sort [options][文件]
常用参数:
-m或--merge 合并
-r或--reverse 反序排列
-u或--unique 去重
-n 按数值排序
-k 按指定列排序
-t 指定列分隔符
   eg: sort -n -t "/" -k 3 filea 文件以/分割的第3列按数值排序
-b 忽略每行前面的空白部分,从第一个可见字符开始比较



find 在目录层级里查找文件和内容,可以指定名称、类别、时间、大小、权限等组合,只有完全相符的才会被列出来

使用方式:
find expression(表达式)
find . -type f  表示查找当前目录及其子目录下类型是f的档案 ( . 表示当前目录)
常用参数:
-mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比档案 file 更晚被读取过的档案
-atime n : 在过去 n 天过读取过的档案
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比档案 file 更新的档案
-ctime n : 在过去 n 天过修改过的档案
-empty : 空的档案
-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的档案,ipath 会忽略大小写
-type f 类型是f的档案
-name filename 名称是filename的档案
-size n 大小是n单位的档案,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组



cat 把文件内容串连后传到标准输出

使用方式:
cat file1 file2 >>file3 把文件1 2内容追加到3中
常用参数:
-n或--number 由 1 开始对所有输出的行数编号
-b或--number-nonblank 和 -n 相似,只不过对于空白行不编号
-s或--squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行



more 类似cat,会逐页显示方便阅读,按空白键pagedown,按b(back)键pageup,而且还有搜寻字串的功能(与vi相似)




less 与 more 相似,允许使用者往回卷动以浏览已经看过的部份

主要参数:
-p 回到file第一行
-b 前一页 pageup
-backspace 下一页 pagedown




top 任务管理器,实时显示进程状态,cpu使用情况等



ps  显示瞬时进程的动态,内容与top差不多.
包括:pid,user,%cpu(cpu使用率),%mem(内存使用率),VSZ(虚拟内存占用大小),stat(状态),start(启用时间),time(执行时间),command(所执行的指令)

主要参数:
-aux 显示所有包含其他使用者的行程



free 查看内存状态

使用方式:
free [options]
常用参数:
-m 以MB为单位显示内存使用情况
-t 显示内存总和 total 行





df 查看磁盘使用情况
-a --all 包含所有的具有 0 Blocks 的档案系统
-h --human-readable 使用人类可读的格式




wget 从指定url下载内容
wget [options] url



uname 查看linux系统的版本信息
常用参数:
-a 显示所有信息



grep 搜索file中与keyword匹配的所有行并打印

使用方式:
grep [options] keyword filename



tar 压缩和解压缩文件

使用方式:
tar [options] filename
常用参数:
-c或--create   建立新的备份文件
-f<备份文件>或--file=<备份文件>   指定备份文件
-v或--verbose   显示指令执行过程
-x或--extract或--get   从备份文件中还原文件
-z或--gzip或--ungzip   通过gzip指令处理备份文件



kill 发送信号给pid,告诉pid要做什么

使用方式:
kill [options] pid/command
常用参数:
-s(signal) 其中可用的讯号有 HUP(1),KILL(9),TERM(15), 分别代表著重跑,砍掉,结束,eg: kill -9 mysql 即终止mysql进程
-l(signal) 列出所有可用的信号名称



wc 统计文件的Byte数、字数、或是行数

使用方式:
wc [options] filename
常用参数:
-c或--chars   统计Bytes数。
-l或--lines   统计行数。
-w或--words   统计字数。



chmod 修改用户对文件的读写和可执行权限

使用方式:
chmod [options] file
u 表示ownerUser, g 表示同组group, o other表示其他用户, a 表示all
+ 表示增加权限,  - 表示取消权限,  = 表示唯一设定权限
r 表示可读,  w 表示可写,  x 表示可执行, X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行
    r=4,w=2,x=1
  若要rwx属性则4+2+1=7;
  若要rw-属性则4+2=6;
  若要r-x属性则4+1=5
eg:chmod +x file 设置file为可执行文件
   chmod 754 file 设置owner可读写执行,group可读可执行,other可读
   chmod u+rwx,g+rx,o+w file 增加owner可读写执行权限,增加group读执行权限,增加other写权限



chown 改变文件的所有者,该命令只有root用户才能使用

使用方式:
chown [options] username  file
username  文件的新所有者
-R 递归变更文件夹和子目录下的文件所有者



adduser 添加用户
用法: adduser -gid 1000 --home /home/username username
-gid 组id,如果不指定组,则会新建一个组
--home 用户主目录,不指定会默认在/home下创建

addgroup 添加组



mkdir  新建文件夹

使用方式:
mkdir [options] file
常用参数:
-p (parent)目录不存在,则建一个
eg:mkdir qq/aa 如果qq目录不存在,则会报错
   mkdir -p qq/aa 如果qq目录不存在,则会新建一个qq目录



touch 改变文件的时间记录,新建文件

使用方式:
touch [options] file
touch filename  新建文件filename



crontab 设置定时任务,linux系统中作为工作时程表任务

时程表的格式如下: f1   f2   f3   f4   f5   program
其中分别对应  :   分钟 小时 日期 月份 星期 可执行程序

当 fn 的位置是 * 表示所有时间都要执行
eg: 0 * * * * /bin/ls  每月每天每小时0分钟的时候执行一次 /bin/ls
    30 17 * * 1-5 /bin/ls 每周1-周5下午5点30分执行一次  /bin/ls
    0 6-12/3 * 1 * /bin/ls 1月份的每天6点-12点每隔20分钟执行一次  /bin/ls
    5,15,25 * * * *  /bin/ls 每到1分,15分,25分钟的时候执行一次  /bin/ls

常用参数:
-u 指定时程表用户,一般root权限使用,普通用户只能给自己设置时程表,不指定-u时默认是当前用户
-l 列出所有时程表
-e 编辑时程表文件,保存退出后,系统将自动重启时程表任务
-r 删除时程表任务

使用方式:
$ vi cronfile  #先建立cronfile
$ chmod +x cronfile  #把cronfile设为可执行文件
$ crontab cronfile   #启用cronfile文件,系统就会自动定时执行.



date 可以用来显示或设定系统的日期与时间

显示时间的格式:
%D : 直接显示日期 (mm/dd/yy)  eg: date +%D 结果是: 05/20/13
%T : 直接显示时间 (24 小时制) eg: date +%T 结果是: 12:30:26
%X : 相当于 %H:%M:%S          eg: date +%X 结果是: 01:10:23 PM

设置时间的格式:
MMDDhhmm[[CC]YY][.ss]  其中 MM 为月份, DD 为日, hh 为小时, mm 为分钟, CC 为年份前两位数字, YY 为年份后两位数字, ss 为秒数.
只有root权限才能设置系统时间,更改了系统时间之后,以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值

常用参数:
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间

$ sudo date -s '05/22 12:50 (20 13) (.40)'
结果显示系统时间设置为: Wed May 22 12:50:00 CST 2013



type 查找软件在系统中的位置,与which类似

使用方法:
type mysql  #查找mysql可执行软件的位置
结果是: mysql is /usr/bin/mysql



reboot 若系统的 runlevel 为 0 或 6 则重启系统,否则唤醒 shutdown (-r)
参数:
-n : 在重开机前不做将记忆体资料写回硬盘的动作
-d : 不把记录写到 /var/log/wtmp 档案里(-n 包含了 -d)
-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
-f : force,强迫重开机,不呼叫 shutdown 这个指令
-i : 在重开机之前先把所有网络相关的装置先停止

/var/run/utmp 当前的 runlevel 信息从此文件中读取
/var/log/wtmp 新的 runlevel 信息记录将追加到此文件



halt 若系统的 runlevel 为 0 或 6 则关闭系统,否则唤醒 shutdown (-h)

参数:
-n : 在关机前不做将记忆体资料写回硬盘的动作
-d : 不把记录写到 /var/log/wtmp 档案里(-n 包含了 -d)
-w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
-f : force,强迫关机,不呼叫 shutdown 指令
-i : 在关机之前先把所有网络相关的装置先停止
-p : 当关机的时候,顺便做关闭电源(poweroff)的动作



shutdown 执行关机程序,并且在关机前传送讯息给所有使用者,关机前5分钟内拒绝用户登录,shutdown 也可以用来重开机(reboot),这是一种安全的关机模式.

使用方式:
shutdown [options] time [message]
参数 :
-r : 关机并重启系统(reboot)
-h : 关机后切断电源(halt or poweroff)
-c : 取消目前已经进行中的关机动作
-k : 并不会真的关机,只是将警告讯息传送给所有使用者
-t seconds : 设定在几秒钟之后进行关机程序
-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-f : 关机时,不做 fcsk 动作(检查 Linux 档系统)
-F : 关机时,强迫进行 fsck 动作
time : 设定关机的时间,[now],立即关机,[+m],eg:+10 10分钟, hh:mm 24小时制的时分
message : 传送给所有使用者的警告讯息

/var/run/utmp 当前的 runlevel 信息从此文件中读取,环境变量
/var/log/wtmp 新的 runlevel 信息记录将追加到此文件

特别说明,我试了-c参数,无法生效
$ shutdown +10  #设置10分钟之后关机
然后系统开始计时并且发送message给用户,用户无法进入命令行模式,所以-c参数派不上用场




split 拆分文件,拆分后文件名首字母默认为x,默认后缀为2个字母,依次为aa,ab... eg: xaa,xab...

常用参数:
-l 按行分割
-b 按大小分割 M K
-a --suffix-length=N 指定输出文件名的后缀,默认为2个



diff 比较文件的差异,逐行比较文本文件的异同处.指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录

使用方式:
diff [options] [文件或目录1][文件或目录2]
常用参数:
-<行数> 指定要显示多少行的文本.须与-c或-u一起使用
-c context,显示全部内容,并标出不同之处
-d 使用不同的演算法,以较小的单位来做比较
-H 比较大文件时,可加快速度
-p 比较C语言的程序文件时,显示差异所在的函数名称
-q 仅显示有无差异,不显示详细的信息
-r 比较子目录中的文件
-y 以并列的方式显示文件的异同之处
-u 以合并的方式来显示文件内容的不同



mount 挂载

使用方式:
mount -t type device dir
eg:  mount --bind olddir newdir 两处都挂载
     mount --move olddir newdir 移到newdir
常用参数:
-a 将 /etc/fstab 中所有东西都挂上。
-F 通常与 -a 一起使用,它会为每一个 mount 的动作产生一个进程负责执行.在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作
-v verbose 显示详细过程
-f fake 通常用来除错,它并不执行实际挂上动作,而是模拟整个挂上动作,常与 -v 一起使用.
-t 指定文件类型,通常不必指定.mount 会自动选择正确的类型
-o ro 用唯读模式挂上
-o rw 用读写模式挂上
-B, --bind 重新绑定子树到其他地方
-R, --rbind 重新绑定子树到其他地方,包括子子树,递归方式绑定
 -M, --move 重新绑,到别的地方

现有type包括:
adfs, affs,  autofs,  cifs,  coda,  coherent,  cramfs, debugfs, devpts, efs, ext, ext2, ext3, ext4, hfs, hfsplus, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4,ntfs, proc, qnx4, ramfs, reiserfs, romfs, squashfs, smbfs, sysv, tmpfs, ubifs, udf, ufs, umsdos, usbfs, vfat, xenix, xfs, xiafs.



umount 卸载目前挂在Linux目录中的文件系统
-t 卸除指定的文件系统
-a 卸除/etc/mtab中记录的所有文件系统
-r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统



fdisk 查看硬盘的情况,磁盘分区

使用方式:
$ fdisk -l /dev/sda   #查看磁盘分配情况
$ fdisk /dev/sda      #进入磁盘分区模式
:m 显示所有命令列示
:p 显示硬盘分割情形
:a 设定硬盘启动区
:n 设定新的硬盘分割区
  e 硬盘为扩展分割区(extend)
  p 硬盘为主要分割区(primary)
:t 改变硬盘分割区属性
:d 删除硬盘分割区属性
:q 结束不保存硬盘分割区属性
:w 结束并写入硬盘分割区属性

分区完成之后要先格式化分区
mkfsext3 分区名   将分区格式化ext3格式
mkfs -t 类型 分区名   将分区格式化为指定格式
mkswap 分区名   将分区格式化为swap格式

然后挂载分区到某目录下,这样才可以开始使用该分区
mount device dir
umount 卸载

或者在 /etc/fstab 文件里设置自动挂载

另外,添加交换分区
fdisk /dev/sdb
参数:n t l w
swapon/swapoff 分区名 打开和关闭交换分区
free 查看内存或交换分区使用情况




passwd 修改密码
使用方式:
passwd [username] 回车后输入当前密码,然后输入新密码


ssh 远程客户端登陆
使用方式:
ssh [options] [user]@hostname [command]




scp 远程拷贝,通过ssh方式的安全加密方式

使用方式:
scp [options] user@host1:file1 ...  user@host2:file2
常用参数:
-1 scp只能用协议1
-2 scp只能用协议2
-3 两个远程主机之间的数据传输都经过本地主机.如果没有这个选项,数据传输是直接在两个主机之间进行.需要注意的是,这个选项不显示进度.
-4 scp只能用ipv4地址
-6 scp只能用ipv6地址
-B 批量模式,需要密码口令
-C 压缩Compression
-c cipher密码,encrypting加密传输数据
-p 保留源文件属性
-r 递归复制
-v 显示详细进度

$ scp -v cxz@192.168.1.105:/desktop/filename cxz@192.168.1.102:/tep/



rcp 远程拷贝
-p 保留源文件属性
-r 递归拷贝



sync 把缓存中的文件写入/同步到磁盘中


rsync 远程拷贝/同步文件
rsync -v -P -e ssh user@ip: ~/file  ./



samba  windows系统和linux系统之间共享文件的服务器,需要安装
参数:
start   启动Samba服务器的服务
stop    停止Samba服务器的服务
status  显示Samba服务器目前的状态
restart 重启Samba服务器



ifconfig 设置网络设备的状态,显示目前的设置,包括硬件地址,ip,广播,掩码,ipv6地址等



netstat 显示linux系统的网络状态

使用方式:
netstat [-vWeenNcCF] [<Af>] -r 
netstat [-vWnNcaeol] [<Socket> ...]
netstat [-vWeenNac] -i | [-cWnNe] -M | -s 
参数:
-r --route 显示路由配置信息表
-i --interfaces 显示接口信息表
-g --groups  显示多点光播组成员
-s --statistics 显示网络工作信息统计表(类似SNMP)
-M --masquerade 显示伪装的网络连接

-v --verbose 显示详细信息
-W --wide 不 truncate IP地址
-n --numeric 不解析名字(直接使用IP地址,而不通过域名服务器)
-N --symbolic 显示网络硬件外围设备的符号连接名称
-e --extend  显示网络其他相关信息
-p --programs 显示正在使用Socket的程序的PID和name
-c --continuous 持续列出网络状态

-l, --listening 显示监听中的服务器的Socket
-a, --all 显示所有连接中的sockets
-o, --timers 显示计时器
-F, --fib  显示转发信息
-C, --cache 显示路由缓存信息而不是转发信息FIB

-t --tcp
-u --udp
-w --raw
-x --unix



ping  使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常
ICMP (internet control message protocol) 报文控制协议

使用方式:
ping [options] [主机名称或IP地址]
参数:
-f 极限检测
-R 显示路由过程
-v 显示详细指令的执行过程



man  在线帮助手册 

使用方式:
man command  显示详细的帮助信息
其他帮助方式:
command --help  显示主要的参数信息



sleep 延迟动作
number 时间长度,后面可接 s秒、m分、h时 或 d日 
eg: sleep 1m  等待1分钟



alias 设置指令的别名
使用方式:
alias[别名]=['指令名称']
若不加任何参数,则列出目前所有的别名设置



sed  利用script的指令,来处理、编辑文本文件
-e<script> 以指定的script来处理输入的文本文件
-f<script文件> 以指定的script文件来处理输入的文本文件
-n --quiet --silent 仅显示script处理后的结果


ulimit 控制shell程序的资源,shell内建指令
-a 显示目前资源限制的设定


clear 清除屏幕


uniq 去重,检查及删除文本文件中重复出现的行列

使用方式:
uniq [options] [输入文件] [输出文件]
参数:
-c 显示每行重复出现的次数
-d 仅显示重复出现的行
-u 去重
-f<field> 忽略指定区域
-s<char>  忽略指定字符
-w<n>     指定要比较的字符数n



awk 处理文本和数据的程序语言,比sed和grep强大之处在于可以方便的处理列数据

awk是 pattern(模型,样品,规则) {action}{操作} 序列对,也可以自定义函数.
小程序可以直接在命令行输入,用单引号('')包起来,避免被shell解释.
大程序可以用-f调用程序文件.输入数据可以从文件列表读取,也可以从标准输出读取.输入数据被变量 RS 切分为一条条的记录,默认 RS='\n' ,即一行为一条记录.每条记录与pattern进行比较,匹配则执行{action}.

参数:
-F 设置分隔符,FS,eg:空格,t(tab),%,&,:等
-f 调用程序文件
-v 分配变量的值,var=value
-- 操作结束符

内置变量:  (使用内置变量时不需要引号)
ARGC 命令行参数个数(不包括awk的选项和awk的程序内容)
ARGIND 当前正在处理的ARGV中的文件的索引值(同时处理多个文件时会用到)
ARGV 命令行参数序列数组,下标从0开始
CONVFMT 数字转换格式,和C语言中的数字输出格式化类似,默认为"%.6g"
ENVIRON 当前系统的环境变量
ERRNO 出错时的错误信息
FIELDWIDTHS 以空格分隔的字段宽度,如果指定此变量,awk将会用指定的宽度替换变量FS指定的分隔符
FILENAME 当前正在处理的文件名,该变量不能在BEGIN块中使用
FNR 当前处理的记录号
FS 字段的分隔符,默认为空格
IGNORECASE 如果该变量设置为非0值,在进行字符串匹配时忽略大小写
NF 当前记录中的字段个数
NR 已经读出的记录数
OFMT 数字的输出格式
OFS 输出的字段分隔符,默认为空格
ORS 输出的记录分隔符,默认为新行
RS 输入记录的分隔符,默认为新行
RSTART 被match()函数匹配的字符串的起始位置,如果没有匹配则为0(从1开始)
RLENGTH 被match()函数匹配的字符串的长度
SUBSEP 数组中多个下标的分隔符,默认为"\034"

eg:
awk '{pattern}{active}' file
awk -F / '{print $2}' file 打印文件以/分割的第2列
$n 表示第n列,$0表示整行



ftp 标准文件传输协议,用户与远程站点之间进行文件传输

使用方式:
ftp [options] [host:port]
-4 ipv4
-6 ipv6
-v 显示远程服务器的指令执行过程,包括数据传输和统计
-d 详细显示指令执行过程,便于排错或分析程序执行的情形,调试用



samba windows系统和linux系统之间共享文件的服务器,需要安装
start   启动Samba服务器的服务
stop    停止Samba服务器的服务
status  显示Samba服务器目前的状态
restart 重启Samba服务器



head/tail 读取文本文件的最前/后10行
head -20 file 读取文件的前20行
tail -20 file 读取文件的后20行
tail -f file 实时刷新文件,一般用于查看日志文件



curl 下载url中的数据

curl是一个工具来与服务器传递数据,使用一个支持的协议(DICT类型, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS,  IMAP,IMAPS,  LDAP,  LDAPS,  POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,TELNET and TFTP).curl无需与用户进行交互.

curl提供一车有用的技巧,如代理支持,用户身份验证,FTP上传,HTTP post,SSL连接,cookie,文件传输摘要等等

curl [options] [URL...]



ln 在文件之间建立连接

Linux/Unix 文件系统中,有所谓的连结(link),我们可以将其视为文件的别名,而连结又可分为两种:硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个文件可以有多个名称,而软连结的方式则是产生一个特殊的文件,该文件的内容是指向另一个文件的位置.硬连结是存在同一个文件系统中,而软连结却可以跨越不同的文件系统

使用方式:
ln [options] source dist
ln source dist 是产生一个连结(dist)到 source,默认是硬连接,-s是软连接
不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间

参数:  
-f  链结时先将与 dist 同档名的档案删除
-d  允许系统管理者硬链结自己的目录
-i  在删除与 dist 同档名的档案时先进行询问
-n  在进行软连结时,将 dist 视为普通文件
-s  进行软链结(symbolic link)
-v  显示所有已链接文件名
-b  将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
-V METHOD : 指定备份的方式

eg:
ln -s yy zz 文件yy产生一个软连接zz
ln yy zz    文件yy产生一个硬链接zz



sudo 用超级用户或别的用户的身份执行命令

sudo -l 显示自己的权限
sudo command 以root身份执行命令



export 设置或显示环境变量(需安装)

在shell中执行程序时,shell会提供一组环境变量. export可新增,修改或删除环境变量,供后续执行的程序使用. export的效力仅及于该此登陆操作

参数:
-f  代表[变量名称]中为函数名称
-n  删除指定的变量,变量实际上并未删除,只是不会输出到后续指令的执行环境中
-p  列出所有的shell赋予程序的环境变量



cut 逐行打印指定部分到标准输出

用法:
cut -cnum1-num2 filename
显示每行从开头算起 num1 到 num2 的文字

参数:
-b 指定字节bytes
-c 指定字符characters
-d 指定分界符,默认是 tab
-f 指定列字段fields,如果没有分界符,则打印整行
-s 不打印无分界符的行
-c m-n 表示显示每一行的第m个字元到第n个字元
-f m-n 表示显示第m栏到第n栏(使用tab分隔)

eg:
cut -c 0-6 file  #打印前 6 个字元
cut -c 5-8 file  #打印第5-8个字符
cut -c 1-3,10-12 file  #打印第1-3和10-12个字符
cut -f 1,3 file  #打印tab分割的第1列和第3列

apache 服务自带的ab测试



文件路径
D:\AppServ\Apache2.2\bin\ab.exe


windows下,cmd打开dos命令窗口.

> ab.exe -h 查看帮助信息


使用方式:
ab.exe [options] [http://]hostname[:port]/path

常用参数:
    -n 请求         执行请求数
    -c 并发         并发数
    -t 时间限制     等待响应的最长时间,单位:秒
    -w              把结果打印到html
    -i              用 HEAD 代替 GET 发请求
    -C 属性    添加cookie, eg. 'Apache=1234. (可重复)
    -H 属性    添加头信息,插入到所有头信息之后.eg. 'Accept-Encoding: gzip'
    -X 代理:端口    使用代理
    -V              版本信息
    -k              使用 HTTP KeepAlive 特性
    -h              帮助信息


> ab.exe -n 10 -c 10  http://www.baidu.com/

测试结果

Server Software:        BWS/1.0
Server Hostname:        www.baidu.com
Server Port:            80

Document Path:          /
Document Length:        10480 bytes

Concurrency Level:      10             #并发数
Time taken for tests:   0.60008 seconds     #总耗时
Complete requests:      10                  #完成请求数
Failed requests:        8   #失败请求
   (Connect: 0, Length: 8, Exceptions: 0)
Write errors:           0
Total transferred:      109644 bytes
HTML transferred:       104700 bytes
Requests per second:    166.64 [#/sec] (mean)  #每秒请求数
Time per request:       60.008 [ms] (mean)     #每次请求耗时
Time per request:       6.001 [ms] (mean, across all concurrent requests)
Transfer rate:          1783.10 [Kbytes/sec] received   #传输速率




ab.exe 使用注意事项:
1. -c 并发数不能大于 -n 请求数,否则会报错
2. 最大并发数在配置文件中可修改,修改方法如下


查看工作模式
cmd打开dos指令窗口
cd 到D:\AppServ\Apache2.2\bin\下,执行指令
> httpd -l    //查看配置文件使用的工作模式
结果是:
mpm_winnt.c  //即使用的是winnt模式, mpm :多路处理模块


配置工作模式
打开D:\AppServ\Apache2.2\conf\http.conf文件,查找mpm,找到

# Server-pool management (MPM specific)
# Include conf/extra/httpd-mpm.conf

去掉第二行前的注释符,即启用httpd-mpm.conf文件
找到D:\AppServ\Apache2.2\conf\extra\下的httpd-mpm.conf文件,打开并查找WinNT,找到


# WinNT MPM  #windows模式
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum  number of requests a server process serves
<IfModule mpm_winnt_module>
    ThreadsPerChild      150
    MaxRequestsPerChild    0
</IfModule>

ThreadsPerChild 子线程,即并发数,将150改为1000


其他工作模式

prefork MPM  #预处理进程模式  用进程处理请求
<IfModule mpm_prefork_module>
    StartServers          5  #预先分配进程个数
    MinSpareServers       5  #最小空闲进程
    MaxSpareServers      10  #最大空闲进程
    MaxClients          150  #支持的最大并发数
    MaxRequestsPerChild   0
</IfModule>


linux下默认采用工作方式,用预先分配子进程的方式处理请求,进程之间相互独立,是最稳定的MPM之一


worker MPM  #工作模式  用线程处理请求,线程即子进程
<IfModule mpm_worker_module>
    StartServers          2  #初始进程数
    MaxClients          150  #支持的最大并发数
    MinSpareThreads      25  #最小空闲线程
    MaxSpareThreads      75  #最大空闲线程
    ThreadsPerChild      25  #一个进程包含的线程数
    MaxRequestsPerChild   0  #最大请求子线程,设置为0即执行完之后,进程不死,设置为10,执行完之后,进程死掉
</IfModule>



worker模式采用多进程多线程,稳定,是apache 2.x的发展趋势





vim 操作快捷键


参考链接:
http://www.cnblogs.com/88999660/articles/1581524.html
http://eric4ever.yo2.cn/articles/vi.html



光标定位:

0/$   光标移到行首/行尾
gg/G  光标移到页头/页尾
nG    到第n行
h/j/k/l   左/下/上/右移动一位
n<Enter>  光标下移n行
n<space>  光标右移n位
[Ctrl+f]  相当于Page Down
[Ctrl+b]  相当于Page Up


复制/粘贴/删除:

dd  删除行
D   删除整行内容,保留空行
yy  复制行
p/P 粘贴到下/上一行
u   撤销操作
x/X 删除后/前一字节
.   重复上个动作


整理代码格式

:v  选中内容
=   整理选中内容,格式对齐
z + shift + r  展开代码  
zr     展开代码
zc     收拢代码

查找:

/word 向光标之下查找word
?word 向光标之上查找word
n     重复前一个查找动作


替换:

:n1,n2s/word1/word2/g  n1到n2行之间,所有word1替换为word2
:1,$s/word1/word2/g    从第一行到最后一行,word1替换为word2


末行命令:
:set nu   显示行号
:set nonu 不显示行号
:w   将编辑的文件写入到硬盘上
:q   退出 vi
:wq  保存后退出,若为 :wq! 则为强制保存为退出

2013年5月16日星期四

linux下开源压力测试工具webbench


参考链接:
http://xiahongyuan.blog.51cto.com/906214/735445


webbench最多可以模拟3万个并发去测试网站的负载能力,实际一个网站发生3w个用户同时访问同一个页面的情况非常小,即使铁路订票网站http://www.12306.cn/mormhweb/在春运的时候,这种情况都不一定能出现.



下载安装
$ sudo wget http://home.tiscali.cz:8080/~cz210552/distfiles/webbench-1.5.tar.gz
$ sudo tar -zxvf webbench-1.5.tar.gz
$ cd webbench-1.5/
$ sudo make
$ sudo make install

使用webbench

$ webbench -h     //查看帮助信息

webbench [option]... URL
  -f|--force               服务器不返回数据.
  -r|--reload              发送重载请求 - 注: no-cache(服务器不缓存).
  -t|--time <sec>          运行标准测试的时间,默认30秒.
  -p|--proxy <server:port> 用代理服务发请求.
  -c|--clients <n>         模拟客户端发送http请求,默认1个.(并发数)
  -9|--http09              用 HTTP/0.9 发送请求.
  -1|--http10              用 HTTP/1.0 协议发请求.
  -2|--http11              用 HTTP/1.1 协议发请求.
  --get                    用get方式请求.
  --head                   用head方式请求.
  --options                用OPTIONS方式请求.(用户自己指定)
  --trace                  用TRACE请求方法.
  -?|-h|--help             帮助信息.
  -V|--version             版本信息.


//无参数测试,默认1个客户端,运行30秒
$ webbench  -f http://www.baidu.com/

测试结果
Benchmarking: GET http://www.baidu.com/
1 client, running 30 sec, early socket close.

Speed=370 pages/min, 0 bytes/sec.  //返回0字节是因为f模式
Requests: 185 susceed, 0 failed.


//模拟10个客户端 运行10秒
$ webbench  -c 10 -t 10  http://www.baidu.com/

测试结果
Benchmarking: GET http://www.baidu.com/
10 clients, running 10 sec.

Speed=1356 pages/min, 242126 bytes/sec.
Requests: 226 susceed, 0 failed.


//模拟10个客户端 运行10秒,增加-f,对比结果可以发现-f的效果
$ webbench  -c 10 -t 10 -f http://www.baidu.com/

测试结果
Benchmarking: GET http://www.baidu.com/
10 clients, running 10 sec, early socket close.

Speed=1854 pages/min, 0 bytes/sec.
Requests: 309 susceed, 0 failed.



结果中,Speed数越大,说明网站的响应速度越快.


linux下开源压力测试工具Siege

参考连接:
http://xiahongyuan.blog.51cto.com/906214/735445



Siege一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。

下载安装

获取:http://www.joedog.org/
官方提供ftp下载
解压:
$ tar -zxf siege-latest.tar.gz
进入解压目录:
$ siege-3.0.1/
安装:
$ ./configure
$ make
$ make install

这一步我操作失败了,根据提示自动安装
$ apt-get install siege
系统自动安装了2.7版本的,所以其实不用去单独下载了


使用siege

$ siege -h  会出来所有siege相关的参数指令

Usage: siege [options]
       siege [options] URL
       siege -g URL
Options:
  -V, --version           版本信息,打印版本号.
  -h, --help              帮助信息.
  -C, --config            配置信息,显示当前配置.
  -v, --verbose           打印通知信息.
  -g, --get               get方式发送请求,并且显示获取的http请求头信息,一般用于应用程序调试
  -c, --concurrent=NUM    并发数,默认10
  -i, --internet          模拟网络用户,随机请求url.
  -b, --benchmark         标准测试:请求无延时.
  -t, --time=NUMm         根据m设定为S,M,H定时测试 ex: --time=1H, 一小时后测试.
  -r, --reps=NUM          重复请求次数.
  -f, --file=FILE         含url的文件.
  -R, --rc=FILE           指定远程控制文件
  -l, --log[=FILE]        log文件,如果没有指定,默认使用PREFIX/var/siege.log
  -m, --mark="text"       标记log文件的类型/格式.
  -d, --delay=NUM         延迟时间,随机延迟(1-num)之间的时间
  -H, --header="text"     添加请求头,可以多个
  -A, --user-agent="text" 请求中设置用户代理


$ touch linkfile  //新建一个linkfile
$ vi linkfile      //编辑linkfile,里面全部是url


//模拟10个用户随机访问10次linkfile中的链接

$ siege -c 10 -r 10 -f linkfile

测试结果:
done.                                                                     Transactions:                  100 hits    //完成100次请求
Availability:                 100.00 %      //有效请求
Elapsed time:                  14.75 secs   //总耗时
Data transferred:               1.97 MB     //总传送数据
Response time:                  0.40 secs    //每秒响应次数
Transaction rate:               6.78 trans/sec  //每秒处理次数
Throughput:                     0.13 MB/sec   //每秒传输数据量 MB
Concurrency:                    2.69        //实际最大并发
Successful transactions:         100        //成功处理次数
Failed transactions:               0        //失败处理次数
Longest transaction:            6.46        //最长处理时间
Shortest transaction:           0.08        //最短处理时间


//get请求 获取请求头和响应头信息
$ siege -g http://www.baidu.com

测试结果:

以下是请求内容

GET / HTTP/1.1
Host: www.baidu.com
Accept: */*
Accept-Encoding: gzip
User-Agent: JoeDog/1.00 [en] (X11; I; Siege 2.70)
Connection: close

以下是响应内容

HTTP/1.1 200 OK
Date: Thu, 16 May 2013 03:05:07 GMT
Server: BWS/1.0
Content-Length: 4310
Content-Type: text/html;charset=utf-8
Cache-Control: private
Set-Cookie: BDSVRTM=5; path=/
Set-Cookie: H_PS_PSSID=2424_1442_2449_1944_1788_2250; path=/; domain=.baidu.com
Set-Cookie: BAIDUID=6B5B2875A9C1F6119218BE07DD4B2E57:FG=1; expires=Thu, 16-May-43 03:05:07 GMT; path=/; domain=.baidu.com
Expires: Thu, 16 May 2013 03:05:07 GMT
Content-Encoding: gzip
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Connection: Close


2013年5月13日星期一

mysql数据库执行效率低的原因分析


参考连接:
http://coolin228.wordpress.com/2009/09/02/zt%E6%95%B0%E6%8D%AE%E5%BA%93%E6%89%A7%E8%A1%8C%E6%95%88%E7%8E%87%E4%BD%8E%E5%8E%9F%E5%9B%A0%E5%88%86%E6%9E%90/

1、没有索引
2、查询方法不是最优
3、查询语句不是最优
4、查询出的数据量过大
5、I/O吞吐量小,形成了瓶颈效应
6、内存不足
7、网络速度慢
8、引擎是innodB,打开了autocommit,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit
9、锁或者死锁
10、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源


可以通过如下方法来优化查询 :
1)把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.
2)纵向、横向分割表,减少表的尺寸(sp_spaceuse)
3)升级硬件
4)根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引,不要对有限的几个值的字段建单一索引如性别字段
5)提高网速;
6)扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server 2000 时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的 1.5 倍。如果另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍。将 SQL Server max server memory 服务器配置选项配置为物理内存的 1.5 倍(虚拟内存大小设置的一半)。