抓包命令:
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
|