运维必备-常用操作(为小伙伴们提供查询,会持续更新)

小生博客: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

猜你喜欢

转载自blog.51cto.com/xsboke/2308721