shell 一些命令(转)

https://www.cnblogs.com/amei0/p/8041989.html

参考文档

http://man.linuxde.net/

一、awk

求和 awk '{sum+=$1} END {print "Sum = ", sum}'
平均值 awk '{sum+=$1} END {print "Average = ", sum/NR}'
最大值 awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}'
最小值 awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}'
每分钟执行的总量 awk 's=substr($0,13,3){if(mm!=s){print mm":"t;t=0;mm=s};t++} END{print mm":"t;}'
查看物理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
二、find
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。
如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示
语法
find(选项)(参数)
选项
 View Code
举个栗子
根据文件或者正则表达式进行匹配
find 列出当前目录及子目录下所有文件和文件夹
find /home -name "*.txt"  在/home目录下查找以.txt结尾的文件名
find -iname '*out'  查找文件 忽略大小写
find -name '*bin' -o -name '*ib'  查找文件 或是这样的 或是那样的
find -path '*dout*'  匹配文件路径或者文件
find  -regex ".*\(\.txt\|\.pdf\)$"  基于正则表达式匹配文件路径
find  -iregex ".*\(\.txt\|\.pdf\)$"   基于正则表达式匹配文件路径  忽略大小写
否定
find ! -name '*dout'  文件名不是dout结尾的
根据文件类型进行搜索
find -type 类型参数
类型参数列表
    f 普通文件
    l 符号连接
    d 目录
    c 字符设备
    b 块设备
    s 套接字
    p Fifo
基于目录深度搜索
find -maxdepth 3 -type f  向下最大深度限制为3
find -mindepth 2 -type f   搜索出深度距离当前目录至少2个子目录的所有文件 
根据文件时间戳进行搜索
find  -type f 时间戳 
UNIX/Linux文件系统每个文件都有三种时间戳:
访问时间(-atime/天,-amin/分钟):用户最近一次访问时间
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间
find -ctime -7 近7天访问过的
find -ctime 7  刚好七天前被访问过的
find -ctime +7  七天以前被访问过的
比22.txt更新修改过的:find -newer 22.txt
根据文件大小进行匹配 
find . -type f -size 文件大小单元
文件大小单元:
b —— 块(512字节)
c —— 字节
w —— 字(2字节)
k —— 千字节
M —— 兆字节
G —— 吉字节
find  -type f -size +10k  搜索大于10KB的文件
find  -type f -size -10k  搜索小于10KB的文件
find  -type f -size 10k 搜索等于10KB的文件
删除匹配文件
find  -type f -name "*.txt" -delete
根据文件权限/所有权进行匹配
find  -type f -perm 777 当前目录下搜索出权限为777的文件:
find  -type f -name "*.php" ! -perm 644 找出当前目录下权限不是644的php文件:
find  -type f -user tom  找出当前目录用户tom拥有的所有文件
find . -type f -group sunk  找出当前目录用户组sunk拥有的所有文件
借助-exec选项与其他命令结合使用
find -type f -user root -exec chown tom {} \; 找出当前目录下所有root的文件,并把所有权更改为用户tom 
find -type f -name '123' -exec rm {} \; 找到文件并删除
find -type f -name '123' -ok rm {} \; 找到文件并删除,删除前先提示
find . -type f -mtime +30 -name "*.log" -exec cp {} old \; 将30天前的.log文件移动到old目录中 
find . -type f -name "*.txt" -exec printf "File: %s\n" {} \; 找出当前目录下所有.txt文件并以“File:文件名”的形式打印出来 
find . -path "./sk" -prune -o -name "*.txt" -print 查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk
find -empty 找到空文件
三、sed
语法 sed [-nefri] ‘command’ 输入文本
常用选项:
        -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
        -e∶直接在指令列模式上进行 sed 的动作编辑;
        -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
        -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
        -i∶直接修改读取的档案内容,而不是由萤幕输出。       
常用命令:
        a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
        c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
        d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
         i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
         p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
         s  ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
显示第一行:sed -n '1p'
显示第5行到第10行 :sed -n '5,10p' other.log 
把文本中所有的aa换为AA,并显示文本:sed 's/aa/AA/g' aa
sed -n '/ruby/p' ab 查询包括关键字cc所在所有行
sed '1a 222\n333' 在第一行后面增加222换行333,只显示,并不改变源文件
sed '1c dongdong' 将第一行更改为dongdong ,只显示,并不改变源文件
sed '1i lala' 在当前行上增加一行 lala
sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/g' filename
sed -i '/匹配字符串/d'  filename
sed '1d' ab              #删除第一行 
sed '$d' ab              #删除最后一行
sed '1,2d' ab           #删除第一行到第二行
sed '2,$d' ab           #删除第二行到最后一行
cat
1、查看多个文件 cat filename1 filename2
2、创建一个文件 cat > filename 只能创建新文件,不能编辑已有文件
3、将几个文件合并成一个文件 cat filename1 filename2 > newfile
4、输出行号 cat -n filename
5、输出行号,对空白行不编号 cat -b filename
6、输出行号,多行空白行合并为一个空白行 cat -b filename
7、将文件清空 cat /dev/null > filename
more
more filename
空格键:下一屛
b:上一屏
enter:滚动一行
q:退出
每屏显示10行:more -10 filename

日志相关
查看最后100行日志  tail -100  /tail  tail -n 100  /head
查看日志前面100行  head -n 100
从第100行开始显示 tail -n -100
显示100行到300行  cat other.log |head -n 300|tail -n 100 / cat other.log |tail -n -100 |head -n 200
查看cpu 每个线程的使用情况
ps -eo pid,pcpu | sort -n -k 3 cpu最高的进程号24998 ,线程号25206
top -H 找到cpu占比最高的线程号 25206
ps -aux |grep 24998 找到该进程号的服务 ava -Xmx3G -Xms3G com.bfd.mf.crawler.parse_large.ServerStart
将线程号转换为16进制 25206 > 6276
jstack 24998 |grep -10 6276 在堆栈信息中找到该线程
查看当前linux发型版本信息
cat /etc/issue
在jar中查找类
jar tf save2.3.jar |grep 'DupliClient'
查看所有tcp状态
netstat -nat|grep -i "80"
查看所有tcp请求状态的集合
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 
结果:
TIME_WAIT 202
CLOSE_WAIT 1582
FIN_WAIT1 2
SYN_SENT 13
ESTABLISHED 427
LAST_ACK 1
pwdx pid 查看进程路径
按照磁盘空间使用大小排序
du -h * | sort -n
字符串分割
a="parse/parse.2017-04-10"
echo $a|cut -d \. -f 2
判断字符串包含指定字符的个数
echo "10-010-01" | awk -F '-' '{print NF-1}'
1、求和
cat data|awk '{sum+=$1} END {print "Sum = ", sum}'
2、求平均
cat data|awk '{sum+=$1} END {print "Average = ", sum/NR}'
3、求最大值
cat data|awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}'
4、求最小值(min的初始值设置一个超大数即可)
awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}'
5、求访问次数的Top 10 Resource,可以根据此进行优化
cat output/logs/cookie_logs/`date +%u`/cookie_log|grep -v '172.16'|grep -v '127.0.0.1' |awk -F' '  '{ if(index($1,"219.141.246")!=0) print $2; else print $1  } '|sort|uniq -c|sort -n |tail -n 10
显示行号:
vi   :set nu
bin/kafka-topics.sh --create --zookeeper ip:port/chroot --replication-factor num --partitions num --topic topic-name
每分钟执行的个数
awk 's=substr($0,12,6){if(mm!=s){print mm":"t;t=0;mm=s};t++}'
awk -F '[: ,]+' '{s[$2":"$3]++}END{l=asorti(s,b);for(i=1;i<=l;i++){print b[i],s[b[i]]}}'|awk '{if($2>0){print}}'
awk -F '[: ,]+' '{s[$2":"$3":"$4]++}END{l=asorti(s,b);for(i=1;i<=l;i++){print b[i],s[b[i]]}}'|awk '{if($2>0){print}}'
pwdx 12336 通过进程号 查找部署路径
grep 'template plugin' ../logs/parse/parse.log |awk -F '[:]' '{if($4>5000) print $4 $5 $6 $7}' 
求平均值
grep 'autoparse execute time :' ../logs/parse/parse.log |awk -F '[:]' '{print $4}'|awk  '{sum+=$1} END {print "Average = ", sum/NR}' 
grep 'template plugin execute time ' ../logs/parse/parse.log |awk -F '[:]' '{print $2}'|  awk  '{sum+=$1} END {print "Average = ", sum/NR}'
内存调试:
ps -aux|grep 1976  查看分配内存
jmap -histo pid 查看当前内存对象
jmap -histo:live pid 查看存活对象
cat /proc/meminfo  查看系统内存
jstat -gcutil -h 10 26840  1s  查看gc情况
grep 'sendredis time:' schedule.log | awk -F '[:]' '{print $4}' | awk  '{sum+=$1} END {print "Average = ", sum/NR}' 
jmap -heap
grep 'send redis' logs/news/schedule.log | awk 's=substr($0,12,6){if(mm!=s){print mm":"t;t=0;mm=s};t++}' 
查看进程的内存和gc
ps -eo pid,lstart,etime | grep 5176 查看进程的启动时间
/etc/init.d/iptables stop  关闭防火墙
chkconfig  --level 2345 iptables off  重启时不开防火墙
setenforce 0   关闭安全验证
sed -i "s/enforcing/disabled/g" /etc/selinux/config  重启时不开安全验证
截取字符串  按照字符串分割。并输出指定index。并消重
grep 'is task start' save.log|grep 'keyword:同洲电子' |grep 'baiduNews' | awk '{ split($0,c,"is task start"); print c[2]}' |sort|uniq|wc -l
tar -czvf crawler_old.tar.gz --exclude=/opt/crawler/logs --exclude=/opt/crawler/data --exclude=/opt/crawler/bin/.urldedup.dat.swap /opt/crawler
sed -i 's/news19/news20/g' crawl-config.properties 批量修改
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l  查看物理cpu核数
cat /proc/cpuinfo| grep "processor"| wc -l  查看逻辑cpu核数
jar -tvf kafka8-1.0.0.jar  查看jar的class   
zkCli.sh   -server 127.0.0.1:2181  远程调用
Resource temporarily unavailable   修改用户进程数
df -hl  查看磁盘空间
reboot重启
netstat -nap |grep 3306  正在访问这个端口的进程
kafka写数据 sh kafka-console-producer.sh --broker-list 172.24.5.73:9092 --topic test
linux上查看端口号是否通 nc -z -w 1 192.168.189.82 2181
关闭防火墙:setenforce 0
给crawl用户增加权限:chmod 777 -R /etc/ crawl
查看外网ip:curl http://members.3322.org/dyndns/getip
给组指定家目录:useradd  -g  testcloud  -d  /opt/testcloud
创建组:groupadd  testcloud
立即执行:idconfig   (针对 /etc/ld.so.conf.d/ 下面的文件)
安装kazoo模块(python访问zk):pip install kazoo
启动redis客户端:./redis-cli  -h 172.24.5.72 -n 0 -p 6379
安装wget:yum -y install wget
查看端口号是否被占用:netstat -npl| grep 2181
查看卡死进程:jstack 23312 > /tmp/stack
删除包含指定字符串的行: sed -i '/www.baidu.com/d' test 
查看硬盘分配:  df -h
查看每个线程的cpu占有率:ps -mp 29744  -o THREAD,tid,time
修改数据库字段类型:alter table flowquota modify column beginTime varchar(10) ;
导出maven依赖:dependency:copy-dependencies
获取表结构:desc tableName;
cmd中文设置:
chcp 936
maven打包
mvn assembly:assembly
maven引入本地jar:
mvn install:install-file -Dfile=D:\code\jar\jedis-2.6.2.jar -DgroupId=com.bfd.crawler.service -DartifactId=harpc -Dversion=4.0.0 -Dpackaging=jar
查询指定文件夹下(包含子文件夹) 包含字符串的 所有行数
find /tmp/222/ -type f -exec grep -H "发表于" {} \; | wc -l
GHzw6l28wds=
导入sql文件:mysql –uroot –p123456 -Dtest<d:\test\ss.sql   
读kafka
sh kafka-console-consumer.sh --zookeeper 192.168.67.35:2182,192.168.67.36:2182,192.168.67.37:2182/kafka08 --topic show_news25_download_queue--from-beginning   
写kafka
sh kafka-console-producer.sh --broker-list 172.24.5.73:9092 --topic test
scp /opt/crawl/crawl-install-2.1-centOS5.8/crawl-2.1/service/crawler-cfg-3.2.1-1.8.jar.bak crawl@172.18.1.158:/opt/crawl/crawl-install-2.1-centOS6.5/crawl-2.1/service/   跨服务器复制文件
wc -l filename  查看文件的行数
ln -sf 被指向的文件 软链
diff filename filename2  比较两个文件的差异
netstat  查询网络端口使用情况
nc 
strace  系统调用跟踪器
passwd  设置用户登录密码  
sudo  可以使用root的密令  ,使用者必须是超级用户设置过的
su    切换用户
perftop 性能调优工具  非默认,需要自己装
htop  更强大的top工具
iostat  io性能
awk  文本处理引擎
sed
gbd 进程调试
chmod +x ./test.sh   使脚本具有执行权限
netstat -ntlp|grep 8082 查看端口号是否被占用
chmod +x startup.sh  增加文件的写权限
netstat -an|grep 9000
telnet localhost 9000
lsof -i:9000
按i进入编辑模式
按esc :wq保存退出
:q!不保存退出
:w保存,但不退出
:w filename  用其他文件名保存
rm -rf 删除文件夹
rm -f 删除文件
rm -be 上传  b二进制 e 忽略特殊字符
crontab -e 添加定时任务
sudo chown -R weixin:weixin solrfeed2   修改目录solrfeed2访问权限  
sudo chown -R admin:admin ok_122420150604176666.xml
copy file ./xxx  复制
ls -lt   查看文件夹下的文件和文件属性
cat -n file  查看第几行
free -m  查看内存 
查看对应外网ip:
ifconfig
use 库名;
mysql -uroot -p'bfD5m5F!5@' --socket=/opt/mysql/mysql.sock(指向sock)
iostat -x -k(查看磁盘io)
cmd命令
ping ip -t  持续ping
*/30 * * * * ?   每隔30秒 跑一次  起始时间就是你启动的时间
0/30 * * * * ?    每隔30秒 跑一次  执行时间是   0:30    1:00  1:30

转载于:https://www.cnblogs.com/kilometerwine/p/9936777.html

shell 一些命令(转)相关推荐

  1. 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的集群搭建以及shell启动命令脚本编写 一.搭建 ...

  2. linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解

    在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...

  3. Shell test命令(Shell [])详解,附带所有选项及说明

    test 是 Shell 内置命令,用来检测某个条件是否成立.test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test. test 命令有很多选项,可以进行数值.字符串和文件三个方 ...

  4. Shell+Linux命令实现日志分析

    这篇文章主要介绍了Shell+Linux命令实现日志分析,本文给出了结合grep命令.awk命令等实现了几个常用的日志分析统计长命令,需要的朋友可以参考下 一.列出当天访问次数最多的IP 命令: 复制 ...

  5. 【Linux】1.shell各个命令

    shell各个命令 1.符号参数 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数.如"$*"用「"」括起来的情况.以"$1 $2 - ...

  6. shell 常用命令

    shell 常用命令 Shell基本命令 几个基本的shell命令,用ssh管理主机必备. 1.ls  列出目录下的文件,不同类型的文件颜色不同,例如蓝色是文件夹,白色是文件 [root@restor ...

  7. linux中Shell历史命令记录文件的路径是什么

    Bash shell在"~/.bash_history"("~/"表示用户目录)文件中保存了500条使用过的命令,这样能使你输入使用过的长命令变得容易.每个在系 ...

  8. UEFI Shell 常用命令

    UEFI Shell 常用命令 分类:IT技术 2013-09-11 16:49阅读(14542)评论(0) EFI是Extensible Firmware Interface的缩写,是介于平台固件和 ...

  9. expr命令 linux,Shell expr命令进行整数计算的实现

    expr 是 evaluate expressions 的缩写,译为"表达式求值".Shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些 ...

  10. linux中的变量文件路径,Linux库文件和Shell可执行程序命令文件搜索路径变量的设置...

    一.库文件的搜索路径: 1.在配置文件/etc/ld.so.conf中指定动态库搜索路径(需要添加其它库文件的路径,在文件的最后添加具体的路径即可 [ 如:/usr/local/lib ],添加后保存 ...

最新文章

  1. centOS外部浏览器无法访问tomcat8000端口解决办法
  2. 话AI、学实践、探未来,亚马逊云科技AI在线大会报名开启!
  3. [Hadoop in China 2011] Facebook Message在HBase基础上的应用
  4. [Flex][总结]从页面url获取参数
  5. vim cheat-sheet
  6. java instanceof运算符_Java instanceof 运算符的使用方法
  7. 1前端学习(2345):关于前端对于xml格式文件的渲染
  8. 【安全】安装phpLDAPadmin管理LDAP
  9. 富文本 NSAttributedString
  10. ogg初始化mysql数据_利用OGG进行数据库表的初始化
  11. c语言 背包算法,c语言背包问题(背包最大容量c语言算法)
  12. Perl教程-2.环境的安装
  13. 精简win服务器系统,Windows Server 2016攻略—为云而生的极简平台Nano Server(2)
  14. Flume1.6.0之Error-protobuf-This is supposed to be overridden by subclasses
  15. display:kms-panel-4.14kernel
  16. html 防网页假死,HTML 5 Web开发:防止浏览器假死的方法
  17. 执行 taro init myApp 报错 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\taro.ps1
  18. laravel路由的配置,别名,路由群组
  19. 《中国合伙人》经典台词:一个人迫于无奈之下的选择,往往是正确的。。。
  20. 阿达的红外射频遥控盒子(一)

热门文章

  1. Mybatis源码分析-getMapper()源码分析
  2. 笔记本一锁屏程序就结束(锁屏程序结束、锁屏程序退出)(在此时间后关闭硬盘、硬盘关闭)(计算机空闲状态)
  3. 打包chrome浏览器扩展程序
  4. 2022,分析一下python的前景
  5. 3.深入理解Java并发编程
  6. 海关179号公告对接联调
  7. 高效提升计算质量!瑞典量子计算机首次应用于化学
  8. JESD204接口调试总结——Xilinx JESD204C IP工程应用
  9. 请求返回413解决方案
  10. 查找算法系列之复杂算法:二叉排序树BST