实用命令
网卡绑定IP
ifconfig eth0:1 192.168.1.99 netmask 255.255.255.0设置DNS和网关
echo "nameserver 202.16.53.68" >> /etc/resolv.conf
route add default gw 192.168.1.1查询空行
grep ^$ file1打印1-3行
sed -n '1,3p' file1删除空目录
find /data -type d -empty -exec rm -rf {};删除空文件
find /data -type f -size 0c -exec rm -rf {};
find /data -type f -size 0c|xargs rm –f删除五天前文件
find /data -type f -mtime +5 -exec rm -rf {};踢出用户
pkill -kill -t pts/1查看端口开放情况
nmap -ps ip查看网络连接
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'查看库文件
ldconfig -v查看网卡驱动版本
ethtool -i tooltcpdump tcp port 80 host ip
合并文件:
-- 取出两个文件的并集(重复的行只保留一份)
cat file1 file2 | sort | uniq
-- 取出两个文件的交集(只留下同时存在于两个文件中的文件)
cat file1 file2 | sort | uniq -d
-- 删除交集,留下其他的行
cat file1 file2 | sort | uniq –u打印文本模式运行的服务
chkconfig --list|awk '$5~/on/{print $1,$5}'查看进程,按内存从大到小排列
ps -e -o "%C : %p : %z : %a"|sort -k5 -nr查看http的并发请求数及其TCP连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'查看有多少个活动的PHP-cgi进程
netstat -anp | grep php-cgi | grep ^tcp | wc -l查看硬件制造商
dmidecode -s system-product-name查看线程数
cat /proc/${pid}/status
pstree -p ${pid}
top -p ${pid} 再按H
top -H
ps xH
ps -mp PID
1.查看文件内容
cat check_snmp_time_sync.py |while read line;do echo $line;done while read line;do echo $line;done < ./check_snmp_time_sync.py
2.统计连接数
while :; do tail -n 100 /app/nginx/web.log |cut -d -f 8|sort|uniq -c;sleep 5;done
3.统计代码行数
find . -type f -name "*.sh" |xargs wc -l
4.统计sh文件含有的lst字符串并排列
find . -type f -iname "*.sh"|xargs grep -c "lst"|grep -v ":0$"|sort -t : -k 2 -nr
5.查找并替换内容
find . -type f -print|grep -v ".*\.\(jpg\|JPG\)"|xargs sed -i "s/ab/cd/g"
6.语句
- if...else:
if [ $? -eq 0 ];
then
echo "successed";
fi
- for:
for ip in 192.168.1.{1..255};
do
ping ${ip} -w 1 &>/dev/null&&\
echo ${ip} is up;
done
for ip in $(cat iplist);do
scp config/${ip}.conf ${ip}:/home/max
done
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
7.查看系统资源
ps aux |head -1 ;ps aux|grep -v PID|sort -rn -k +3|head #查看CPU前十进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head #占内存前10的进程
du -sk /* |sort -rn|head #占磁盘最大的前十个文件
find . -type f -exec ls -l -h {} ;|sort -rn -k 5|head -n 5 #前5文件大小
8.查看CPU及硬盘大小
- 查看CPU型号
grep 'model name' /proc/cpuinfo|head -1|awk -F":" '{print $2}'
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
cat /proc/cpuinfo|grep -E 'vendor_id|model name|cpu MHz|cache size'|sort -n|uniq -c;
查看CPU个数
grep 'physical id' /proc/cpuinfo|sort -u|wc -l
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l查看逻辑CPU个数
grep 'processor' /proc/cpuinfo|sort -u|wc -l
cat /proc/cpuinfo| grep "processor"| wc -l查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq查看硬盘大小
fdisk -l|grep "Disk /dev/sda"|awk '{print 1}'END'{print sum}'
9.查看系统信息
uname -ar
top -n 1|grep -E 'Tasks|Mem|Swap';
netstat -nltp
cat /proc/net/sockstat
getconf LONG_BIT #查看是否是64位
ifconfig|grep HWaddr|awk '{print 4,$5}' #查看mac
ifconfig|grep inet|grep -v inet6|grep -v 127.0.0.1 #查看IP信息
dmidecode |grep Product
iostat 3 3
iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await)应该低于5ms,如果大于10ms就比较大了
iostat -d -k 1 10 #查看TPS和吞吐量信息
iostat -c 1 10 #查看cpu状态
10.sed
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
文件5-10行的前面加#号
sed -i "5,10s/^/#/" host_slow.log查找 00:10:34至00:10:38的日志内容
cat server.out.20160114 |sed -n '/2016-01-13 00:10:34/,/2016-01-13 00:10:38/p'sed用法,把空格和tab开头的去除掉
sed 's/^[ t]//g' #等于 sed 's/^[ \t]//g
11.find
find . type f -name *.log |xargs rm #删除文件
find . type f -name *.sh |xargs -i mv {} /tmp #移动文件
xargs 分批处理前面的查询结果
find . -perm 777|xargs ls -l
find . -mtime -5 #5天内更新的文件
find . -mtime +5 #5天前更改的文件
find ./ -iregex ".*.phd"|xargs rm -rf #根据文件名后缀删除文件
12.grep
grep 'SELINUX=enforcing' /etc/selinux/config 2>&1 >/dev/null && echo PASS || echo FAIL
blkid /dev/sda1|awk -F"=" '{print 2}'
blkid /dev/sda1 | awk -F"=" '{print 1}'|cut -d""" -f2 #查看id
lsblk | grep sda1 #列出块文件
- egrep:
egrep "memory_limit|post_max_size|upload_max_filesize"
ps -ef|grep java|egrep -o "[1-9]{4}"|head -n1 #查看java进程
- 查进程并杀除
ps -ef|grep "httpd"|grep -v grep|awk '{print $2}'|xargs kill
13.awk
- 查看指定标签
doc=`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}'显示以字母t开头的所有用户信息
awk '/^t/{print $1}' /etc/passwd显示uid大于500的用户
awk -F: '1,$3}' /etc/passwdBEGIN在第一行被读取前执行,END表示在最后一行匹配完再执行
统计各种shell的使用人数
awk -F: '{shell[$NF]++}END{for (A in shell){print A,shell[A]}}' /etc/passwd统计各种TCP连接状态的个数
netstat -ant | awk '/^tcp/{STATE[$NF]++}END{for (s in STATE) print s,STATE[s]}'统计日志文件中每个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 4,$9}'NR用法
打印第一行和第二项
free -m | awk 'NR==2 {print $2}'
cat /etc/issue.net|awk 'NR==1 {print}' #打印第二行
14.date
date +%F -d "-3 days" #3天前
date '+%F %r'
15.setfacl
setfacl -R -m u:ljun:rwx /javasoft/ #设置ljun有rwx权限
setfacl -R -m d:u:qhfz:rwx /data2/ResourceCase
16.nmap
nmap -sn 10.192.179.0/24 #查看活跃的主机
17.mount
mount -t cifs -o username=andy,password=andy //172.168.1.10/common /test
18.cat用法
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
cat << EOF > /tmp/3.txt
> aaaa
> bbbb
> cccc
> dddd
> EOF
- 创建500M的主分区, \n换行
echo -e "n\np\n1\n\n+500M\nw\n"|fdisk /dev/sdb &>/dev/null
cat -b #对非空行编号
cat -n #输出所有行的行号
19.ps
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为单位
lsof -i:80
20.top
平均负载/CPU个数>1 CPU资源饱和
平均负载/CPU个数<1 CPU资源正常
top:
M #按内存大小分
P #按CPU占用分
T #按进程运行时间分
21.set 显示环境变量
sar 5 5 #查看CPU
uniq -c #删除重复值
sort #对单词排序
sort -k1,1nr #按照第一个字段数值排序,逆序
21.iptables
service iptables save #保存规则到/etc/sysconfig/iptables文件
iptables -L -n --line-number
iptables -vnL
service iptables status
iptables -L -t nat #查看nat策略
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
22.ifconfig
ifconfig eth0:0 ip2 netmask 255.255.255.0 #临时绑定IP
ip addr add "10.70.72.123/24" dev eth0
23.netstat
netstat -nat|grep -i "80"|wc -l
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
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/ {print $NF}'|sort|uniq -c|sort -rn
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
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
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
24.压缩解压缩
tar tvf apache-tomcat-8.0.36.tar.gz #不解压查看压缩文件内容
gzip -c filename >filename.gz #压缩保留源文件
gunzip -c filename.gz > filename #解压保留源文件
25.设置环境变量
echo "export JAVA_HOME=/usr/local/jdk1.8.1_12" >>~/.bashrc
. ~/.bashrc
echo $JAVA_HOME
26.-a和&&的区别
-a 用在[]里:
if [[ -f /root/while.sh -a -f /root/pid.sh ]]
then
echo exist
fi
&&都可以
ls -F -R /etc/ #显示目录下文件及文件夹