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])}'
#/bin/sh ps ux | grep 'SGW uWSGI' | grep -v grep | awk '{print $2}' | xargs kill -9
#!/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 # ... 原路徑和目標路徑對調