Linux命令进阶

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 命令,我认为这是迁移数据库到新服务器最快最好的方法。


创建数据库

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


本文出自 “ 宅鸟乐园 ” 博客,请务必保留此出处 http://birdinroom.blog.51cto.com/7740375/1399418
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值