【01】:find 查找文件
find /home/ -iname "*.sh" |xargs -I {} ls -li {}
find /root/ -type f -name "*.sh" | xargs -i cp {} /tmp/
#加-i 参数直接用 {}就能代替管道之前的标准输出的内容;
#加 -I 参数 需要事先指定替换字符 xargs还有指定参数位置的作用。
#假设我们要将目录下所有的.py文件放到Python目录中去,可以使用命令
find . -name '*.py' | xargs -I {} mv {} ./Python
#参数-I指定了管道前命令作为参数所应该在管道后面命令的位置。
【02】: ls -l --full-time / ls -l --time-style=long-iso
【03】:文件的( -rwxrwxrwx. )getenforce 关闭SELinux是没有这个点 开启的时候是有这个( . )点
关闭SELinux,将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled
【04】 : shell 中常见的算术运算符
(1):(()) (2):let (3):expr(4):bc 可以小数运算( 5 ):$[ ](6):awk 可以小数运算 (7):declare
【05】: lsblk , blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包 .
【06】:seq命令用于产生从某个数到另外一个数之间的所有整数。
seq
[选项]... 尾数
seq
[选项]... 首数 尾数
seq
[选项]... 首数 增量 尾数
-f, --
format
=格式 使用
printf
样式的浮点格式
-s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n)
-w, --equal-width 在列前添加0 使得宽度相同
echo `seq -s + 100 |bc`
echo `seq -s + 100 |bc`
echo `seq -s '+' 100 `=`seq -s "+" 100 |bc`
echo `seq -s '+' 10 `=$((`seq -s "+" 10`))
【07】:dmsetup — low level logical volume management
【08】:resize2fs :resize2fs命令被用来增大或者收缩未加载的“ext2、ext3、ext4”文件系统的大小.
【09】:ls -ltr -l 长格式输出 -t 按文件最后访问(或修改)的时间排序,最新的排在最前面; -r 逆序列出文件; -L 递归显示,也就是说,当我们列某个目录的下的所有文件和目录时,能把它的下级目录的内容显示出来。
【10】:自动补全
yum install bash-completion
【11】:查看网络状态命令
# netstat -antp #查看所有网络连接
# netstat -lntp #只查看监听的端口信息
# lsof -p pid #查看进程打开的文件句柄
# lsof -i:80 #查看端口被哪个进程占用
【12】:使用Cat 批量追加
cat >> /etc/hosts << EOF
172.16.1.63 node1
172.16.1.64 node2
172.16.1.65 nfs
EOF
【13】:SSH 免密钥登陆
# ssh-keygen -t dsa -f ~/.ssh/id_dsa -N ""
# ssh-copy-id node1
# ssh-copy-id nfs
【14】:#给 hacluster 用户增加密码
echo 123456 | passwd --stdin hacluster
【15】:找出当前系统内存使用量较高的进程
ps -aux | sort -rnk 4 | head -20
【16】:找出当前系统CPU使用量较高的进程
ps -aux | sort -rnk 3 | head -20
【17】:持续 ping 并将结果记录到日志
ping api.jpush.cn | awk '{ print $0"\t" strftime("%Y-%m-%d %H:%M:%S",systime()) } ' >> /tmp/jiguang.log &`
【18】:查看tcp连接状态
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
【19】:查找80端口请求数最高的前20个IP
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20`
【20】:查找并删除/data这个目录7天前创建的文件
# find /data -ctime +7 -exec rm -rf {} \;
# find /data -ctime +7 | xargs rm -rf
【21】:使用stat命令查看一个文件的属性
#访问时间(Access)、修改时间(modify)、状态改变时间(Change)
stat index.php
#Access: 2019-05-10 02:37:44.169014602 -0500
#Modify: 2019-05-09 10:53:14.395999032 -0400
#Change: 2019-05-09 10:53:38.855999002 -0400
【22】:筛除出文件中的注释和空格
方法1:
# grep -v "^#" httpd.conf |grep -v "^$"
方法2:
# sed -e ‘/^$/d’ -e ‘/^#/d’ httpd.conf > http.conf
或者
# sed -e '/^#/d;/^$/d' #-e 执行多条sed命令
方法3:
# awk '/^[^#]/|/"^$"' httpd.conf
或者
# awk '!/^#|^$/' httpd.conf
【23】:查看/var 目录下大于1G的文件
find /var -size +1024M
【24】:find命令查找文件并复制到/tmp目录
方法1:
# find /etc -name httpd.conf -exec cp -rf {} /tmp/ \;: #-exec执行后面命令,{}代表前面输出的结果,\;结束命令
方法2:
# find /etc -name httpd.conf |xargs -i cp {} /tmp #-i表示输出的结果由{}代替
【25】:列出nginx日志访问最多的10个IP
方法1:
# awk '{print $1}' access.log |sort |uniq -c|sort -nr |head -n 10
sort :排序
uniq -c:合并重复行,并记录重复次数
sort -nr :按照数字进行降序排序
方法2:
# awk '{a[$1]++}END{for(v in a)print v,a[v] |"sort -k2 -nr |head -10"}' access.log
【26】:显示nginx日志一天访问量最多的前10位IP
# awk '$4>="[16/May/2017:00:00:01" && $4<="[16/May/2017:23:59:59"' access_test.log |sort |uniq -c |sort-nr |head -n 10
# awk '$4>="[16/Oct/2017:00:00:01" && $4<="[16/Oct/2017:23:59:59"{a[$1]++}END{for(i in a){print a[i],i|"sort -k1 -nr |head -n 10"}}' access.log
【27】:获取当前时间前一分钟日志访问量
# date=`date +%d/%b/%Y:%H:%M --date="-1 minute"` ; awk -vd=$date '$0~d{c++}END{print c}' access.log
# date=`date +%d/%b/%Y:%H:%M --date="-1 minute"`; awk -vd=$date '$4>="["d":00" && $4<="["d":59"{c++}END{print c}' access.log
# grep `date +%d/%b/%Y:%H:%M --date="-1 minute"` access.log |awk 'END{print NR}'
# start_time=`date +%d/%b/%Y:%H:%M:%S --date="-5 minute"`;end_time=`date +%d/%b/%Y:%H:%M:%S`;awk -vstart_time="[$start_time" -vend_time="[$end_time" '$4>=start_time && $4<=end_time{count++}END{print count}' access.log
【28】:找出IP地址
ifconfig |grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
#-o只显示匹配字符
【29】:将系统进程按内存占用大小排列显示出来
ps -e -o "%C : %p : %z : %a"|sort -k5 -nr
【30】:将系统进程按CPU占用大小排列显示
ps -e -o "%C : %p : %z : %a"|sort -nr
【31】:Vim自动添加注释及智能换行
# vi ~/.vimrc
set autoindent
set tabstop=4
set shiftwidth=4
function AddTitle()
call setline(1,"#!/bin/bash")
call append(1,"#====================================================")
call append(2,"# Author: resines")
call append(3,"# Create Date: " . strftime("%Y-%m-%d"))
call append(4,"# Description: ")
call append(5,"#====================================================")
endf
map <F4> :call AddTitle()<cr>