常用 shell sql 命令

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

抓包命令:

1
2
#!/bin/bash
/usr/sbin/tcpdump  -i eth0 host fusion.qiniuapi.com -s0  -w fusion.qiniuapi.com.dump.cap


curl查看网络情况

1
2
3
#!/bin/bash
#for i in {0..10000};do bash -c "bash prefetch.sh 2>&1" >> prefetch.log;done
for  id  in  ` seq  1 1000`; do  curl  "http://baidu.com"  -o  /dev/null  -s -w  "dns: %{time_namelookup} - connect: %{time_connect} - total: %{time_total}\n" ; done


1
curl -o  /dev/null  -s -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download} "\n"    "http://api.spark.ucloud.cn/?Action=PrefetchDomainCache&DomainId=ucdn-p50cmv&PublicKey=YakUkLeSntu13jD3d3XY3eklNgx5pS7M9905EUU3CEE%3D&UrlList.0=http%3A%2F%2Fauc.tangdou.com%2F5ED0E62CD33F15F89C33DC5901307461-20.mp4&Signature=70369069dfd920a898e6e167e60bec090e2dabeb"
1
curl -vX POST  'http://fusion.qiniuapi.com/v2/tune/prefetch'  -H  'Authorization: QBox 557TpseUM8ovpfUhaw8gfa2DQ0104ZScM-BTIcBx:Safex72PcjqAzBuW0QPze8PyJ8o='  -H  'Content-Type: application/json'  -d  '{"urls": ["http://o8aazd8hz.qnssl.com/ddCG.mp4","http://o8aazd8hz.qnssl.com/ddCG.mp4"]}'   -w  "\ntime_nslookup:%{time_namelookup} time_connect:%{time_connect} time_starttranfer:%{time_starttransfer} time_total:%{time_total}\n=========\n\n" ; sleep  5


查看内存占用

1
free  -m |  sed  -n  '2p'  awk  '{print "used mem is "$3"M,total mem is "$2"M,used percent is "$3/$2*100"%"}'
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
while  :
     do
     phymem=` free  grep  "Mem:"  | awk  '{print $2}' `
     phymemused=` free  grep  'buffers/cache'  awk  '{print $3}' `
     # echo $phymem
     # echo $phymemused
     awk  'BEGIN{printf"%.2f%\n",(' $phymemused '/' $phymem ')*100}'
     sleep  3
     done


svn 查看文件log

1
2
3
svn log -l 5  test .php
svn  diff  -r r9982:r9988  test .php
svn  diff  -r PREV:COMMITTED  test .php


vim批量删除注释

1
:g/^ #/d

vim删除空行

1
:g/^$ /d

查看网卡实时流量

1
2
3
nload
iftop
bmon


shell执行php脚本

1
2
3
4
5
6
7
#!/bin/bash
count=`ps -ef | grep script.php | grep -v grep | wc -l`
baseDirForScriptSelf=$(cd  "$(dirname " $ 0 ")" ; pwd)
cd $baseDirForScriptSelf
if  [ $count -eq  0  ]; then
   nohup  php script.php >>/dev/ null  2 >& 1  &
fi


shell 查找

1
2
3
find  dirname  - type  f -name  "*.php" | xargs  grep  "sql"
find  ./ -mmin +2 - type  f  - exec  ls  -l {} \;
find  ./ - type  f -name  "ad*_2012-03*.log"  | xargs  grep  '4f5ff7a0d7a98_b.jpg'  -l


查找替换

1
find  dirname / -name  "*.m3u8"  | xargs  sed  -i  's/#EXT-X-ENDLIST/#EXT-X-ENDLIST\n/g'


删除两分钟之前的文件

1
find  /var/www  - type  f -mmin 2 - exec  rm  {} \;


redis 批量删除

1
redis-cli keys  "prefix*"  xargs  redis-cli del


查看linux当前连接数

1
2
3
4
5
netstat  -an| awk  '/tcp/ {print $6}' | sort uniq  -c
netstat  -n |  awk  '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
netstat  -antp |  grep  80 |  grep  ESTABLISHED -c
1
2
ss -ant |  awk  'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}'
cat  /proc/net/sockstat


统计nginx日志访问ip数

1
awk  '{print $1}'  access.log | uniq  -c | wc  -l


通过SSH将MySQL数据库复制到新服务器

1
mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uroot -p 'password'  cms |  ssh  -C root@192.168.2.30  "mysql -uUSER -pPASS NEW_DB_NAME"

通过压缩的 SSH 隧道 Dump 一个 MySQL 数据库,将其作为输入传递给 mysql 命令,我认为这是迁移数据库到新服务器最快最好的方法。


快速备份mysql大表

1
mysqldump -q -e --single-transaction  --ignore-table=table1 --ignore-table=table2 -uroot -p ''    --max_allowed_packet=16777216 --net_buffer_length=8192  dbname  > dbname.sql


创建数据库

1
CREATE  DATABASE  cms  default  charset utf8  COLLATE  utf8_general_ci;

导入数据

1
mysql -u root -p
1
2
use cms;
source /home/lhb/data/cms.sql


备份数据库

1
mysqldump -uroot -p cms  --ignore-table=cms.history  --ignore-table=cms.statistics > cms.sql
1
/usr/bin/mysqldump  -u root -p cms >  /home/lhb/data/cms .sql
1
mysqldump --all-databases --lock-all-tables --lock-all-tables --flush-logs --master-data=2 > all.sql


把文件上传到远程服务器,把文件从远程服务器copy到本地

1
scp  /home/lhb/data/cms .sql lhb@192.168.1.30: /home/lhb/data
1
scp root@172.17.1.17:/home/lhb/data/cms.sql /home/lhb/data



mysql给root启用远程登录

1
2
GRANT all privileges ON *.* TO  'root' @ '%'  IDENTIFIED BY  '123' ;
flush privileges;
1
2
-----------------------------------------------------------------------
GRANT  ALL  PRIVILEGES  ON  *.*  TO  'root' @ '%'  IDENTIFIED  BY  '123'  WITH  GRANT  OPTION ;
1
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO  'test' @ '172.16.%.%'  IDENTIFIED BY  'test'


给表添加索引

1
ALTER  TABLE  ad_event  ADD  INDEX  ind_order(order_id)


执行定时任务

1
0 2 * * *  /home/lhb/cli/chk_nginx .sh  >>  /dev/null  &


查看满查询日志

1
show variables like  '%slow%' ;


在线开启mysql慢查询

1
2
3
set  global  slow_query_log=1;
set  global  long_query_time=2;
set  global  slow_query_log_file= 'mysql-slow.log' ;


记录没有使用索引的sql

1
set  global  log_queries_not_using_indexes = 1;


关闭慢查询

1
set  global  slow_query_log=0;


查看二进制事件信息

1
show binlog events  in  'mysql-bin.000001' ;
1
show binlog events  in  'mysql-bin.000001'  from 107;


查看所有二进制文件

1
show binary logs;


删除二进制文件

1
purge binary logs to  '指定的二进制文件'


分析nginx log

1
cat  cms_access.log.1 | grep  - v  "templates"  awk  '{split($7,bbb,"?");print bbb[1]}'  | sed  's/[0-9].*/num/g'  sort  uniq  -c |  sort  -n -k 1 -r |  head  -n 100


分析广告nginx log

1
cat  ad_access.log.1 | grep  -Po  "a=[0-9a-zA-Z]*[&|[:space:]]"  | awk  -F  '[=&]'  '{print $2}'  sort  | uniq  -c | sort  -n -k 1 -r | head  -n 100


统计 par 的IP,被多少个其它IP地址访问前20条

1
grep  par access.log |  awk  '{print $7" "$1}'  | awk  -F  "par="  '{print $2}' | sort | uniq | awk  '{print $1}' | uniq  -c| sort  -n| tail  -n 20


kill进程

1
ps  -ef | grep  nginx | grep  - v  grep  | awk  '{print $2}'  | xargs  kill  -9


查看nginx进程数

1
watch  -n 1 -d  "grep nginx|wc -l"


查看mysql进程链接数

1
ps  axef |  grep  mysqld -c


查看端口是否占用

1
2
3
lsof  -i:80
或者
netstat  -an | grep  80


查看系统调用的参数,返回值,耗时

1
strace  -p

查看进程pid打开的文件描述符

1
lsof  -p pid


查询mysql 表信息-建立时间 更新时间 行数 版本等等

1
2
show  table  status;
show  table  status  like  '%tablename%' ;


1
2
3
4
UPDATE video_link SET location = replace( location,  '\t' ''  )
SELECT `video_id` FROM `video_link`  where left(`location`,1) =  '\t'
delete from video where starttime<(unix_timestamp()-3600*24+7);
select  count(*) from video where starttime<(unix_timestamp()-3600*24+7);


curl调用

1
2
curl  - v  -H  "Content-Type: application/json"   -X POST -d  '{"user_name":"lhb"}'  "http://url"
curl - v  -H  "Content-Type: application/json"  "http://url"  -X POST --data  "data_content"

现在内存中建立一个文件夹

1
ln  -s   /dev/shm/checkfile   /var/www/checkfile


linux 下 取进程占用 cpu 最高的前10个进程

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


linux 下 取进程占用内存(MEM)最高的前10个进程

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

 

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


查看网络流量

1
2
watch  more  /proc/net/dev
watch  ifconfig


查看文件夹的大小

1
2
3
4
du  -h --max-depth=1 work /testing
du  -h --max-depth=1 work /testing/ *
du  -h --max-depth=1 work /testing/logs/
du  -h --max-depth=1 work /testing/logs/ *


查看linux文件目录的大小和文件夹包含的文件数 统计总数大小

1
2
3
4
5
6
7
8
du  -sh xmldb/
du  -sm * |  sort  -n  // 统计当前目录大小 并安大小 排序
du  -sk * |  sort  -n
du  -sk * |  grep  guojf  // 看一个人的大小
du  -m |  cut  -d  "/"  -f 2  // 看第二个/ 字符前的文字
查看此文件夹有多少文件 /*/*/* 有多少文件
du  xmldb/
du  xmldb/*/*/* | wc  -l

解释:

wc [-lmw]

参数说明:

-l :多少行

-m:多少字符

-w:多少字


wget模拟浏览器下载文件

1
wget -x --header= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"  -O tess.mp4   'http://f.youku.com/player/getFlvPath/sid/00_00/st/flv/fileid/03000201004B68D8A10C3B02E28CA60F302730-0349-CBF3-D0CF-B3E30E8C08AA?K=1c5738eed4f0012b2828aa27'


tomcat 启动把8080->80端口映射

1
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080


查看清除mysql状态该信息

1
2
show  global  status  like  'Max_used_connections' ;
flush status
1
select  @@max_user_connections;


查看设置mysql 最大连接数

1
2
show variables  like  'max_connections' ;
set  GLOBAL  max_connections=2000;


mysql开启独立表空间

1
2
[mysqld]
innodb_file_per_table

查看

1
show variables  like  '%per_table%' ;


sqlite查看命令

1
2
3
4
.header  on
. schema  user
.dump  user
select  from  sqlite_master  where  type= "table"  and  name = "user" ;


更新数据库多表相同字段数据

1
2
3
cat  sn.txt
10000015  35084355
10000039  35084356
1
2
3
4
5
6
7
8
9
user= "root"
pass= '1234'
db= "test"
tnames=( "table1"  "table2"  "table3" )
for  table  in  ${tnames[@]}; do
#echo $table
cat  sn.txt |  awk  '{print "update ' $table ' set user_id = "$2 " where user_id = " $1 ";"}'  >> update.sql
done
mysql -u  "$user"  -p "$pass"  "$db"  < update.sql;


生成随机字符:

1
dd  if = /dev/random  count=1 bs=512 |md5sum


系统性能优化 常用命令:

top -ab -n 1

top -ab -n 1 |grep nginx 

vmstats

查看cpu队列,以及负载情况

sar -q -f sa08 

runq-sz:等待执行的任务队列长度。越长阻塞越严重

plist-sz:队列中的任务总数


cpu占用率

sar -p -f sa08


查看内存:

sar -r -f sa08

sar -B -f sa08

查看sawp的交换的频繁程度

sar -W -f sa08


查看IO

sar -b -f sa08

sar -d -f sa08


查看网络

sar -n DEV -f sa08


评估磁盘读写性能极限

1
fio -filename= /data/test  -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size 2G -numjobs=10 -runtie=30 -group_reporting -name=mytest13

创建账户和密码

1
2
useradd  lhb
echo  "lhb"  passwd  --stdin lhbpwd


抓包命令

1
2
tcpdump -i eth0 -nn -X -vv tcp port 21 and ip host 172.17.10.13
tcpdump -i eth0 -s0 -nn -XX tcp dst port 3306 and dst host 172.17.10.13
1
tcpdump -iany udp port 53


删除指定数据库的表

1
mysql -h '127.0.0.1'  -utest -p '123456'  -nse  'show tables'  test_db| while  read  table; do  mysql -h127.0.0.1 ' -utest -123456'  -e  "drop table $table"  test_db; done


bash命令行编辑

    Ctrl+a:跳转到命令行首。

    Ctrl+e:跳转到命令行尾

    Ctrl+u:删除光标至命令行首的内容

    Ctrl+k:删除光标至命令行委的内容

    Ctrl+l:清屏


命令历史的使用技巧:

!n:执行命令历史中的第N条命令

!-n:执行命令历史中的倒数第N条命令

!!:执行上一条命令

!string:执行命令历史中最近一个以指定字符串开头的命令

!$:引用前一个命令的最后一个参数


1
git push -u origin newbranch


本文转自birdinroom 51CTO博客,原文链接:http://blog.51cto.com/birdinroom/1399418,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
28天前
|
安全 Shell Linux
【Shell 命令集合 系统管理 】Linux 锁定终端 vlock命令 使用指南
【Shell 命令集合 系统管理 】Linux 锁定终端 vlock命令 使用指南
35 1
|
28天前
|
Shell Linux C语言
【Shell 命令集合 系统管理 】Linux 显示系统的平均负载情况 tload命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示系统的平均负载情况 tload命令 使用指南
39 1
|
28天前
|
安全 Shell Linux
【Shell 命令集合 系统管理 】Linux 切换当前用户身份为另一个用户 su命令 使用指南
【Shell 命令集合 系统管理 】Linux 切换当前用户身份为另一个用户 su命令 使用指南
38 1
|
28天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
43 1
|
28天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示目前登入系统的用户信息 w命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示目前登入系统的用户信息 w命令 使用指南
44 2
|
28天前
|
存储 Unix Shell
【Shell 命令集合 系统管理 】⭐⭐Linux 显示系统的基本信息 uname命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐Linux 显示系统的基本信息 uname命令 使用指南
34 1
|
28天前
|
存储 Shell Linux
【Shell 命令集合 系统管理 】Linux 修改用户的属性和配置 usermod命令 使用指南
【Shell 命令集合 系统管理 】Linux 修改用户的属性和配置 usermod命令 使用指南
30 1
|
28天前
|
搜索推荐 Shell Linux
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
32 2
|
28天前
|
Shell Linux 数据库
【Shell 命令集合 系统管理 】Linux 创建新用户的命令 useradd命令 使用指南
【Shell 命令集合 系统管理 】Linux 创建新用户的命令 useradd命令 使用指南
44 1