1. 程式人生 > >運維必備-常用操作(為小夥伴們提供查詢,會持續更新)

運維必備-常用操作(為小夥伴們提供查詢,會持續更新)

enc 處理 備份 不支持 then sbo 下一條 一個數 uid

小生博客:http://xsboke.blog.51cto.com

小生 Q Q:1770058260

                    -------謝謝您的參考,如有疑問,歡迎交流

  1. 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));
  1. 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
  1. zip壓縮排除目錄或者文件
zip -r yasuo.zip /var/www -x="/var/www/logs/*"
  1. lsof的應用
 lsof -c mysql  查看某個進程打開的文件
  1. 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;
   }
  1. 磁盤單位換算
 磁盤單位換算
1TB=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024Byte
  1. 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”後面則返回為真。
  1. git
手動更新
git branch `date +%Y%m%d%H%M%S`   #備份
git pull                                                        #拉取
git branch                                                  #查看所在分支

回滾到舊的分支
git  branch 切換到舊的分支
git  checkout  [branch名稱]
git  checkout master
git checkout .    # 放棄當前所有操作
  1. 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

運維必備-常用操作(為小夥伴們提供查詢,會持續更新)