【原创】Linux经常使用命令记录

1. 查看网络状态分布mysql

#!/bin/sh
netstat -apn 2>/dev/null | grep 5600 \
    | awk 'BEGIN {printf("%-15s%-15s%-15s%-15s\n", "State", "Recv-Q", "Send-Q", "Count")} \
    /^tcp/ {++C[$6];R[$6]+=$2;S[$6]+= $3} END {for(a in C) printf("%-15s%-15s%-15s%-15s\n", a, R[a], S[a], C[a])}'

 

 
2. 杀掉同名进程
#/bin/sh
ps ux | grep 'SGW uWSGI' | grep -v grep | awk '{print $2}' | xargs kill -9

 

 3. 记录程序执行时间
#!/bin/sh
time curl www.baidu.com>/dev/null 2>&1

 

4. 每隔一秒显示CPU/MEM/IO状况ios

#!/bin/sh
vmstat -n 1 [count:1000]
iostat -n 1 [count:1000]

 

5. 查看指定pid的进程正在作什么sql

#!/bin/sh
strace -p [pid]

 

6. lsof 系列shell

#!/bin/sh
# 显示占用指定文件的进程信息
lsof /var/log/messages

# 显示指定用户相关的文件信息
lsof -u worker

# 显示指定进程打开的文件信息
lsof -p 11968

# 显示指定进程名打开的文件信息
lsof -c mysql

# 显示全部网络链接
lsof -i 

# 显示全部tcp类型的网络链接
lsof -i tcp

# 显示占用端口8080的信息
lsof -i :8080

# -a 与操做, 多条件且查询, 多条件或查询直接罗列条件便可
lsof -i 4 -a -p 1234

 7. 查看总的CPU占用率和单个CPU的占用率数据库

#!/bin/sh
# 显示全部CPU使用率
sar -P ALL 1 10
mpstat -P ALL 1
# 可以使用top以后按数字1也能够实现显示全部核心的占用率, 可是核心过可能是没法显示

 8. yumbash

#!/bin/sh
# 安装mysql的yum repo
sudo yum localinstall mysql57-community-release-el6-8.noarch.rpm
# 查找全部跟mysql相关的repo
yum repolist all | grep mysql
# 禁用5.7
sudo yum-config-manager --disable mysql57-community
# 启用5.6
sudo yum-config-manager --enable mysql56-community

9. 查看父进程id网络

#!/bin/sh
# 第三列为父进程id
ps -ef | grep mysql

 

10. 查看和移除文件中非法utf8字符curl

#查看文件的非法utf8字符
grep -axv '.*' file.txt
grep -P "[\x80-\xFF]" file
# 过滤非法utf8字符 iconv -f utf-8 -t utf-8 -c file.txt will clean up your UTF-8 file, skipping all the invalid characters. -f is the source format -t the target format -c skips any invalid sequence

 

20. mysql系列tcp

-- sql client 命令行部分
-- select 导出数据
SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

-- 导入数据
LOAD DATA INFILE
#!/bin/sh
# 如下为shell下直接执行命令

# 用root帐户和密码导出dbname数据库的结构: -d
mysqldump -uroot -pdbpasswd -d dbname >db.sql;

# 用root帐户和密码导出dbname数据库中test数据表的结构: -d
mysqldump -uroot -pdbpasswd -d dbname test>db.sql;

# 用root帐户和密码导出dbname数据库的结构和数据: 没有-d参数
mysqldump -uroot -pdbpasswd  dbname >db.sql;

#  用root帐户和密码导出dbname数据库中test数据表的结构和数据: 没有-d参数
mysqldump -uroot -pdbpasswd dbname test>db.sql;

# 清空数据库全部表, 基本思想就是生成批量的sql, 利用管道用mysql批量执行, 有外键不会成功, 只能保存到文件, 而后在收尾关开外键约束检查
# 注:mysql的输出好像只能输出到文件以后再编辑,用管道链接会发现没有任何输出(除了管道链接的俩端都是mysql cmd以外)
mysql -u[USERNAME] -p[PASSWORD] information_schema -N -s -e "SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') FROM TABLES WHERE TABLE_SCHEMA='[DBNAME]'" | mysql -u[USERNAME] -p[PASSWORD] [DBNAME]

# 删除数据库全部表, 有外键约束时按照如下方法操做,也不会报错
# 批量生成sql, 保存到文件中, 必须保存到文件, 用管道链接会发现没有任何输出(除了管道链接的俩端都是mysql cmd以外)
mysql -u[USERNAME] -p[PASSWORD] information_schema -N -s -e "SELECT CONCAT('DROP TABLE ',TABLE_NAME,';') FROM TABLES WHERE TABLE_SCHEMA='nextai'" > drop.sql
# 为了防止外键错误, 首部增长俩行, 关闭外键检查
sed -i '1i\SET NAMES utf8;\nSET FOREIGN_KEY_CHECKS = 0;' drop.sql
# 尾部开启外键检查
sed -i '$a\SET FOREIGN_KEY_CHECKS = 1;' drop.sql 
# 执行sql, 必须指定数据库, 不然可能会形成误删除表的问题
mysql -u[USERNAME] -p[PASSWORD] [DBNAME] < drop.sql 

 

 

 11. scp远程拷贝url

#!/bin/sh

scp [参数] [原路径] [目标路径]

# 从本地复制到远程主机
# 指定了用户名,命令执行后须要输入用户密码;若是不指定用户名,命令执行后须要输入用户名和密码;
# -r 递归复制整个目录。
scp local_file remote_username@remote_ip:remote_folder
scp local_file remote_username@remote_ip:remote_file
scp local_file remote_ip:remote_folder
scp local_file remote_ip:remote_file

# 从远程复制到本地主机
scp  remote_username@remote_ip:remote_folder local_file 
# ... 原路径和目标路径对调

 

 

 

 

 

 

 

 

 
持续更新...
相关文章
相关标签/搜索