【原創】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 
# ... 原路徑和目標路徑對調

 

 

 

 

 

 

 

 

 
持續更新...
相關文章
相關標籤/搜索