1.查看当前网卡支持速率
ethtool eth1 | grep ‘supported link modes’实际速率:Speed 100M/s2.查看网卡驱动:lspci -vvv or ethtool -i ethx3.查看网卡型号:lspci -vvv | grep Eth4.有些时候,可能某些设备(通常是 CD-ROM)正忙或无法响应。此时,大多数用户的解决办法是重新启动计算机。我们大可不必这么做。例如,如果 umount /dev/hdc 失败的话,您可以试试“lazy” umount。语法十分简单:5.系统位数[root@localhost ~]# uname -m i686系统版本[root@localhost ~]# uname -s Linux内核版本[root@localhost ~]# uname -r 2.6.18-4-646.查看173.16.0.200在被ping时的实际连接,使用以下命令:1. netstat -s |more2.netstat = ss = cat /proc/net/tcp 7.ps --no-header -C nginx
ps -eo comm,pcpu | tail -n +2 # tail -n +2 用于剥除头部的COMMAND和%CPU。
-o 参数
8.修改Linux系统时间 date -s time| clock -w(把系统时间写入CMOS)9.Linux系统语言设置:目前大多数的linux distributions已经都是支持万国码(UTF-8),也都支持大部分国家的语言。这主要是i18n文件。可使用locale -a命令查看linux系统支持多少语言。可使用locale命令查看当前系统的语言环境。[root@nis1 ~]# localeLANG=zh_CN.UTF-8 ##主语言环境LC_CTYPE="zh_CN.UTF-8" ##字符(文字)识别的编码LC_NUMERIC="zh_CN.UTF-8" ##数字系统的显示信息LC_TIME="zh_CN.UTF-8" ##时间系统的显示数据LC_COLLATE="zh_CN.UTF-8" ##字符串的比较与排序等LC_MONETARY="zh_CN.UTF-8" ##货币格式显示LC_MESSAGES="zh_CN.UTF-8" ##信息显示的内容如菜单、错误信息等LC_ALL= ##整体语言环境一般来说:设置LANG和LC_AL即可,其他变量也会随之而改变。可使用如下命令临时调整系统字符集为英语:export LC_ALL=en_US-UTF-82.设置语言相关的几个文件:/usr/lib/locale/:目录存放locale列出的语言文件。/etc/sysconfig/i18n:是设置系统字符集的的文件。不管你装的是中文版,还是英文版.删掉原来的设置,把下面的拷贝过去。即可将系统的语言设置为简体中GB18030字符集。vi /etc/syscnfig/i18nLANG="zh_CN.GB18030"SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"SYSFONT="latarcyrheb-sun16"注:第一行设置当前系统语言环境第二行表明系统预设了哪些语言支持,不在项目中的语言不能正常显示第三行定义控制台终端字体,文本(tty终端)登录的时候显示的字体就是这个 latarcyrheb-10.当前服务器系统的版本cat /proc/version | grep -Eqi ‘centos | red hat | redhat’lsb_release -acat /etc/issue11.查看网卡速度:ethtool eth012.Linux系统启动过程:13.route -n 中metric是度量的意思即路由计跳数14.在/var/lib/dhclient/里面确认到了dhcp服务器的ip15.在vim的命令模式下:set ff可看到dos或unix的字样,如果的确是dos格式的, 那么用set ff=unix把它强制为unix格式的,,然后存盘退出后就可运行。16.zip -r:递归处理,将指定目录下的所有文件和子目录一并处理;-q:不显示指令执行过程;17.scp 源文件:指定要复制的源文件。 目标文件:目标文件。格式为user@host:filename(文件名为目标文件的名称)-r 目录18.查看设备UUID:ls -l /dev/disk/by-uuid/19.(or type Control-D to continue):/etc/fstab与现有存储不一直导致文件系统挂载问题文件系统是只读模式,若需要修改/etc/fstab文件,则需要执行:mount -o remount rw /20.while循环中执行效率最高,最常用的方法。 function while_read_LINE_bottm(){ While read LINE doecho $LINEdone < $FILENAME} 注释:我习惯把这种方式叫做read釜底抽薪,因为这种方式在结束的时候需要执行文件,就好像是执行完的时候再把文件读进去一样。 21.iptables Chain INPUT (policy ACCEPT)num target prot opt source destination1 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED2 ACCEPT icmp -- anywhere anywhere3 ACCEPT icmp -- anywhere anywhere limit: avg 1/sec burst 104 DROP tcp -- 192.168.1.206 anywhere tcp dpt:ssh #conn/32 > 25 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh6 DROP all -- anywhere anywhere由上而下,逐条匹配。4、5对换,优先被5匹配到了,就直接执行允许了,没有连接数限制-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited# 这两条的意思是在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机,一般放在末尾。防火墙日志开启vim /etc/rsyslog.confkern.* /var/log/iptables.log -m multiport --dports 1863,443,110,80,25LOG --log-level INFO --log-prefix “前缀”-p icmp -m icmp --icmp-type echo-reply 回应 我方ping其他服务器接受来自其他服务器的回应-p icmp -m icmp --icmp-type echo-request 请求 即别的机器向我方放送icmp请求,即其他机器ping我方22.tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型(2)-i eth1 : 只抓经过接口eth1的包(3)-t : 不显示时间戳(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包(5)-c 100 : 只抓取100个数据包(6)dst port ! 22 : 不抓取目标端口是22的数据包(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析23.vim中在命令模式下用?和/来查找内容,n(下一个)N(上一个)23.组播地址:01-00-5e打头广播帧:FF-FF-FF-FF-FF-FF24.mysql连接方式:1.socketmv /var/lib/mysql/mysql.sock /var/lib/mysql.sock.bakmysql -uroot -p1233456ERROR Can't connect to local MYSQL server through socketmysql -uroot -p123456 -h 127.0.0.12.TCP/IP25.tar.xz包解压缩,解包xz -d **.tar.xztar -xv -f **.tar 或者 tar -Jxv -f **.tar.xz(大写的J)26.file /boot/initramfs mv /boot/initramfs /tmp/initramfs.文件类型 再用相应的解压命令27.抓取ip地址ifconfig | grep -i ‘bcast’ | awk -F ‘[ :]+’ ‘{print $4}’bcast:表示广播地址28.Linux下cpu的工作量度命令:w或top或uptimeload average:1分钟 5分钟 15分钟 load average如果小于或等于1, 那么就意味着系统会马上处理. 如果大于1, 那么就意味着进程需要排队. 如果大于3, 那么就意味着, 系统性能已经显著下降了. 通常我们先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。(三个值的大小一般不能大于逻辑CPU的个数)1分钟负载值 > 1,那么我们不用担心,但是如果15分钟负载都超过1,我们要赶紧看看发生了什么事情。所以我们要根据实际情况查看这三个值。29.CPU个数,核数,逻辑数:# 查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu cores"| uniq# 查看逻辑CPU的个数=cpu个数*cpu核数 不等于的话,即CPU支持超线程。top命令下输入:1也可查看逻辑cpu个数cat /proc/cpuinfo| grep "processor"| wc -l30.内存free31.mv file.txt file1.txt inode不变32.ping -c1 -w1 中-c1是指ping的包的个数,-w是指执行的最后期限(timeout),也就是执行的时间,单位为秒33.网卡型号:lspci | grep -i ether查看网卡是否正常连接:mii-tool34.主机名查询静态表:/etc/hosts主机名修改:/etc/sysconfig/network分为三部分,用空格隔开一ip 二 主机名或域名 三主机别名35.查看服务器网络连接状态:netstat -an | awk ‘/^tcp/{++S[$NF]}END{for (a in S)print a,S[a]}’httpd占用内存的平均数:ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}'36.ctrl+c 中断前台进程(kill -2) kill -9 强制删除程序 killall 37.永久添加静态路由:/etc/sysconfig/network-scripts/route-eth0 38./etc/init.d/network 脚本会启动ifcfg开头的所有网络文件配置故ifcfg-eth1.bak也会启动39.traceroute www.baidu.com 可以用来看默认网关设置是否生效;40.修改最大文件打开数:一 vim /etc/security/limits.conf*soft nofile 32768*hard nofile 65535二 vim /etc/rc.localulimit -SHn 6553541.sed a 在当前行添加至下一行sed ‘na xxxx’ 在第n+1行下添加xxx42.free 可用的内存:+cache/buffers即可用的内存=free+cache+buffers43. shift 2 这行有意思,有了这个就可以实现脚本参数的功能,shift 2 的意思是将输入的参数左移2位,即$1,$2先清空,$3赋值给$1,$4赋值给$2。shift n后,前n位参数都会被销毁,故传入参数个数可以大于9until [ -z “$1”]do echo -n “${1} ” shiftdone44.每两个小时 0 */2 * * * echo "Have a break now." >> /tmp/test.txt 45.sort-r 倒序-n 已数字进行排序-t 指定分隔符-k 指定要排序的列数45.sedn 输出模式空间行,读取下一行替换当前模式空间的行,执行下一条处理命令而非第一条命令。N 读入下一行,追加到模式空间行后面,此时模式空间有两行。h 把模式空间里的行拷贝到暂存空间。H 把模式空间里的行追加到暂存空间。g 用暂存空间的内容替换模式空间的行。G 把暂存空间的内容追加到模式空间的行后。x 将暂存空间的内容于模式空间里的当前行互换。D 表示清除模式空间中的从模式头到第一个\n之间的内容(可以简单的理解为清除模式空间中第一行),如果清除后模式空间仍有剩余行,则执行D之前的命令(如之前有多个命令需依次执行),再执行D命令,如此循环直到不能往模式空间中追加新行为止。注意D有循环的意思在里面d 清除模式空间所有匹配的行P 打印模式空间中的从模式头到第一个\n之间的内容114.113.144.2:19ms19ms19ms36ms22ms19ms18ms218.61.204.73:0ms0ms0ms0ms0ms0ms0mssed ‘/:$/{:a;N;/\n.*ms/s/\n/ /;ta;P;D}‘ file 114.113.144.2: 19ms 19ms 19ms 36ms 22ms 19ms 18ms218.61.204.73: 0ms 0ms 0ms 0ms 0ms 0ms 0ms思路使用t标签,有条件跳转匹配以:结尾的行,然后执行N命令读入下一行此时模式空间内容为114.113.114.2:\n19ms假如匹配\n.*ms,就执行替换,将\n替换成空格此时模式空间内容为114.113.114.2: 19ms替换执行成功后,满足条件执行t标签,跳到a出继续执行直到读到218.61.204.73: 不满足匹配,也就不执行\n替换空格的命令了,执行后面的命令P;Done 1 one 1two 1 two 2three 1 three 3four 1 four 4sed “=” filename | sed “N;s/\n/ /;s/\(. \)\(.*\)\( *1)\/\2\1/”46.运算符 | ^(|)OR是或运算,A OR B的结果:当A、B中只要有一个或者两个都为1时,结果为1,否则为0(^)XOR是异或运算,A XOR B的结果:当A、B两个不同时结果为1,否则为0POSIX兼容的应用程序使用的便是字典中的字母排列顺序,而不是用ASCII码中的字符排列顺序。
字母排序:aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
故ls [A-Z]*会显示小写字母的文件名,可使用POSIX字符类来达到所需效果ls [[:upper:]]。
可使用export LANG=POSIX来改变系统支持的字符顺序,永久性维持该变化vim ~.bashrc.
POXIS字符类[:alnum:] 字母字符和数字字符;在ASCII码中,与[A-Za-z0-9]等效[:word:] 基本与[:alnum:]一样,只是多了一个下划线字符(_)[:alpha:] 字母字符;在ASCII中,等效于[A-Za-z][:blank:] 包括空格和制表符[:cntrl:] ASCII控制码;包括ASCII字符0~31以及127[:digit:] 数字0~9[:graph:] 可见字符;在ASCII中,包括字符33~126[:lower:] 小写字母[:punct:] 标点符号字符;在ASCII中,与[-!"#$%&'()*+,./:;<=>?@[\\\]_`{|}~]等效[:print:] 可打印字符;包括[:graph:]中的所有字符再加上空格字符[:space:] 空白字符如空格符、制表符、回车符、换行符、垂直制表符以及换页符。在ASCII中,等效为[ \t\r\n\v\f][:upper:] 大写字母[:xdigit:] 用于表示十六进制的字符;在ASCII中,与[0-9A-Fa-f]等效
元字符是一种Perl风格的正则表达式,只有一部分文本处理工具支持它,但是POSIX字符类以及普通的正则表达式都是被广大支持的。
元字符:
47.awk系统变量 赋值1.awk script variable=value inputfile2.-v BEGIN之前赋值FS:定义字段分隔符(默认空格);OFS:字段输出分隔符RS:记录分隔符(默认换行符);ORS:记录输出分隔符;NF:表示输入记录的字段数($NF表示最后一个字段;NF==6{print $1,$6}只有具有6个字段的记录才能被打印);NR:记录的编号(/^root/&&NR>=20,20行之后并且root开头);48.变量默认值${parameter-default} 或 ${parameter:-default} 但parameter没有被声明就使用默认值当parameter被赋null时:-和-才会有区别$_是一个特殊变量, 代表最后一个命令的最后一个参数.49.a++ 的含义是先赋值后相加++a的含义是先相加后赋值50.单词边界转义的尖括号\<..\>用于匹配单词的边界grep “\<the\>” file.txt 之匹配the,不匹配them等含the的单词51.tar -xvfp -p 保证文件所有权和文件属性-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。# tar -cf all.tar *.jpg 参数-f是必须的这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。52.使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如,&&, ||, <, 和>操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错.如:if [[ $condition1 || $condition2 ]]。53.在if后面也不一定非得是test命令或者是用于条件判断的中括号结构( [ ] 或 [[ ]] )."if COMMAND"结构将会返回COMMAND的退出状态码。54.: ${HOSTNAME?}echo $?用来测试HOSTANAME这个环境变量是否已被赋值: ${1?"Usage : $0 argument"}如果没有提供命令行参数的话, 那么脚本就在这里退出了55.declare -r var 只读declare -i var 整数 被赋值为非整数时变量值为0-a 数组(array)如果把一个变量指定为整型的话, 那么即使没有expr或者let命令, 也允许使用特定的算术运算.56.a=bc=db=$cecho “$b”echo “\“a\” now” ;eval echo \$$a 57.continue 跳过本次循环的剩余命令break 直接跳出整个循环58.$IFS 内部域分隔符 一搬都会将 \n(换行符) 包含在它的空白字符集合中59.echo 2222 | gawk --re-interval '/2{3}/'222260.间接引用变量变成命令eval 将表达式中的参数, 或者表达式列表, 组合起来, 然后评价它们(译者注: 通常用来执行).killppp="eval kill -9 `ps ax | awk /ppp/ {print $1}`"$killppp 现在killppp变成了一个命令函数中的间接引用func (){ echo "$1"}message=hellohello=Goodbyefunc "$message" #hellofunc "${!message}" #Goodbye61.source 多个脚本需要引用相同的数据, 或者需要使用函数库的情况下, 这个命令非常有用.62.wait使用wait命令来防止在后台作业没完成(这会产生一个孤儿进程)之前退出脚本63./var/lock/subsys很多程序需要判断是否当前已经有一个实例在运行,这个目录就是让程序判断是否有实例运行的标志,比如说xinetd,如果存在这个文件,表示已经有xinetd在运行了,否则就是没有,当然程序里面还要有相应的判断措施来真正确定是否有实例在运行。64.xargs -i kill {}-i是替换字符串选项,替换为大括号-nx 每行x个字符 65.awksubstr(string,posittion,length) 返回在字符串string中从position开始的长度为length的字符index(string,char) 返回char在字符串string中的位置 在awk的脚本中不必加入'号$0 全部字段 66.使用$*很少是正确的选择。$@能够处理空格参数,而且参数间的空格也能正确的处理。使用$@时应该用双引号括起来,像”$@”这样。67.双单引号[root@test] a=55[root@test] echo $a55[root@test] echo '$a'$a[root@test] echo ''$a'' #注意此处是两个单引不是一个双引5568.在以普通用户打开的vim当中保存一个root用户文件:w !sudo tee %这题目读起来纠结,其实是很常见的,常常忘记了sudo就直接用vim编辑/etc内的文件,(不过也不一定,vim发现保存的文件无法保存时候会 提示)等编辑好了,保存时候才发现没权限。曲线方法是先保存个临时文件,退出后再sudo cp回去。不过实际上在vim里面可以直接完成这个过程的,命令就是如此。查阅vim的文档(输入:help :w),会提到命令:w!{cmd},让vim执行一个外部命令{cmd},然后把当前缓冲区的内容从stdin传入。tee是一个把stdin保存到文件的小工具。而%,是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。所以执行这个命令,就相当于从vim外部修改了当前编辑的文件,好完工。将制表符转换为空格:cat text | tr '\t' ' '69."$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组70.创建-f的目录mkdir -f #不成功,因为-f会被mkdir当作选项来解析,这时就可以使用# mkdir -- -f 这样-f就不会被作为选项。71.echo "$IFS"|od -b/-c直接输出IFS是看不到值的,转化为二进制或字符就可以了72.if conditionthen function1fifunction1在满足条件下函数function1才会运行73.[! -f "$file"] 文件存在返回false文件不存在返回true[! -f "$file"] || false才执行,即文件存在才执行 && true才执行,即文件不存在才执行74.后台运行 &当后台运行的命令有stdout的时候,需要敲ENTER才会结束挂起,在后台运行命令后加上wait命令可以解决这个问题,将运行命令的输出重定向到其他文件也可以解决这个问题。#!/bin/bash#test.shls -l &echo "Done"ls -l &waitecho "Done"ls -l > /dev/null &echo "Done"75.max-file 表示系统级别的能够打开的文件句柄的数量。是对整个系统的限制,并不是针对用户的。# vim /etc/sysctl.conffs.file-max = 2000000#vim /proc/sys/fs/file-max794168ulimit -n 控制进程级别能够打开的文件句柄的数量。提供对shell及其启动的进程的可用文件句柄的控制。这是进程级别的。# vim /etc/security/limits.conf* soft nofile 65535* hard nofile 65535#echo "ulimit -n 65536" >> /etc/profile#echo "ulimit -n 65536" >> /etc/profile76.grep查询目录下具有该词汇的文件:grep -Hrn “value” 。-H 在显示符合范本样式的那一列之前,标示该列的文件名称。-r recurse 递归查询。-n 行号。比较文本差异:grep -Fvx -f file1.txt file2.txt-F 将范本样式视为固定字符串的列表。-v 反转查询。-x 只显示全列符合的列。-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。77.代理上网
vim /etc/profile
添加下面内容
http_proxy = http://username:password@yourproxy:8080/
ftp_proxy = http://username:password@yourproxy:8080/ export http_proxy export ftp_proxy78.生成1-100的随机数
declare -i number=$RANDOM*100/32767; echo $number
79.用vi/vim或sed -i 修改文件会导致文件的inode发生改变。
80.ssh -oBatchMode=yes -oConnectTimeout=5 -oStrictHostKeyChecking=no "command|command" 远程批处理任务。
81.cat /proc/filesystems 查看服务器支持的文件系统。