From 7319fcf8a5b7c6ba11dd831089023dd37eab34ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=9E=97=E6=9D=B0?= <11763960+zhu-linjin9@user.noreply.gitee.com> Date: Wed, 10 Jul 2024 16:41:51 +0800 Subject: [PATCH] bj --- ...20\350\227\217\346\235\203\351\231\220.md" | 62 +++++++ ...73\345\212\241\347\256\241\347\220\206.md" | 169 ++++++++++++++++++ ...57\345\242\203\345\217\230\351\207\217.md" | 59 ++++++ ...33\347\250\213\347\256\241\347\220\206.md" | 40 +++++ ...15\345\212\241\347\256\241\347\220\206.md" | 66 +++++++ ...01\347\233\230\347\256\241\347\220\206.md" | 12 ++ ...0701Linux\345\256\211\350\243\205MySQL.md" | 18 ++ ...34\347\250\213\347\231\273\345\275\225.md" | 25 +++ .../20240703postgresql.md" | 93 ++++++++++ ...0704postgresql\344\275\234\344\270\232.md" | 54 ++++++ 10 files changed, 598 insertions(+) create mode 100644 "\346\234\261\346\236\227\346\235\260/20240607\351\232\220\350\227\217\346\235\203\351\231\220.md" create mode 100644 "\346\234\261\346\236\227\346\235\260/20240612\345\221\250\346\234\237\344\273\273\345\212\241\347\256\241\347\220\206.md" create mode 100644 "\346\234\261\346\236\227\346\235\260/20240613\347\216\257\345\242\203\345\217\230\351\207\217.md" create mode 100644 "\346\234\261\346\236\227\346\235\260/20240614\350\277\233\347\250\213\347\256\241\347\220\206.md" create mode 100644 "\346\234\261\346\236\227\346\235\260/20240619\346\234\215\345\212\241\347\256\241\347\220\206.md" create mode 100644 "\346\234\261\346\236\227\346\235\260/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" create mode 100644 "\346\234\261\346\236\227\346\235\260/20240701Linux\345\256\211\350\243\205MySQL.md" create mode 100644 "\346\234\261\346\236\227\346\235\260/20240702mysql\350\277\234\347\250\213\347\231\273\345\275\225.md" create mode 100644 "\346\234\261\346\236\227\346\235\260/20240703postgresql.md" create mode 100644 "\346\234\261\346\236\227\346\235\260/20240704postgresql\344\275\234\344\270\232.md" diff --git "a/\346\234\261\346\236\227\346\235\260/20240607\351\232\220\350\227\217\346\235\203\351\231\220.md" "b/\346\234\261\346\236\227\346\235\260/20240607\351\232\220\350\227\217\346\235\203\351\231\220.md" new file mode 100644 index 0000000..86187cd --- /dev/null +++ "b/\346\234\261\346\236\227\346\235\260/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/\346\234\261\346\236\227\346\235\260/20240612\345\221\250\346\234\237\344\273\273\345\212\241\347\256\241\347\220\206.md" "b/\346\234\261\346\236\227\346\235\260/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 0000000..0c82842 --- /dev/null +++ "b/\346\234\261\346\236\227\346\235\260/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/\346\234\261\346\236\227\346\235\260/20240613\347\216\257\345\242\203\345\217\230\351\207\217.md" "b/\346\234\261\346\236\227\346\235\260/20240613\347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000..21e2d7f --- /dev/null +++ "b/\346\234\261\346\236\227\346\235\260/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/\346\234\261\346\236\227\346\235\260/20240614\350\277\233\347\250\213\347\256\241\347\220\206.md" "b/\346\234\261\346\236\227\346\235\260/20240614\350\277\233\347\250\213\347\256\241\347\220\206.md" new file mode 100644 index 0000000..89a60e2 --- /dev/null +++ "b/\346\234\261\346\236\227\346\235\260/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/\346\234\261\346\236\227\346\235\260/20240619\346\234\215\345\212\241\347\256\241\347\220\206.md" "b/\346\234\261\346\236\227\346\235\260/20240619\346\234\215\345\212\241\347\256\241\347\220\206.md" new file mode 100644 index 0000000..3cf632a --- /dev/null +++ "b/\346\234\261\346\236\227\346\235\260/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/\346\234\261\346\236\227\346\235\260/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/\346\234\261\346\236\227\346\235\260/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 0000000..2a47519 --- /dev/null +++ "b/\346\234\261\346\236\227\346\235\260/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/\346\234\261\346\236\227\346\235\260/20240701Linux\345\256\211\350\243\205MySQL.md" "b/\346\234\261\346\236\227\346\235\260/20240701Linux\345\256\211\350\243\205MySQL.md" new file mode 100644 index 0000000..3ef471f --- /dev/null +++ "b/\346\234\261\346\236\227\346\235\260/20240701Linux\345\256\211\350\243\205MySQL.md" @@ -0,0 +1,18 @@ +#### Debian 安装mysql 8.0 +## Debian安装mysql(非Linux本机下载) + ### 1.官网下载mysql的deb包 + + ### 2.下载以后使用scp上传到指定目录 + #### scp .\mysql-apt-config_0.8.30_all.deb root@192.168.77.131:/root + #### ls-alh 命令查看有无上传成功 + + ### 3. 安装下载的发布包 + #### dpkg-i mysql-apt-config_0.8.30_all.deb + +### 4.更新apt update,安装mysql apt install mysql-server + +### 5.重启sql服务 +#### 重启服务: systemctl restart mysql +#### 检查服务状态:server mysql status + +### 6.安装完成后,使用如下命令可以本地连接到数据库 mysql -u root -p \ No newline at end of file diff --git "a/\346\234\261\346\236\227\346\235\260/20240702mysql\350\277\234\347\250\213\347\231\273\345\275\225.md" "b/\346\234\261\346\236\227\346\235\260/20240702mysql\350\277\234\347\250\213\347\231\273\345\275\225.md" new file mode 100644 index 0000000..d58e085 --- /dev/null +++ "b/\346\234\261\346\236\227\346\235\260/20240702mysql\350\277\234\347\250\213\347\231\273\345\275\225.md" @@ -0,0 +1,25 @@ +# mysql远程登录 +## 1.授予远程登录用户权限 +### update user set host='%' where user='root'; +### grant all on root.* to 'root'@'%'; +## 2.刷新权限 +### flush privileges +## 3.在防火墙中允许MySQL端口 +### ufw allow 3306/tcp + +## 增删改查 +``` +插入数据: +insert table_name (column1, column2, ...) values (value1, value2, ...); + +查询数据: +select * from table_name where condition; + +更新数据: +update table_name SET column1 = value1 where condition; + +删除数据: +delete from table_name WHERE condition; + + +``` \ No newline at end of file diff --git "a/\346\234\261\346\236\227\346\235\260/20240703postgresql.md" "b/\346\234\261\346\236\227\346\235\260/20240703postgresql.md" new file mode 100644 index 0000000..206ed06 --- /dev/null +++ "b/\346\234\261\346\236\227\346\235\260/20240703postgresql.md" @@ -0,0 +1,93 @@ +## 安装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 zy1 +\c zy1 +CREATE TABLE blog ( + id SERIAL PRIMARY KEY, -- 主键,自增长的唯一标识符 + title VARCHAR(255) NOT NULL, -- 标题,不为空的字符串,255字符长度限制 + content TEXT NOT NULL, -- 内容,不为空的文本 + author VARCHAR(100) NOT NULL, -- 作者,不为空的字符串,最大长度100字符 + publishedtime TIMESTAMP, -- 发布时间,时间戳类型 + nickname VARCHAR(100), -- 昵称,字符串,最大长度100字符 + avatar VARCHAR(255) -- 头像链接,字符串,最大长度255字符 +); +DO $$ +DECLARE + start_time TIMESTAMP; + end_time TIMESTAMP; + elapsed_time INTERVAL; +BEGIN + -- 记录开始时间 + start_time := clock_timestamp(); + + -- 执行插入操作 + INSERT INTO blog (title, content, author, publishedtime, nickname, avatar) + SELECT md5(random()::text) AS title, + md5(random()::text) AS content, + md5(random()::text) AS author, + clock_timestamp() - make_interval(0, 0, 0, (random() * 365)::int, (random() * 24)::int, (random() * 60)::int, (random() * 60)::int) AS publishedtime, + md5(random()::text) AS nickname, + md5(random()::text) AS avatar + FROM generate_series(1, 10000000); + + -- 记录结束时间 + end_time := clock_timestamp(); + + -- 计算运行时间 + elapsed_time := end_time - start_time; + + -- 打印运行时间 + RAISE NOTICE 'SQL 插入操作运行时间: %', elapsed_time; +END $$; \ No newline at end of file diff --git "a/\346\234\261\346\236\227\346\235\260/20240704postgresql\344\275\234\344\270\232.md" "b/\346\234\261\346\236\227\346\235\260/20240704postgresql\344\275\234\344\270\232.md" new file mode 100644 index 0000000..8a42760 --- /dev/null +++ "b/\346\234\261\346\236\227\346\235\260/20240704postgresql\344\275\234\344\270\232.md" @@ -0,0 +1,54 @@ +### 写一个自义函数,要求传入一个1到30到正整数,返回指定参数个的随机字符 +``` +create or replace function generate_random_string(length_param INTEGER) RETURNS TEXT AS $$ +declare + chars TEXT := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + result TEXT := ''; + i INTEGER := 1; +BEGIN + IF length_param < 1 OR length_param > 30 THEN + RAISE EXCEPTION 'Length parameter must be between 1 and 30'; + END IF; + + FOR i IN 1..length_param LOOP + result := result || substr(chars, floor(random() * length(chars) + 1), 1); + END LOOP; + + RETURN result; +END; +$$ LANGUAGE plpgsql; + + +select generate_random_string(10); + + + + + +``` + + + + + +### 自定义函数,要求随机返回1到30位的英文字符,最少返回一个,最多长度30 + +``` +CREATE OR REPLACE FUNCTION generate_random_string() RETURNS TEXT AS $$ +DECLARE + length_param INTEGER := floor(random() * 30 + 1); -- 生成随机长度,范围为1到30 + chars TEXT := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + result TEXT := ''; + i INTEGER := 1; +BEGIN + FOR i IN 1..length_param LOOP + result := result || substr(chars, floor(random() * length(chars) + 1), 1); + END LOOP; + + RETURN result; +END; +$$ LANGUAGE plpgsql; + +``` + +## \ No newline at end of file -- Gitee