diff --git "a/\345\264\224\347\250\213\347\221\236/20240516Debian\345\256\211\350\243\205.md" "b/\345\264\224\347\250\213\347\221\236/20240516Debian\345\256\211\350\243\205.md" new file mode 100644 index 0000000000000000000000000000000000000000..38652400fc45b41675547aff48f3da6696ac9019 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240516Debian\345\256\211\350\243\205.md" @@ -0,0 +1,78 @@ +### 刚安装完Debian系统配置 + +主机名 login:root password:密码 进入主机 + +更新系统软件源 + +```nginx +apt update +``` + +更新系统 + +```nginx +apt upgrade -y +``` + +安装vim编辑器 + +```nginx +apt install vim -y +``` + +编辑网卡配置,设置静态IP地址 + +```nginx +vim /etc/network/interfaces + 修改如下: + #The primary network interface + allow-hotplug ens192 + iface ens192 inet static + address 192.168.174.131 //设置IP地址 + netmask 255.255.255.0 //子网掩码 + gateway 192.168.174.1 //网关 + esc键,wq 保存退出 +``` + +修改SSHD配置文件 + +```nginx +vim /etc/ssh/sshd_config + 取消下面代码注释,修改为如下: + PermitRootLogin yes #允许超级管理员登入 + esc键,wq 保存退出 +reboot now #重启 +``` + +环境变量:简单化ls的用法 + +```nginx +ls -al #查看所有文件 +cp .bashrc /etc/profile.d/ls.sh #将.bashrc移动到/etc/profile.d/并克隆为ls.sh +vim /etc/profile.d/ls.sh + 修改如下: + export LS_OPTIONS="--color=auto" + alias ls='ls $LS_OPTIONS' + alias ls='ls $LS_OPTIONS -l' + alias ls='ls $LS_OPTIONS -lA' +``` + +环境变量:设置字符集,以接收中文 + +```nginx +vim /etc/profile.d/lang.sh + 修改如下: + export LS_ALL=C.utf8 +``` + + + ++ 安装node的两种方式 + + 使用nvm管理器来管理node的版本 + + 直接从官网下载安装包来安装 + + apt install nodejs -y ++ 安装node.js包管理器 + + apt install npm -y + ++ 安装pm2 + + npm install pm2 -g \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240520Debian\347\263\273\347\273\237\351\205\215\347\275\256.md" "b/\345\264\224\347\250\213\347\221\236/20240520Debian\347\263\273\347\273\237\351\205\215\347\275\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..89f33adff8307d40bd19acc0407ab90509d4e1e0 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240520Debian\347\263\273\347\273\237\351\205\215\347\275\256.md" @@ -0,0 +1,72 @@ +### Debian系统配置 + +更新系统软件源 + +```nginx +apt update +``` + +更新系统 + +```nginx +apt upgrade -y +``` + +安装vim编辑器 + +```nginx +apt install vim -y +``` + +编辑网卡配置,设置静态IP地址 + +```nginx +vim /etc/network/interfaces + 修改如下: + #The primary network interface + allow-hotplug ens192 + iface ens192 inet static + address 192.168.174.131 //设置IP地址 + netmask 255.255.255.0 //子网掩码 + gateway 192.168.174.1 //网关 + esc键,wq 保存退出 +#这里的IP必须和主机IP处于同一网段,否则下面ssh登入不了 +``` + +修改SSHD配置文件 + +```nginx +vim /etc/ssh/sshd_config + 取消下面代码注释,修改为如下: + PermitRootLogin yes #允许超级管理员登入 + esc键,wq 保存退出 +reboot now #重启 +``` + +进入Tabby + +```nginx +#登入虚拟机Debian +ssh root@192.168.174.131 +``` + +环境变量:设置字符集,以接收中文 + +```nginx +vim /etc/profile.d/lang.sh + 修改如下: + export LS_ALL=C.utf8 +``` + +环境变量:简单化ls的用法 + +```nginx +ls -al #查看所有文件 +cp .bashrc /etc/profile.d/ls.sh #将.bashrc移动到/etc/profile.d/并克隆为ls.sh +vim /etc/profile.d/ls.sh + 把下面设置前的#删除: + export LS_OPTIONS="--color=auto" + alias ls='ls $LS_OPTIONS' + alias ls='ls $LS_OPTIONS -l' + alias ls='ls $LS_OPTIONS -lA' +``` \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240522Linux\346\246\202\350\277\260.md" "b/\345\264\224\347\250\213\347\221\236/20240522Linux\346\246\202\350\277\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..ec6545ebe66ec1762a634bb9407fe9c5f4387801 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240522Linux\346\246\202\350\277\260.md" @@ -0,0 +1,25 @@ +### Linux概述 + ++ Linux就是一个内核 ++ Linux各个发行版才是完整版,真正的操作系统 + + Debian + + Debian是一个基于开源和自由软件精神的Linux发行版 + + Ubuntu + + 基于Debian的Linux操作系统 + + RHEL (服务收费) + + Red Hat Enterprise Linux:Red Hat公司为企业级应用提供的Linux发行版 + + CentOS + + 基于Red Hat Enterprise Linux的免费开源版本,适合用作服务器和企业级应用 + + Fedora + + Red Hat的社区版 + + Arch Linux + + 基于x86-64架构的Linux发行版 + + OpenSUSE (服务收费) + + 基于SUSE Linux Enterprise的免费开源版本,适合用作服务器和桌面应用 + + Mint + + 基于Ubuntu的Linux发行版 ++ Linux优点 + + 免费 + + 可靠性高 + + 安全性高 + + 对硬件资源要求较低(CPU、内存、带宽等) \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240523linux\347\233\256\345\275\225.md" "b/\345\264\224\347\250\213\347\221\236/20240523linux\347\233\256\345\275\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..5eb8bdcbed3c01b176ded14905b1de668afa7414 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240523linux\347\233\256\345\275\225.md" @@ -0,0 +1,29 @@ +### 常用目录 + ++ /bin:存放系统核心命令(二进制文件),如ls、cd等 ++ /boot:存放系统启动所需的引导文件,包括内核文件 ++ /etc:存放系统配置文件 ++ /home:用户的家目录,每个用户都有一个子用户 ++ /root:超级用户root的家目录,root用户的个人文件和配置存储在这 ++ /var:存放系统运行时产生的变量数据,如日志文件、缓存 ++ /tmp:用于存放临时文件,系统重启会被清空,不用存放重要文件 ++ /dev:用于存放设备文件的目录,Linux中的一切皆文件 ++ /proc:虚拟文件系统 ++ /srv:存放特定服务的数据目录 + + + ++ 在虚拟机安装Debian12慢的原因 + + 1.没有开启CPU的虚拟化选项(前提CPU支持虚拟化,通过BIOS开启 VT VD) + + 2.没去去掉桌面应用的安装 + + 3.没有选择国内软件源 + +. : 当前目录 + +.. :上级目录 + +l 命令是通过环境变量简化ls命令来的 + +shell:命令行解释器 + +bash:是shell的一种变种 \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240524Linux\345\221\275\344\273\244.md" "b/\345\264\224\347\250\213\347\221\236/20240524Linux\345\221\275\344\273\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..17809f2b0f79941296bf0f7b4d5658406f7669d4 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240524Linux\345\221\275\344\273\244.md" @@ -0,0 +1,36 @@ +### Linux常用命令 + ++ 文件与目录管理 + + 路径 + + 绝对路径 + + 由根目录 / 写起,如:/usr/bin + + 相对路径 + + 不是由根目录 / 写起 + + 目录管理 + + cd:切换目录 cd /路径 + + 如:cd /home + + ls:查看当前目录下的所有文件和文件夹 + + ls -a : 查看当前目录中的所有文件和文件夹,包含隐藏文件 + + ls -l : 列表查看当前目录中的所有文件和文件夹(列表查看,更多信息) + + ls /目录名 : 查看指定目录下的所有文件和文件夹 + + pwd:查看当前的目录 + + tree:以树形结构列出指定路径下的内容 tree /路径 + + 使用tree命令需要安装:apt install tree + + mkdir:创建文件夹 + + mkdir 文件夹名 如:mkdir abc + + 创建嵌套文件夹 + + mkdir -p 文件名/文件名/文件名 如:mkdri -p aaa/bbb/ccc + + rmdir:删除空文件夹 + + rmdir /文件夹名 如:rmdir /aaa + + 删除多级空文件夹 + + rmdir -p 文件夹名/ 文件夹名/ 文件夹名 如:rmdir -p a/b/c + + rm:删除文件或文件夹cd + + rm 文件名 如:rm /aaa + + cp:复制文件或文件夹 + + cp -r 要复制的文件 复制到的文件 + + cp -r aaa bbb # 把文件aaa复制到文件bbb下 + + mv:移动文件或文件夹 + + mv 移动的文件 存放的文件 + + mv aaa bbb #把文件aaa移动到文件bbb下 + + 更改名称 + + mv aaa bbb #把文件名aaa改成文件名bbb \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240527Linux\345\270\270\347\224\250\345\221\275\344\273\244.md" "b/\345\264\224\347\250\213\347\221\236/20240527Linux\345\270\270\347\224\250\345\221\275\344\273\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..ff37166cb2e42c78bb1d01bf8dad471bb40852eb --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240527Linux\345\270\270\347\224\250\345\221\275\344\273\244.md" @@ -0,0 +1,53 @@ +### Linux常用命令2 + +#### 文件查看 + ++ cat: + + 语法:cat 文件名 + + 查看文本文件所有内容 ++ more: + + 分页查看文本文件内容 + + 语法:more 文件名 + + PgUp向上翻页,PgDown向下翻页 + + 空格向下翻页 + + Enter回车查看下一行 + + q 键退出查看 ++ less + + 分页查看文本文件内容 + + 语法:less 文件名 + + Home回到顶部,End回到底部 + + PgUp向上翻页,PgDown向下翻页 + + 空格向下翻页 + + Enter回车查看下一行 + + q 键退出查看 ++ tail + + 查看文本文件最后几行内容(默认最后10行) + + 语法:tail [-n 20] 文件名 ++ head + + 查看文本文件前面几行内容(默认最后10行) + + 语法:head [-n 20] 文件名 + +#### 文件和目录的查找 + ++ find + + 查找指定目录下的文件和目录 + + 语法:find [路径] [匹配条件(需要查看的文件或目录)] [动作] + + 如:find /etc -name cron :查看/etc目录下名为cron的文件 + + 如:find /etc -name ' *.d ':查看/etc目录下所有文件后缀为 .d 的文件 ++ locate + + 查找系统数据库中的文件和目录 + + 使用前先安装locate:apt install locate ++ whereis + + 查找指定命令所在的目录 + + 语法:whereis [-b,m,s] 命令 + + 如:whereis ls 结果:ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz + + where -b 命令 :只查找可执行文件 + + 如:whereis -b ls 结果:ls: /usr/bin/ls + + where -m 命令 :只查找帮助文档文件 + + 如:whereis -m ls 结果:ls: /usr/share/man/man1/ls.1.gz + + where -s 命令 :只查找源代码文件。 + + 如:whereis -s ls 结果:ls: ++ which + + 查找指定命令所在的目录,在环境变量path设置的目录里查找符合条件的文件 + + 语法:which 命令 + + 如:which ls :/usr/bin/ls \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240529vim\346\226\207\346\234\254\347\274\226\350\276\221.md" "b/\345\264\224\347\250\213\347\221\236/20240529vim\346\226\207\346\234\254\347\274\226\350\276\221.md" new file mode 100644 index 0000000000000000000000000000000000000000..2b471b74f6c160ff474fe205587569b1d16a208e --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240529vim\346\226\207\346\234\254\347\274\226\350\276\221.md" @@ -0,0 +1,123 @@ +### 文件和目录的分类 + +#### 文件管理 + +- 创建 + - touch 文件名 + - touch file1.txt + - 创建多个文件 + - touch 文件名{1..100} +- 删除 + - rm 文件名 + - rm file1.txt +- 复制 + + cp 要复制的文件 复制到的文件夹 + + cp aaa bbb :把文件aaa复制到文件夹bbb下 +- 移动 + + mv 移动的文件 存放的文件夹 + + mv aaa bbb :把文件aaa移动到文件夹bbb下 + + 更改名称 + + mv aaa bbb #把文件名aaa改成文件名bbb +- 查看 + - cat: + + 语法:cat 文件名 + + 查看文本文件所有内容 + - more: + + 分页查看文本文件内容 + + 语法:more 文件名 + + PgUp向上翻页,PgDown向下翻页 + + 空格向下翻页 + + Enter回车查看下一行 + + q 键退出查看 + - less + + 分页查看文本文件内容 + + 语法:less 文件名 + + Home回到顶部,End回到底部 + + PgUp向上翻页,PgDown向下翻页 + + 空格向下翻页 + + Enter回车查看下一行 + + q 键退出查看 + - tail + + 查看文本文件最后几行内容(默认最后10行) + + 语法:tail [-n 20] 文件名 + - head + + 查看文本文件前面几行内容(默认最后10行) + + 语法:head [-n 20] 文件名 + +#### 目录(文件夹)管理 + +- 查看 + - ls:查看当前目录下的所有文件和文件夹 + - ls -a : 查看当前目录中的所有文件和文件夹,包含隐藏文件 + - ls -l : 列表查看当前目录中的所有文件和文件夹(列表查看,更多信息) + - ls /目录名 : 查看指定目录下的所有文件和文件夹 + +- 创建 + - mkdir 文件夹名 如:mkdir abc + + 创建嵌套文件夹 + + mkdir -p 文件名/文件名/文件名 如:mkdri -p aaa/bbb/ccc +- 删除 + - rmdir:删除空文件夹 + + rmdir /文件夹名 如:rmdir /aaa + + 删除多级空文件夹 + + rmdir -p 文件夹名/ 文件夹名/ 文件夹名 如:rmdir -p a/b/c + - rm + - rm 文件夹名 + - rm aaa +- 复制 + - cp -r aaa bbb :把文件夹aaa复制到文件夹bbb下 +- 移动 + + mv 移动的文件 存放的文件 + + mv aaa bbb #把文件aaa移动到文件bbb下 + + 更改名称 + + mv aaa bbb #把文件名aaa改成文件名bbb + +### find 查找命令 + + + find . -atime [+n-n]:查找在n*24小时内被访问过的文件 + + find . -atime +7:查找7天前访问过的文件 + + find . -atime -7:查找7天内访问过的文件 + + find . -ctime [+n-n]:查找在 n*24 小时内状态发生变化的文件(例如权限) + + find . -ctime +7:查找7天前状态改变的文件 + + find . -ctime -7:查找7天内状态改变的文件 + + find . -mtime[+n-n]:查找在 n*24 小时内被修改过的文件 + + find . -mtime +7:查找7天前被修改的文件 + + find . -mtime -7:查找7天内被修改的文件 + + find . -mtime 0:查找当天内被修改的文件 + + find . -size [+n-n]:查找大于或小于n的文件(文件大小) + + c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB) + + find . -size -1M:查找小于1MB的文件 + + find . -size +1k:查找大于1KB的文件 + +### vi / vim文本编辑器 + ++ 命令模式(默认) + + 语法:vim 文件,就进入到了命令模式 + + 复制(拷贝): + + yy:复制当前一行内容 + + 剪切: + + dd:剪切当前一行内容 (可当删除使用) + + 粘贴: + + p:粘贴剪切板的内容到光标下方 + + P:粘贴剪切板的内容到光标上方 + + 删除: + + x:删除光标所在的字符 + + dd:删除当前一行内容 + + 撤销: + + u:撤销上一次操作 + + ctrl+r:重做上一次撤销的操作 ++ 输入模式(编辑模式) + + i :在命令模式下输入 i 切换到输入模式,在光标当前位置开始输入文本 + + a :在命令模式下输入 i 切换到输入模式,在光标下一个位置开始输入文本 + + o :在当前行的下方插入一个新行,并进入到输入模式 + + O:在当前行的上发插入一个新行,并进入到输入模式 ++ 底线命令模式 + + 语法:输入 :命令 + + :q 退出 + + :wq 保存退出 + + :set number 显示行号 + + 永久显示行号 + + vim /etc/vim/vimrc + + 进入输入模式添加:set number + + :w! 强制保存退出 + + :q! 强制退出不保存 \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240530vim\345\221\275\344\273\244.md" "b/\345\264\224\347\250\213\347\221\236/20240530vim\345\221\275\344\273\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..e1401a413c7af0c6f822b49beff4d0b7ae67898f --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240530vim\345\221\275\344\273\244.md" @@ -0,0 +1,42 @@ +## vi / vim 按键说明 + +#### 单位级 + ++ h 或 ← :光标向左移动一个单位 ++ j 或 ↓ :光标向下移动一个单位 ++ k 或 ↑ :光标向上移动一个单位 ++ l 或 → :光标向右移动一个单位 + +#### 单词级 + ++ w:光标移动到下个单词的开头 ++ e:光标移动到当前单词的结尾 ++ b:光标移动到上个单词的开头 + +#### 块级 + ++ gg :光标移动到文档第一行 + + 10gg:光标移动到文档的第10行 ++ G :光标移动到文档最后一行 ++ 0 或者 Home:光标移动到行头 ++ $ 或者 End:光标移动到行尾 ++ H:光标移动到这个屏幕的最上方那一行的第一个字符 ++ M:光标移动到这个屏幕的中央那一行的第一个字符 ++ L: 光标移动到这个屏幕的最下方那一行的第一个字符 ++ n :光标向下移动n行 + + 光标向下移动5行 + + 如:5 回车 ,如果当前行数为1,则光标移动到第6行 ++ n:光标向右移动当前行n个字符 + + 光标向右边移动10个字符 + + 如:10 空格 + +### 搜索 + ++ / abc :光标向下搜索名称为abc的字符串 ++ ? abc :光标向上搜索名称为abc的字符串 ++ n:这个 n 是英文按键。代表重复前一个搜寻的动作。 + + 如果执行 /abc 去向下搜寻 abc 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 abc 的字符串。 + + 如果执行 ?abc 的话,那么按下 n 则会向上继续搜寻名称为 abc 的字符串! ++ N:这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 + + 如: /abc 后,按 N 则表示『向上』搜寻 abc。 + + 如: ?abc 后,按 N 则表示『向下』搜寻 abc。 \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240531vim\345\237\272\347\241\200\345\221\275\344\273\244.md" "b/\345\264\224\347\250\213\347\221\236/20240531vim\345\237\272\347\241\200\345\221\275\344\273\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..9dd19c6f806e3e6f7fee123f8fc22b77c0edcedc --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240531vim\345\237\272\347\241\200\345\221\275\344\273\244.md" @@ -0,0 +1,85 @@ +## vim基础命令 + ++ 行内查找 + + fc:把光标移到同一行的下一个c字符处 + + Fc:把光标移到同一行的上一个c字符处 + + tc:把光标移到同一行的下一个c字符前 + + Tc:把光标移到同一行的上一个c字符后 ++ 复制 + + yy 或者 Y:复制光标当前整行 + + yw:复制一个单词,光标必须在单词首部 + + yG:从当前光标复制到文件尾部 + + y1G:从当前光标复制到文件尾部 ++ 粘贴 + + p :粘贴到当前光标下一行 + + P :粘贴到当前光标上一行 ++ 删除 + + x:删除光标前一个字符 + + X:删除光标前后一个字符 + + dd:删除光标当前整行 + + 10dd:删除光标行下10行字符 + + D:删除光标到行尾 + + dw:删除光标所在的一个单词,光标必须在单词首部 + + de:删除到单词结尾 + + dG:删除当前光标行到文件尾部 + + dgg:删除当前光标行到文件首部 + + : 1,10d :删除1到10行 + + cc :删除当前行保存到剪切板并进入插入模式 ++ 查找替换 + + r :将当前字符替换为x + + : %s / a / b :把文件每行首个a替换成b + + : %s / a / b / g :把文件全部a替换成b + + : 1,10s / a / b :在1到10行内,把a替换成b ++ 大小写转换 + + gu:大转小 + + gue:把光标到单词末尾的字符变小 + + + gU:小转大 + + gUe:把光标到单词末尾的字符变大 + + + guiw:把当前单词全部变小 + + gUiw:把当前单词全部变大 + + ~ :大小写互换 ++ 撤销 + + u :撤回上一次操作 + + ctrl+r:重做u ++ 合并 + + J :合并当前行和下一行 ++ 缩进 + + `>>`:当前行向右缩进 + + 3>> :当前行开始数3行向右缩减 + + + `<<`:当前行向左缩进 + + `>G`:当前行到文档末尾向右缩进 + + ` 将ti.txt这个文件的所有者更改为user001 + + chown user001 wwb -------> 将wwb这个目录的所有者更改为user001 + +- 如何修改文件或者文件夹所属组: + + -R:递归修改目录下所有文件的所属组 + + chgrp wwb test.txt/ -------> 将test.txt这个文件的所属组改为wwb + + \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240606\347\211\271\346\256\212\346\235\203\351\231\220\345\221\275\344\273\244.md" "b/\345\264\224\347\250\213\347\221\236/20240606\347\211\271\346\256\212\346\235\203\351\231\220\345\221\275\344\273\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..d3f4b7abe8d5c748e2c635a8e9a5d1db7c69fc4b --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240606\347\211\271\346\256\212\346\235\203\351\231\220\345\221\275\344\273\244.md" @@ -0,0 +1,198 @@ +### 权限修改:chmod + +- 增加权限:chmod o+(r/w/x) 文件名.文件类型 +- 修改拥有者权限:chown(u) +- chown 用户名 文件名.文件类型 + + 修改所属组权限:chgrp(g)-->change group + +- chgrp 用户名 文件名.文件类型 + +-rm-r--r--:拥有者权限、所属组的用户权限(代表所属组的用户权限,都具有第二块属性的权限) + +- x:代表1(可执行) +- w:代表2(只写) +- r:代表4(只读) + +### 特殊权限 + +- 使用suid让普通用户以root或其他用户角色运行只有root或其他账号才能运行的命令或程序 +- 使用字符S和s来设置特殊权限,其中s与x位置相同,均在一组3位编码的最后一位 +- 使用o+t来设置特殊权限 +- 使用g+s来改变文件或目录的所属组 +- 使用chattr +i来锁定文件,使其不能编辑、修改、删除或移动 + +##### + +### 权限管理练习 + +1. 创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令) + + ##### 答案:mkdir -p /guanli/{zonghe,jishu} + +2. 添加组帐号zonghe、caiwu、jishu,GID号分别设置为2001、2002、2003 + + ##### 答案: + + ``` + -g:对组账号gid设置 + + root@robin:~# groupadd -g 2001 zonghe root@robin:~# groupadd -g 2002 caiwu root@robin:~# groupadd -g 2003 jishu + ``` + +3. 创建jerry、kylin、tsengia、obama用户,其中的kylin用户帐号在2020年12月30日后失效 + + ##### 答案: + + ``` + -e:指定用户账号的失效时间 + chage -l kylin:查看用户过期时间 + + root@robin:~# useradd jerry root@robin:~# useradd -e 2020-12-30 kylin root@robin:~# useradd tsengia root@robin:~# useradd obama + ``` + +4. 将jerry、kylin、tsengia、obama等用户添加到zonghe组内 + + ##### 答案: gpasswd -M jerry,kylin,tsengia,obama zonghe + +5. 创建handy、cucci用户,其中cucci帐号的登录Shell设置为“/sbin/nologin” + + ##### 答案: + + ``` + -s:指定登录用户的shell + cat /etc/passwd:查看登录用户的shell + + root@robin:~# useradd handy root@robin:~# useradd -s /sbin/nologin cucci + ``` + +6. 将handy、cucci等用户添加到jishu组内 + + ##### 答案:gpasswd -M handy,cucci jishu + +7. 将上述的所有用户均要求加入到guanli组内 + + ##### 答案: + + ``` + groupadd guanli root@robin:~# gpasswd -M jerry,kylin,tsengia,obama,handy,cucci guanli + ``` + +8. 将zonghe组内的obama用户删除 + + ##### 答案: + + ``` + -d从组内删除一个组成员 + root@robin:~# gpasswd -d obama zonghe 正在将用户“obama”从“zonghe”组中删除 + ``` + +9. 为jerry用户设置密码为“123456”(使用普通方法)为cucci用户设置密码为“redhat” + + ##### 答案: + + ``` + root@robin:~# passwd jerry + 新的密码: 重新输入新的密码: passwd:已成功更新密码 + + echo "cucci:redhat" | chpasswd + + ``` + +10. 将jerry用户锁定,并查看锁定状态[root@localhost chen]# usermod -L jerry + + ##### 答案: + + ``` + -S:产看用户状态 + -L:锁定用户状态 + root@robin:~# usermod -L jerry root@robin:~# passwd -S jerry jerry L 2024-06-06 0 99999 7 -1 (密码已被锁定) + ``` + +11. 打开两个xshell窗口,通过(who 或者 w)命令查看连接状态,并通过fuser杀掉其中一个 + + ##### 答案: + + ``` + -k: kill正在使用的某一指定的路径 + sudo apt update + sudo apt install psmisc + fuser -k /dev/pts/2 + ``` + + + +12. 查看cucci用户,属于那些组,并查看其详细信息 + + ##### 答案: + + ``` + groups cucci + finger cucci + ``` + + + +13. 手工创建账号student(预留) + + ##### 答案: + + ``` + root@robin:~# vi /etc/passwd + student:x:1014:1014::/home/student:/bin/bash + root@robin:~# vi /etc/shadow + student::18107:0:99999:7::: + root@robin:~# vi /etc/group + student:x:1014: + root@robin:~# mkdir /home/student root@robin:~# cd /etc/skel/ root@robin:/etc/skel# ls -a | cp .b* /home/student/ + ``` + +14. 设置权限及归属:/guanli目录属组设为guanli, /guanli/zonghe目录的属组设为zonghe /guanli/jishu目录的属组设为jishu,设置3个目录都是禁止其他用户访问的权限 + + ##### 答案: + + $$ + + $$ + + ``` + root@robin:/etc/skel# chown :guanli /guanli &&chown :zonghe /guanli/zonghe/ &&chown :jishu /guanli/jishu/ && chmod -R o-rwx /guanli/ + ``` + + + +15. 建立公共目录/ceshi允许技术组内的所有用户读取、写入、执行文件, 禁止其他用户读、写、执行 + + ##### 答案: + +16. 清除jerry用户密码 + + ##### 答案:passwd -d jerry + +17. 锁定cucci用户密码并查看状态 + + ##### 答案: + + ``` + root@robin:~# usermod -L cucci 或者 root@robin:~# passwd -l cucci ----锁定 root@robin:~# passwd -S cucci ----查看状态 + cucci L 2024-06-06 0 99999 7 -1 (密码已被锁定) + ``` + +18. 修改obama用户的UID为8888 + + ##### 答案:usermod -u 8888 obama + +19. 通过passwd命令修改kylin用户的最长密码使用期限为60天 + + ##### 答案:passwd -x 60 kylin + +20. 通过id groups等命令查看用户handy信息 + + ##### 答案: + +``` +root@robin:~# id handy uid=1008(handy) gid=1008(handy) 组=1008(handy),2003(jishu),2004(guanli) + +root@robin:~# groups handy handy : handy jishu guanli +root@robin:~# finger handy Login: handy Name: Directory: /home/handy Shell: /bin/sh Never logged in. No mail. No Plan. root@robin:~# +``` \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240607\351\232\220\350\227\217\346\235\203\351\231\220.md" "b/\345\264\224\347\250\213\347\221\236/20240607\351\232\220\350\227\217\346\235\203\351\231\220.md" new file mode 100644 index 0000000000000000000000000000000000000000..86187cddb837a54a5fe09c5cd3f142bd39bf67b4 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240607\351\232\220\350\227\217\346\235\203\351\231\220.md" @@ -0,0 +1,62 @@ +umask:指定用户创建文件/文件夹时的掩码 + +- SUID:只对可执行文件有效; + +- SGID:对执行文件和目录都有效; + +- SBIT:只对目录有效 + +### 隐藏权限 + +1. ##### chattr(设置文件的隐藏权限): + +``` +创建一个普通文件,立即删除(肯定会成功) +echo "fffff" > test +rm test +``` + +``` +创建一个普通文件,并为其设置“不允许删除与覆盖”(+a参数)权限,立即删除(会失败) +echo "ffffff" > test +chattr +a test +rm test +rm: cannot remove 'test': Operation not permitted ——> rm:无法删除“test”:不允许操作 +``` + +- +i:无法对文件进行修改:若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件 +- +a:仅允许补充(追加)内容,无法覆盖 / 删除内容 +- +S:文件内容在变更后立即同步到硬盘 +- +s:彻底从硬盘中删除,不可恢复(用零块填充原文件所在的硬盘区域) +- +u:当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 +- +D:检查压缩文件中的错误 + + + +2. ##### lsattr(查看文件的隐藏权限) + +## 周期任务管理 + +1. *:表示匹配该域的任意值 +2. ?:只能用DayofMonth和DayofWeek两个域 +3. -: 表示范围 +4. / : 表示起始时间开始触发,然后每隔固定时间触发一次 +5. ,: 表示列出枚举 +6. L : 表示最后,在DayofMonth和DayofWeek域 +7. W : 表示有效工作日,在DayofWeek域 + + + +### at命令: + +- at now + 10 minutes:在当前时间的10分钟后执行命令 +- at -l:列出当前用户的at任务 +- at -r:删除当前用户的at任务 + + + +#### 在当前时间的10分钟后执行backup.sh脚本 + +- at now + 10 minutes +- at> /path/to/backup.sh +- at> Ctrl+D \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240612\345\221\250\346\234\237\344\273\273\345\212\241\347\256\241\347\220\206.md" "b/\345\264\224\347\250\213\347\221\236/20240612\345\221\250\346\234\237\344\273\273\345\212\241\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..0c82842d5b5c3c02ce20ec5c775ef28970f1d5c7 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240612\345\221\250\346\234\237\344\273\273\345\212\241\347\256\241\347\220\206.md" @@ -0,0 +1,169 @@ +### 周期任务管理 + +概念:有周期性地、 有规律地执行某些具体任务 + +```java +//语法: +* * * * * 命令 +分 时 日 月 星期 命令 + //例如:10 6 * * * echo "你好" >> /a/a.test 表示每天6点10分执行追加语句到文件夹a里面的a.test文件 +注意:日和星期不能同时设置,会冲突 + +//取值范围: + 分:0-59 + 时:0-23 + 日:1-31 + 月:1-12 + 星期:0-7,0和7都代表星期天 + 命令:需要做的任务 +``` + ++ 分类 + + 系统级 + + /etc/cron.weekly + + /etc/cron.daily + + ... + + 用户级 + + /var/spool/cron/crontabs/root ,root用户的周期任务 + ++ 配置周期任务 + + 编辑: + + crontab -e + + 查看: + + crontab -l + + 删除: + + crontab -r + ++ 特殊字符 + + ' * ':表示所有 + + 例如:5 * * * * * 命令,表示每5分钟执行一次命令 + + + ' , ':代表多个时段 + + 例如:放到分钟 (5,10,15) 表示5,10,15分钟 执行命令 + + 例如:放到月份 (8,10,12) 表示8,10,12月 执行命令 + + + ' - ':表示一段连续的时间周期 + + 例如:放到分钟 (5-10) 表示5到10分钟执行命令 + + 例如:放到天数 (5-10) 表示每个月5到10号执行命令 + + + ' / ':表示执行命令的间隔 + + 例如: */2 ,表示每过两分钟执行一次命令 + + 例如: 10-20/2 ,表示10到20分钟内每过两分钟执行一次命令 + + + ' ? ':表示任意字符 + + **练习** + + 每天3:00执行一次 + + ``` + * 3 * * * + ``` + + 每周六2:00执行 + + ``` + * 2 * * 6 + ``` + + 每周六1:05执行 + + ``` + 5 1 * * 6 + ``` + + 每周六1:25执行 + + ``` + 25 1 * * 6 + ``` + + 每天8:40执行 + + ``` + 40 8 * * * + ``` + + 每天3:50执行 + + ``` + 50 3 * * * + ``` + + 每周一到周五的3:40执行 + + ``` + 40 3 * * 1-5 + ``` + + 每周一到周五的3:41开始,每10分钟执行一次 + + ``` + 41 3 * * 1-5 + */10 4-23 * * 1-5 + ``` + + 每天的10:31开始,每2小时执行一次 + + ``` + 31 10-22/2 * * * + ``` + + 每周一到周三的9:30执行一次 + + ``` + 30 9 * * 1-3 + ``` + + 每周一到周五的8:00,每周一到周五的9:00执行一次 + + ``` + * 8,9 * * 1-5 + ``` + + 每天的23:45分执行一次 + + ``` + 45 23 * * * + ``` + + 每周三的23:45分执行一次 + + ``` + 45 23 * * 3 + ``` + + 每周一到周五的9:25到11:35、13:00到15:00之间,每隔10分钟执行一次 + + ``` + 25-35/10 9-11 * * 1-5 + */10 13-15 * * 1-5 + ``` + + 每周一到周五的8:30、8:50、9:30、10:00、10:30、11:00、11:30、13:30、14:00、14:30、15:00分别执行一次 + + ``` + 30 8,9,10,11,13,14 * * 1-5 + 50 8 * * 1-5 + * 10,11,14,15 * * 1-5 + ``` + + 每天16:00、10:00执行一次 + + ``` + * 10,16 * * * + ``` + + 每天8:10、16:00、21:00分别执行一次 + + ``` + * 16,21 * * * + 10 8 * * * + ``` + + 每天7:47、8:00分别执行一次 + + ``` + 47 7 * * * + * 8 * * * + ``` \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240613\347\216\257\345\242\203\345\217\230\351\207\217.md" "b/\345\264\224\347\250\213\347\221\236/20240613\347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..21e2d7f5195c9b33bc6e3bc1e142dcfb2f2dd61c --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240613\347\216\257\345\242\203\345\217\230\351\207\217.md" @@ -0,0 +1,59 @@ +### 环境变量 + +环境变量是操作系统在运行的时候,记录的一些关键性信息,用于辅助系统运行 + +环境变量是一种KeyValue型结构,即 名称=值 + ++ 通过 $ 符号 可以取出环境变量的值 + + echo $PATH + ++ env + + 查看当前系统中记录的环境变量 + +- 分类 + - 生命周期分类 + - 永久生效 /etc/profile文件中 + - 临时变量,针对当前用户生效,配置在当前用户的: ~/.bashrc文件中 + - 自行定义环境变量 + + 语法:export 变量名 = 变量值 + + export LC_ALL = C.utf8 + + 查看 + + echo LC_ALL + + 结果为:C.utf8 + + - 作用域分类 + - 系统级 + - 针对所有用户生效,配置在系统的: /etc/profile.d/xxx.sh + + - 用户级 + - 针对当前用户生效,配置在当前用户的: ~/.bashrc文件中 + +- source .bashrc + - 将环境变量立刻生效 + + ++ 删除环境变量 + + unset 环境变量名 + ++ 常用变量 + + + PATH:执行命令时要搜索的目录列表 + + + ``` + /usr/local/sbin + /usr/local/bin + /usr/sbin + /usr/bin + /sbin + /bin + ``` + + + HOME:当前用户的主目录 + + + LANG:当前的语言环境设置 + + + SHELL:当前用户外壳程序的路径 + + + EDITOR:默认文件编辑器 + + + USER:当前登录的用户 \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240614\350\277\233\347\250\213\347\256\241\347\220\206.md" "b/\345\264\224\347\250\213\347\221\236/20240614\350\277\233\347\250\213\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..89a60e226ab603522974c5800ac47b422cce6b77 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240614\350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -0,0 +1,40 @@ +## 进程管理 + +每一个程序在运行的时候,便被操作系统注册为系统中的一个 **进程**,并给每个进程分配一个独有的**进程ID**(**进程号**) + ++ UID:进程所属的用户ID ++ PID:进程的进程号ID ++ PPID:进程的父ID(启动此进程的其它进程) ++ C:此进程的CPU占用率(百分比) ++ STIME:进程的启动时间 ++ TTY:启动此进程的终端序号,如显示?表示非终端启动 ++ TIME:进程占用CPU的时间 ++ CMD:进程对应的名称或启动路径或启动命令 + + + ++ 查看进程 + + + ps [-ef] + + -e:显示出全部的进程 + + -f:以完全格式化的形式展示信息(展示全部信息) + + 固定用法就是:ps -ef 列出全部进程的全部信息 + ++ 查看指定进程 + + ps -ef | grep 关键字 + ++ 关闭进程 + + kill [-1、2、3、9、15、17、18] PID + + + -1:挂起信号,通常用于重启或重新加载进程 + + -2:中断信号,通常由Ctrl+C发送给前台进程 + + -3:退出信号,通常由Ctrl+\发送给前台进程 + + -9:表示强制关闭进程 + + -17:停止信号,暂停进程的执行,可以使用kill -CONT恢复执行。 + + -18:继续信号,恢复被停止的进程的执行。 + + + kill -l :显示信号 + ++ 实时查看进程 + + + top \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240619\346\234\215\345\212\241\347\256\241\347\220\206.md" "b/\345\264\224\347\250\213\347\221\236/20240619\346\234\215\345\212\241\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..3cf632adaf3f3d4f7aa2014ff9a6bfcd1d7d0c05 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240619\346\234\215\345\212\241\347\256\241\347\220\206.md" @@ -0,0 +1,66 @@ +### 日常管理命令 + +- 启用 systemctl start 服务的名称 +- 停用 systemctl stop 服务的名称 +- 重启 systemctl restart 服务的名称 +- 状态 systemctl status 服务的名称 + +### 服务配置语法和示例 + +是操作系统中一组特殊的应用,当在运行的时候,一般不提供界面,只工作在后台,并且不会随终端的退出而退出 + + + +### 压缩和解压缩 + +- 打包 tar + +- 压缩 tar -czvf 压缩文件名.tar.gz 要压缩的文件或目录 + + - -c:创建新的 tar 归档文件 + - -z:使用 gzip 压缩算法 + - -v:显示详细信息 + - -f:指定归档文件名 + +- 解压缩 tar -xzvf 归档文件名.tar.gz + + - -x:从 tar 归档文件中提取文件 + - -z:使用 gzip 解压缩算法 + - -v:显示详细信息 + - -f:指定归档文件名 + + + + + + ### 磁盘管理 + + - du + - df + - fdisk + + + + 软链接:ln -s 文件 软链接文件 + + - 以路径的形式存在,类似于Windows操作系统中的快捷方式 + + - 可以 跨文件系统 ,硬链接不可以 + + - 可以对目录进行链接 + + + + 硬链接:ln 文件 软链接文件 + + - 以文件副本的形式存在,但不占用实际空间 + - 不允许给目录创建硬链接 + - 只有在同一个文件系统中才能创建 + + + + + + + + \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240624\345\216\213\347\274\251\350\247\243\345\216\213\347\243\201\347\233\230\347\256\241\347\220\206.md" "b/\345\264\224\347\250\213\347\221\236/20240624\345\216\213\347\274\251\350\247\243\345\216\213\347\243\201\347\233\230\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..2a475190d2d1926ea1016dc7da3529ad79e24d0f --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240624\345\216\213\347\274\251\350\247\243\345\216\213\347\243\201\347\233\230\347\256\241\347\220\206.md" @@ -0,0 +1,12 @@ +## 压缩解压 ++ tar:通常与其他压缩命令一起使用来压缩和解压缩文件和目录。 +-c: 建立压缩档案 +-x:解压 +-t:查看内容 +-r:向压缩归档文件末尾追加文件 +-u:更新原压缩包中的文件 +## 磁盘管理 ++ Linux 磁盘管理常用三个命令为 df、du 和 fdisk。 ++ df:检查文件系统的磁盘空间占用情况 ++ du:Linux du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看。 ++ fdisk:是 Linux 的磁盘分区表操作工具。 \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240701Linux\345\256\211\350\243\205MySQL.md" "b/\345\264\224\347\250\213\347\221\236/20240701Linux\345\256\211\350\243\205MySQL.md" new file mode 100644 index 0000000000000000000000000000000000000000..0a7b5dc12e7d08c9b552bf816a1bec1c18a6771d --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240701Linux\345\256\211\350\243\205MySQL.md" @@ -0,0 +1,12 @@ +#### Debian 安装mysql 8.0 ++ 1.下载mysql的deb包 + ++ 2.非Linux本机下载 - 下载以后使用scp上传到指定目录 + ++ 3.安装deb包,形成软件源文件 /etc/apt/sources.list.d/mysql.list + ++ 4.更新apt update,安装mysql apt install mysql-server + ++ 5.重启sql服务 + ++ 6.安装完成后,使用如下命令可以本地连接到数据库 mysql -u root -p \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240702mysql\350\277\234\347\250\213\347\231\273\345\275\225.md" "b/\345\264\224\347\250\213\347\221\236/20240702mysql\350\277\234\347\250\213\347\231\273\345\275\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..717156aa9191059ca9f0fc28f76ffad699b79bc9 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240702mysql\350\277\234\347\250\213\347\231\273\345\275\225.md" @@ -0,0 +1,15 @@ +### mysql远程登录 ++ update user set host='%' where user='root'; + ++ grant all on root.* to 'root'@'%'; + +### 增删改查 ++ 创建: create(创建数据库) + ++ 增:insert(插入表数据) + ++ 删:drop、delete(删除表、删除表数据) + ++ 改:update、alter(更改表数据、插入新字段) + ++ 查:select、show、describe/desc(查询表数据、查看所有表、查看表结构) \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240703postgresql.md" "b/\345\264\224\347\250\213\347\221\236/20240703postgresql.md" new file mode 100644 index 0000000000000000000000000000000000000000..27497d32dab956302bfd00402ca4bfd8ec007296 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240703postgresql.md" @@ -0,0 +1,76 @@ +## 安装postgresql + +1. apt install -y postgresql-common + +2. ``` + /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh 点回车 + ``` + +3. apt install postgrepsql + +4. 进入postgresql:su postgres + +5. psql + +6. \l:列出当前所有数据库 \c:连接数据库 \dt:查看数据库 + + + +## 远程登录 + +删除postgres密码:sudo passwd -d postgres + +更改postgres密码:sudo -u postgres passwd + +``` +修改密码 +sudo -u postgres psql +ALTER USER postgres WITH PASSWORD 'postgres'; +``` + +1. vim /etc/postgresql/版本号/main/postgresql.conf + +2. 找到#listen_addresses = 'localhost' 取消注释,改为listen_addresses = '*' + +3. vim /etc/postgresql/16/main/pg_hba.conf + +4. 在文件末尾添加以下行,允许所有IP地址通过密码连接:host all all 0.0.0.0/0 md5 + +5. sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT -- 开放5432端口 + +6. 服务器需要设置安全组端口 + +7. ``` + ststemctl status firewalld --- 查看防火墙是运行 + firewall-cmd --add-port=3306/tcp --permanent -- 添加需要开放的端口 + firewall-cmd --reload -- 重新载入添加的端口 + firewall-cmd --query-port=3306/tcp -- 查询端口是否开启 + ``` + + + + + + + +## 创建1000万条数据 + +``` + +标题、内容、作者、出版时间、昵称、头像 +create database abc; +use abc; +create table blog ( +title varchar(255), +content varchar(255), +author varchar(255), +publishedtime timestamp, +nickname varchar(255), +avatar varchar(255) +); + + +EXPLAIN (ANALYZE, TIMING) insert into blog select generate_series(1,10000000),md5(random()::varchar),md5(random()::varchar),clock_timestamp(),md5(random()::varchar),md5(random()::varchar); + +插入时间:63.1s 55529.030 ms +``` \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240704postgresql\344\275\234\344\270\232.md" "b/\345\264\224\347\250\213\347\221\236/20240704postgresql\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..28c614d60cc4ad1ba510350c5f8a8fb916b6b230 --- /dev/null +++ "b/\345\264\224\347\250\213\347\221\236/20240704postgresql\344\275\234\344\270\232.md" @@ -0,0 +1,59 @@ +### 写一个自义函数,要求传入一个1到30到正整数,返回指定参数个的随机字符 + +```` + +string_agg:连接字符串 + +``` +create or replace function gen_hanzi(int) +returns text as $$ +declare -- 局部变量 + res text; +begin + if $1 >=1 then + select string_agg(chr(int4(random()*25)+65), '') into res from generate_series(1,$1); + return res; + end if; + return null; +end; +$$ language plpgsql strict; + +select gen_hanzi(3); +``` + +``` +create or replace function random_string(integer) +returns text as +$$ + select upper(array_to_string(array(select substring('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' FROM (ceil(random()*62))::int FOR 1) FROM generate_series(1, $1)), '')); +$$ +language sql; + +select random_string(5); + + + +```` + + + +### 自定义函数,要求随机返回1到30位的英文字符,最少返回一个,最多长度30 + +``` + +create or replace function random_text1() +returns text as $$ +declare +res text; +begin + select string_agg(chr(int4(random()*25)+65),'') into res from generate_series(1,(select floor(random()*30+1)::int)); + return res; +end; +$$ language plpgsql; + + +select random_text1(); + +``` + +## \ No newline at end of file diff --git "a/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164216.jpg" "b/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164216.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..c48074551854bac097b53aa086332e3a364d6675 Binary files /dev/null and "b/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164216.jpg" differ diff --git "a/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164220.jpg" "b/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164220.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..99392fd125cc849f621a22b27439ecf993f9c571 Binary files /dev/null and "b/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164220.jpg" differ diff --git "a/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164222.jpg" "b/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164222.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..24efb9791e774bb3385e7763ccba5a6adc92ee2e Binary files /dev/null and "b/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164222.jpg" differ diff --git "a/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164224.jpg" "b/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164224.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..1bba6393ae17499dd4d702d8630c829264205f2d Binary files /dev/null and "b/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164224.jpg" differ diff --git "a/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164226.jpg" "b/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164226.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..e91fee3b6a1824dfe2327296c5ccb862c9e7e54b Binary files /dev/null and "b/\345\264\224\347\250\213\347\221\236/20240705\345\244\232\345\217\260\350\231\232\346\213\237\346\234\272\345\220\257\345\212\250/\345\276\256\344\277\241\345\233\276\347\211\207_20240708164226.jpg" differ