linux-命令收集

引入一个更为专业的命令收集站点 :

https://www.commandlinefu.com/commands/browse

统计第一列相同,第二列平均值

cat xxx |awk '{a[$1]+=$2;c[$1]++}END{l=asorti(a,b);for(i=1;i<=l;i++)print b[i],a[b[i]]/c[b[i]]}'

时间段统计日志:

sed -n '/2018:02:30/,/2018:03:00/p' www.log |awk '{a[$1]+=1;} END {for(i in a){print a[i]" "i;}}' |sort -t " " -k 1 -n sed -n '/2018:01:50/,/2018:02:00/p' www.log |grep "list?" |awk '{a[$1]+=1;} END {for(i in a){print a[i]" "i;}}' |sort -t " " -k 1 -n

按照ip排序

# 升序 sort -t'.' -k1,1n -k2,2n -k3,3n -k4,4n ip.txt # 降序 sort -t'.' -k1,1nr -k2,2nr -k3,3nr -k4,4nr ip.txt

shell中获取脚本绝对路径

SHELL_DIR=$(dirname $(readlink -f "$0")) SHELL_DIR=$(cd `dirname $0`; pwd)

tailf 显示高亮

tail -f www.log | perl -pe 's/(\/CandyActivity\/GetSilkProductRecord)/\e[1;31m$1\e[0m/g'

证书生成

## 自签证书 openssl req -newkey rsa:2048 -x509 -nodes -days 3560 -out server.crt -keyout server.key ## ssl key ,csr 生成 openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr https://blog.csdn.net/cy_cai/article/details/54632671 #CA合并 #厂商提供的cer文件,全部合并为后缀为pem的文件,并将域的cer放在文件最前面,cat 在后面 #nginx导入key和pem即可

免密登陆

# 172.16.10.11 无密码登陆 172.16.10.12 # 172.16.10.11 生成秘钥 # rsa 默认 2048 ssh-keygen -t rsa -b 2048 # 然后一直回车,可以设置认证密码 # id_rsa 私钥(不要外传) # id_rsa.pub (公钥导入本地authorized_keys(600)中,将私钥传给客户端,客户端即可通过私钥连接当前服务器) # 将本地的秘钥复制到服务器上就可以了,或者拷贝追加到服务器的authorized_keys文件中,即可本地登陆远程主机 ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.10.12

手动检测: 每分钟连接次数

netstat -ntu | awk '{print $5}' |cut -d: -f1|sort|uniq -c |sort -n netstat -an |grep ^tcp.*:80|egrep -v 'LISTEN|127.0.0.1'|awk -F"[ ]+|[:]" '{print $6}'|sort|uniq -c|sort -rn

linux 用tcpdump查看80端口访问有哪些IP

tcpdump -i eth0 -tnn dst port 80 -c 1000|awk -F"." '{print $1"."$2"."$3"."$4}'|sort|uniq -c|sort -rn|head -n20

查看linux内存占用最高的10个进程

ps aux|head -1 && ps aux|grep -v PID|sort -rn -k +4|head

linux 查看cpu占用最高的10个进程

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

linux 查看命令来源于那个包(yum也适用)

dnf provides htop

linux 查看已安装的命令原来于那个包

rpm -qf /usr/bin/htop

linux 查看rpm包信息

rpm -qpi xxx.rpm

linux 查看rpm包内容

rpm -qpl xxx.rpm

linux 查看rpm包依赖

rpm -qpR xxx.rpm

linux 查看rpm包带的执行脚本

rpm -qp --scripts xxx.rpm

linux 自动安装rpm包依赖(dnf默认已存在该功能)

yum -y localinstall xxx.rpm

linux rpm循环安装包依赖

# 关于循环安装是指的是主rpm包的所有的依赖包在同一目录下,会自动安装其依赖后在安装主rpm包,(此方法缺陷较大) rpm -ivh --aid *.rpm

清除僵死进程

ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9

docker 修改重命名镜像

docker tag IMAGEID(镜像id) REPOSITORY:TAG仓库:标签)

docker 将容器修改为随docker启动而启动

docker update --restart always xxxx

LNMP/LAMP 环境查看编译参数

# nginx /pathto/nginx/sbin/nginx -V # apache /pathto/apache/build/config.nice # mysql grep CONFIGURE_LINE /usr/bin/mysqlbug # php /pathto/php/bin/php -i|grep configure

让不同的进程使用不同的cpu

# taskset -c,--cpu-list command taskset -c 0,1,2,3 /etc/init.d/mysql start

watch 监测命令运行结果

# 类似tailf,但是针对命令 # 查看当前目录内容变化 # watch ls # watch "netstat -ntu | awk '{print $5}' |cut -d: -f1|sort|uniq -c |sort -n"

创建一个具有特定权限的空文件

#install -b -m <权限> <来源> <目标> install -b -m 777 /dev/null file.txt

通过sshfs 远程挂载目录

yum install sshfs sshfs user@host:/path /mnt/pathto

tmpfs 一种基于内存的文件系统

mount -t tmpfs -o size=1024M tmpfs /mnt/usb02

文件描述符相关

点击展开详细内容
  1. 系统最大打开的文件描述符数量

    cat /proc/sys/fs/file-nr 10848 0 6815744 # 第一个值: 当前系统已分配使用的打开文件描述符数 # 第二个值: 为分配后已释放的(目前已不再使用) # 第三个值: 等于/proc/sys/fs/file-max(打开的最大fd数量)
  2. 获取打开的文件数量

    • 获取整个系统打开的文件数量

      lsof | wc -l
    • 获取某个用户打开的文件数量

      lsof -u test |wc -l
    • 获取某个程序打开的文件数量

      for i in `pidof dotnet`; do lsof -p "$i" | wc -l ; done
    • 获取某个程序打开的文件描述符数量

      for i in `pidof dotnet` ; do echo -n "$i : "$(ll /proc/$i/fd|wc -l) done
  3. 查看系统里占用fd最多的进程

lsof -n | awk '{print $2}' | sort | uniq -c | sort -nr |head -n 10 #第一列是占用的fd数量,第二列是进程的pid

字符串拆分

echo "hello" |awk -F '' '{for(i=1;i<=NF;i++)print $i}' #echo "hello" |awk '{split($0,a,"''");for(v in a)print a[v]}'

去除文本第一行和最后一行

seq 5 |awk'NR>2{print s}{s=$0}'