- 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
来源: http://www.bubuko.com/infodetail-2821160.html