标签:临时 空白行 RoCE comm abs ati file 系统性能 iptables
查看文件内容-while:
cat 1.txt|while read line;do echo $line;done
while read line; do echo $line; done <./1.txt
从日志当中测试连接统计情况
while :; do tail -n 100 /app/nginx/web.log |cut -d -f 8|sort|uniq -c;sleep 5;done
统计文件代码行数:
find . -type f -name "*.sh" | xargs wc -l
统计sh文件中含有lst字符串并降序排列
find . -type f -iname "*.sh"| xargs grep -c lst | grep -v ":0$" | sort -t : -k 2 -nr
找到当前文件夹下非jpg和JPG文件内容中的ab替换为cd
find . -type f -print |grep -v ".*\.\(jpg\|JPG\)" | xargs sed -i "s/ab/cd/g"
if/else:
exist=1;ip=192.168.0.1;port=3306;if [ ${exist} -eq 1 ]; then echo ${ip}:${port};fi
for:
for ip in 192.168.1.{1..255} ;do ping ${ip} -w 1 &> /dev/null && echo ${ip} is Alive;done
for ip in `cat iplist`;do scp config/${ip}.conf $ip:/home/shell/;done
for x in `cat 1.txt`; do echo $x;mkdir dir{0..2}{0..2}_$x; done
for i in `cat iplistr.ip`; do echo $i; ssh $i "supervisorctl start nginx";done
mysql相关:
socket=`ps -ef|grep mysql|grep -v grep|grep sock|awk ‘BEGIN{FS = "--"}{for (f=1; f <= NF; f+=1) {if ($f ~ /sock/) {print $f}}}‘|awk -F‘=‘ ‘{print $2}‘|grep 3306`;echo $socket
while :; do sleep 1;netstat -lanp|grep 3306|grep ESTABLISHED|awk ‘{print $5}‘|awk -F ‘:‘ ‘{print $1}‘|sort|uniq|wc -l|awk ‘BEGIN{a="‘$(date +%H:%M:%S)‘";}{printf "%s,%d\n",a,$1}‘ >> access_num.log;done
du -sk /*|sort -rn|head
find . -type f -exec ls -l -h {} \; | sort -nr -k 5 | head -n 5
# 查看CPU型号
grep ‘model name‘ /proc/cpuinfo | head -1 | awk -F":" ‘{print $2}‘
# 查看物理CPU个数
grep ‘physical id‘ /proc/cpuinfo | sort -u | wc -l
# 查看逻辑CPU的个数
grep ‘processor‘ /proc/cpuinfo | sort -u | wc -l
# 查看磁盘大小
fdisk -l | grep ‘Disk /dev/xvd‘ | awk ‘{print $3}‘ | awk ‘{sum+=$1} END {print sum}‘
解释
SUM += $1
sum默认初值为0。awk逐行处理,$1为每行的第一个字段,就是计算每行第一个字段的累加和。
END部分是处理完所有行后执行的。
print SUM 即打印最终的累加和
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
查看磁盘大小
fdisk -l | grep ‘Disk /dev/xvd‘ | awk ‘{print $3}‘ | awk ‘{sum+=$1} END {print sum}‘
date;uname -ar;
more /etc/redhat-release;
top -n 1|grep -E ‘Tasks|Mem|Swap‘;
df -kh;
free -m;
netstat -nltp;
cat /proc/net/sockstat;
cat /proc/cpuinfo|grep ‘physical id‘|sort -n|uniq -c;
cat /proc/cpuinfo|grep -E ‘vendor_id|model name|cpu MHz|cache size‘|sort -n|uniq -c;
getconf LONG_BIT;
/sbin/ifconfig|grep HWaddr|awk ‘{print $0,$4,$5}‘;
/sbin/ifconfig|grep inet|grep -v inet6|grep -v 127.0.0.1;
dmidecode |grep Product
date;uname -ar;more /etc/redhat-release;top -n 1|grep -E ‘Tasks|Mem|Swap‘;df -kh;free -m;netstat -nltp;cat /proc/net/sockstat;cat /proc/cpuinfo|grep ‘physical id‘|sort -n|uniq -c;cat /proc/cpuinfo|grep -E ‘vendor_id|model name|cpu MHz|cache size‘|sort -n|uniq -c;getconf LONG_BIT;/sbin/ifconfig|grep HWaddr|awk ‘{print $0,$4,$5}‘;/sbin/ifconfig|grep inet|grep -v inet6|grep -v 127.0.0.1;dmidecode |grep Product
iostat 3 3
iostat -d -x -k 1 10
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.56 28.31 7.84 31.50 43.65 3.16 21.82 1.58 1.19 0.03 0.80 2.61 10.29
sda 1.98 24.75 419.80 6.93 13465.35 253.47 6732.67 126.73 32.15 2.00 4.70 2.00 85.25
sda 3.06 41.84 444.90 54.08 14204.08 2048.98 7102.04 1024.49 32.57 2.10 4.21 1.85 92.24
可以看到磁盘的平均响应时间<5ms,磁盘使用率>80。磁盘响应正常,但是已经很繁忙了。
iostat
iostat -d -k 1 10 #查看TPS和吞吐量信息
iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await)应该低于5ms,如果大于10ms就比较大了。
iostat -c 1 10 #查看cpu状态
Linux iostat监测IO状态 - 翼动动空 的个人空间 - 开源中国社区
http://my.oschina.net/u/2294938/blog/673925
sed -i ‘s/SELINUX=enforcing/SELINUX=permissive/‘ /etc/selinux/config
文件5-10行的前面加#号
sed -i "5,10s/^/#/" host_slow.log
cat server.out.20160114 |sed -n ‘/2016-01-13 00:10:34/,/2016-01-13 00:10:38/p‘
sed -n ‘/2016-01-13 00:10:34/,/2016-01-13 00:10:38/p‘ server.out.20160114
sed ‘s/^[ t]*//g‘ 等于 sed ‘s/^[ \t]*//g
例子:grep ‘cpu cores‘ /proc/cpuinfo |uniq |awk -F : ‘{print $2}‘ |sed ‘s/^[ \t]*//g‘
find . -type f -name *.log | xargs rm
find . -type f -name "*.sh" | xargs -i mv {} /home/shell
xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如
# find . -type f -name "*.log" | xargs rm -rf *
就将以log结尾的文件删除了,如果我想去移动或者复制就需要使用参数来代替了。
find . -type f -name "*.txt" | xargs -i cp {} /tmp/k/
请不要用此方法移动文件夹,会直接删除文件夹
ls -ld phpframe-* -exec mv {} /backup \;
或
ls -ld phpframe-*|xargs mv /backup/
用xargs查询,注意要有|,另此命令是分批处理之前查询的结果
find . -perm 777|xargs ls -l
如果系统磁盘突然没空间了,查找最近五天内更过的文件
find / -mtime -5
查看更改时间在5天前的文件
find / -mtime +5
根据文件内容来查找相关文件所在位置
find ./ -type f| xargs grep -i ‘dataSource‘
根据文件修改时间、名字复制到制定目录
find ./ -mtime +120 -name "mysql-bin*"|xargs -n1 -i cp -a {} /home/mysqlbinlog-bak/mysql3306-binlog/
根据文件名后缀,删除文件。例如删除phd的文件
-rw-r--r--. 1 root root 662M Jun 14 10:29 heapdump.20160614.102831.29419.0004.phd
-rw-r--r--. 1 root root 662M Jun 14 10:29 heapdump.20160614.102831.29419.0006.phd
-rw-r--r--. 1 root root 662M Jun 14 10:29 heapdump.20160614.102831.29419.0007.phd
-rw-r--r--. 1 root root 662M Jun 14 10:30 heapdump.20160614.102831.29419.0008.phd
find ./ -iregex ".*\.phd"|xargs rm -rf
grep ‘SELINUX=enforcing‘ /etc/selinux/config 2>&1 >/dev/null && print_PASS || print_FAIL
截取TYPE列的信息
blkid /dev/sda1 | awk -F"=" ‘{print $2}‘|awk ‘{print $2}‘
blkid /dev/sda1 | awk -F"=" ‘{print $2}‘|awk ‘{print $1}‘|cut -d"\"" -f2
bb0954a8-3507-4613-b4ee-5c5961c43a36
判断磁盘大小
lsblk | grep sda1 | grep -qs ‘2.1G‘ && print_PASS || print_FAIL
变量赋值为一个命令运行的结果
mode=`ls -lh /root/foo.sh | awk ‘{print $1}‘`
firewall-cmd --list-all | grep services | grep -qsE ssh && print_PASS || print_FAIL
firewall-cmd --list-all | grep -qsE "rule family=\"ipv4\" source address=\"172.17.10.0/24\" service name=\"ssh\" reject" && print_PASS || print_FAIL
判断服务是否起来
systemctl status httpd &>/dev/null && echo PASS || echo FAIL
ps -ef|grep "/opt/openoffice4/program/soffice"|grep -v grep|grep -v grep|awk ‘{print $2}‘ | xargs kill
documentroot=`grep "DocumentRoot" /etc/httpd/conf.d/vhost-server0.conf | awk ‘{print $2}‘ | awk -F\" ‘{print $2}‘`
context=`ls -lZd $documentroot | awk -F: ‘{print $3}‘
ls -lh /root/foo.sh | awk ‘{print $1}‘
awk ‘/^t/{print $1}‘ /etc/passwd
awk -F: ‘$3>=500{print $1,$3}‘ /etc/passwd
BEGIN/END,BEGIN在第一行被读取前执行,END表示在最后一行匹配完再执行
示例1:统计每种shell使用的用户的个数
# awk -F: ‘{shell[$NF]++}END{for(A in shell){print A,shell[A]}}‘ /etc/passwd
/bin/sync 1
/bin/bash 10
/sbin/nologin 34
示例2:统计每个TCP连接状态的个数
# netstat -ant | awk ‘/^tcp/{STATE[$NF]++}END{for (s in STATE) print s,STATE[s]}‘
LISTEN 15
ESTABLISHED 1
示例3:统计日志文件中每个IP地址的访问量
awk ‘{counts[$1]++} END{for(ip in counts) print counts[ip],ip}‘ /var/log/httpd/access_log
cd /usr/local/nginx/logs
awk ‘{counts[$1]++} END{for(ip in counts) print counts[ip],ip}‘ access.log |sort -rn|head -n 30
cat access.log|sort|awk ‘$NF!~/-/ {print $1"," $NF}‘|uniq |awk -F , ‘{print $1}‘|uniq -c|sort -nr|head -20
dir -l|awk ‘{print $3,$4,$9}‘
打印第二行第二项
[root@hchtest2 ~]# free -m | awk ‘NR==2 {print $2}‘
1878
You have new mail in /var/spool/mail/root
[root@hchtest2 ~]# free -m
total used free shared buffers cached
Mem: 1878 1804 73 0 73 293
-/+ buffers/cache: 1437 441
Swap: 1635 49 1586
打印第二行
cat /etc/issue.net | awk ‘NR==1 {print}‘
CentOS release 6.5 (Final)
[root@hchtest2 ~]# cat /etc/issue.net
CentOS release 6.5 (Final)
Kernel \r on an \m
dmidecode|grep -P -A5 "Memory\s+Device"|grep Size
cat php.ini|egrep "memory_limit|post_max_size|upload_max_filesize"
memory_limit = 512M
post_max_size = 100M
upload_max_filesize = 100M
ps -ef|grep java|egrep -o "[1-9]{4}"|head -n1
[root@hchtest3 ~]# date +%F
2015-11-30
[root@hchtest3 ~]# date +%F -d "-3 days"
2015-11-27
[root@hchtest3 ~]# date +%Y-%m-%d -d "-3 days"
2015-11-27
date ‘+%F %r‘
2016-12-12 09:32:07 AM
设置目录/javasoft下的所有文件及文件夹都对ljun有读写权限
setfacl -R -m u:ljun:rwx /javasoft/
不加 -R递归,就只在 /javasoft里有权限, /javasoft/123里就没有权限了
setfacl -m u:ljun:rwx /javasoft/
现有一目录是虚拟机和linux共享的,但是每次程序调用新建的文件都发现没有权限。
于是指定特定目录及其子目录下新建的文件或目录对于用户qhfz都有读写执行的权限
-R表示递归 -m表示设置文件acl规则
setfacl -R -m d:u:qhfz:rwx /data2/ResourceCase
setfacl -R -m d:u: ResourceCase:rwx /data2/ResourceCase
--删除ACL规则使用-b
setfacl -R -b /data2/ResourceCase
nmap
nmap
查找网络中所有活跃的主机$ nmap -sn 10.42.0.0/24
-sn
- 是扫描的类型,这里是 ping 方式扫描。默认上,Nmap 使用端口扫描,但是这种扫描会禁用端口扫描。10.42.0.0/24
- 是目标网络,用你实际的网络来替换
mount -t cifs -o username=andy,password=redhat //172.24.6.10/common /haha
利用cat输入脚本,eof结束输入
if [ ! -f LNMP+zabbix.repo ]; then
cat> /etc/yum.repos.d/LNMP+zabbix.repo <<‘EOF‘
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
EOF
fi
设置变量为一个查询结果命令,并取出结果的某一列
#!/bin/bash
RESULT=$(cd /opt/mqm/bin
su mqm << remotessh
./runmqsc HUFFPMQ
dis qlocal(USKY.HUFFP.RESPONSE4) CURDEPTH;
end
exit
remotessh
)
VARA=$(echo $RESULT |grep -o "CURDEPTH([0-9]\+)"|grep -o "[0-9]\+")
#VARA=$(echo $RESULT | awk "/CURDEPTH\(([0-9]*)/" |grep -o "[0-9]\+")
echo $VARA
# cat << EOF > /tmp/3.txt
> aaaa
> bbbb
> cccc
> dddd
> EOF
创建500M的主分区
# echo -e "n\np\n1\n\n+500M\nw\n" | fdisk /dev/sdb &> /dev/null
\n:自动换行
[root@localhost ~]# cat -b
/etc/fstab 注:查看/etc/目录下的profile内容,并且对非空白行进行编号,行号从1开始;
[root@localhost ~]# cat -n
/etc/profile 注:对/etc目录中的profile的所有的行(包括空白行)进行编号输出显示;
ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]"
ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]"|awk ‘{print $2}‘|xargs kill -9
ps aux | less
vsz:进程所占用内存的总大小 以kb为单位
rss:进程所占用实际物理内存的大小 以kb为单位
[root@hchtest3 nginx]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
haproxy 2200 nobody 4u IPv4 11716 0t0 TCP hchtest3:http (LISTEN)
load average: 0.01, 0.03, 0.05
cpu在1分钟、5分钟、15分钟的平均负载值
平均负载值/cpu个数
大于1:cpu资源饱和
小于1:cpu使用正常
查看cpu个数:
# grep "model name" /proc/cpuinfo
model name : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
# grep "model name" /proc/cpuinfo | wc -l
1
top命令进程排序显示
M:按内存占用百分比
P:按CPU占用百分比
T:按进程运行时间
查看CPU情况
sar 5 5
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
输出项说明:
CPU:all 表示统计信息为所有 CPU 的平均值。
%user:显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。
%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。
1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈
2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。
要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看
linux sar 命令详解 - Cai‘s - 开源中国社区
http://my.oschina.net/caiyuan/blog/119012
CPU使用情况
sar -u -o 60 5
在所有的显示中,我们应主要注意%wio和%idle,%wio的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存, 此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
磁盘使用情况
sar -d 5 3
怀疑CPU存在瓶颈,可用sar -u 和sar -q来看,怀疑I/O存在瓶颈,可用sar -b、sar -u和sar-d来看
sar详解(linux/unix通用) | 旺旺知识库
http://www.toxingwang.com/linux-unix/2027.html
SAR 命令详解-dbconf-ChinaUnix博客
http://blog.chinaunix.net/uid-23177306-id-2531032.html
sar命令--Linux 性能分析 - richard_2010 - ITeye技术网站
http://richard-2010.iteye.com/blog/1271044
netstat -an|grep 8080 |grep FIN_WAIT2| grep -E ‘::ffff:‘| awk -F: ‘{print $8}‘|sort -n|uniq -c
寻找会员号,并把重复次数倒序排列出来
cat server.out.20160216 |grep "HUBTM LOGIN"|grep member_id|awk -F‘,‘ ‘{print $2}‘|awk -F‘=‘ ‘{print $2}‘|sort | uniq -c | sort -k1,1nr | head -10
指令各部分的功能:
sort: 对单词进行排序
uniq -c: 显示唯一的行,并在每行行首加上本行在文件中出现的次数
sort -k1,1nr: 按照第一个字段,数值排序,且为逆序
head -10: 取前10行数据
service iptables save
//将规则保存在/etc/sysconfig/iptables文件里
查看防火墙策略
iptables -L -n --line-number
iptables -vnL
service iptables status
查看防火墙nat策略
iptables -L -t nat
删除INPUT的第24条策略
iptables -D INPUT 24
-I插入策略放到最上面(加入防火墙策略使用这个)
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8097 -j ACCEPT
-A增加一条规则到最后
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8097 -j ACCEPT
-D删除策略
iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport 8017 -j ACCEPT
ifconfig eth0:0 10.72.32.185 netmask 255.255.255.0
eth0绑定网卡
/sbin/ip addr add "10.70.72.126/24" dev eth0
删除临时IP
/sbin/ip addr del "10.70.72.126/24" dev eth0
Linux 常用netstat命令 实例讲解
这是一个十分常用的命令,可以让你实时了解到云主机当前的状态,例如:常见的80连接数量,以及按一些排序,来检查是否被攻击?查看time_wait和syn连接数量等等。
1.查看所有80端口的连接数
netstat -nat|grep -i "80"|wc -l
2.对连接的IP按连接数量进行排序
netstat -ntu | awk ‘{print $5}‘ | cut -d: -f1 | sort | uniq -c | sort -n
3.查看TCP连接状态
netstat -nat |awk ‘{print $6}‘|sort|uniq -c|sort -rn
netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}‘
netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}‘
netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}‘
netstat -n |awk ‘/^tcp/ {print $NF}‘|sort|uniq -c|sort -rn
netstat -ant | awk ‘{print $NF}‘ | grep -v ‘[a-z]‘ | sort | uniq -c
4.查看80端口连接数最多的20个IP
netstat -anlp|grep 80|grep tcp|awk ‘{print $5}‘|awk -F: ‘{print $1}‘|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk ‘/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}‘ |sort -rn|head -n20
5.用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." ‘{print $1"."$2"."$3"."$4}‘ | sort | uniq -c | sort -nr |head -20
6.查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk ‘{print $5}‘|sort|uniq -c|sort -rn|head -n20
7.找查较多的SYN连接
netstat -an | grep SYN | awk ‘{print $5}‘ | awk -F: ‘{print $1}‘ | sort | uniq -c | sort -nr | more
tar tvf apache-tomcat-8.0.36.tar.gz
Linux压缩保留源文件的方法:
gzip –c filename > filename.gz
Linux解压缩保留源文件的方法:
gunzip –c filename.gz > filename
echo "export JAVA_HOME=/usr/local/jdk1.7.0_15" >>~/.bashrc
. ~/.bashrc
echo $JAVA_HOME
注意-a 和 &&的区别,-a用[]里,&&都可以
[root@hchtest3 ~]# if [[ -f /root/while.sh || -f /root/pid.sh ]];then echo exist;fi
exist
[root@hchtest3 ~]# if [[ -f /root/while.sh -a -f /root/pid.sh ]];then echo exist;fi
-bash: syntax error in conditional expression
-bash: syntax error near `-a‘
[root@hchtest3 ~]# if [ -f /root/while.sh -a -f /root/pid.sh ];then echo exist;fi
exist
ls -F -R /etc/
层级显示目录下文件、及文件夹
转载请注明出处
标签:临时 空白行 RoCE comm abs ati file 系统性能 iptables
原文地址:https://www.cnblogs.com/paul8339/p/9144538.html