首页
关于小站
朋友
壁纸
留言
时光之书
笔顺字帖
LayUI手册
Search
1
【PHP】PHPoffice/PHPSpreadsheet读取和写入Excel
1,785 阅读
2
【Layui】控制页面元素展示隐藏
1,602 阅读
3
【Git】No tracked branch configured for branch master or the branch doesn't exist.
1,560 阅读
4
【PHP】PHP实现JWT生成和验证
1,482 阅读
5
【composer】composer常用命令
1,356 阅读
默认分类
PHP
ThinkPHP
Laravel
面向对象
设计模式
算法
基础
网络安全
webman
Web
HTML
CSS
JavaScript
jQuery
Layui
VUE
uni-app
Database
MySQL
Redis
RabbitMQ
Nginx
Git
Linux
Soft Ware
Windows
网赚
Go
Docker
Elasticsearch
登录
Search
标签搜索
PHP
函数
方法
类
MySQL
ThinkPHP
JavaScript
OOP
Layui
Web
Server
Docker
PHPSpreadsheet
PHPoffice
Array
设计模式
Nginx
Git
排序算法
基础
小破孩
累计撰写
256
篇文章
累计收到
13
条评论
首页
栏目
默认分类
PHP
ThinkPHP
Laravel
面向对象
设计模式
算法
基础
网络安全
webman
Web
HTML
CSS
JavaScript
jQuery
Layui
VUE
uni-app
Database
MySQL
Redis
RabbitMQ
Nginx
Git
Linux
Soft Ware
Windows
网赚
Go
Docker
Elasticsearch
页面
关于小站
朋友
壁纸
留言
时光之书
笔顺字帖
LayUI手册
搜索到
3
篇与
的结果
2025-09-10
【Linux】Linux 开发与运维命令终极手册 - 持续更新
Linux 开发与运维命令终极手册封面与使用说明适用人群:PHP开发者、后端工程师、运维人员 核心价值:从日常开发到应急调试的全场景命令参考,兼顾效率与安全 使用方法:按「场景速查」快速定位,按「功能分类」系统学习,注意「安全警告」规避风险一、场景速查索引(紧急情况优先看)问题场景核心命令链功能分类网站突然卡顿/502错误top(看CPU/内存)→ ss -s(连接数)→ systemctl status php-fpm(服务状态)五、一.........二、系统基础与环境监控系统信息uname:查看系统信息uname -a # 完整信息 uname -r # 内核版本(确认Docker/Kernel兼容性)lsb_release:发行版信息lsb_release -a # 所有信息 lsb_release -c # 版本代号(适配apt/yum源)磁盘与存储df:磁盘空间df -h # 人类可读格式 df -i # inode使用情况(紧急清理时,满需删除大量小文件)du:目录大小分析du -sh * # 当前目录各项目大小 du -h --max-depth=1 /var # 一级目录分析 du -sh * \| sort -hr # 从大到小排列内存与负载free:内存监控free -h # 易读格式 free -m # MB单位 watch -n 5 "free -h" # 每5秒刷新(内存泄漏排查)uptime:系统负载uptime # 显示1/5/15分钟平均负载(负载>CPU核心数时需排查进程)高级监控iostat:磁盘IO监控iostat -x 5 # 每5秒显示IO详情(%util接近100%表示IO饱和)which/whereis:命令路径查找which php # 检查php路径 whereis mysql # 查找mysql(区分系统自带与手动安装的程序)三、文件与目录操作基本操作ls:列出内容ls -lh # 详细+大小 ls -lt # 按修改时间排序 # 现代替代:exa -l --git(带Git状态和颜色)cd:切换目录cd ~ # 家目录 cd - # 返回上一目录 # 技巧:cd .. 可简写为 ..(需配置bash)mkdir:创建目录mkdir -p app/{ctrl,model,view} # 递归创建多级目录(一次性创建项目结构)文件操作rm:删除文件 ⚠️极度危险rm file.txt # 删除文件 rm -rf dir/ # 递归强制删除目录 # ⚠️ 安全准则: # 1. 禁止执行 rm -rf / 或 rm -rf /* # 2. 删前先用 ls 确认路径:ls dir/ # 3. 替代方案:trash-put file(移到回收站,需安装trash-cli)cp:复制文件cp -a src/ dest/ # 保留权限复制 cp config.php{,.bak} # 备份(生成config.php.bak) cp *.conf{,.bak} # 批量备份(给所有conf文件加备份后缀)高级文件操作find:查找文件find ./ -name "*.php" -mtime -1 # 1天内修改的PHP文件 find ./ -name "*.log" -mtime +30 -print0 | xargs -0 rm -f # 安全批量处理(处理含空格的文件名)ln:创建链接ln -s /usr/local/php/bin/php /usr/bin/php # 创建软链接(解决命令路径问题)rsync:增量同步rsync -avz --delete ./local/ user@server:/remote/ # 镜像同步(部署代码比scp快)四、文件内容处理查看内容cat:查看文件内容cat config.php # 查看文件 # 现代替代:bat config.php(代码高亮+行号)tail:查看尾部tail -f error.log # 实时监控 tail -n 50 access.log # 最后50行 tail -F error.log # 日志轮转必备(文件重建后仍跟踪)文本处理grep:文本搜索grep -rni "数据库" ./app # 递归+行号+忽略大小写搜索 find ./ -name "*.php" | xargs grep "function getUser" # 结合find搜索sed:文本替换sed -i 's/old/new/g' file.php # 批量替换 sed -i '/^#/d' nginx.conf # 删除注释行 sed -i 's/debug=true/debug=false/g' *.php # 批量修改配置awk:按列处理awk '$9==500 {print $0}' access.log # 筛选500错误 # 统计分析黄金链: awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10 # Top 10访问IPwc:统计行数wc -l *.php # 统计PHP文件行数 grep "error" log.txt | wc -l # 错误数统计 find ./ -name "*.php" | xargs wc -l # 快速估算代码量五、进程与服务管理进程监控ps:查看进程ps aux --sort=-%cpu # 按CPU排序 ps aux | grep -v grep | grep php-fpm # 筛选特定进程top/htop:实时监控top # 基础监控 htop # 交互式增强版(支持鼠标操作) # 技巧:按P(CPU)/M(内存)排序,k键终止进程kill:终止进程kill 1234 # 正常终止 kill -9 1234 # 强制终止 pkill -f "php server.php" # 按命令名批量终止服务管理systemctl:服务管理systemctl restart nginx # 重启服务 systemctl enable mysql # 开机自启 systemctl status php-fpm -l # 查看状态及完整日志(启动失败排查)网络与调试netstat/ss:网络连接ss -lntup # 监听的端口及进程 ss -ant | grep :80 | wc -l # 统计80端口连接数lsof:文件占用lsof -i :80 # 查看80端口占用 lsof -p 1234 # 查看进程打开的文件 lsof +D /var/www # 查看目录相关进程(解决"文件被占用无法删除")strace:系统调用跟踪strace -p 1234 # 调试卡死进程(定位程序卡住原因)六、网络操作网络诊断ping:连通性测试ping -c 4 google.com # 发送4个包 # 现代替代:mtr google.com(持续跟踪丢包和延迟)curl:HTTP请求curl -X POST -d "name=test" http://api.com # POST请求 curl -I https://example.com # 仅获取头部 curl -v https://example.com # 详细输出(显示HTTPS握手过程)文件传输wget:文件下载wget -c https://file.com/big.tar.gz # 断点续传 wget -i url_list.txt # 批量下载(从文件读URL)ssh:远程登录ssh -p 2222 user@server.com # 指定端口登录 ssh user@server "command" # 远程执行命令 ssh-copy-id user@server # 免密登录(上传公钥)scp:远程传输scp -r dir/ user@server:/path/ # 递归上传目录 # 大文件传输技巧:pv file.tar.gz | ssh user@server "cat > file.tar.gz"(显示进度)nc:网络调试nc -zv 192.168.1.1 3306 # 测试MySQL端口连通性 # 临时文件传输: # 接收端:nc -l 8080 > recv.txt # 发送端:nc server 8080 < send.txt七、MySQL数据库基本操作mysql:登录数据库mysql -u root -p # 本地登录 mysql -h 10.0.0.5 -P 3307 -u user -p dbname # 远程连接 # 安全提示:生产环境禁止用root直接登录,创建专用用户mysqldump:备份数据库mysqldump -u root -p --single-transaction blog > blog.sql # 热备份(避免锁表)管理操作mysqladmin:数据库管理mysqladmin -u root -p processlist # 查看连接进程 mysqladmin -u root -p kill 123 # 杀死进程ID 123(终止慢查询)数据导入:恢复备份mysql -u root -p blog < blog.sql # ⚠️ 警告:导入前确认目标库正确,避免覆盖生产数据日志查看:调试问题tail -f /var/log/mysql/error.log # 实时错误日志 # 技巧:开启慢查询日志(临时生效): set global slow_query_log=1八、Docker容器管理镜像管理镜像操作:docker pull php:7.4-fpm # 拉取镜像 docker build -t myphp:v1 . # 构建镜像 docker image prune -a # 清理无用镜像容器管理容器操作:docker run -d -p 80:80 --name mynginx nginx # 后台运行容器 docker ps -a # 查看所有容器 docker exec -it myphp bash # 进入容器交互终端数据与网络数据卷:持久化存储docker volume create phpdata # 创建数据卷 docker run -v phpdata:/var/www/html php:7.4-fpm # 使用数据卷 # 备注:避免用 -v /host/path:/container/path(权限问题多),优先用数据卷网络管理:容器通信docker network create mynet # 创建网络 docker run --network mynet --name db mysql # 容器加入网络 # 技巧:自定义网络避免端口冲突,容器间用名称通信(如mysql://db:3306)九、Swoole扩展安装与验证安装Swoole:pecl install swoole # 安装最新版 pecl install swoole-4.8.12 # 安装指定版本(稳定版) echo "extension=swoole.so" >> php.ini # 启用扩展验证安装:php -m | grep swoole # 检查是否加载 php --ri swoole # 查看扩展信息(确认enable_coroutine等关键特性)服务管理服务管理:php server.php start # 启动服务 php server.php reload # 平滑重启(不中断连接,适合生产环境)进程监控:ps aux | grep server.php # 查看进程 netstat -tulpn | grep 9501 # 查看端口监听 # 备注:配置daemonize=1后台运行,通过ps确认进程数是否符合预期十、编程工具与环境开发工具php:PHP解释器php -l file.php # 语法检查 php -S 0.0.0.0:8000 -t public # 启动内置服务器 php -d display_errors=On index.php # 临时调整配置(显示错误)composer:依赖管理composer install --no-dev # 生产环境安装 composer dump-autoload -o # 优化自动加载 # 加速下载:切换国内镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/git:版本控制git stash # 暂存修改 git bisect start # 二分查找bug git log -S "function_name" # 搜索历史提交(查找引入函数的提交)现代工具jq:JSON处理curl api.com | jq '.data[].name' # 提取数据 jq '.users[] | select(.age>18)' data.json # 条件筛选 cat messy.json | jq . # 格式化JSONag:代码搜索ag "function_name" app/ # 快速搜索 ag -G "*.php" "database" # 指定文件类型搜索 # 备注:比grep -r快10倍,自动忽略.git和vendor目录十一、压缩与归档压缩解压tar:打包/压缩tar -zcvf backup.tar.gz --exclude=vendor ./project # 打包并排除目录 tar -tf backup.tar.gz # 查看内容不解压zip/unzip:ZIP处理zip -r docs.zip ./docs -x "*.git*" # 压缩并排除Git文件 unzip -O GBK chinese.zip # 解压中文文件(避免乱码)gzip:GZIP压缩gzip large.log # 压缩文件(替换原文件) gzip -c file > file.gz # 压缩但保留原文件 gunzip file.gz # 解压十二、包管理与软件安装包管理命令系统更新软件源安装软件搜索软件实用技巧Debian/Ubuntuapt updateapt install <pkg>apt search <pkg>加速:替换国内镜像源CentOS/RHELyum updateyum install <pkg>yum search <pkg>批量安装:yum install php-fpm nginx mysql-server十三、安全警告与最佳实践操作安全rm -rf 安全准则永远不要在根目录/或系统目录执行递归删除删前用ls确认路径:ls /path/to/delete/*推荐用trash-cli(trash-put/trash-empty)替代rm,支持回收站恢复权限操作禁忌⚠️ 禁止执行chmod -R 777 /或chown -R root:root /home/,会导致系统崩溃正确权限:PHP文件644,目录755,Web可写目录属主设为www-data数据库操作安全生产环境执行DROP/TRUNCATE前必须备份禁止直接在生产库执行UPDATE/DELETE不带WHERE的SQL命令执行确认复杂命令先用echo测试:echo rm -rf /path/to/dir/*批量操作前先处理1个样本验证:find ./ -name "*.log" \| head -1 \| xargs rm -f附录:现代工具安装指南工具功能Ubuntu安装命令使用示例bat增强版catsudo apt install batbat config.php(代码高亮)exa增强版lssudo apt install exaexa -l --git(带Git状态)htop增强版topsudo apt install htophtop(交互式监控)mtr网络诊断sudo apt install mtrmtr google.com(路由追踪)jqJSON处理sudo apt install jqcurl api.com \ jq '.data'ag代码搜索sudo apt install silversearcher-agag "function" app/fzf模糊查找sudo apt install fzfCtrl+R搜索历史命令trash-cli回收站工具sudo apt install trash-clitrash-put file(安全删除)使用提示:遇到任何命令不清楚时,使用man <命令>查看详细手册,如man grep。
2025年09月10日
18 阅读
0 评论
0 点赞
2022-07-14
【Linux】 cron 定时任务工具详解
一、cron 概述cron 是 Linux 系统下的定时执行工具,用于按预设时间自动运行脚本或命令。用户权限:除根用户外,普通用户也可通过 crontab 工具配置个人 cron 任务。配置文件存放:所有用户定义的 crontab 任务保存在 /var/spool/cron 目录中,以用户名命名(如 /var/spool/cron/username),并以创建者身份执行。工作机制:cron 守护进程每分钟会检查 /etc/crontab 文件、/etc/cron.d/ 目录及 /var/spool/cron 目录的变化,若有更新会自动载入内存,无需重启守护进程。二、crontab 安装与服务管理1. 安装 crontabyum install crontabs # 适用于 CentOS/RHEL 系统2. 服务控制命令/sbin/service crond start # 启动服务 /sbin/service crond stop # 关闭服务 /sbin/service crond restart # 重启服务 /sbin/service crond reload # 重新载入配置(修改任务后无需重启服务,执行此命令生效)3. 服务状态查看service crond status # 查看 crontab 服务运行状态4. 开机自启动配置# 设置 crond 服务在运行级别 3 和 5 下开机自启 chkconfig --level 35 crond on # 验证开机自启设置(可选) ntsysv # 打开服务配置界面,检查 crond 是否被勾选三、crontab 基本使用1. 编辑用户定时任务crontab -e # 编辑当前用户的 cron 任务(首次使用会提示选择编辑器,如 vim、nano)编辑完成后保存,任务会自动写入 /var/spool/cron/用户名 文件。2. 常用参数说明-e:编辑当前用户的定时任务-l:列出当前用户的所有定时任务-r:删除当前用户的所有定时任务-u <用户名>:指定用户(仅 root 可用),如 crontab -u john -e 编辑 john 的任务3. 执行 PHP 脚本的两种方式(1)直接执行本地 PHP 脚本示例:每小时执行一次 /home/john/myscript.phpcrontab -e # 编辑任务,添加以下内容 00 * * * * /usr/local/bin/php /home/john/myscript.php # 分钟 小时 日 月 星期 命令(2)通过 URL 触发(需依赖浏览器或工具)使用 lynx 文本浏览器(每小时访问 URL 执行脚本):00 * * * * lynx -dump http://www.example.com/myscript.php # -dump 输出到标准输出使用 curl(每 5 分钟访问 URL,输出到临时文件):*/5 * * * * /usr/bin/curl -o temp.txt http://www.example.com/myscript.php # -o 指定输出文件使用 wget(每 10 分钟访问 URL,安静模式输出到临时文件):*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.example.com/myscript.php # -q 安静模式,-O 指定输出文件四、crontab 任务格式详解基本格式分钟 小时 日 月 星期 命令 * * * * * *字段含义分钟:1~59(* 表示每分钟,*/n 表示每 n 分钟)小时:1~23(0 表示 0 点)日:1~31月:1~12星期:0~6(0 表示星期天)命令:要执行的脚本或命令(需写绝对路径,如 /usr/local/bin/php)特殊符号含义*:匹配范围内的所有值(如小时字段为 * 表示每小时)/:表示“每”(如分钟字段 */10 表示每 10 分钟)-:表示范围(如小时字段 18-23 表示 18 点到 23 点),:表示离散值(如日字段 1,10,22 表示 1 日、10 日、22 日)五、crontab 任务示例# 每晚 21:30 重启 lighttpd 30 21 * * * /usr/local/etc/rc.d/lighttpd restart # 每月 1、10、22 日的 4:45 重启 lighttpd 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart # 每周六、周日的 1:10 重启 lighttpd 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart # 每天 18:00 至 23:00 之间,每隔 30 分钟重启 lighttpd 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart # 每星期六的 23:00 重启 lighttpd 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart # 每小时重启 lighttpd 0 */1 * * * /usr/local/etc/rc.d/lighttpd restart # 晚上 23 点到早上 7 点之间,每隔 1 小时重启 lighttpd 0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart # 每月 4 号,及每周一到周三的 11:00 重启 lighttpd 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart # 每年 1 月 1 日的 4:00 重启 lighttpd 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart通过以上内容,可掌握 cron 定时任务的安装、配置、格式及常见用法,灵活实现脚本的自动执行。
2022年07月14日
328 阅读
0 评论
0 点赞
2022-06-21
【Linux】Linux常用命令及基础问答整理
一、基础操作命令目录操作cd /home # 进入home目录 cd ~ # 回到当前用户家目录 cd .. # 返回上一级目录 pwd # 查看当前路径文件列表查看ls # 显示文件夹和文件 ls -lt # 显示详情,按时间倒序 clear # 清除屏幕目录管理mkdir test # 创建单级文件夹 mkdir -p a/b/c # 创建多级文件夹 mkdir -m 777 file3 # 创建权限为777的目录 rm -rf dir1 # 递归强制删除目录(-r递归,-f强制)文件操作mv dir1 dir2 # 移动或重命名 zip -r ./filename.zip /home # 压缩/home目录二、系统信息查看系统版本信息lsb_release -a # 查看发行版本号 cat /etc/redhat-release # 查看Linux镜像版本 cat /etc/os-release # Debian查看发行信息 uname -a # 查看系统位数(32/64位)资源监控df -h # 查看磁盘空间使用情况(-h人类可读单位) free -m # 查看内存使用状况(-m以MB为单位) date # 查看当前系统时间网络信息ifconfig # 查看IP地址 ip a # 查看IP地址 netstat -tlunp # 查看全部使用或监听的端口 lsof -i:4443 # 查看4443端口的进程 kill 19999 # 关闭进程ID为19999的进程三、服务管理命令常用服务管理# Nginx /etc/init.d/nginx restart # 重启 /etc/init.d/nginx start # 启动 /etc/init.d/nginx stop # 停止 # Apache /etc/init.d/httpd restart # 重启 # MySQL /etc/init.d/mysqld restart # 重启 # FTP /etc/init.d/pure-ftpd restart # 重启 # Redis /etc/init.d/redis start # 启动 /etc/init.d/redis stop # 停止宝塔面板管理/etc/init.d/bt restart # 重启宝塔面板 cd /www/server/panel && python tools.py root 123456 # 强制修改root密码为123456 echo '8881' > /www/server/panel/data/port.pl && /etc/init.d/bt restart # 修改面板端口为8881四、防火墙操作CentOS 5/6service iptables start # 开启防火墙 service iptables stop # 关闭防火墙 service iptables status # 查看防火墙状态CentOS 7/Red Hat 7/Alibaba Cloud Linux 2systemctl start firewalld.service # 开启防火墙 systemctl stop firewalld.service # 关闭防火墙 firewall-cmd --state # 查看防火墙状态 firewall-cmd --reload # 重启防火墙 firewall-cmd --zone=public --add-port=80/tcp --permanent # 永久开放80端口 firewall-cmd --reload # 重新加载配置生效Ubuntuufw enable # 开启防火墙 ufw disable # 关闭防火墙 ufw status # 查看防火墙状态Debianiptables-save > [备份文件路径] # 备份防火墙策略 iptables -F # 清空防火墙策略(先备份!)五、vi编辑器操作模式切换i # 进入编辑模式(插入模式) ESC # 退出编辑模式 v # 进入可视化模式保存与退出:wq # 保存并退出 :q! # 不保存并退出编辑操作yy # 复制当前行 p # 粘贴 :3,15d # 删除第3行到第15行的所有数据六、文件操作命令文件创建与编辑touch file # 创建空文件 echo "清华大学" > hello # 覆盖写入文件 echo "计算机科学与技术" >> hello # 追加写入文件文件内容查看cat 文件名 # 显示全部内容 more 文件名 # 分页显示(空格下一页,B键上一页) tail -n 10 文件名 # 查看文件最后10行 head -n 10 文件名 # 查看文件前十行文件操作cp 文件名 新文件名 # 复制文件 cp -R 目录名 新目录名 # 递归复制目录 wc -l 文件名 # 统计文件行数文件查找grep -lr 'APP' # 当前目录下递归查找含"APP"的文件 ll / | grep bin # 在根目录下找出名字包含"bin"的文件夹七、用户与组管理用户管理useradd zhangsan # 创建用户 passwd zhangsan # 设置用户密码(执行后输入密码) userdel 用户名 # 删除用户 su 用户名 # 切换到指定用户组管理groupadd super # 创建组 usermod -g super zhangsan # 将用户加入组 chown root:root test1.txt # 修改文件所有者为root用户、root组家目录信息/root # root用户家目录 /home/zhangsan # 普通用户zhangsan的家目录八、权限管理权限查看ls -l 文件名 # 查看文件权限 ls -ld 文件夹名称 # 查看文件夹权限权限符号含义-rwxrwxrwx # 普通文件,所有者、组用户、其他用户均有读(r)、写(w)、执行(x)权限 drwx------ # 文件夹,仅所有者有读、写、执行权限权限修改chmod 700 目标 # 仅所有者可读、写、执行 chmod 644 目标 # 所有者可读、写;组用户和其他用户可读 chmod 666 目标 # 所有人可读、写 chmod 777 目标 # 所有人可读、写、执行 chmod 777 * -R # 当前目录下所有子目录及文件权限改为777(-R递归处理)权限数字说明r(读)= 4w(写)= 2x(执行)= 13位数字分别代表:所有者、组用户、其他用户九、其他常用命令网络与软件ping 目标IP/域名 # 检测网络是否畅通 yum install 软件名 # 安装软件 yum remove 软件名 # 卸载软件 wget 下载地址 # 下载文件系统管理whereis 命令 # 查看命令安装位置 man 命令 # 查看命令帮助 reboot # 重启系统 halt -p # 关机 shutdown now # 立即关机高级技巧ls -l | grep "txt" # 管道符:筛选含txt的文件 echo "test" 1> file.txt # 标准输出重定向 command 2> error.log # 错误输出重定向 command > all.log 2>&1 # 错误输出合并到标准输出 touch file{1..100} # 同时创建100个文件十、基础问答存放用户账号的文件在哪里? /etc/passwd如何删除一个非空的目录? rm -rf 目录名/sbin目录和/bin目录有什么区别?/bin:存放所有用户(包括普通用户和root)可执行的系统默认指令/sbin:存放仅root可执行的超级管理指令(s表示super)vi编辑器有几种模式? 3种:命令模式、插入模式、可视化模式配置文件存放在哪个目录下? /etc网卡的配置文件存放在哪个目录下? /etc/sysconfig/network-scripts如何回到当前用户的家目录? cd ~如何统计一个文件的行数? wc -l 文件名root用户的家目录在哪里? /root如何创建组super,将zhangsan加入到super组里面?groupadd super usermod -g super zhangsan如何修改一个文件夹的权限为"自己可读可写可执行,其他都不允许"? chmod 700 文件夹名
2022年06月21日
282 阅读
0 评论
0 点赞