運維必備-常用操作(為小夥伴們提供查詢,會持續更新)
阿新 • • 發佈:2018-10-25
enc 處理 備份 不支持 then sbo 下一條 一個數 uid 小生博客:http://xsboke.blog.51cto.com
小生 Q Q:1770058260
-------謝謝您的參考,如有疑問,歡迎交流
- mysql
# mysql部分數據的導入和導出
#查詢到的數據導出為csv文件
select * from user where username=‘xiaoli
INTO OUTFILE ‘/tmp/user.csv‘
FIELDS TERMINATED BY ‘,‘
OPTIONALLY ENCLOSED BY ‘"‘
LINES TERMINATED BY ‘\n‘;
#csv文件導入到表中 LOAD DATA INFILE ‘/user.csv‘ INTO TABLE user FIELDS TERMINATED BY ‘,‘ OPTIONALLY ENCLOSED BY ‘"‘ LINES TERMINATED BY ‘\n‘; # 創建mysql數據庫時指定字符集 CREATE DATABASE `dbname` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI; #推薦一個數據庫主從角色互換流程 數據庫主從角色互換:https://www.cnblogs.com/nbuntu/p/5523331.html #傳統主從復制master語句 CHANGE MASTER TO MASTER_HOST=‘master_IP‘, MASTER_USER=‘APP_USER‘, MASTER_PASSWORD=‘APP_PASSWD‘, MASTER_PORT=3306, MASTER_LOG_FILE=‘mariadb-bin.000003‘, MASTER_LOG_POS=4; #查詢數據庫大小 #進入information_schema 數據庫(存放了其他的數據庫的信息) use information_schema; #查詢所有數據的大小: select concat(round(sum(data_length/1024/1024),2),‘MB‘) as data from tables; #查看指定數據庫的大小: #比如查看數據庫home的大小 select concat(round(sum(data_length/1024/1024),2),‘MB‘) as data from tables where table_schema=‘home‘; #查看指定數據庫的某個表的大小 #比如查看數據庫home中 members 表的大小 select concat(round(sum(data_length/1024/1024),2),‘MB‘) as data from tables where table_schema=‘home‘ and table_name=‘members‘; # mysql修復表 check table 和 repair table 登陸mysql 終端: mysql -uxxxxx -p dbname check table tabTest; 如果出現的結果說Status是OK,則不用修復,如果有Error,可以用: repair table tabTest; 進行修復,修復之後可以在用check table命令來進行檢查。在新版本的phpMyAdmin裏面也可以使用check/repair的功能。 #主從復制報錯 InnoDB: Could not find a valid tablespace file for ‘dbname/tbname‘.解決辦法 一般帶有分區的表,會出現這種情況 alter table tbname ADD PARTITION (PARTITION p20180907 VALUES in (737309));
- redis通過模糊查詢key批量刪除
redis-cli -h 192.168.0.1 -p 6379 keys "*lottery-method-max-prize*" | xargs redis-cli -h 192.168.0.1 -p 6379 del
- zip壓縮排除目錄或者文件
zip -r yasuo.zip /var/www -x="/var/www/logs/*"
- lsof的應用
lsof -c mysql 查看某個進程打開的文件
- nginx
#nginx直接返回text到頁面 location /remote_addr { default_type text/plain; return 200 "$remote_addr\n"; } #https跳轉 if ($scheme = http) { return 301 https://$host$request_uri; }
- 磁盤單位換算
磁盤單位換算
1TB=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024Byte
- Shell
#關於$符號 $$ Shell本身的PID(ProcessID) $! Shell最後運行的後臺Process的PID $? 最後運行的命令的結束代碼(返回值) $- 使用Set命令設定的Flag一覽 $* 所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。 $@ 所有參數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。 $# 添加到Shell的參數個數 $0 Shell本身的文件名 $1~$n 添加到Shell的各參數值。$1是第1參數、$2是第2參數…。 #顏色 /033[31m 文本 /033[0m 31 紅色 32 綠色 33 ××× 34 藍色 #if 判斷 IF條件判斷 1、基本語法: if [ command ]; then 符合該條件執行的語句 fi 2、擴展語法: if [ command ];then 符合該條件執行的語句 elif [ command ];then 符合該條件執行的語句 else 符合該條件執行的語句 fi 3、語法說明: bash shell會按順序執行if語句,如果command執行後且它的返回狀態是0,則會執行符合該條件執行的語句,否則後面的命令不執行,跳到下一條命令。 當有多個嵌套時,只有第一個返回0退出狀態的命令會導致符合該條件執行的語句部分被執行,如果所有的語句的執行狀態都不為0,則執行else中語句。 返回狀態:最後一個命令的退出狀態,或者當沒有條件是真的話為0。 註意: 1、[ ]表示條件測試。註意這裏的空格很重要。要註意在‘[‘後面和‘]‘前面都必須要有空格 2、在shell中,then和fi是分開的語句。如果要在同一行裏面輸入,則需要用分號將他們隔開。 3、註意if判斷中對於變量的處理,需要加引號,以免一些不必要的錯誤。沒有加雙引號會在一些含空格等的字符串變量判斷的時候產生錯誤。比如[ -n "$var" ]如果var為空會出錯 4、判斷是不支持浮點值的 5、如果只單獨使用>或者<號,系統會認為是輸出或者輸入重定向,雖然結果顯示正確,但是其實是錯誤的,因此要對這些符號進行轉意 6、在默認中,運行if語句中的命令所產生的錯誤信息仍然出現在腳本的輸出結果中 7、使用-z或者-n來檢查長度的時候,沒有定義的變量也為0 8、空變量和沒有初始化的變量可能會對shell腳本測試產生災難性的影響,因此在不確定變量的內容的時候,在測試號前使用-n或者-z測試一下 9、? 變量包含了之前執行命令的退出狀態(最近完成的前臺進程)(可以用於檢測退出狀態) 文件/目錄判斷: [ -a FILE ] 如果 FILE 存在則為真。 [ -b FILE ] 如果 FILE 存在且是一個塊文件則返回為真。 [ -c FILE ] 如果 FILE 存在且是一個字符文件則返回為真。 [ -d FILE ] 如果 FILE 存在且是一個目錄則返回為真。 [ -e FILE ] 如果 指定的文件或目錄存在時返回為真。 [ -f FILE ] 如果 FILE 存在且是一個普通文件則返回為真。 [ -g FILE ] 如果 FILE 存在且設置了SGID則返回為真。 [ -h FILE ] 如果 FILE 存在且是一個符號符號鏈接文件則返回為真。(該選項在一些老系統上無效) [ -k FILE ] 如果 FILE 存在且已經設置了冒險位則返回為真。 [ -p FILE ] 如果 FILE 存並且是命令管道時返回為真。 [ -r FILE ] 如果 FILE 存在且是可讀的則返回為真。 [ -s FILE ] 如果 FILE 存在且大小非0時為真則返回為真。 [ -u FILE ] 如果 FILE 存在且設置了SUID位時返回為真。 [ -w FILE ] 如果 FILE 存在且是可寫的則返回為真。(一個目錄為了它的內容被訪問必然是可執行的) [ -x FILE ] 如果 FILE 存在且是可執行的則返回為真。 [ -O FILE ] 如果 FILE 存在且屬有效用戶ID則返回為真。 [ -G FILE ] 如果 FILE 存在且默認組為當前組則返回為真。(只檢查系統默認組) [ -L FILE ] 如果 FILE 存在且是一個符號連接則返回為真。 [ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read則返回為真。 [ -S FILE ] 如果 FILE 存在且是一個套接字則返回為真。 [ FILE1 -nt FILE2 ] 如果 FILE1 比 FILE2 新, 或者 FILE1 存在但是 FILE2 不存在則返回為真。 [ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 老, 或者 FILE2 存在但是 FILE1 不存在則返回為真。 [ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的設備和節點號則返回為真。 字符串判斷 [ -z STRING ] 如果STRING的長度為零則返回為真,即空是真 [ -n STRING ] 如果STRING的長度非零則返回為真,即非空是真 [ STRING1 ] 如果字符串不為空則返回為真,與-n類似 [ STRING1 == STRING2 ] 如果兩個字符串相同則返回為真 [ STRING1 != STRING2 ] 如果字符串不相同則返回為真 [ STRING1 < STRING2 ] 如果 “STRING1”字典排序在“STRING2”前面則返回為真。 [ STRING1 > STRING2 ] 如果 “STRING1”字典排序在“STRING2”後面則返回為真。
- git
手動更新
git branch `date +%Y%m%d%H%M%S` #備份
git pull #拉取
git branch #查看所在分支
回滾到舊的分支
git branch 切換到舊的分支
git checkout [branch名稱]
git checkout master
git checkout . # 放棄當前所有操作
- ubuntu
#關閉ubuntu自動下載最新內核配置
修改配置文件/etc/apt/apt.conf.d/10periodic。
將“1”改為“0”,保存即可。0是關閉
vi /etc/apt/apt.conf.d/10periodic
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
# 創建用戶,ubuntu默認不自動創建家目錄
useradd -s /bin/bash -G sudo -k /etc/skel -m -d /home/username username
運維必備-常用操作(為小夥伴們提供查詢,會持續更新)