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(选项)(参数)
选项
举个栗子
根据文件或者正则表达式进行匹配
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
给组指定家目录: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
查看硬盘分配: 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
- linux 基础 shell脚本命令
#########shell脚本命令#### 1.diff diff file file1 ####比较两个文件的不同 -c ####显示周围的行 -u ####按照一格式统一输出生成补丁 -r ## ...
- paip.执行shell cmd 命令uapi java php python总结
paip.执行shell cmd 命令uapi java php python总结 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:h ...
- (转)Hbase shell 常用命令(1)
Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...
- Shell printf 命令
Shell printf 命令 printf 命令模仿 C 程序库(library)里的 printf() 程序. 标准所定义,因此使用printf的脚本比使用echo移植性好. printf 使用引 ...
- Shell echo命令
Shell echo命令 echo "It is a test" 这里的双引号完全可以省略 .显示变量 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shel ...
- 进入BIOS SHELL DUMP 命令
LINUX系统 进入SHELL 输入命令 fs1: or fs0: 就进入了U盘目录 然后输入 ACPIRW.efi -d -s dsdt.bat 就会产生结果到U盘 ——————————————— ...
- Linux Shell : Test命令参数解析
格式: test conditions test -n string : string 不为空 test -z string : string 为空 test int1 -eq int2 : int ...
- shell解析命令行的过程以及eval命令
本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过程如下图: 以执行以下命令为例: echo -e ...
- Shell和命令基础
什么是Shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解析器),Shell接收用户输入的命令并把它送入到内核去执行,结构如下图 Shell的功能 Shell最重要的 ...
- Linux从入门到进阶全集——【第十四集:Shell基础命令】
1,Shell就是命令行执行器 2,作用:将外层引用程序的例如ls ll等命令进行解释成01表示的二进制代码给内核,从而让硬件执行:硬件的执行结果返回给shell,shell解释成我们能看得懂的代码返 ...
随机推荐
- Windows驱动_WFP之一WFP是什么
现在的网络安全问题,越来越受到重视,微软在VISTA以后,使用了WFP平台来代替之前XP和03中的基于包过滤的技术,比如Transport Driver Interface(TDI)过滤,Networ ...
- git分布式版本控制系统权威指南学习笔记(六):git reset、get stash、git checkout总结
文章目录 1. 概述 2. 如何把修改暂存起来,留着以后使用? 2.1 使用场景 2.2 git stash 暂存进度 2.3 查看进度 2.4 恢复进度 3. 如何撤销工作区的修改? 4. 如何把暂 ...
- 与DSP通信时,RD&WR信号
/////////////////////////////////////////////////////////// :] rd,wr; :] dsp_data_out; 'hzzzz; // ...
- Editor REST Client
Editor REST Client 制作一个http请求 请求行 GET https://example.com/comments/1 HTTP/1.1 POST https://example.c ...
- leetcode.字符串.12整数转罗马数字-Java
1. 具体题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 ...
- C# 基于创建一个mysql 连接池
创建一个连接池操作类 using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using Syste ...
- mysql数据库 --表查询
今日内容: 一.单表查询 1.语法执行顺序 2.where约束条件 3.group by 4.having 5.distinct 6.order by 7.limit 8.正则 二.多表查询 1.表查 ...
- python之pyquery 学习
pyquery是jQuery的Python实现,可以用以解析HTML网页的内容.官网文档:http://pythonhosted.org/pyquery/ 下载:https://pypi.python ...
- vue组件基础之父子传值
可以看出数据从后端获取过来,最外层的父组件接收数据,子组件不能直接获取,必须由父组件传递,此时使用props,并且父组件的值更新后,子组件的值也会随之更新,但是反过来通过修改子组件props来影响父组 ...
- prufer序列的性质及相关结论