linux使用汇总

Linux的目录结构

没有逻辑磁盘分区(C盘、D盘...)

  • 是一棵树形结构,根目录是/

  • 根目录下边有几个文件夹,需要我们了解:

    • /etc:配置文件所在的文件夹。比如:安装JDK,配置环境变量,就要修改/etc/profile文件

    • /usr:unix shared resource,系统共享资源文件夹。我们安装软件通常安装在:/usr/local下边

    • /home:家目录。每个用户登录Linux之后,默认进入的目录,是用户的家目录。(类似Windows的“我的文件夹)“)

      • 用户tom,有自己的家目录:/home/tom
      • 用户jack,有自己的家目录:/home/jack
    • /root:是root用户的家目录

      linux 文件夹和文件名不能相同

    • 如果事先有叫‘A’的文件夹存在,则不允许建立叫‘A’的文件;

      同理若先有叫‘b’的文件存在,一样不允许建立叫‘b’的文件夹。

      /tmp:为临时目录,即linux有定时清理的策略,定时清理配置/usr/lib/tmpfiles.d/tmp.conf

      1. [root@bits-yybgl-nfs1 tmpfiles.d]# cat /usr/lib/tmpfiles.d/tmp.conf
      2. # This file is part of systemd.
      3. #
      4. # systemd is free software; you can redistribute it and/or modify it
      5. # under the terms of the GNU Lesser General Public License as published by
      6. # the Free Software Foundation; either version 2.1 of the License, or
      7. # (at your option) any later version.
      8. # See tmpfiles.d(5) for details
      9. # Clear tmp directories separately, to make them easier to override
      10. q /tmp 1777 root root 10d
      11. q /var/tmp 1777 root root 30d





​ - 清理 /tmp 目录超过 10 天的内容,但是匹配 /tmp/systemd-private-%b-* 的目录及其路径下的全部内容会被保留。



​ - 清理 /var/tmp 目录超过 30 天的内容,但是匹配 /var/tmp/systemd-private-%b-* 的目录及其路径下的全部内容被保留。



​ 参考http://oppo1.yidianzixun.com/article/0fhnNnOi

linux命令整理

权限

  • -表示文件 d表示目录

--其他少数类型:(b、c、l、s、p)

b:块设备,是一些提供系统存取数据的接口设备,例如硬盘

c:字符设备,是一些串行端口的接口设备,例如键盘

l:为链接文件,类似于Windows的快捷方式

s:套接字文件(socket),用于进程之间的通信。-文件,分纯文本文件(ASCII)和二进制文件(binary)

p:管道文件

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行

将文件 file1.txt 设为所有人皆可读取 :

  1. chmod ugo+r file1.txt

将文件 file1.txt 设为所有人皆可读取 :

  1. chmod a+r file1.txt

将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

  1. chmod ug+w,o-w file1.txt file2.txt

为 ex1.py 文件拥有者增加可执行权限:

  1. chmod u+x ex1.py

将目前目录下的所有文件与子目录皆设为任何人可读取 :

  1. chmod -R a+r *

此外chmod也可以用数字来表示权限如 :

  1. chmod 777 file

语法为:

  1. chmod abc file

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

r=4,w=2,x=1

  • 若要 rwx 属性则 4+2+1=7;
  • 若要 rw- 属性则 4+2=6;
  • 若要 r-x 属性则 4+1=5。
  1. chmod a=rwx file

  1. chmod 777 file

效果相同

  1. chmod ug=rwx,o=x file

  1. chmod 771 file

权限总结

  1. 此外chmod也可以用数字来表示权限如 chmod 777 file
  2. 语法为:chmod abc file
  3. 其中a,b,c各为一个数字,分别表示UserGroup、及Other的权限。
  4. r=4w=2x=1
  5. 若要rwx属性则4+2+1=7
  6. 若要rw-属性则4+2=6
  7. 若要r-x属性则4+1=7
  8. 范例:
  9. chmod a=rwx file

  10. chmod 777 file
  11. 效果相同
  12. linux文件执行权限:chmod a+x sysstat
  13. 查看文件的权限和类型:ll 文件所在的路径

用户组

新建组

  1. groupadd samba

添加二名成员

  1. useradd -g samba samba
  2. useradd -g samba oa

查指定组内成员

  1. groupname=samba && cat /etc/passwd | grep `grep ${groupname} /etc/group | awk -F: '{print $3}'` | awk -F: '{print $1}' && unset groupname

设置密码:passwd <用户名>

  1. passwd test123

查看samba服务器中已拥有哪些用户:

  1. pdbedit -L

删除某个用户

  1. 将用户从用户组中删除:gpasswd -d <用户名> <用户组名>
  2. 删除用户:userdel <用户名>

修改文件的访问权限

其他用户要访问权限需要修改一下权限(这里一共涉及到了二重权限,第一重在samba里面要设置相应的权限,第二重就是在这里)

修改/samba的访问权限

  1. chmod 777 /samba -R

递归修改/samba下面所有的权限,修改为samba所有

  1. chown samba:samba /samba -R

扩展

使用smbpasswd添加共享用户的常用方法:

    smbpasswd -a 添加用户(被添加用户必须是系统用户)

    smbpasswd -d 冻结用户 (这个用户不能用了)

    smbpasswd -e 恢复用户 (将冻结的用户解冻)

    smbpasswd -n 将用户密码设置为空

    smbpasswd -x 删除用户

查看Linux中所有用户:

  1. cat /etc/passwd

查看Linux中所有组:

  1. cat /etc/group

删除linux中某个用户所有信息

  1. userdel -r 用户名

系统基本信息

  1. 查看系统版本:cat /proc/version 或者uname -a
  2. 查看cpu信息:cat /proc/cpuinfo
  3. 查看内存信息:cat /proc/meminfo
  4. MemTotal:内存总数 MemFree:空闲内存数(不能代表程序全部可用的内存) MemAvailable:可用内存数(程序全部可用的内存)
  5. 查看硬盘信息:df -h
  6. 查看磁盘分区:fdisk -l
  7. 查看网关:ip route show
  8. 查看ip(inet)和子网掩码信息(netmask):ifconfig
  9. 查看本地的host映射: cat /etc/hosts
  10. (主机名host命名规范:服务简写+系统应用简写+ip后缀e.g:BCSOA192)

磁盘扩容参考:http://t.csdn.cn/aHs0v

常用命令

  1. linux
  2. 更改虚拟机主机名称:hostnamectl --static set-hostname zc135
  3. 显示linux服务列表:chkconfig --list
  4. 保持原本格式粘贴文本:
  5. 非编辑模式下先设置输入命令 :set paste 直接粘贴保持原样格式 设置恢复 :set nopaste
  6. 查看运行cpu内存状态:top
  7. ip是否连通:ping xxx.xxx tel
  8. 端口是否能访问:telnet 192.168.6.139 8080
  9. telnet退出:
  10. 1、先按 Ctrl+ ]
  11. 2、在Telnet命令行输入quit就可以了
  12. 3.如果输入错误按shift + 删除键 删除
  13. 查看内存使用情况:free -m
  14. total used free shared buff/cache available(可用)
  15. Mem: 974 (总内存Mb) 571(已使用) 102 10 300 249(可用内存)
  16. Swap: 2047 147 1900
  17. 查看硬盘使用容量信息:df -h (-h:GB,MB,KB等格式自行显示 -H:以M=1000K替代M=1024K的进位方式)
  18. 查看文件的编码格式:file -i 文件名称
  19. x为应用名称如mysql
  20. 启动x服务:systemcrl start x
  21. 查看x服务状态:systemcrl status x
  22. 重启x服务:systemcrl restart x
  23. 关闭x服务:systemcrl stop x
  24. 设置开启启动:systemcrl enable x
  25. 查看help帮助提示:x --help
  26. 查看当前所在的目录:pwd
  27. ls(ls -l的别名):列出来的结果详细,有时间,是否可读写等信息
  28. ll:只列出文件名或目录名 (就象windows里的列表)
  29. 新建文件夹:mkdir filename
  30. 创建多级文件夹:mkdir -p filename
  31. 删除文件夹:rmdir -rf
  32. 查看rpm包所安装的路径:rpm -pql mysql-community-server-5.7.25-1.el7.x86_64.rpm(完整包名)
  33. 查看当前时间: date
  34. 更改时间: date -s "2022-01-24 10:30:00"
  35. 程序
  36. 不记录jar包错误输出:nohup java -jar xxxx.jar >/dev/null 2>&1&
  37. #后台运行 xxx.jar 程序,将标准错误输出合并到标准输出,然后标准输出重定向至 垃圾桶 /dev/null
  38. /dev/null Linux下有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null
  39. 查看程序服务列表:chkconfig --list
  40. 查询端口占用:netstat -ntlp
  41. 终结pid进程:kill -9 pid(强制)
  42. 终结pid进程:kill -15 pid(程序主动正常终止)
  43. 查看防火状态:systemctl status firewalld
  44. 永久关闭防火墙:systemctl disable firewalld
  45. 重启防火墙:systemctl enable firewalld
  46. 查看vm ens33ip:sudo ifconfig ens33
  47. 全局查找文件: find . -name "*.log"
  48. 全局查找文件夹:find / -name plugin
  49. 清空文件: > access.log
  50. 当前位置模糊搜索并将结果删除:find . -type f -name "budget_mgt20220112013*" -print0 | xargs -0 rm -f
  51. 排除指定文件并移动到指定目录 mv !(文件夹a) ./文件夹b
  52. 根据程序端口查启动文件
  53. netstat -nlpt |grep "3306"
  54. tcp6 0 0 :::3306 :::* LISTEN 966/mysqld
  55. ps -ef grep "966"
  56. UID PID PPID C STIME TTY STAT TIME CMD
  57. root 2376 2337 0 14:56 pts/0 R+ 0:00 ps -ef grep 966 XDG_SESSION_ID=25 HOSTNAME=zc139 TERM=linux SHELL=/bin/b
  58. 查看data目录的总大小:du -sh /data
  59. 文字粘贴应该编辑模式下粘贴:可以shift+insert或者输入i
  60. 查看/usr目录的下各个子目录的大小,不包括子目录的子目录:[root@localhost usr]# du -sh *
  61. linux内核版本:uname -r
  62. 远程拷贝目标服务器138schema.xml文件并放置conf目录下:
  63. scp 远程账号@远程ip:/文件目录地址 本地存放地址
  64. scp root@192.168.6.138:/usr/local/mycat/conf/schema.xml /usr/local/mycat/conf/
  65. 远程将自己的文件拷贝到138服务器下的usr目录下
  66. scp 本地文件 远程账号@远程ip:/存放目录
  67. scp /usr/local/mycat/conf/schema.xml.beifen root@192.168.6.138:/usr/
  68. init 0 关机
  69. init 6 重启
  70. reboot 重启
  71. 递归复制文件夹testlocal文件夹下:cp -r /test /usr/local/
  72. vim编辑器里显示行号:set nu
  73. 搜索文件包含此关键字并返回行号:cat -n test.txt | grep "hello"
  74. vim编辑器中批量删除行数据:dnd(d光标所在的行 n要删除多少行 d) e.g:直接输入d27dd行开始删除27行数据
  75. vim编辑器中删除一行数据:ddd数字d(d3d删除三行)
  76. vim编辑器中复制一行:yyp或数字yyp(3yyp复制三行)
  77. 撤销:u
  78. linux远程连接数据库:mysql -uroot -proot -h 192.168.6.139 -P 3306 (最后是大写P)
  79. linux运行可执行文件的时候在这6种特殊目录下不需要加./:
  80. bin sbin sr/bin usr/sbin usr/local/bin usr/local/sbin
  81. mycat远程访问:
  82. mysql -umycat -p123456 -h192.168.6.138 -P8066 --default_auth=mysql_native_password
  83. 查看错误代码:perror 错误代码(111)
  84. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
  85. 日志查询:
  86. cat -n test.log |grep "debug" 查询关键字的日志(常用!~)
  87. tac是倒序查看,是cat单词反写;例子如下:
  88. grep "info" config.log -i 和上面效果一样,还方便
  89. tail是相反的,tail是看后多少行日志,而head是查看日志文件的头多少行,例子如下:
  90. head -n 10  test.log   查询日志文件中的头10行日志;
  91. head -n -10  test.log   查询日志文件除了最后10行的其他所有日志;
  92. -n  是显示行号;相当于nl命令;例子如下:
  93. tail -100f test.log      实时监控100行日志
  94. tail  -10  test.log   查询日志尾部最后10行的日志;
  95. tail -n +10 test.log    查询10行之后的所有日志;
  96. cat -n test.log |grep "debug" |more 这样就分页打印了,通过点击空格键翻页
  97. vim快速定位到某一行的
  98. 1.命令模式下(没有输入i进行编辑前),:n 比如想到第65行,输入 ":65" 按回车即可定位到65行。
  99. 2.命令模式下(没有输入i进行编辑前),ngg 比如想到第86行,输入 "86gg" "86G" (这个不用按回车就直接定位到对应行了)
  100. 3.打开文件定位到指定行 vim filename +n 比如想到第65行,输入 vim filename +65 或者 vim +65 filename
  101. linux拉取日志:
  102. 使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析
  103. 如:cat -n test.log |grep "debug" >debug.txt
  104. 1)如果使用securecrtsecureCRTPortable)软件,可以执行 sz  test.log 命令,将test.log 日志文件下载到本地,
  105. 如果sz命令不存在的话,执行“yum install lrzsz 命令安装,安装好后使用sz命令下载;
  106. 默认下载文件的地址:
  107. 点击options-->session Options-->x/y/Zmodem 查看下载的地址
  108. curl http://localhost:15672
  109. 防火墙
  110. 复制代码
  111. 1:查看防火状态
  112. systemctl status firewalld
  113. service iptables status
  114. 2:暂时关闭防火墙
  115. systemctl stop firewalld
  116. service iptables stop
  117. 3:永久关闭防火墙
  118. systemctl disable firewalld
  119. chkconfig iptables off
  120. 4:重启防火墙
  121. systemctl enable firewalld
  122. service iptables restart

软链和硬链

软链

多个目录需要使用相同的文件,可以使用软链,

特点:

不必占用过多的资源

源文件删除后,目标文件名称会报红色

ln -s 源文件 目标文件

  1. ln -s /data/test/test.txt /data/test2/

/data/test2/目录下挂载/data/test/test.txt文件

硬链

特点:

多占用一份资源(是一个备份),但文件发生改变其另外一份文件会随之改变

源文件删除后,目标文件依旧在,不会丢失

ln 源文件 目标文件

  1. ln /data/test/test.txt /data/test2/

共同特点:

不论是源文件还是目标文件发生改变,另一方(源文件/目标文件)文件内容都会发生改变

rpm命令

  1. 安装:rpm -ivh 包名称 安装
  2. 升级:rpm -Uvh 升级包名称
  3. 卸载:rpm -e
  4. 查询某个包是否被安装:rpm -q mysql
  5. 列出所有被安装的包:rpm -qa mysql

yum命令

  1. 安装:yum install 包名称
  2. 安装(不提示):yum install 包名称
  3. 卸载:yum remove 包名称
  4. 搜索包:yum search 包名称
  5. 卸载程序包(被依赖的包也会被卸载):yum remove 包名称
  6. 删除程序包:yum erase 包名称
  7. 检查可升级的包:yum check-update
  8. 查询某个包安装情况:yum list 包名称
  9. 列出所有被安装的包:yum list installed
  10. 查看正在使用的yum仓库:yum repolist

find 命令使用

不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示

语法

  1. find path -option [ -print ] [ -exec -ok command ] {} \;

常用参数:

-type c : 文件类型是 c 的文件。

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

find . -type f -name '*.sh' | xargs grep -i 'your_string'

  1. //在当前目录及子目录模糊搜索文件名称为budget_mgt20220110开头的文件
  2. find . -type f -name "budget_mgt20220110*"

find -print0和xargs -0原理及用法

用法

  1. find . -name "关键字" | xargs rm
  2. 示例
  3. //在当前目录及子目录模糊搜索文件名称为app_info.开头的文件并将在所有文件中搜索包含关键 DOCUMENTID ,并返回对应的行数
  4. find . -type -name "app_info.*" | xargs grep -i "DOCUMENTID"

用法注意:

但是这个命令如果遇到文件名里有空格或者换行符,就会出错。因为xargs识别字符段的标识是空格或者换行符,所以如果一个文件名里有空格或者换行符,xargs就会把它识别成两个字符串,自然就出错了。

这时候就需要-print0和-0了。

find -print0表示在find的每一个结果之后加一个NULL字符,而不是默认加一个换行符。find的默认在每一个结果后加一个'\n',所以输出结果是一行一行的。当使用了-print0之后,就变成一行了

然后xargs -0表示xargs用NULL来作为分隔符。这样前后搭配就不会出现空格和换行符的错误了。选择NULL做分隔符,是因为一般编程语言把NULL作为字符串结束的标志,所以文件名不可能以NULL结尾,这样确保万无一失。

所以比较我们推荐的比较保险的命令是

  1. find . -name "*.txt" -print0 | xargs -0 rm

示例

找到匹配的文件后并执行删除

  1. find . -type f -name "budget_mgt20220112013*" -print0 | xargs -0 rm -f

找名称为"png"结尾的文件并执行mv命令,移动到指定的目录中

  1. find -type f -name "*.png" -print0 | xargs -0 mv --target-directory=testfile/

找不是目录并且匹配正则(.*.png$以.png结尾的文件)并执行mv命令 移动到指定的目录中

  1. find -not -type d -and -regex '.*.png$' -exec mv {} ./testfile \;
  2. -not -type d 不是目录
  3. -and 并且
  4. -exec 后面跟的是command命令 终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。
  5. {} 代表的是find 查找处理的结果

curl请求

浏览器请求快捷使用

1.复制格式以curl+bash格式复制

2.linux可以直接使用

常用的命令

-X 请求方式

-H 请求头

-d --dataHTTP POST 数据

-o将输出写入文件

-G, --get 使用 HTTP GET 方法发送 -d 数据

-a, --append添加要上传的文件 (F/SFTP)

  1. curl http://192.168.6.139/inner/customer/jg/QueryCommonCstListPageOrNPageLdsf
  2. -X POST
  3. -H "Content-type:application/json"
  4. -H "apikey:csc-btm-yybgl-inner-prod"
  5. -d '{"pageNO": "1","companyName": "百度公司","pageSize": "20","userId": "id123456","isPage": ""}'
  6. curl http:192.168.6.139:8083/apiminio/file
  7. -X POST
  8. -T
  9. -H "Content-type:application/json"
  10. curl --form 'file=@data.txt' http:192.168.6.139:8083/apiminio/file

参考:https://itbilu.com/linux/man/4yZ9qH_7X.html

YUM命令

  1. yum search string #根据关键字string查找安装包
  2. yum deplist <package_name> # 仅仅 查看程序rpm依赖情况
  3. yum provides */命令 # 查看命令是由哪个包提供的(这个命令很有帮助)
  4. yum -y install <package_name> #不加-y则会询问是否安装,想控制哪些包安装,则不要加-y,想自动安装不进行交互,则加-y
  5. yum install --downloadonly --downloaddir=/xx/xxx/xx/ #只下载软件但不安装
  6. yum remove <package_name> # 卸载程序包,此卸载命令会yum或rpm安装的包生效,如果是编译安装的,则不受yum控制
  7. yum groupremove <group_name> # 删除程序组group
  8. yum check-update #检查可更新的软件有哪些
  9. yum update #更新升级所有软件包
  10. yum update <package_name> #更新指定程序包package,
  11. yum upgrade <package_name> #升级指定程序包package

yum 解决依赖的原理

yum 解决依赖关系问题,自动下载软件包。yum是基于C/S架构。C指的是客户端, S指的是服务器,像ftp,http,file一样;关于yum为什么能解决依赖关系:所有的Yum 源里面都有repodata,它里面是有XML格式文件,里面有说明需要什么包。例如上堂课实验的:mysql-server rpm 需要:perl-DBI ,python,或者是php等等包。

更换yum源

  1. 备份
  1. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  1. 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/

centos8(centos8官方源已下线,建议切换centos-vault源)

  1. wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
  1. 运行 yum makecache 生成缓存
  2. 其他

非阿里云ECS用户会出现 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 信息,不影响使用。用户也可自行修改相关配置: eg:

  1. sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

公网用户:

  1. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  2. wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
  3. yum clean all && yum makecache

配置本地yum源

  1. baseurl=file:/// #注意是file开头加三个斜
  2. baseurl=file:///mnt/vcdrom/ #将baseurl修改为DVD的挂载目录

参考:

https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.J_4121707010.2.1a811b11SR1vgL

https://docs.centos.org/en-US/8-docs/

http://t.csdn.cn/BUKEz

VIM命令

  1. 光标:
  2. 上:k
  3. 下:j
  4. 左:h
  5. 右:l
  6. 向上匹配搜索:?
  7. 向下匹配一次:/
  8. 示例:
  9. ?提交 输入n 匹配上一个
  10. /提交 输入n 匹配下一个
  11. 输入/后直接回车:使用上次的搜索关键字
  12. 输入?后直接回车:使用上次的搜索关键字

profile存在位置

/etc/profile

正则表达式搜索

  1. ^表示一行的开头
  2. $表示一行的结尾
  3. .表示任意一个字符
  4. *匹配0次或n

文件传输

本文记录linux系统中文件传输的多种方式,留作备忘。linux中文件传输的方式有ftp,scp,rsync,rz,sz等,但各个工具的功能又有所区别;

  • FTP : FTP是文件服务器,可实现文件的上传下载,存储等功能,但本文不打算介绍ftp的使用。
  • scp: scp能够将不同主机的文件进行相互传输,使用简单方便。
  • rz : 用于linux与windows之间的文件上传
  • sz : 用于linux与windows之间的文件下载
  • rsync : rsync是文件同步工具,结合inotify可以实现文件的同步,备份功能。

解压/压缩方式

高效的压缩格式推荐

推荐使用zip压缩,具有很好的跨平台和高效性

1、.tar 用 tar –xvf 解压

2、
.gz 用 gzip -d或者gunzip 解压

3、.tar.gz和.tgz 用 tar –xzf 解压

4、.bz2 用 bzip2 -d或者用bunzip2 解压

5、
.tar.bz2用tar –xjf 解压

6、.Z 用 uncompress 解压

7、
.tar.Z 用tar –xZf 解压

8、.rar 用 unrar e解压

9、
.zip 用 unzip 解压

zip 命令

https://www.runoob.com/?s=zip

参数:

  1. `-A:调整可执行的自动解压缩文件;``-b<工作目录>:指定暂时存放文件的目录;``-c:替每个被压缩的文件加上注释;``-d:从压缩文件内删除指定的文件;``-D:压缩文件内不建立目录名称;``-f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中;``-F:尝试修复已损坏的压缩文件;``-g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;``-h:在线帮助;``-i<范本样式>:只压缩符合条件的文件;``-j:只保存文件名称及其内容,而不存放任何目录名称;``-J:删除压缩文件前面不必要的数据;``-k:使用MS-DOS兼容格式的文件名称;``-l:压缩文件时,把LF字符置换成LF+CR字符;``-ll:压缩文件时,把LF+cp字符置换成LF字符;``-L:显示版权信息;``-m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;``-n<字尾字符串>:不压缩具有特定字尾字符串的文件;``-o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同;``-q:不显示指令执行过程;``-r:递归处理,将指定目录下的所有文件和子目录一并处理;``-S:包含系统和隐藏文件;``-t<日期时间>:把压缩文件的日期设成指定的日期;``-T:检查备份文件内的每个文件是否正确无误;``-u:更换较新的文件到压缩文件内;``-v:显示指令执行过程或显示版本信息;``-V:保存VMS操作系统的文件属性;``-w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效;``-x<范本样式>:压缩时排除符合条件的文件;``-X:不保存额外的文件属性;``-y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;``-z:替压缩文件加上注释;``-$:保存第一个被压缩文件所在磁盘的卷册名称;``-<压缩效率>:压缩效率是一个介于1~9的数值。`

用法

1.将/home/data 这个目录下的所有文件打包压缩为当前目录下的data.zip

  1. zip -q -r data.zip /home/data

2.如果现在在/home 这个目录下,则如下

  1. zip -q -r data.zip data

3.如果在/home/data 这个目录下,则如下

  1. zip -q -r data.zip *

unzip

https://www.runoob.com/?s=unzip

tar命令

最常用的打包命令是 tar,使用 tar 程序打出来的包我们常称为 tar 包,tar 包文件的命令通常都是以 .tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲 tar 命令的基本用法。

  1. -z 这个参数来调用gzip
  2. -x 是解开
  3. -c 是表示产生新的包(压缩)
  4. -f 指定包的文件名
  5. -t 是列出文件的意思
  6. -u 是表示更新指定包中的文件
  7. -r 是表示向指定的包增加文件

tar 命令的选项有很多(用 man tar 可以查看到),但常用的就那么几个选项,下面来举例说明一下:

  1. # tar -cf all.tar *.jpg

这条命令是将所有 .jpg 的文件打成一个名为 all.tar 的包。-c 是表示产生新的包,-f 指定包的文件名。

  1. # tar -rf all.tar *.gif

这条命令是将所有 .gif 的文件增加到 all.tar 的包里面去,-r 是表示增加文件的意思。

  1. # tar -uf all.tar logo.gif

这条命令是更新原来 tar 包 all.tar 中 logo.gif 文件,-u 是表示更新文件的意思。

  1. # tar -tf all.tar

这条命令是列出 all.tar 包中所有文件,-t 是列出文件的意思。

  1. # tar -xf all.tar

这条命令是解出 all.tar 包中所有文件,-x 是解开的意思。

以上就是 tar 的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压文件,tar 提供了一种特殊的功能。这就是 tar 可以在打包或解包的同时调用其它的压缩程序,比如调用 gzip、bzip2 等

gzip 是 GNU 组织开发的一个压缩程序,.gz 结尾的文件就是 gzip 压缩的结果。与 gzip 相对的解压程序是 gunzip。tar 中使用 -z 这个参数来调用gzip。

下面来举例说明一下:

  1. # tar -czf all.tar.gz *.jpg

这条命令是将所有 .jpg 的文件打成一个 tar 包,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,包名为 all.tar.gz。

  1. # tar -xzf all.tar.gz

这条命令是将上面产生的包解开。

运行状况

  1. PID - 进程标示号
  2. USER - 进程所有者
  3. PR - 进程优先级
  4. NI - 进程优先级别数值
  5. VIRT - 进程占用的虚拟内存值
  6. RES - 进程占用的物理内存值
  7. SHR - 进程使用的共享内存值
  8. S - 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死
  9. %CPU - 进程占用的CPU使用率
  10. %MEM - 进程占用的物理内存百分比
  11. TIME - 进程启动后占用的总的CPU时间
  12. Command - 进程启动的启动命令名称

https://www.cnblogs.com/cloudma/articles/linux-sysstat.html

运行jar

使用&后台运行程序

结果会输出到终端

使用Ctrl + C发送SIGINT信号,程序免疫

关闭session发送SIGHUP信号,程序关闭

使用nohup运行程序

  • 结果默认会输出到nohup.out
  • 使用Ctrl + C发送SIGINT信号,程序关闭
  • 关闭session发送SIGHUP信号,程序免疫

日后使用

平日线上经常使用nohup&配合来启动程序nohup ./test &

  • 同时免疫SIGINTSIGHUP信号

线上部署

1.设置好配置

2.上传jar包

3.命令

将运行的jar 错误日志信息输出到log.file文件中,然后(>&1)就是继续输出到标准输出(前面加的&,是为了让系统识别是标准输出),最后一个&,表示在后台运行。

  1. nohup java -jar test-0.0.1-SNAPSHOT.jar > log.file 2>&1 &

上面的2 和 1 的意思如下:

0 标准输入(一般是键盘)

1 标准输出(一般是显示屏,是用户终端控制台)

2 标准错误(错误信息输出)

9161就表示运行的pid

查看到进程的pid

  1. netstat -anp 获取jps -l

修改linux时间

  1. 查看当前时区
  2. 命令 date -R
  3. 修改设置Linux服务器时区
  4. 方法 A
  5. 命令 tzselect
  6. 方法 B 仅限于RedHat Linux CentOS
  7. 命令 timeconfig
  8. 方法 C 适用于Debian
  9. 命令 dpkg-reconfigure tzdata
  10. 复制相应的时区文件,替换系统时区文件;或者创建链接文件
  11. cp /usr/share/zoneinfo/主 / 主时区/主时区/次时区 /etc/localtime
  12. 例如:在设置中国时区使用亚洲/上海(+8
  13. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  14. 查看时间和日期
  15. 命令 date
  16. 2.设置时间和日期
  17. 例如:将系统日期设定成2009113日的命令
  18. 命令 date -s 11/03/2009
  19. 将系统时间设定成下午55555秒的命令
  20. 命令 date -s 17:55:55
  21. 将当前时间和日期写入BIOS,避免重启后失效
  22. 命令 hwclock -w

解压压缩

  1. *.tar格式用 tar xvf 解压
  2. *.gz格式用 gzip -d或者gunzip 解压
  3. .tar.gz和.tgz格式用 tar xzf 解压
  4. *.bz2 bzip2 -d或者用bunzip2 解压
  5. *.tar.bz2tar xjf 解压
  6. *.Z uncompress 解压
  7. *.tar.Z tar xZf 解压
  8. *.rar unrar e解压
  9. 1. *.zip unzip 解压
  10. 2、如果要把文件解压到指定的目录下,需要用到-d参数。
  11. unzip -d /temp test.zip
  12. 3、解压的时候,有时候不想覆盖已经存在的文件,那么可以加上-n参数
  13. unzip -n test.zip
  14. unzip -n -d /temp test.zip
  15. 4、只看一下zip压缩包中包含哪些文件,不进行解压缩
  16. unzip -l test.zip
  17. 5、查看显示的文件列表还包含压缩比率
  18. unzip -v test.zip
  19. 6、检查zip文件是否损坏
  20. unzip -t test.zip
  21. 7、将压缩文件test.zip在指定目录tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件
  22. unzip -o test.zip -d /tmp/
  23. zip压缩
  24. zip -o a.zip a.txt
  25. -o:示输出文件,需在其后紧跟打包输出文件名。
  26. -q:不向屏幕输出
  27. -r:递归打包包含子目录的全部内容
  28. -e:加密打包

定时任务

  1. crontab -e
  2. 文件在/var/spool/cron目录下面

Docker命令

  1. 查看docker帮助:docker --help
  2. 搜索镜像:docker search 镜像名称(如centos)
  3. 拉取镜像:docker pull 镜像名称:tag(标签名称) 如:docker pull centos:7
  4. 创建交互式容器:docker run -id --name=minio minio/minio
  5. 查看所有镜像:docker images
  6. 删除某个镜像:docker rmi 镜像ID
  7. 删除所有镜像:docker rmi $(docker images -q)
  8. 注意:必须先关闭镜像相关的所有容器,才可以删除镜像;如果有镜像关联的容器正在运行,则不能删除
  9. 创建容器:docker run -id --name=mynginx -p 80:80 nginx
  10. 删除某个容器:docker rm 容器id
  11. 查看容器信息:docker imspect 容器id12位(f3307865549d)
  12. 查看容器的ip地址:docker inspect -f {{.NetworkSettings.Networks.bridge.IPAddress}} 容器名称
  13. linuxcopy容器里的文件: docker cp f3307865549d(容器id):/home/test.java /home(linux保存的路径)
  14. 查看docker程序内存占用:docker stats
  15. 进入容器:docker exec -it containerID /bin/bash
  16. 批量关闭查询到的容器:docker stop $(docker ps -aq)
  17. 批量删除查询到的容器:docker rm $(docker ps -aq)
  18. 批量关闭查询:docker stop A B (A/B为容器)
  19. 日志:
  20. 查看容器的日志信息后10条: docker logs -tf --tail 10 容器id12位(f3307865549d)
  21. 显示容器全部日志:docker logs -tf 容器id12位(f3307865549d)
  22. 显示容器全部日志:docker logs 容器id12位(f3307865549d)
  23. 显示容器最后20行日志:docker logs e31bc40addb5 --tail 20
  24. 日志根据时间查询(注意格式yyyy-MM-dd别少一位):docker logs 863e75445731 --since 2021-03-09
  25. docker
  26. 进入容器内部:docker exec -it 容器名称 bash docker exec -it 容器名称 sh

进入容器命令:

  1. 1.docker exec -it 容器id/bin/bash
  2. 2.docker attach 容器id
  3. 两个区别:
  4. docker exec #进入容器后开启一个新的终端,可以在里面操作(常用)
  5. docker attach #进入容器正在执行的终端,不会启动新的进程

docker使用问题

linux进入docker容器报错:

  1. docker start 7d7510941e2b(容器id12位)
  2. 具体操作:
  3. [root@zc /]# docker exec -it mysql_docker /bin/bash
  4. Error response from daemon: Container 7d7510941e2b26fedf2fe9b4509966972a42b6b4c5e7894a6a770b7b8ece85e1 is not running
  5. [root@zc /]# docker start 7d7510941e2b
  6. 7d7510941e2b
  7. [root@zc /]# docker exec -it mysql_docker /bin/bash
  8. root@7d7510941e2b:/#
  9. 进入容器成功
  10. 复制文件
  11. 将容器文件复制到宿主机
  12. docker cp 96f7f14e99ab:/www /tmp/
  13. 将宿主机文件/文件夹复制到容器中
  14. docker cp logs 863e75445731:/root/

docker搭建 minio

拉取镜像

  1. docker pull minio/minio:RELEASE.2020-10-
  2. -53-21Z

启动

  1. docker run -id -p 9000:9000 --name minio-server \
  2. -e "MINIO_ACCESS_KEY=root1234" \
  3. -e "MINIO_SECRET_KEY=root1234" \
  4. -v /sxapp/docker-data/minio:/data \
  5. -v /sxapp/docker-data/minio/config:/root/.minio \
  6. minio/minio server /data

账号:access_key

密码:secret_key

JAVA

指令

jvm 指令

  1. jps 查看java程序运行pid (jps(Java Virtual Machine Process Status Tool))
  2. jps -l 查看java程序的运行pid信息和程序名称(jar包或包名)
  3. jps -heap pid 查看此pidjvm内存占用情况
  4. jmap -histo 14660 #查看历史生成的实例
  5. jmap -dump:format=b,file=./dump.hprof 14660 导出堆的dump文件(堆太大可能导不出来)
  6. top 查看操作系统运行的状态
  7. top -p 1234 (pid) 查看1234进程的运行状态
  8. jstack 进程pid |grep -A 10 子线程pid 检查此线程是否存在死锁(jvisualvm也可以查看死锁)
  9. jinfo -flags 4658(pid) 查看java程序运行的jvm参数
  10. jinfo -sysprops pid 查看程序的系统参数

java指令

  1. java -Dfile.encoding=UTF-8 xx 可以直接运行字节码文件
  2. 如果提示找不到主类需要在xx.class文件的package父级路劲下执行
  3. 如:com.aaa.bbb;
  4. 则需要在com包所在的文件夹下执行
  5. 示例:
  6. java com.aaa.bbb.Test

自定义配置

  1. nohup java -jar -Dserver.port=8087 subsidiary_archives_management.jar

javap指令

  1. 反编译字节码文件
  2. javap -l Test.class 会输出行号和本地变量表信息
  3. javap -c Test.class 会对当前class字节码进行翻译生成汇编代码
  4. javap -v Test.class 处理包含 -c 内容外,还会输出行号、局部变量表信息、常量池等信息

javac指令

  1. 1. javac 源文件
  2. 直接编译源文件,并将编译后的.class文件放到与源文件统一目录下;
  3. 2. javac 源文件 -d 编译文件输出路径 -encoding utf-8 :编译文件, 并将编译后的.class文件放到 -d参数后的目标路径中,且指定编码格式 utf-8,解决运行时中文乱码问题。
  4. 存在多级目录的,在windows下使用`\` ,在linux 下使用 '/' :
  5. 编译:
  6. windows : 'src\com\northcastle\xxx.java'
  7. linux : 'src/com/northcastle/xxx.java'
  8. javac com\baidu\UseSynchronized.java -encoding utf-8
  9. 运行:
  10. java com.baidu.UseSynchronized

jstat指令

  1. jstat -gc pid 查看程序的gc信息(gc次数,内存使用情况)
  2. jstat -gc 5006 2000 10 每隔2秒输出gc信息10
  3. S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
  4. 2176.0 2176.0 0.0 818.5 17408.0 14725.1 43400.0 26038.1 57432.0 54579.4 7296.0 6796.0 123 0.558 3 0.212 0.771
  5. S0C:第一个幸存区的大小,单位KB
  6. S1C:第二个幸存区的大小
  7. S0U:第一个幸存区的使用大小
  8. S1U:第二个幸存区的使用大小
  9. EC:伊甸园区的大小
  10. EU:伊甸园区的使用大小
  11. OC:老年代大小
  12. OU:老年代使用大小
  13. MC:方法区大小(元空间)
  14. MU:方法区使用大小
  15. CCSC:压缩类空间大小
  16. CCSU:压缩类空间使用大小
  17. YGC:年轻代垃圾回收次数
  18. YGCT:年轻代垃圾回收消耗时间,单位s
  19. FGC:老年代垃圾回收次数
  20. FGCT:老年代垃圾回收消耗时间,单位s
  21. GCT:垃圾回收消耗总时间,单位s

堆内存统计

  1. jstat -gccapacity 4658 堆内存统计
  2. NGCMN:新生代最小容量
  3. NGCMX:新生代最大容量
  4. NGC:当前新生代容量
  5. S0C:第一个幸存区大小
  6. S1C:第二个幸存区的大小
  7. EC:伊甸园区的大小
  8. OGCMN:老年代最小容量
  9. OGCMX:老年代最大容量
  10. OGC:当前老年代大小
  11. OC:当前老年代大小
  12. MCMN:最小元数据容量
  13. MCMX:最大元数据容量
  14. MC:当前元数据空间大小
  15. CCSMN:最小压缩类空间大小
  16. CCSMX:最大压缩类空间大小
  17. CCSC:当前压缩类空间大小
  18. YGC:年轻代gc次数
  19. FGC:老年代GC次数

nc

可以模拟一个服务端端口,检查端口是否通

模拟服务器指定端口

  1. nc -lk 8080
  1. -l 开启 监听模式,用于指定nc将处于监听模式。通常 这样代表着为一个 服务等待客户端来链接指定的端口。
  2. -p<通信端口> 设置本地主机使用的通信端口。有可能会关闭
  3. -k<通信端口>强制 nc 待命链接.当客户端从服务端断开连接后,过一段时间服务端也会停止监听。 但通过选项 -k 我们可以强制服务器保持连接并继续监听端口。
  4. -u UDP 模式
  5. -Z DCCP 模式

redis

  1. 清空所有的key: flushdb
  2. 查询所有的key: keys *
  3. 进入redis客户端: docker exec -ti myredis redis-cli -h localhost -p 6379(
  4. docker exec -it f63b73b53aa0 redis-cli)
  5. docker run -p 6379:6379 --name myredis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

nginx

命令

windows方式

1、启动:

C:\server\nginx-1.0.2>start nginx

C:\server\nginx-1.0.2>nginx.exe

最好使用第一种,第二种会使你的cmd窗口一直处于执行中,Ctrl + C也不能终止,就算关闭cmd窗口,查看进程管理器也能看到之前还在运行并未随着cmd窗口关闭而结束进程。

如果使用了第二种方法,关闭nginx进程方法就是,重新打开cmd,输入停止命令 nginx.exe -s quit 进程就关闭了。

2、停止:

C:\server\nginx-1.0.2>nginx.exe -s stop

C:\server\nginx-1.0.2>nginx.exe -s quit

ps:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。

3、重新载入Nginx:

C:\server\nginx-1.0.2>nginx.exe -s reload

当配置信息修改,需要重新载入这些配置时使用此命令。

4、重新打开日志文件:

C:\server\nginx-1.0.2>nginx.exe -s reopen

5、查看Nginx版本:

C:\server\nginx-1.0.2>nginx -v

6.查看、杀掉进程基本命令

tasklist /fi "imagename eq nginx.exe"

7.杀掉nginx进程

taskkill /f /pid 16900 /pid 19012

8.查看命令使用方法

tasklist /?

  1. nginx安装为:/usr/local/nginx
  2. 测试配置文件修改是否正常:/usr/local/nginx/sbin/nginx -t
  3. 配置文件重新加载:/usr/local/nginx/sbin/nginx -s reload

配置

重写请求地址:

  1. #第一种方式
  2. server{
  3. location /api/budget {
  4. rewrite ^.+api/?(.*)$ /$1 break;
  5. proxy_pass http://localhost:8085;
  6. proxy_redirect default;
  7. }
  8. }
  9. #第二种方式
  10. upstream ysgl-server {
  11. server localhost:8085;
  12. }
  13. server{
  14. location /api/budget {
  15. rewrite ^.+api/?(.*)$ /$1 break;
  16. proxy_pass http://ysgl-server;
  17. proxy_redirect default;
  18. }
  19. }

mysql

命令

  1. 退出客户端:\q (等价于exit)
  2. 查看数据库信息:\s
  1. 建库语句
  2. create database budget_mgt default character set utf8mb4;
  3. 导出mysql数据:mysqldump database_name user -u root -p > test.sql
  4. //注意是">" 不是"->"
  5. 导出mysql的建表语句:mysqldump --no-data -u username -p* database_name > filename.sql
  6. 导出指定库指定的表数据和表结构:
  7. mysqldump database budget_test --tables budget >table_budget.sql
  8. 官方文档:https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html
  9. 执行.sql文件:source test.sql
  10. 查询mysql其它用户权限:
  11. show grants for slave;
  12. 取消mysqlslave用户权限:
  13. revoke all on *.* from slave;
  14. 查看master binlog文件列表:show master logs;
  15. 查看此binlog文件的记录数据:show binlog events in 'master-bin.000001';
  16. 数据库锁表:flush tables with read lock; #该处是锁定为只读状态,语句不区分大小写
  17. 解锁:UNLOCK TABLES;
  18. 查看表的整体结构:desc budget 或者 show columns from budget(效果一样)
  19. 查看建表语句:show create table budget
  20. 查看指定库下的表名称:show tables from video_surveillance

mysqldump参数参考:

https://www.cnblogs.com/qq78292959/p/3637135.html

https://www.runoob.com/w3cnote/linux-mysql-import-export-data.html

索引排查

trace用法

开启后对系统影响比较大,作为临时分析工具

  1. mysql> set session optimizer_trace="enabled=on",end_markers_in_json=on; --开启trace
  2. mysql> select * from employees where name > 'a' order by position;
  3. mysql> select * FROM information_schema.OPTIMIZER_TRACE;
  4. mysql> set session optimizer_trace="enabled=off";

导入

  1. mysql -uroot -p123456 < runoob.sql
  2. mysql> use abc; # 使用已创建的数据库
  3. mysql> set names utf8; # 设置编码
  4. mysql> source /home/abc/abc.sql # 导入备份数据库

1.导入文件执行报错

用Navicat导出sql,恢复时,报错:Invalid default value for,如何解决?#数据库##SQL#

在用navicat转存的sql文件,再次导入时却出现了问题!有可能因为mysql5.7的严格模式导致数据无法插入时,可以把mysql的sql_model设置为none

执行命令:

  1. show variables like 'sql_mode';

如果结果中含有NO_ZERO_IN_DATE, NO_ZERO_DATE

则执行下面的命令:

  1. set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO

mysql开放root用户远程访问

  1. grant all privileges on *.* to root@'%' identified by '密码';

'%':所有用户

导出

选自:高性能mysql书中文章

--single-transaction选项和--lock-tables选项是互斥的,因为LOCK TABLES会使任何挂起的事务隐含提交

--master-data=2 该选项将二进制日志的位置和文件名写入到输出中,2:binlog位置写进注释,1 没有注释.

1.需要先执行

  1. flush tables with read lock

2.执行sql导出

  1. mysqldump --single-transaction --flush-logs --master-data=2 --opt --databases budget_mgt > 2023-03-09-17/09_budget_mgt_backup.sql

mysql命令选项

  1. -e 执行''中的后序命令
  2. [root@zc139 ~]# mysql -e 'show master status;use budget_mgt; select * from budget_file;show tables;'
  3. mysqldump --single-transaction --flush-logs --master-data=2 --opt --databases budget_mgt > backup.sql
  4. mysqldump --single-transaction -R -E --opt --databases budget_mgt app_onlyfortest branch_mechanism_management subsidiary_management subsidiary_archives__management |gunzip >test.sql.gz
  5. gunzip test4.sql.gz
  6. mysqldump --single-transaction --opt --databases budget_mgt > budget_mgt0513.sql

导出存文本格式

  1. 1TERMINATED BY用来指定字段值之间的符号,例如,“TERMINATED BY ','”指定了逗号作为两个字段值之间的标志。
  2. 2ENCLOSED BY子句用来指定包裹文件中字符值的符号,例如,“ENCLOSED BY ' " '”表示文件中字符值放在双引号之间,若加上关键字OPTIONALLY表示所有的值都放在双引号之间。
  3. 3ESCAPED BY子句用来指定转义字符,例如,“ESCAPED BY '*'”将“*”指定为转义字符,取代“\”,如空格将表示为“*N”。
  4. LINES子句:在LINES子句中使用TERMINATED BY指定一行结束的标志,如“LINES TERMINATED BY '?'”表示一行以“?”作为结束标志。
  5. 二、LOAD DATA INFILE语句是SELECT INTOOUTFILE语句的补语,该语句可以将一个文件中的数据导入到数据库中。

导出csv格式

csv格式可以直接通过excel打开并保存为.xlsx格式

tidb4.0以上版本也支持

  1. select * from user into outfile '/var/lib/mysql-files/users.csv' fields terminated by ',';

(1)路径目录必须有读写权限777

(2)文件名必须唯一

(3)fields terminated by ','必须存在,否则打开的文件的列在同一的单元格中出现

(4)我验证的表结构为gbk的,否则出现乱码

注意:

导出的文件在tidb服务端服务器上目录上

如果有where条件查询,需要外面套子查询才可以

表结构字段表格化

  1. SELECT
  2. COLUMN_NAME 列名,
  3. COLUMN_TYPE 数据类型,
  4. DATA_TYPE 字段类型,
  5. CHARACTER_MAXIMUM_LENGTH 长度,
  6. IS_NULLABLE 是否为空,
  7. COLUMN_DEFAULT 默认值,
  8. COLUMN_COMMENT 备注
  9. FROM
  10. INFORMATION_SCHEMA.COLUMNS
  11. where
  12. -- tmshop为数据库名称,只需要修改成你要导出表结构的数据库即可
  13. table_schema ='tmshop'
  14. AND
  15. -- oms_payment_info为表名,换成你要导出的表的名称
  16. table_name = 'oms_payment_info'

安全

Tidb

排查锁阻塞

  1. USE information_schema;
  2. select * from data_lock_waits;
  3. DATA_LOCK_WAITS 表中各列的字段含义如下:
  4. KEY:正在发生等锁的 key,以十六进制编码的形式显示。
  5. KEY_INFO:对 KEY 进行解读得出的一些详细信息,见 KEY_INFO
  6. TRX_ID:正在等锁的事务 ID,即 start_ts
  7. CURRENT_HOLDING_TRX_ID:当前持有锁的事务 ID,即 start_ts
  8. SQL_DIGEST:当前正在等锁的事务中被阻塞的 SQL 语句的 Digest
  9. SQL_DIGEST_TEXT:当前正在等锁的事务中被阻塞的 SQL 语句的归一化形式,即去除了参数和格式的 SQL 语句。与 SQL_DIGEST 对应。
  10. 目前该表仅能记录悲观锁等锁的情况,如果乐观事务(如 autocommit 的事务)被悲观锁阻塞,这一表中不会显示相应等锁信息。

排查当前存在的事务

  1. USE information_schema;
  2. select * from CLUSTER_TIDB_TRX;

重启指令

  1. tiup cluster restart tidb-yybgl

tidb官方链接:

ttps://docs.pingcap.com/zh/tidb/dev/information-schema-data-lock-waits

xshell工具

上传乱码

使用官方的工具上传xftp

MongoDB使用

查询ObjectId

  1. //查询表的ObjectId
  2. db.getCollection('tanhua_users').find({"_id":ObjectId("5e82dc3e6401952928c211a3")})

mongoDb注解

  1. @Id:
  2. @Id
  3. private ObjectId id;
  4. 被注解的IDObjectId类型的,Mongo会自动为你生成一个唯一的新的ObjectId对象(就像MySQL中的auto_increment类型的ID)。如果你想使用其他的类型作为ID,那么在你保存数据时就必须手动为ID赋值。
  5. @Document(collection=“mongodb”)
  6. 把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的文档
  7. @Indexed
  8. @Indexed
  9. private Double score;
  10. - 声明该字段需要索引,建索引可以大大的提高查询效率
  11. @CompoundIndex - 复合索引的声明,建复合索引可以有效地提高多字段的查询效率。
  12. @GeoSpatialIndexed - 声明该字段为地理信息的索引。
  13. @Transient - 映射忽略的字段,该字段不会保存到mongodb
  14. @PersistenceConstructor - 声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据

时间排序

  1. db.getCollection('quanzi_publish').find({}).sort({created:-1})

windows

cmd 命令

  1. 查看端口号:netstat -aon|findstr "8080"
  2. 根据pid杀死进程:taskkill /pid pid -t -f
  3. 查看windowswifi密码(结果key content为密码):netsh wlan show profiles name=wifi名称 key=clear
  4. 当前所在目录为D:\opt\logback
  5. d: 进入d
  6. cd .. 返回上级目录
  7. cd logback 进入logback文件夹
  8. dir 当前目录列表
  9. md 创建目录
  10. rd 删除目录
  11. del 删除文件
  12. echo [helloworld]>eva.txt 创建内容为helloworldeva.txt文件

Windows host文件

  1. C:\Windows\System32\drivers\etc

Git

git官方命令手册:

https://git-scm.com/book/zh/v2/Git-基础-记录每次更新到仓库


  1. 文件名称--->wjmc
  2. git init 初始化本地库
  3. git status 查看版本当前状态
  4. git add wjmc(文件名称) 放入暂存区
  5. git add . 将工作区的代码全部拉取(注意空格,如果配置ignore文件了,则会排除配置的文件)
  6. git restore --staged 文件 撤销暂存区提交的文件
  7. git commit -m "提交的备注" wjmc
  8. git reflog 查看历史版本信息
  9. git reflog -g 查看历史提交版本信息
  10. git log 查看历史详细版本信息 可以按q退出查看
  11. git reset --hard 版本号 (回退到指定版本)
  12. git checkout 版本号 (切换到指定版本)
  13. git config --list 查看git配置信息
  14. git branch -v 查看分支
  15. git branch 创建新的分支
  16. git checkout 分支名称(切换到指定分支)
  17. git checkout 分支名称A 版本号(指定版本创建新的分支A)
  18. git checkout -b new-branch 检出当前分支并创建新分支
  19. git checkout ${commitid} path(git仓库的相对路径)
  20. git checkout 6a942d1e3586843388abe6e7b686ecb37a0968d8 src/main/java/com/zxjt/controller/v1/TimerController.java
  21. 回退指定版本的指定文件(如果当前版本文件删除则无法使用)
  22. git show ${commitid}:文件的相对路径 > 存储的相对路径路径及名称(单独的拉取一个文件)
  23. git show 28f77d864b37708e4154323da5b8a4d537839b9e:src/main/java/com/zxjt/config/XxlJobConfig.java > src/main/java/com/zxjt/config/XxlJobConfig.java
  24. git stash
  25. 保存当前的工作进度。会分别对暂存区和工作区的状态进行保存。
  26. git stash save message…”
  27. 这条命令实际上是第一条 git stash 命令的完整版。
  28. git stash list
  29. 显示进度列表。此命令显然暗示了git stash 可以多次保存工作进度,并用在恢复时候进行选择。
  30. git stash pop 记录号(stash@{0})
  31. 如果不使用任何参数,会恢复最新保存的工作进度,并将恢复的工作进度从存储的工作进度列表中清除。
  32. git stash apply 记录号(stash@{0})
  33. 除了不删除恢复的进度之外,其余和 git stash pop 命令一样。
  34. git stash clear
  35. 删除所有存储的进度。
  36. 合并分支 (在 master 分支上合并 test 分支)
  37. 1.先切换到master分支
  38. git checkout master
  39. 2.test的分支合并到master
  40. git merge test
  41. 删除分支
  42. git branch -d dev(删除本地分支前检查merge状态)
  43. git branch -D dev(git branch --delete --force的简写 直接删除本地分支)
  44. git push origin --delete dev(远程删除分支)--此时本地和远程都已删除
  45. 远程仓库操作
  46. git remote -v (查看当前所有远程地址别名)
  47. first https://gitee.com/zcfast/git-demo.git (fetch)
  48. first https://gitee.com/zcfast/git-demo.git (push)
  49. git remote add 别名 远程地址 (添加远程地址别名,目的是为了方便用别名代替远程库地址)
  50. git remote rm 别名(删除指定别名仓库地址)
  51. git push 远程库地址别名 分支A (将本地分支A 的内容推送到远程仓库)
  52. git clone 远程地址 (克隆仓库镜像 包含init add放入暂存区的命令,默认克隆项目远端的默认分支)
  53. git rm --cached 文件名 删除缓存区
  54. git rm -r --chached 文件夹(删除缓存区文件夹下面的所有文件)
  55. git fetch 相当于是从远程获取最新版本到本地,不会自动merge(合并代码)
  56. git pull 远程库地址别名 远程分支名 (将远程仓库的此分支最新内容拉取后与当前本地分支合并)
  57. 相当于是git fetch git merge
  58. git fetch更安全一些。因为在merge前,我们可以查看更新情况,然后再决定是否合并
  59. git push 远程库地址别名/远程库地址 远程分支名称
  60. 示例:git push git@gitee.com:zcfast/day23_vue_curd.git test
  61. 远程库没有此分支则创建新的分支并完成推送
  62. git push origin --delete main(远端分支名) 删除远端分支
  63. git checkout -b dev 5f8fe57 从指定版本5f8fe57创建分支dev
  64. ssh://git@gitlab.csc.com.cn:1022/csc-it/btm/btm-branch/digital/budget_management_new_oa.git
  65. ssh://git@gitlab.csc.com.cn:1022/csc-it/btm/btm-branch/digital/budget_management_new_oa.git
  66. https://gitlab.csc.com.cn/csc-it/btm/btm-branch/digital/budget_management_new_oa.git
  67. https://gitlab.csc.com.cn/csc-it/btm/btm-branch/digital/budget_management_new_oa.git
  68. gitee/github支持两种代码同步方式:httpsssh
  69. https
  70. 提交代码和下载代码时都需要输入用户名和密码
  71. ssh
  72. 首次使用ssh推需要配置秘钥
  73. ssh-keygen -t rsa
  74. 执行命令完成后,在`C:\Users\用户名\.ssh`下面生成如下名称的公钥和私钥:
  75. 公钥:需要上传到gitee/github
  76. 私服:需要配置到自己的客户端

idea中使用git

版本中的文件不想提交解决方案

  1. 方案一
  2. 1.文件是否留在本地比较重要比如.iml(idea配置文件)
  3. 2.如果文件
  4. ----不重要,可以直接删除文件
  5. ----重要,删除暂存区的文件(git rm -r --cached 文件名称/文件夹)
  6. 3.git add . 将修改的其他文件添加到暂存区中
  7. 4.git status 查看git当前暂存区状态
  8. 4.git commit 提交
  9. idea有时候会在push的时候出现一些本地库不存在文件.直接正常提交即可
  10. 方案二
  11. 1.将当前代码pushgit
  12. 2.重新clone 代码
  13. 3.将多余的文件删除后重新push一下
  14. 方案三
  15. gitignore文件后来修改配置,使文件过滤
  16. 1.删除了文件index,从track状态变为untrack状态,执行后会看到项目下所有文件
  17. git rm -r --cached .
  18. 2.将当前目录下的所有文件再addindex
  19. 注意这时候.gitignore文件就会起作用,里面配置的文件类型,将不会被addindex
  20. git add .
  21. 3.commit到本地仓
  22. git commit -m "update gitignore"

冲突处理

冲突产生的原因:

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替

我们决定使用哪一个。必须人为决定新代码内容

  1. 如果产生冲突则状态为merging 状态
  2. <<<<<<< HEAD 当前分支的代码
  3. hello git! hello atguigu! master test
  4. hello git! hello atguigu!
  5. ======= 合并过来的代码
  6. hello git! hello atguigu!
  7. hello git! hello atguigu! hot-fix test
  8. >>>>>>> hot-fix

解决方案:

  1. 文件冲突的地方解决掉后
  2. 1.命令解决
  3. git add 文件名称 将冲突的文件在此添加到暂存区(多个文件中间空格隔开)
  4. git commit -m "冲突合并" (注意此时不要附带文件的名称,不然会报错)
  5. 2.idea解决
  6. 1.选择 smart merge 解决冲突
  7. 2.commit提交

分支切换的本质:就是移动 HEAD 指针。

  1. 配置SSH 免密登录
  2. --进入当前用户的家目录
  3. Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
  4. $ cd
  5. --删除.ssh 目录
  6. Layne@LAPTOP-Layne MINGW64 ~
  7. $ rm -rvf .ssh
  8. removed '.ssh/known_hosts'
  9. removed directory '.ssh'
  10. --运行命令生成.ssh 秘钥目录[注意:这里-C 这个参数是大写的 C]
  11. Layne@LAPTOP-Layne MINGW64 ~
  12. $ ssh-keygen -t rsa -C atguiguyueyue@aliyun.com
  13. Generating public/private rsa key pair.
  14. ...
  15. +----[SHA256]-----+
  16. --进入.ssh 目录查看文件列表
  17. Layne@LAPTOP-Layne MINGW64 ~
  18. $ cd .ssh
  19. Layne@LAPTOP-Layne MINGW64 ~/.ssh
  20. $ ll -a
  21. total 21
  22. drwxr-xr-x 1 Layne 197609 0 11 25 19:27 ./
  23. drwxr-xr-x 1 Layne 197609 0 11 25 19:27 ../
  24. -rw-r--r-- 1 Layne 197609 1679 11 25 19:27 id_rsa
  25. -rw-r--r-- 1 Layne 197609 406 11 25 19:27 id_rsa.pub
  26. --查看 id_rsa.pub 文件内容
  27. Layne@LAPTOP-Layne MINGW64 ~/.ssh
  28. $ cat id_rsa.pub
  29. 复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像→SettingsSSH and GPG keys

怎么忽略与项目无关的文件?

1.创建忽略规则文件 xxxx.ignore(前缀名随便起,建议是 git.ignore)

这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用

户家目录下

git.ignore 文件模版位置 C:\Users\zc

2.在.gitconfig 文件中引用忽略配置文件(此文件在 Windows 的家目录中)

  1. [user]
  2. name = huke
  3. email = ceshi@qq.com
  4. [core]
  5. excludesfile = C:/Users/zc/git.ignore

注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”

3.之后添加或修改.gitignore文件,也不会生效

先把本地缓存删除(改变成未track状态),然后再提交

  1. git rm -r --cached .
  2. git add .
  3. git commit -m 'update .gitignore'

mybatis

xml中需要转换的特殊字符

  1. < <= > >=
  2. &lt; &lt;= &gt; &gt;=

示例:

  1. HAVING COUNT(area_user_id) &lt;= 1

问题整理

1.Vm虚拟机ip ping不到,虚拟机没有网络.

  1. 重置网络命令:dhclient -v

2.yum 安装报错no more mirrors to try

  1. 命令:
  2. yum clean all
  3. yum makecache
  4. yum -y update
  5. 重置后测试是否有网络,安装yum需要网络,没有网络就输入命令:dhclient -v

3.backspace变 ^H

  1. 删除时按ctrl+Backspace
  2. 如果控制台命令不识别,按ctrl+c退出,ctrl+u 删除一行内容

4.vm虚拟机ping不到ip,每次重启ip不一样.

  1. 命令
  2. 查看虚拟机ip:ifconfig | grep "ens33" -A 2
  3. 重启虚拟网卡:systemctl restart network
  4. 进入虚拟网卡配置文件:cd /etc/sysconfig/network-scripts/

执行后,好使

5.安装telnet

  1. yum list telnet* 列出telnet相关的安装包
  2. yum install telnet-server 安装telnet服务
  3. yum install telnet.* 安装telnet客户端

telnet ip 端口

6.防火墙开放指定端口

firewalld跟iptables比起来至少有两大好处:

1、firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;

2、firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。

firewalld跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝。而iptables里默认是每个服务是允许,需要拒绝的才去限制。

1.firewalld(建议使用)

对外开发端口

  1. 查看已开通的端口:firewall-cmd --zone=public --list-ports
  2. 查看想开的端口是否已开:firewall-cmd --query-port=6379/tcp
  3. 添加指定需要开放的端口:firewall-cmd --add-port=6379/tcp --permanent
  4. 重载入添加的端口:firewall-cmd --reload
  5. 查询指定端口是否开启成功:firewall-cmd --query-port=6379/tcp
  6. 移除指定端口:firewall-cmd --permanent --remove-port=6379/tcp
  7. 禁止开机自启:systemctl disable firewalld.service

2.iptalbes

安装iptables-services :

  1. yum install iptables-services

​ 进入下面目录进行修改:

  1. vi /etc/sysconfig/iptables

如果我们需要对外开放80端口,则上面文件中添加如下code

  1. -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

同时还需要注意的是,这段代码需要加入到

  1. -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

之后,否则端口也不能打开。

最后的配如下:

  1. # Firewall configuration written by system-config-firewall
  2. # Manual customization of this file is not recommended.
  3. *filter
  4. :INPUT ACCEPT [0:0]
  5. :FORWARD ACCEPT [0:0]
  6. :OUTPUT ACCEPT [0:0]
  7. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  8. -A INPUT -p icmp -j ACCEPT
  9. -A INPUT -i lo -j ACCEPT
  10. -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
  11. -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
  12. -A INPUT -j REJECT --reject-with icmp-host-prohibited
  13. -A FORWARD -j REJECT --reject-with icmp-host-prohibited
  14. COMMIT

编辑上面的文件 需要提供su权限.

保存上面的文件后,在终端运行如下命令:更新防火墙配置

  1. service iptables restart

下面这个命令可以看到开放的端口

  1. iptables -L -n
  1. 开启: service iptables start
  2. 关闭: service iptables stop
  3. 禁止开机自启:systemctl disable firewalld.iptables

参考:

https://www.ywnz.com/linuxaq/6055.html

7.软件的安装和卸载

https://blog.csdn.net/chunyang315/article/details/79008570

8.scrt连接速度慢

  1. linux上更改/etc/ssh/sshd_config
  2. 配置文件新增UseDNS no
  3. 注意no要为小写,大写的话配置文件启动不了

使用crt工具文件本地文件上传

方式1:

  1. 在本地d盘建立一个文件夹setup
  2. alt+p
  3. put d:/setup/xxx

方式2:

①rz和sz可以完成下载和上传功能(使用rz/sz命令,就可以抛弃ftp了)

②rz和sz命令不是linux默认自带的命令,需要我们自己安装,可以通过yum源来安装。

输入命令

  1. rz

提示没有此命令则需要安装

  1. yum -y install lrzsz

curl文件上传

  1. curl --location --request POST 'https://yybgl.csc108.com/api/budget/v1/file/upload' \
  2. --header 'Token: lbG1eXgx' \
  3. --header 'UserName: %E5%88%98%E9%80%B8%E9%9B%84' \
  4. --header 'UserPw: ceshi' \
  5. --header 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36' \
  6. --header 'content-type: multipart/form-data; boundary=----WebKitFormBoundary1hYBK5RCXPEqr7yR' \
  7. --form 'file=@"/root/data/prod.zip"' \
  8. --form 'processId=1652144674'

9.profile修改错误导致系统命令报错

改/etc/profile文件时,配置错误导致系统命令(ls,vim等)错误

重新定义环境变量此时vim可以正常使用

  1. export PATH=/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  2. source /etc/profile

将错误的配置删除后刷新配置即可

快捷键

win

  1. ctrl +shift +N 创建文件夹

idea

  1. ctrl +alt + 左键/右键 回退光标上次停留位置
  2. ctrl +alt +u 查看类的继承关系图
  3. ctrl +alt +s 打开设置
  4. new xxx.var 回车 快捷生成对象
  5. ctrl +G 跳转指定行
  6. ctrl +alt +shift +u
  7. ctrl + alt +, 全局搜索
  8. ctrl + H 查看类的继承关系

参考:https://blog.csdn.net/feiying0canglang/article/details/122766234

VSCODE 快捷键

  1. Shift+Alt+F 快捷键格式化代码

特殊单词

  1. HEXHexadecimal ,十六进制。
  2. DECDecimal ,十进制。
  3. OCTOctal ,八进制。
  4. BINBinary ,二进制。

linux使用汇总的更多相关文章

  1. linux 命令汇总

    一 Grep 命令 各种参数: -i:ignore-case忽略大小写 -c :打印匹配的行数 -l :从多个文件中查找包含匹配项 -v :查找不包含匹配项的行 -n :打印包含匹配项的行和行标 -w ...

  2. linux命令汇总1

    允许非root用户使用“sudo” root身份登录系统,执行“visudo”,根据示例添加新的一个规则(记住输入的密码是当前用户密码,而不是root密码)#不需要密码执行sudo命令hadoop   ...

  3. [Linux] Linux指令汇总(持续更新中...)

    写在前面: 以前真心没有玩过Linux系统,总感觉整天摆弄Linux的同学都是大牛.如今,在公司里实习需要远程登录Linux服务器,所有的代码都要在开发板上完成,所以被逼无奈也不得不定下心来好好学学L ...

  4. linux 知识汇总

    1 ) linux下文件系统类型的学习 2 )深入理解linux i节点(inode) 3 )RAID系列

  5. 几种功能类似Linux命令汇总

    wc 命令用于统计文本的行数.字数.字节数,格式为"wc [参数]  文本". -l 只显示行数 -w 只显示单词数 -c  只显示字节数 例:统计当前系统中的用户个数: [roo ...

  6. Linux 快捷键汇总(偏基础)

    自己最近才搭上Linux末班车,有一种想见恨晚的感觉,完全给你一种快速清爽的感觉! 因为需要,所以学习,记录自己在使用Linux系统上的点滴,偏基础! 1. 打开终端: Ctrl+Alt+T 2. 复 ...

  7. linux知识汇总

    1.     利用Ctrl+Alt+F1到Ctrl+Alt+F6在6个虚拟控制台之间切换,利用Ctrl+Alt+F7切换回图形界面. 2.     使用who命令来判断谁在系统上及其登录方式.id命令 ...

  8. Linux学习-汇总

    1.基础linux学习 Linux-基础学习(一)-基本命令 Linux-基础学习(二)-基本部署 Linux-基础学习(三)-Nginx学习 Linux-基础学习(四)-部署图书管理系统项目 Lin ...

  9. 常用LINUX命令汇总

    一.基本命令bash Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shellpwd 查看当前所在目录ls 查看目录内所有文件cd 进入目录cd .. 返回上一层p ...

  10. Linux常见问题汇总

    Linux问题: ifconfig查看IP地下载报错:bash: ifconfig: commandnotfound 解决方法: 先执行 export PATH="$PATH:/sbin&q ...

随机推荐

  1. Flink生产数据到Kafka频繁出现事务失效导致任务重启

    在生产中需要将一些数据发到kafka,而且需要做到EXACTLY_ONCE,kafka使用的版本为1.1.0,flink的版本为1.8.0,但是会很经常因为提交事务引起错误,甚至导致任务重启 kafk ...

  2. bzoj 3924

    动态点分治好题 首先我们考虑一个暴力做法: 每次修改之后选一个点作为根搜索整棵树,然后换根dp即可 考虑每次换根时,移向的点的消耗会减少子树代价之和*边权,而其余部分代价会增加剩余代价*边权 这样每次 ...

  3. kali2020-bash: openvas-setup:未找到命令 ,解决办法

    将openvas-setup命令换成 gvm-setup命令即可

  4. JAVA第六七八次大作业

         21201411-李英涵            前言:这几次的作业较为简单,主要思路就是利用正则表达式来过滤掉不需要的信息.  题量设置较为合理,比之前的多边形好做一些,应该是老师为了捞起来 ...

  5. shell中产生随机字符串的方法

    random变量 echo $RANDOM 8746 生成0-32767之间的整数随机数,若超过5位可以加个固定10位整数,然后进行求余. 再结合md5生成字符串 echo $RANDOM |md5s ...

  6. servlet - 从本地下载图片

    import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet. ...

  7. MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

    错误:Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 原因:同一个ip ...

  8. SQL语句底层执行顺序

    1. SELECT 语句的完整结构 SQL92语法: SELECT ...,....,(存在聚合函数) FROM ...,...,... WHERE 多表的连接条件 AND 不包含聚合函数的过滤条件 ...

  9. Delphi中idHttpServer

    Delphi7中测试idHttpServer,自带的idHttpServer 仅放上测试的部分代码,便于自己查看 1 unit Unit1; 2 3 interface 4 5 uses 6 Wind ...

  10. [Cisco] Policy Based Routing

    在某些情況下,會希望指定特定的來源及目的走特定的出口,卻又不是全部的網段都希望套用,這時就可以透過PBR來達成這個需求. 如以下拓樸 1.1.1.0/24的網路往5.5.5.0的封包需要指定e0/1當 ...