运维中的一些常见命令

最近搞运维搞的比较多,于是乎积攒了很多shell命令,很多都很初级,只是给自己一个备忘。

查看想要的进程

ps aux | grep python

杀死查出的进程

pgrep python | xargs kill -2

查看进程的持续时间

ps -eo lstart  # 开始时间
ps -eo etime  # 持续时间

查看端口占用

netstat -anp | grep 6379

总和

netstat -anp | grep 6379 | wc -l

假设你的进程如图所示

进程图

那么可以用下面的命令来查看每个进程占用的连接

netstat -anp | grep 6379 | awk '{print $7}' | awk -F '[/]' '{print $1}' | sort | uniq -c

print $7是拿出进程的那一列, -F是分割,sort是排序,uniq -c 相当于group by

awk 真是神器,支持格式化输出,比如用在删除远程分支上时。awk里的/origin/去掉也行,不知道放在这里干嘛的

git br -r | grep 'origin/' | grep -v 'master' | awk -F '[/]' '/origin/ {printf ":%s\n", $2}' | xargs git push origin

删除本地分支

git br --merged master | grep -v master | xargs git branch -D

删除python的缓存文件(找出文件夹下的某种特征的文件并删除)

1
find  .  -name  '*.pyc'  -type  f  -print  -exec  rm  -rf  {} \;

统计各个IP的time_wait

netstat -n|grep CLOSE_WAIT|awk '{print $5}'|sort |uniq -c |sort -rn |head -n20

查看链接的状况,分类count

netstat -n|grep 80 | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

数据库快速杀死正在进行的查询

select concat('KILL ',id,';') from information_schema.processlist where user='root';
select concat('KILL ',id,';') from information_schema.processlist where user='root' and info like 'select %';  #只有查询语句

然后把结果复制下来,再copy进去即可

查看数据库中正在进行的查询,以及持续时间

select * from information_schema.processlist where `command` != 'sleep';

查看数据库中的大表

select * from information_schema.tables order by DATA_LENGTH DESC limit 10;

或者小优化版

SELECT concat( table_schema, '.', table_name ) table_name,
concat( round( data_length / ( 1024 *1024 ) , 2 ) , 'M' ) data_length,
concat( round( index_length / ( 1024 *1024 ) , 2 ) , 'M' ) index_length,
concat( round( round( data_length + index_length ) / ( 1024 *1024 ) , 2 ) , 'M' ) total_size
FROM information_schema.TABLES
ORDER BY data_length DESC limit 10;

在线修改Mysql表结构,需要(pt-online-schema-change)[https://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html#dsn-options]

1
pt-online-schema-change --execute -h 127.0.0.1 -u root --ask-pass --alter="add column status tinyint(4) after id" D=test_db,t=test_table

给用户加组,常见的是加docker组

1
usermod -a -G docker cnzhx

找出大文件夹

1
du -h --max-depth=1 /

以后慢慢补充