首页
视频
壁纸
统计
更多
留言
关于
Search
1
Linux 基础命令之用户权限管理命令全解析
4 阅读
2
Linux 网络配置、DNS设置及密码重置完整教程
3 阅读
3
Linux 系统目录功能完整解析
3 阅读
4
Linux 基础命令之文件管理命令全解析
3 阅读
5
Linux 基础命令之系统开关机命令全解析
3 阅读
SRE云计算基础
LINUX基础
基础服务
AIOPS
数通网络
网络安全
弱电项目
登录
Search
蛋蛋
累计撰写
17
篇文章
累计收到
1
条评论
首页
栏目
SRE云计算基础
LINUX基础
基础服务
AIOPS
数通网络
网络安全
弱电项目
页面
视频
壁纸
统计
留言
关于
搜索到
17
篇与
的结果
2025-11-27
location块深度解剖
核心概念:location 块location 块是 Nginx 配置文件中 (nginx.conf 或其包含的文件,通常在 http, server 上下文中) 的核心指令之一。它用于根据请求的 URI(统一资源标识符,即域名或IP端口之后的部分)来定义如何处理请求(例如代理到后端应用服务器、返回静态文件、重定向等)。匹配模式与优先级(由高到低):Nginx 的 location 匹配遵循特定的优先级规则,理解这个顺序至关重要,否则可能导致配置不符合预期:location = /exact/path (精确匹配):描述: 使用 = 前缀表示精确匹配。只有当请求的 URI 完全等于 /exact/path 时,这个 location 块才会被选中。优先级: 最高。一旦匹配成功,将立即使用此配置,不再继续检查其他 location 块。用例: 处理特定、明确的端点,如登录页、健康检查端点 (/healthz)、特定的 API 入口点。location ^~ /prefix/ (前缀匹配 - 停止正则搜索):描述: 使用 ^~ 前缀表示常规字符串匹配(前缀匹配),并且如果匹配成功,Nginx 将停止继续搜索任何正则表达式匹配的 location 块。优先级: 次高。它比正则表达式匹配优先级高。用例: 处理特定目录下的所有请求(通常用于静态文件服务),且不希望后续的正则 location 干扰。例如 /static/ 目录下的所有文件。location ~ /pattern/ 和 location ~* /pattern/ (正则表达式匹配):描述:~ : 表示区分大小写的正则表达式匹配。~* : 表示不区分大小写的正则表达式匹配。正则表达式提供了最灵活的匹配方式。优先级: 第三高。在精确匹配和前缀匹配(带 ^~)之后被考虑。多个正则 location 块的优先级取决于它们在配置文件中的出现顺序。第一个匹配成功的正则 location 将被使用。用例: 处理复杂的路由规则,如基于文件扩展名、动态路径参数、特定模式的 URI 进行路由。例如匹配所有图片请求 (\.(jpg|png|gif)$),或将带特定参数的 URL 路由到不同后端。location /prefix/ (常规前缀匹配 - 继续正则搜索):描述: 不使用任何修饰符的常规字符串(前缀)匹配。它匹配所有以 /prefix/ 开头 的 URI。优先级: 最低。但是,如果它被选中(即没有更高优先级的匹配项),Nginx 仍会继续检查 所有正则表达式 location 块,并选择第一个匹配的正则 location。如果没有任何正则匹配,则最终使用这个常规前缀匹配的配置。用例: 作为默认路由或兜底配置,通常用于代理主应用(如 / 代理到后端 PHP/Python/Java 应用)。但要注意后续正则匹配可能覆盖它。location / (根匹配):描述: 匹配所有请求(因为任何 URI 都以 / 开头)。优先级: 最低级别的常规前缀匹配。它遵循常规前缀匹配的规则(会被更高优先级的匹配覆盖,且匹配后仍会搜索正则)。企业实战案例场景场景 1: 静态资源服务与动态应用分离需求: 一个 Web 应用,前端静态文件(HTML, CSS, JS, 图片)需要由 Nginx 高效直接返回,动态请求(如 API)需要代理到后端应用服务器(如 Tomcat, Django, Node.js)。配置示例:server { listen 80; server_name example.com; # 1. 精确匹配 - 健康检查 location = /healthz { access_log off; return 200 'OK'; } # 2. 前缀匹配 (带 ^~) - 静态文件服务 (图片、CSS、JS) location ^~ /static/ { root /path/to/webroot; # 文件实际存放路径 expires 30d; # 设置缓存过期时间 add_header Cache-Control "public"; # 添加缓存控制头 try_files $uri $uri/ =404; # 尝试找文件,找不到返回404 } # 3. 正则匹配 - 匹配图片文件 (不区分大小写) location ~* \.(jpg|jpeg|png|gif|ico)$ { root /path/to/images; # 图片专用目录 expires max; add_header Cache-Control "public, immutable"; } # 4. 常规前缀匹配 - 动态应用代理 (兜底路由) location / { proxy_pass http://backend_app_server; # 代理到后端 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }解析:请求 /healthz 精确匹配第一条,直接返回 OK。请求 /static/css/style.css 匹配第二条 (^~ /static/),Nginx 直接返回文件并设置缓存,不再检查后续正则。请求 /uploads/avatar.jpg 匹配第三条正则 (.jpg),由 Nginx 从 /path/to/images/uploads/avatar.jpg 返回图片并设置强缓存。请求 /api/user 或 /login 无法匹配前三条,最终落入第四条 (/),被代理到 backend_app_server。场景 2: 多版本 API 路由需求: 一个应用同时提供 v1 和 v2 版本的 API,需要根据 URL 前缀 /api/v1/ 和 /api/v2/ 将请求路由到不同的后端服务集群。配置示例:server { listen 80; server_name api.example.com; # 1. API v1 路由 (前缀匹配 - 带 ^~ 确保不干扰后续正则) location ^~ /api/v1/ { proxy_pass http://api_v1_backend; # v1 后端集群 # ... 其他代理头设置 } # 2. API v2 路由 (前缀匹配 - 带 ^~) location ^~ /api/v2/ { proxy_pass http://api_v2_backend; # v2 后端集群 # ... 其他代理头设置 } # 3. 兜底或旧版本兼容 (可选) location /api/ { # 可能重定向到默认版本或返回错误 return 404 'API version not specified or unsupported'; } }解析:请求 /api/v1/users 匹配第一条,代理到 api_v1_backend。请求 /api/v2/orders 匹配第二条,代理到 api_v2_backend。请求 /api/ 或 /api/v3/ 可能匹配第三条,返回错误提示。场景 3: 灰度发布 / A/B 测试路由需求: 基于用户 Cookie 或请求头中的特定标识(如 X-User-Group: beta),将一部分用户的请求路由到新版本服务 (backend_new),其他用户仍路由到稳定版本 (backend_stable)。配置示例:server { listen 80; server_name app.example.com; # 主配置 (稳定版) location / { # 默认路由到稳定版 set $backend "http://backend_stable"; # 检查灰度标识 (例如 Cookie) if ($http_cookie ~* "user_group=beta") { set $backend "http://backend_new"; } # 检查请求头 if ($http_x_user_group = "beta") { set $backend "http://backend_new"; } proxy_pass $backend; proxy_set_header Host $host; # ... 其他代理头设置 } }解析: 虽然主要逻辑在 if 语句中,但 location / 作为入口捕获所有请求。根据条件动态设置 proxy_pass 的目标。注意:if 在 location 中有其自身的上下文和限制,需谨慎使用。场景 4: 基础安全防护需求: 阻止直接访问敏感文件(如 .env, .git/config, *.bak)。配置示例:server { listen 80; server_name example.com; # 1. 阻止访问隐藏文件 (点号开头) location ~ /\.(?!well-known).* { # 排除 .well-known 目录 (用于 ACME) deny all; return 403; } # 2. 阻止访问特定敏感文件扩展名 location ~* \.(env|bak|conf|sql|key)$ { deny all; return 403; } # 3. 阻止访问常见版本控制目录 location ~ /\.(git|svn|hg) { deny all; return 403; } # ... 其他正常的 location 配置 }解析: 使用正则表达式匹配 (~ 或 ~*) 来识别具有特定模式(点号开头、特定扩展名、版本控制目录名)的 URI,并直接返回 403 Forbidden。关键注意事项与最佳实践优先级牢记于心: 始终牢记 = > ^~ > ~/~* (按顺序) > 无修饰符 /prefix > / 的优先级。错误的顺序会导致配置失效。正则表达式顺序: 多个正则 location 块时,顺序至关重要。Nginx 会按它们在配置文件中出现的顺序进行匹配,使用第一个匹配成功的块。将更具体的正则放在前面。^~ 的妙用: 当确定某个前缀下的所有请求都应该由这个 location 处理,且不希望后续的正则匹配干扰时,务必使用 ^~。这对于静态文件服务尤其重要,可以提升性能。谨慎使用 if: if 指令在 location 块中可用,但它在 Nginx 中是一个比较“重”的指令,使用不当会影响性能。尽量用 location 本身的匹配规则来实现路由。try_files 指令: 在静态文件服务的 location 块中,try_files 非常有用,它可以按顺序尝试多个文件或目录,最后兜底(如返回 404 或代理到后端)。测试与验证: 修改 Nginx 配置后,务必使用 nginx -t 测试配置语法。重载配置 (nginx -s reload) 后,使用各种 URL 进行充分测试,确保路由符合预期。可以使用 curl -v 或浏览器开发者工具观察请求和响应。文档化: 复杂的 location 配置应添加清晰的注释,说明其目的和匹配规则,便于后续维护。理解并熟练运用 Nginx 的 location 匹配机制是 DevOps 工程师构建高效、灵活、安全的 Web 服务架构的关键技能之一。希望这些讲解和案例能帮助你更好地应用它。
2025年11月27日
1 阅读
0 评论
0 点赞
2025-11-22
nginx配置详解
以下为 Nginx 配置文件详解(以标准 /etc/nginx/nginx.conf 为例):一、配置文件结构# 全局配置区 user nginx; # 运行用户 worker_processes auto; # 工作进程数(通常设为 CPU 核心数) error_log /var/log/nginx/error.log; # 错误日志路径 events { # 事件模型配置 worker_connections 1024; # 单个进程最大并发连接数 use epoll; # Linux 高性能网络模型(可选) } http { # HTTP 核心配置区 include /etc/nginx/mime.types; # MIME 类型映射文件 default_type application/octet-stream; # 默认响应类型 # 日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; # 访问日志 # 性能优化 sendfile on; # 零拷贝传输文件 tcp_nopush on; # 减少网络报文段数量 keepalive_timeout 65; # 长连接超时时间 # 虚拟主机配置容器 server { listen 80; # 监听端口 server_name example.com; # 域名 location / { # URL 路径匹配规则 root /var/www/html; # 站点根目录 index index.html; # 默认索引文件 } } # 可包含其他配置文件 include /etc/nginx/conf.d/*.conf; }二、核心模块详解1. events 块worker_connections:单个工作进程的最大并发连接数(总并发 = worker_processes × worker_connections)。use:指定事件模型,如 epoll(Linux 高效模型)、kqueue(BSD)。2. http 块日志配置:log_format custom '$request_time $upstream_response_time'; # 自定义日志格式 access_log logs/access.log custom; # 应用自定义格式性能参数:gzip on; # 开启 Gzip 压缩 gzip_types text/css application/json; # 指定压缩类型 client_max_body_size 100M; # 最大上传文件大小3. server 块(虚拟主机)基础配置:server { listen 443 ssl http2; # HTTPS + HTTP/2 server_name api.example.com; # 支持通配符 *.example.com ssl_certificate /etc/ssl/cert.pem; # SSL 证书 ssl_certificate_key /etc/ssl/key.pem; # 私钥 }4. location 块(路径匹配)匹配规则优先级:location = /path # 精确匹配(最高)location ^~ /path # 前缀匹配(不检查正则)location ~ \.php$ # 正则匹配(区分大小写)location / # 通用匹配(最低)常见场景:# 反向代理 location /api/ { proxy_pass http://backend_server; # 转发到后端 proxy_set_header Host $host; # 传递原始 Host } # 静态文件 location /static/ { alias /data/static/; # 目录映射(注意与 root 的区别) expires 30d; # 缓存过期时间 } # 动态请求 location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm.sock; # PHP-FPM include fastcgi_params; }三、高级配置示例负载均衡upstream backend { server 192.168.1.100 weight=3; # 权重 server 192.168.1.101; server 192.168.1.102 backup; # 备用节点 least_conn; # 最少连接算法 } server { location / { proxy_pass http://backend; } }安全防护# 禁止敏感文件访问 location ~* \.(sql|bak|conf)$ { deny all; } # 防爬虫 if ($http_user_agent ~* (bot|crawler)) { return 403; }HTTP 重定向到 HTTPSserver { listen 80; server_name example.com; return 301 https://$host$request_uri; # 301 永久重定向 }四、调试与验证检查配置语法:sudo nginx -t # 测试配置是否正确输出示例:nginx: configuration file /etc/nginx/nginx.conf test is successful重载配置:sudo nginx -s reload # 不重启服务加载新配置查看运行配置:nginx -T # 打印实际生效的配置(含 include 文件)五、配置文件路径主配置:/etc/nginx/nginx.conf模块化配置:conf.d/:自定义 server 配置sites-available/ & sites-enabled/(Debian 系):虚拟主机配置modules-enabled/:动态模块配置附:关键变量表变量说明$remote_addr客户端 IP 地址$request请求行(如 GET / HTTP/1.1)$statusHTTP 响应状态码$http_user_agent客户端浏览器标识$scheme协议(http / https)提示:使用 include 拆分配置,避免单个文件过大。修改配置后务必执行 nginx -t 验证语法。
2025年11月22日
2 阅读
0 评论
0 点赞
2025-11-22
Nginx从零开始安装
一、安装方式1. yum 安装(推荐新手)CentOS/RHEL 系统:# 安装 EPEL 源(CentOS 7) sudo yum install epel-release # 安装 Nginx sudo yum install nginx # 启动并设置开机自启 sudo systemctl start nginx sudo systemctl enable nginxUbuntu/Debian 系统:sudo apt update sudo apt install nginx sudo systemctl start nginx sudo systemctl enable nginx注意:yum 安装的版本可能较旧,配置文件默认在 /etc/nginx/。2. 编译安装(定制化需求)步骤:安装依赖:sudo yum install gcc pcre-devel zlib-devel openssl-devel -y # CentOS sudo apt install build-essential libpcre3-dev zlib1g-dev libssl-dev -y # Ubuntu下载源码:wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0配置编译选项:./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_stub_status_module常用模块:--with-http_v2_module(HTTP/2)、--with-stream(TCP/UDP代理)。编译并安装:make && sudo make install启动 Nginx:/usr/local/nginx/sbin/nginx二、常用命令服务管理# 启动 sudo systemctl start nginx # yum 安装 /usr/local/nginx/sbin/nginx # 编译安装 # 停止 sudo systemctl stop nginx /usr/local/nginx/sbin/nginx -s stop # 重启(加载新配置) sudo systemctl restart nginx /usr/local/nginx/sbin/nginx -s reload # 热重载(不中断服务) # 检查配置语法 sudo nginx -t查看状态sudo systemctl status nginx # 服务状态 ps aux | grep nginx # 进程检查 curl -I http://localhost # 测试响应头日志与调试# 访问日志 tail -f /var/log/nginx/access.log # yum 安装 tail -f /usr/local/nginx/logs/access.log # 编译安装 # 错误日志 tail -f /var/log/nginx/error.log三、配置文件路径yum 安装: /etc/nginx/nginx.conf(主配置) /etc/nginx/conf.d/(自定义配置目录)编译安装: /usr/local/nginx/conf/nginx.conf四、常见操作1. 添加虚拟主机# 在 /etc/nginx/conf.d/ 创建配置 sudo vi /etc/nginx/conf.d/mysite.conf # 示例配置: server { listen 80; server_name example.com; root /var/www/html; index index.html; }2. 开启 HTTPSserver { listen 443 ssl; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; ... }3. 防火墙放行端口sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=443/tcp sudo firewall-cmd --reload五、卸载yum 安装:sudo systemctl stop nginx sudo yum remove nginx rm -rf /etc/nginx /var/log/nginx编译安装: 直接删除安装目录(如 /usr/local/nginx)并清理启动脚本。提示:生产环境建议使用 yum/apt 安装,便于版本管理和安全更新。编译安装适合需要定制模块或特定版本的情况。
2025年11月22日
2 阅读
0 评论
0 点赞
2025-11-15
linux软件包企业实战详解
一、RPM(Red Hat Package Manager)定位:红帽系Linux基础包格式(.rpm后缀)核心操作:# 安装(不解析依赖) rpm -ivh package.rpm # 升级(保留配置文件) rpm -Uvh package.rpm # 查询(已安装包) rpm -qa | grep nginx # 卸载(保留依赖包) rpm -e package_name企业痛点:❗ 依赖地狱(需手动解决依赖链)❗ 无法自动更新(需配合YUM/DNF)二、YUM/DNF(智能包管理工具)定位:自动化解决RPM依赖关系核心操作:# 安装(自动处理依赖) sudo yum install nginx # 查询仓库 yum search python3 # 更新(所有包) yum update # 回滚(查看操作记录) yum history undo 3企业实战技巧:私有仓库搭建:# 安装createrepo yum install createrepo # 初始化仓库目录 createrepo /opt/custom-repo配置客户端:/etc/yum.repos.d/local.repo 中指定 baseurl=file:///opt/custom-repo安全更新策略:# 仅安装安全补丁 yum update --security锁定关键包:yum versionlock kernel*三、TAR(归档与解包)定位:通用文件打包工具(.tar, .tar.gz, .tar.bz2) 核心操作:# 创建压缩包(gzip) tar czvf app.tar.gz /path/to/dir # 解压(保留权限) tar xzvf app.tar.gz -C /target/dir # 查看内容(不解压) tar tvf app.tar.gz企业场景:✅ 备份配置文件目录:tar czvf /backup/etc-$(date +%F).tar.gz /etc✅ 跨系统迁移应用(如JAVA项目)⚠️ 注意:解压路径安全!避免覆盖系统文件(推荐先 -C 指定目录)四、ZIP(跨平台压缩)定位:Windows/Linux兼容压缩格式 核心操作:# 压缩(递归目录) zip -r app.zip /path/to/dir # 解压(UTF-8支持) unzip -O UTF-8 win_backup.zip企业用途:📁 从Windows传输日志到Linux分析🔐 加密敏感数据:zip -e secret.zip file.txt(输入密码)五、源码包(编译安装)定位:获取最新特性或定制化软件 标准流程:# 1. 解压源码 tar xzvf nginx-1.24.0.tar.gz cd nginx-1.24.0 # 2. 配置(指定路径/模块) ./configure --prefix=/opt/nginx --with-http_ssl_module # 3. 编译&安装 make && sudo make install # 4. 添加环境变量 echo 'export PATH=/opt/nginx/sbin:$PATH' >> /etc/profile企业风险控制:依赖检查:提前安装 gcc, make, openssl-devel 等开发包版本管理:使用 checkinstall 生成RPM包便于卸载:./configure && make sudo checkinstall --pkgname=myapp目录隔离:--prefix=/opt/app_name 避免污染系统路径企业级决策矩阵场景推荐方案原因标准化部署YUM/RPM依赖自动处理,版本可控紧急漏洞修复YUM安全更新快速响应,最小化影响第三方商业软件RPM供应商包厂商支持,兼容性保障定制化功能需求源码编译灵活启用/禁用模块Windows协作ZIP跨平台兼容配置文件备份TAR保留权限结构运维铁律生产环境禁用 rpm -ivh 直接安装(依赖问题易引发故障)源码编译软件需纳入监控(版本升级无通知)任何操作前执行:tar -cvf /backup/$(date +%s).tar.gz /etc (秒级备份)通过组合使用这些工具,可构建稳健的企业级软件管理体系。
2025年11月15日
0 阅读
0 评论
0 点赞
2025-11-15
Linux用户及权限管理详解
一、用户管理1. 用户配置文件/etc/passwd:存储用户基本信息(用户名、UID、GID、家目录、默认Shell)格式:username:x:UID:GID:comment:/home/username:/bin/bash/etc/shadow:存储用户密码及过期策略(仅root可读)格式:username:加密密码:最后修改天数:最小间隔:最大有效期:警告期:禁用期2. 用户操作命令创建用户useradd -m -s /bin/bash -c "Test User" testuser # -m创建家目录,-c注释修改用户usermod -l newname oldname # 重命名 usermod -d /new/home -m testuser # 迁移家目录删除用户userdel -r testuser # -r同时删除家目录和邮件密码管理passwd testuser # 设置密码 chage -E 2025-12-31 testuser # 设置账户过期时间二、用户组管理1. 组配置文件/etc/group:存储组信息(组名、GID、成员列表)格式:groupname:x:GID:member1,member22. 组操作命令创建组groupadd developers修改组groupmod -n devs developers # 重命名组删除组groupdel devs管理组成员gpasswd -a user1 devs # 添加用户到组 gpasswd -d user1 devs # 从组移除用户三、权限管理1. 文件权限基础权限类型r (读):4w (写):2x (执行):1权限表示-rw-r--r-- 1 user group 1024 Jan 1 10:00 file.txt ↑ ↑ │ └── 所属组权限 └── 所有者权限数字表示:chmod 644 file.txt → -rw-r--r--2. 修改权限符号模式chmod u+x file.sh # 所有者添加执行权限 chmod g-w file.txt # 组移除写权限 chmod o=--- secret.txt # 其他人无权限数字模式chmod 750 script.sh # rwxr-x---(所有者7,组5,其他人0)3. 特殊权限SUID (4):以所有者身份执行chmod u+s /usr/bin/someapp # 设置SUID(显示为rws)SGID (2):目录中新文件继承组chmod g+s /shared_dir # 设置SGID(显示为r-s)Sticky Bit (1):仅文件所有者可删除chmod +t /tmp # 粘滞位(显示为rwt)四、高级权限控制1. ACL(访问控制列表)查看ACLgetfacl /project设置ACLsetfacl -m u:user1:rwx /project # 添加用户权限 setfacl -x u:user2 /project # 移除用户权限2. Sudo权限配置编辑sudoers文件visudo # 安全编辑/etc/sudoers授权示例user1 ALL=(root) /usr/bin/apt # 允许user1以root执行apt %devs ALL=(ALL) NOPASSWD:ALL # 组devs无需密码执行所有命令五、关键命令速查命令功能示例id username查看用户UID/GIDid alicegroups查看当前用户所属组groupschown修改文件所有者chown user:group filechgrp修改文件所属组chgrp devs project/umask设置默认权限掩码umask 027(新文件默认750)六、最佳实践最小权限原则:用户仅获必要权限(如通过组管理共享目录)定期审计:使用auditd监控敏感操作(如/etc/sudoers修改)密码策略:通过/etc/login.defs设置密码复杂度与有效期备份配置:备份/etc/passwd、/etc/shadow、/etc/group通过合理管理用户、组及权限,可显著提升系统安全性与运维效率。
2025年11月15日
0 阅读
0 评论
0 点赞
2025-11-15
磁盘分区详解
🤖 Assistant以下是Linux磁盘分区的详解指南,涵盖核心概念、操作流程及最佳实践:一、磁盘分区基础概念物理磁盘(Physical Disk)物理存储设备(如HDD/SSD),在Linux中表示为 /dev/sdX(如 /dev/sda、/dev/nvme0n1)。分区表(Partition Table)MBR(Master Boot Record)传统方案,最多支持4个主分区(或3主分区+1扩展分区)。扩展分区可划分为多个逻辑分区。最大磁盘容量:2TB。GPT(GUID Partition Table)现代标准,支持128个分区,无主/逻辑分区限制。支持 >2TB 的磁盘(如18EB)。需UEFI启动(替代传统BIOS)。二、分区操作工具工具适用场景关键命令示例fdiskMBR分区fdisk /dev/sda → n(新建)、d(删除)、p(查看)、w(保存)gdiskGPT分区用法类似fdisk,支持GPTparted高级操作(如调整大小)parted /dev/sda → resizepart、mkpartcfdisk交互式界面图形化操作分区三、分区步骤示例(以fdisk创建MBR分区)查看磁盘信息fdisk -l # 列出所有磁盘及分区进入交互模式fdisk /dev/sdb # 操作目标磁盘新建分区:n → 选择主/扩展分区 → 设置起始/结束扇区删除分区:d → 选择分区号保存退出:w更新分区表partprobe /dev/sdb # 重新加载分区表(无需重启)四、文件系统格式化常用文件系统类型ext4:Linux默认,日志式文件系统XFS:高性能,适合大文件Btrfs:支持快照、RAID等高级特性格式化命令mkfs.ext4 /dev/sdb1 # 格式化为ext4 mkfs.xfs /dev/sdb2 # 格式化为XFS五、挂载分区临时挂载mount /dev/sdb1 /mnt/data # 挂载到指定目录永久挂载(修改/etc/fstab)添加以下行:/dev/sdb1 /mnt/data ext4 defaults 0 2字段说明:设备 → 挂载点 → 文件系统 → 挂载选项 → dump标志 → fsck顺序验证配置mount -a # 测试fstab配置是否正确六、分区方案设计建议基础服务器分区示例/(根分区):20-50GB(系统文件)/home:独立分区(用户数据隔离)/var:独立分区(日志/缓存频繁写入)/boot:500MB-1GB(引导文件,GPT系统可选)swap:物理内存的1.5-2倍(内存不足时启用)数据服务器分区示例/data:独立分区(专用于业务数据)使用LVM(便于动态扩展)七、LVM(逻辑卷管理)核心概念PV(Physical Volume):物理卷(如/dev/sdb1)VG(Volume Group):卷组(多个PV的集合)LV(Logical Volume):逻辑卷(从VG划分的空间)操作流程pvcreate /dev/sdb1 # 创建PV vgcreate vg_data /dev/sdb1 # 创建VG lvcreate -n lv_data -L 100G vg_data # 创建LV mkfs.xfs /dev/vg_data/lv_data # 格式化 mount /dev/vg_data/lv_data /data # 挂载八、常见问题处理磁盘空间不足扩展LVM:lvextend -L +50G /dev/vg_data/lv_data → xfs_growfs /data非LVM分区:需用parted调整分区大小(风险较高)分区表损坏使用gdisk或testdisk尝试修复。数据恢复误删分区:立即卸载磁盘 → 使用testdisk扫描恢复。九、最佳实践重要操作前备份:dd if=/dev/sda of=disk.img bs=4M生产环境优先用GPT:避免MBR的2TB限制。使用LVM:灵活调整存储空间,支持快照备份。监控磁盘健康:smartctl -a /dev/sda(SMART检测)。通过以上步骤,您可高效管理Linux磁盘分区,确保系统稳定性和数据安全。
2025年11月15日
1 阅读
0 评论
0 点赞
2025-11-15
Nginx简介
Nginx 是什么?Nginx (发音为 "engine X") 是一个高性能、开源的 Web 服务器、反向代理服务器、负载均衡器、HTTP 缓存器 和 邮件代理服务器。它最初由俄罗斯工程师 Igor Sysoev 开发,旨在解决著名的 C10K 问题(即如何在单台服务器上同时处理成千上万的并发连接)。由于其出色的性能、稳定性、丰富的功能集、简单的配置和低资源消耗,Nginx 迅速流行起来,成为全球最受欢迎的 Web 服务器之一。Nginx 的核心设计目标高性能: 核心目标,处理高并发连接时资源消耗低、响应速度快。高并发: 能够处理大量的并发连接(通常是 Apache 的几倍甚至几十倍)。低内存占用: 设计上避免不必要的内存分配和复制。高稳定性: 即使在高负载下也能稳定运行。模块化设计: 功能通过模块扩展,可以按需加载。热部署: 支持在不停止服务的情况下升级程序、更改配置、添加/移除模块。Nginx 的基本工作原理Nginx 之所以能达到高性能和高并发,主要得益于其独特的 事件驱动、异步非阻塞 的架构模型。这与传统的 Apache 等基于 进程/线程 的同步阻塞模型有很大区别。Master-Worker 多进程模型:Master Process (主进程): 这是 Nginx 启动时首先运行的进程。它不以 root 身份运行(除非需要监听 80 端口)。主要职责包括:读取、验证、应用配置文件。管理工作进程(Worker Processes)。平滑升级:启动新版本 Worker,逐步淘汰旧 Worker。日志管理(可选)。打开监听套接字(但通常不处理请求)。Worker Processes (工作进程): 由 Master 进程派生。通常以普通用户身份运行(安全考虑)。它们是实际处理客户端请求的进程。关键特点是:数量可配置(通常设置为 CPU 核心数或稍多),避免过多的上下文切换。每个 Worker 进程都是 独立 的,互不影响。一个 Worker 崩溃不会影响其他 Worker 或 Master。采用 事件驱动 和 异步非阻塞 I/O 模型处理请求。事件驱动与异步非阻塞 I/O:事件驱动: Worker 进程的核心是一个高效的 事件循环(基于 epoll (Linux)、kqueue (BSD) 等系统调用)。它持续监听各种事件源(如网络套接字上的读写事件、定时器事件、信号事件等)。异步非阻塞:非阻塞: 当 Worker 需要执行一个可能耗时的操作(比如从磁盘读取文件、向后端服务器发送请求并等待响应、访问数据库等)时,它不会傻等(阻塞)在那里。它会立即将这个操作交给操作系统或第三方库,并注册一个回调函数,然后继续处理事件循环中的其他事件。异步: 当那个耗时的操作在后台完成时,操作系统或库会生成一个完成事件(如数据准备好可读了)。Worker 的事件循环会捕获到这个事件,并调用之前注册的回调函数来处理结果(如将读取到的文件内容发送给客户端)。优势: 这种模型允许单个 Worker 进程在等待多个慢速 I/O 操作(磁盘、网络)完成的同时,高效地处理大量的其他请求或事件。它避免了为每个连接都创建一个新线程或进程的巨大开销(内存、CPU 上下文切换)。资源消耗(CPU、内存)主要与活动连接数相关,而不是总连接数。请求处理流程:客户端发起请求(如 HTTP 请求)。Master 进程打开监听端口(如 80, 443)。某个 Worker 进程通过事件循环监听到新的连接请求 (accept 事件)。Worker 接受连接。Worker 开始读取请求数据(非阻塞读)。如果数据没读完,注册读事件等待后续数据。请求解析:Worker 解析请求行、请求头等。请求匹配:根据配置文件 (nginx.conf) 中的 server 块、location 块等规则,确定如何处理该请求(是静态文件?需要代理到后端?需要重定向?)。处理请求:静态内容: Worker 读取文件(非阻塞 I/O)。文件读取完成后,事件循环触发回调,Worker 将文件内容写入响应(非阻塞写)。反向代理: Worker 向后端服务器(如 Tomcat, Node.js, 另一个 Nginx)发起连接(非阻塞连接),发送请求(非阻塞写),然后等待响应(注册读事件)。后端响应到达后,事件循环触发回调,Worker 将响应转发给客户端(非阻塞写)。FastCGI (PHP): 类似反向代理,但使用 FastCGI 协议与 PHP-FPM 等进程通信。发送响应:将处理结果(HTML, JSON, 错误页面等)发送给客户端(非阻塞写)。请求处理完成(可能保持连接 keep-alive 等待下一个请求,或关闭连接)。负载均衡: 当 Nginx 作为反向代理时,它可以将请求分发到多个后端服务器上,实现负载均衡。常见的算法有:轮询(Round Robin)加权轮询(Weighted Round Robin)最少连接(Least Connections)IP 哈希(IP Hash)基于响应时间(需要插件)模块化架构:Nginx 的核心功能相对精简。大部分功能(如 HTTP、SSL、Gzip、Rewrite、负载均衡、缓存、认证等)都以 模块 的形式实现。模块分为 核心模块 (编译时内置) 和 第三方模块 (可动态加载,需编译时指定)。这种设计使得 Nginx 非常灵活,可以根据需要定制功能,同时保持核心的高效性。Nginx 的主要应用场景静态内容服务: 提供 HTML、CSS、JavaScript、图片、视频等静态文件,性能极高。反向代理:隐藏后端应用服务器的真实 IP 和端口。负载均衡,提高应用的可扩展性和可用性。提供 SSL/TLS 终端卸载(HTTPS 解密在 Nginx 完成,减轻后端服务器负担)。API 网关: 路由 API 请求、认证、限流、日志等。HTTP 缓存: 缓存后端响应,减轻后端压力,加快客户端响应速度。Web 加速: 结合 Gzip 压缩、SSL 优化、连接复用等技术。邮件代理: 处理 IMAP、POP3、SMTP 协议。TCP/UDP 负载均衡: (Stream 模块) 代理非 HTTP 流量,如数据库、游戏服务器等。总结Nginx 的核心优势在于其 Master-Worker 多进程架构 和 事件驱动异步非阻塞 I/O 模型。这使得它能够以极低的资源消耗处理海量的并发连接,特别适合高并发、低延迟的场景。其模块化设计提供了极大的灵活性,使其应用范围远超单纯的 Web 服务器。作为运维工程师,理解这些原理对于配置优化、性能调优和故障排查至关重要。
2025年11月15日
1 阅读
0 评论
0 点赞
2025-11-02
Linux 基础命令之基础命令2全解析
以下为Linux系统基础命令的详细解析,涵盖系统操作、脚本编写、防火墙管理及文本处理工具:1. 目录与文件操作cd:切换目录cd /path 进入绝对路径 | cd .. 返回上级 | cd ~ 返回家目录ls:列出目录内容-l 详细信息 | -a 显示隐藏文件 | -h 人性化文件大小pwd:显示当前工作目录的绝对路径mv:移动/重命名文件mv file1.txt /backup/ 移动文件 | mv old.txt new.txt 重命名2. 帮助文档help:查看Shell内置命令帮助help cd 显示cd用法man:查看命令手册man ls 显示ls完整文档(按q退出)3. Shell脚本控制结构注:以下为脚本语法(非独立命令),需在.sh文件中使用if:条件判断if [ $var -eq 10 ]; then echo "Equal" fifor:循环遍历for i in {1..5}; do echo $i donewhile:条件循环while [ $count -lt 5 ]; do echo $count ((count++)) donecase:多分支匹配case $input in "start") service start ;; "stop") service stop ;; *) echo "Invalid" ;; esacselect:创建交互菜单select opt in "Yes" "No"; do echo "You chose $opt" break doneread:读取用户输入 read -p "Name: " name 提示输入并存储变量4. 文本处理工具cut:按列提取文本 cut -d: -f1 /etc/passwd 以:分隔,提取第一列uniq:去重相邻重复行 sort file.txt | uniq -c 先排序再统计重复次数sort:排序文本 -n 数值排序 | -r 倒序 | -k2 按第二列排序wc:统计文本 -l 行数 | -w 单词数 | -c 字节数5. 系统工具source(.):执行脚本并影响当前Shell环境 source ~/.bashrc 重新加载配置test([ ]):条件测试 [ -f /path/file ] 检查文件存在 | [ $a -gt $b ] 数值比较6. 防火墙管理iptables:传统防火墙规则iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH iptables -L # 列出规则firewall-cmd(Firewalld工具):firewall-cmd --add-port=80/tcp --permanent # 永久开放80端口 firewall-cmd --reload # 重载配置7. SELinux管理sestatus:查看SELinux状态 sestatus 显示enforcing(强制模式)或disabledsetenforce:临时切换模式 setenforce 0 切换为宽松模式(Permissive) | setenforce 1 恢复强制模式8. 自动化运维工具ansible:批量管理主机 ansible all -m ping 测试所有主机连通性salt(SaltStack): salt '*' cmd.run 'df -h' 在所有主机执行磁盘检查使用场景示例1. 备份日志并分析cd /var/log grep "ERROR" syslog | cut -d' ' -f3- | sort | uniq -c > errors.txt wc -l errors.txt # 统计错误类型数量2. 批量重启服务for service in httpd nginx; do systemctl restart $service done3. 快速防火墙配置firewall-cmd --add-service=http --permanent firewall-cmd --reload sestatus # 确认SELinux状态关键提示:脚本控制结构需在脚本文件中使用,直接终端输入无效防火墙工具二选一(iptables vs firewalld),避免冲突生产环境操作前务必测试(如ansible使用--check模式)
2025年11月02日
2 阅读
0 评论
0 点赞
2025-11-02
Linux 基础命令之基础命令1全解析
以下是Linux系统基础命令的详细解析,涵盖常用选项、功能说明及典型示例。作为运维工程师,这些命令是日常系统管理、故障排查和自动化的核心工具。1. 时间与日期date: 显示或设置系统时间date # 显示当前时间 date +"%Y-%m-%d %H:%M:%S" # 自定义格式输出 date -s "2024-01-01 12:00:00" # 设置系统时间(需root)ntpdate: 同步网络时间(需安装ntpdate包)ntpdate ntp.aliyun.com # 从阿里云NTP服务器同步时间2. 计划任务crontab: 定时任务管理crontab -e # 编辑当前用户的任务 crontab -l # 列出任务 crontab -r # 删除所有任务示例任务:0 2 * * * /backup.sh # 每天凌晨2点执行备份脚本3. 文件同步与传输rsync: 高效远程/本地同步rsync -avz /local/ user@remote:/remote/ # 同步目录(保留属性、压缩) rsync -avz --delete /src/ /backup/ # 同步并删除目标多余文件scp: 安全文件传输scp file.txt user@remote:/path/ # 上传文件 scp -P 2222 -r dir/ user@remote:/path/ # 指定端口+递归上传目录4. 远程管理ssh: 安全远程登录ssh user@host # 标准登录 ssh -p 2222 -i ~/.ssh/key.pem user@host # 指定端口+私钥5. 后台进程管理nohup: 退出终端后保持进程运行nohup ./script.sh & # 后台运行,输出到nohup.out nohup ./script.sh > output.log 2>&1 & # 重定向输出6. Shell环境sh / bash: 执行脚本sh script.sh # 使用Bourne shell执行 bash script.sh # 使用Bash执行(支持更多特性)source: 在当前Shell执行脚本(不启动子进程)source ~/.bashrc # 重新加载配置(等效于 `. ~/.bashrc`)7. 主机名管理hostname: 显示或临时设置主机名hostname # 显示当前主机名 hostname web01 # 临时修改(重启失效)hostnamectl: 永久修改主机名(Systemd系统)hostnamectl set-hostname web01 # 永久修改 hostnamectl status # 查看主机名信息8. 资源限制ulimit: 控制进程资源ulimit -a # 显示所有限制 ulimit -n 65535 # 设置最大打开文件数(临时)永久生效:修改/etc/security/limits.conf9. 环境变量export: 设置环境变量(当前Shell及子进程)export PATH=$PATH:/usr/local/bin # 添加路径env: 查看或临时设置环境变量env # 显示所有环境变量 env VAR=value command # 临时变量执行命令set: 显示所有Shell变量(含环境变量和局部变量)set | grep PATH # 过滤查看变量declare: 声明变量类型(Bash特有)declare -i num=10 # 定义整数变量 declare -a arr=(1 2 3) # 定义数组10. 单次任务调度at: 指定时间执行一次性任务echo "reboot" | at 02:00 tomorrow # 明晨2点重启 atq # 查看待执行任务 atrm 1 # 删除ID为1的任务11. 文件与目录dir: 列出目录内容(类似ls -C)dir /path/ # 列目录(默认不显示隐藏文件)diff: 比较文件差异diff file1 file2 # 比较文件 diff -r dir1 dir2 # 递归比较目录12. 高级工具db_load: Berkeley DB数据库工具db_load -T -t hash -f data.txt passwd.db # 文本转DB文件dmsetup: LVM设备映射管理dmsetup ls # 列出所有设备映射 dmsetup remove /dev/mapper/vol01 # 删除映射运维场景应用数据备份:rsync + crontab 定时增量备份服务监控:nohup 启动后台监控脚本故障排查:ulimit -n 检查文件句柄泄露安全加固:ssh -i 使用密钥登录替代密码提示:使用 man 命令(如 man rsync)查看完整手册,或 命令 --help 获取快速帮助。
2025年11月02日
2 阅读
0 评论
0 点赞
2025-11-02
Linux 基础命令之系统开关机命令全解析
以下是Linux系统中与开关机、运行级别及用户会话相关的命令详解,适用于系统管理和故障排查场景:1. init作用:系统初始化进程(PID=1),用于切换运行级别(runlevel)。常用操作:init 0 # 关机(等同于shutdown) init 6 # 重启 init 3 # 切换到多用户文本模式 init 5 # 切换到图形界面模式注意:直接调用init会改变系统状态,需root权限。2. reboot作用:安全重启系统。常用参数:reboot # 立即重启 reboot -f # 强制重启(跳过正常关机流程) reboot -w # 仅写wtmp记录,不实际重启(测试用)3. shutdown作用:安全关机或重启(推荐使用),支持定时和消息广播。关键用法:shutdown -h now # 立即关机 shutdown -r +5 "系统升级" # 5分钟后重启,广播提示消息 shutdown -r 14:30 # 指定时间重启(14:30) shutdown -c # 取消计划中的关机/重启优势:向所有登录用户发送通知,避免数据丢失。4. halt 与 poweroffhalt:halt # 停止系统运行(不切断电源) halt -p # 停止系统并切断电源(等同于poweroff)poweroff:poweroff # 关机并断电(最常用) poweroff -f # 强制断电(可能损坏数据)区别:halt默认不切断电源,poweroff会发送ACPI指令断电。5. runlevel作用:显示当前和上一次的运行级别。输出示例:runlevel # 显示 "N 5"(N=无上一次级别,5=当前图形模式)运行级别:0:关机1:单用户模式(救援模式)3:多用户文本模式5:图形界面模式6:重启6. login 与 logoutlogin:login # 启动新登录会话(通常在终端自动触发) login user # 切换到指定用户(需密码)logout:logout # 注销当前登录会话(仅对登录shell有效)注意:在非登录shell(如子终端)中无效,需用exit。7. exit作用:退出当前Shell会话在登录Shell中相当于logout返回退出码(0=成功)示例:exit # 退出当前Shell exit 1 # 退出并返回错误码(用于脚本)命令对比与最佳实践场景推荐命令风险提示安全关机shutdown -h now广播通知用户,避免数据丢失强制断电poweroff -f可能损坏数据,仅紧急情况使用多用户重启shutdown -r +10预留时间保存工作切换运行级别init 3 或 init 5改变系统服务状态快速重启reboot比init 6更常用运维建议:生产环境优先用shutdown,避免用户数据丢失。通过runlevel检查当前模式,确保服务兼容性(如数据库服务在级别3下运行)。紧急故障时使用init 1进入单用户模式修复系统。
2025年11月02日
3 阅读
1 评论
0 点赞
2025-11-02
Linux 基础命令之网络管理命令全解析
以下为 Linux 系统网络管理核心命令的详解,包含用途、常用参数及示例:1. Ping用途:测试主机间网络连通性(ICMP 协议)常用参数:-c 次数:指定发送包次数(例:ping -c 4 google.com)-i 间隔:设置发包间隔(秒)-s 大小:指定数据包大小(字节)示例:ping -c 3 8.8.8.8 # 向 Google DNS 发送 3 个 ICMP 包2. ifconfig用途:配置或显示网络接口信息(已过时,推荐用 ip 命令)常用操作:ifconfig eth0 up # 启用 eth0 接口 ifconfig eth0 192.168.1.2 netmask 255.255.255.0 # 设置 IP 和子网掩码3. ip addr (ip a)用途:管理 IP 地址(替代 ifconfig)常用命令:ip addr show # 显示所有接口 IP 信息 ip addr add 192.168.1.10/24 dev eth0 # 为 eth0 添加 IP4. ifup / ifdown用途:启用/禁用网络接口(依赖 /etc/network/interfaces 配置)示例:ifup eth0 # 启动 eth0 ifdown eth0 # 关闭 eth05. nmcli用途:NetworkManager 命令行工具(动态管理网络)常用操作:nmcli device status # 查看设备状态 nmcli connection show # 显示所有连接 nmcli connection up "Wired" # 启用名为 "Wired" 的连接6. route用途:查看/操作路由表(已过时,推荐 ip route)示例:route -n # 数字格式显示路由表 route add default gw 192.168.1.1 # 添加默认网关7. nslookup用途:DNS 查询工具示例:nslookup google.com # 查询域名解析 nslookup -type=MX gmail.com # 查询 MX 记录8. traceroute用途:追踪数据包路径参数:-n:不解析主机名(显示 IP)-I:使用 ICMP 协议示例:traceroute -n 8.8.8.89. dig用途:高级 DNS 查询工具示例:dig google.com A # 查询 A 记录 dig @8.8.8.8 google.com # 指定 DNS 服务器查询10. tcpdump用途:网络抓包分析常用参数:-i eth0:指定网卡port 80:过滤端口-w file.pcap:保存到文件示例:tcpdump -i eth0 tcp port 80 -w http.pcap11. nmap用途:网络扫描和安全审计常用命令:nmap -sP 192.168.1.0/24 # 扫描存活主机 nmap -p 22,80,443 10.0.0.1 # 扫描指定端口12. brctl用途:管理 Linux 网桥操作:brctl addbr br0 # 创建网桥 brctl addif br0 eth1 # 将 eth1 加入网桥13. ethtool用途:查看/修改网卡参数示例:ethtool eth0 # 显示 eth0 详细信息 ethtool -s eth0 speed 1000 duplex full # 设置千兆全双工14. setup (Red Hat/CentOS)用途:文本模式系统配置工具(含网络)启动:setup # 进入交互式配置菜单15. arp用途:管理 ARP 缓存示例:arp -n # 显示 ARP 表(IP 不解析) arp -d 192.168.1.1 # 删除 ARP 条目16. ab (Apache Bench)用途:HTTP 服务压力测试示例:ab -n 1000 -c 100 http://example.com/ # 1000 请求,100 并发17. iperf用途:网络带宽测试用法:# 服务端 iperf -s # 客户端 iperf -c 192.168.1.100 -t 30 -P 4 # 30 秒测试,4 线程最佳实践建议:优先使用现代工具:ip 替代 ifconfig/route,ss 替代 netstat生产环境谨慎操作:ifdown/brctl 可能导致网络中断诊断流程:连通性:ping → tracerouteDNS 问题:nslookup → dig协议分析:tcpdump性能瓶颈:iperf/ab注意:部分命令需 root 权限执行(如 tcpdump, ifconfig)。使用前建议通过 man 命令 查看手册(例:man ip)。
2025年11月02日
0 阅读
0 评论
0 点赞
2025-11-02
Linux 基础命令之系统资源管理命令全解析
Linux 系统资源管理命令全解析下面详细解析 Linux 系统资源管理核心命令,涵盖磁盘管理、文件系统操作、性能监控和网络分析四大领域:一、磁盘分区管理1. fdisk - 传统磁盘分区工具# 查看磁盘分区 sudo fdisk -l # 进入交互模式 (如操作 /dev/sda) sudo fdisk /dev/sda交互命令: n : 新建分区 d : 删除分区 p : 显示分区表 w : 写入更改 q : 退出不保存2. parted - 高级分区工具(支持 GPT)# 查看分区 sudo parted -l # 创建 GPT 分区表 sudo parted /dev/sdb mklabel gpt # 创建 100GB 分区 sudo parted /dev/sdb mkpart primary ext4 0% 100GB二、文件系统操作3. mkfs.ext4 - 创建 ext4 文件系统# 格式化分区 sudo mkfs.ext4 /dev/sdb1 # 带标签格式化 sudo mkfs.ext4 -L "DataDisk" /dev/sdb14. mount / umount - 挂载/卸载文件系统# 挂载分区 sudo mount /dev/sdb1 /mnt/data # 卸载分区 sudo umount /mnt/data # 永久挂载 (编辑 /etc/fstab) /dev/sdb1 /data ext4 defaults 0 25. fsck.ext4 - 文件系统检查修复# 检查分区 sudo fsck.ext4 /dev/sda1 # 强制修复 sudo fsck.ext4 -f /dev/sda1三、逻辑卷管理 (LVM)命令功能示例pvcreate创建物理卷sudo pvcreate /dev/sdbvgcreate创建卷组sudo vgcreate vg_data /dev/sdblvcreate创建逻辑卷sudo lvcreate -L 100G -n lv_data vg_datalvextend扩展逻辑卷sudo lvextend -L +50G /dev/vg_data/lv_dataresize2fs调整文件系统大小sudo resize2fs /dev/vg_data/lv_data四、磁盘操作与空间分析6. dd - 磁盘/文件低级复制# 制作 U 盘启动镜像 sudo dd if=ubuntu.iso of=/dev/sdc bs=4M status=progress # 磁盘克隆 sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync # 测试磁盘速度 dd if=/dev/zero of=./testfile bs=1G count=1 oflag=direct7. du - 目录空间分析# 查看当前目录大小 du -sh . # 查看目录下各子目录大小 du -h --max-depth=1 /var # 排除特定目录 du -h --exclude=*.log /home8. df - 磁盘空间报告# 人类可读格式 df -h # 显示 inode 使用 df -i # 显示特定文件系统类型 df -h -t ext4五、系统性能监控9. top - 实时进程监控top交互命令: P : CPU 使用排序 M : 内存使用排序 1 : 显示多核详情 k : 结束进程10. htop (增强版 top)# 安装 sudo apt install htop # Ubuntu sudo yum install htop # CentOS # 使用 htop11. free - 内存使用分析# 显示内存 (MB) free -m # 详细报告 free -h -s 5 # 每5秒刷新12. uptime - 系统负载报告uptime # 输出:10:30:01 up 15 days, 3:45, 2 users, load average: 0.08, 0.03, 0.0513. w - 登录用户与进程w # 输出: # USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT # john pts/0 192.168.1.5 09:15 5.00s 0.10s 0.00s w六、I/O 性能分析14. iostat - CPU/磁盘 I/O 统计# 每2秒刷新,显示所有设备 iostat -dx 2 # 关键指标: # %util : 设备使用率 # await : I/O 平均等待时间15. vmstat - 虚拟内存统计# 每1秒刷新,共5次 vmstat 1 5 # 关键字段: # r : 运行队列进程数 # swap : 交换内存使用 (si/so) # io : 块设备IO (bi/bo)16. iotop - 磁盘 I/O 进程监控sudo iotop # 类似 top 的交互界面,按 o 只显示活动进程七、网络与进程分析17. ps - 进程快照# 显示所有进程 ps aux # 树形结构显示 ps -ejH # 查找特定进程 ps aux | grep nginx18. netstat / ss - 网络连接分析# 显示所有监听端口 (netstat) netstat -tulnp # 显示所有连接 (ss) ss -tunap # 查看进程占用端口 ss -ltp | grep java19. lsof - 打开文件列表# 查看端口占用 sudo lsof -i :80 # 查看用户打开文件 lsof -u www-data # 查看目录打开文件 lsof +D /var/log20. iftop - 实时带宽监控sudo iftop -P -i eth0 # 显示网络流量,按 s 显示源,d 显示目标21. sar - 系统历史性能数据# 安装收集器 sudo apt install sysstat # Ubuntu sudo yum install sysstat # CentOS # 查看 CPU 历史 sar -u # 查看内存使用 sar -r # 生成每日报告 sar -A -f /var/log/sa/sa01八、实战场景命令组合1. 磁盘空间告警排查# 找出大文件 sudo du -h / | sort -h | tail -20 # 检查 inode 使用 df -i2. 内存泄漏分析# 监控内存进程 top -o %MEM # 检查内存分配 vmstat 53. 网络故障排查# 检查连接 ss -tanp | grep ESTAB # 分析带宽 sudo iftop -i eth0 # 路由跟踪 traceroute 8.8.8.84. 性能瓶颈定位# CPU 分析 mpstat -P ALL 2 # I/O 分析 iostat -x 2 # 综合报告 sar -u -r -d 1 10命令速查表类别命令核心功能磁盘管理fdiskMBR 分区操作 partedGPT 分区操作文件系统mkfs.ext4创建 ext4 文件系统 fsck.ext4文件系统检查修复LVMlvcreate创建逻辑卷空间分析df磁盘空间报告 du目录空间分析性能监控top实时进程监控 vmstat虚拟内存统计 iostatI/O 性能分析网络分析ss网络连接分析 iftop实时带宽监控进程分析ps进程快照 lsof打开文件列表系统状态sar历史性能数据分析提示:生产环境中建议定期收集性能数据(通过 sar 和 sysstat),并设置磁盘空间监控(如 df -h 配合脚本告警)。掌握这些命令是 Linux 系统管理的核心技能,建议在测试环境中充分练习。
2025年11月02日
1 阅读
0 评论
0 点赞
2025-10-19
Linux 基础命令之软件资源管理命令全解析
Linux 软件资源管理命令全解析下面详细解析 Linux 系统中软件资源管理的核心命令,涵盖包管理、压缩解压、网络传输、编译安装和服务管理等关键操作:包管理工具1. rpm - RPM 包管理(RHEL/CentOS/openEuler)# 安装软件包 sudo rpm -ivh package.rpm # 升级软件包 sudo rpm -Uvh package.rpm # 查询已安装包 rpm -qa | grep nginx # 查询包文件 rpm -ql httpd # 验证包完整性 rpm -V httpd # 卸载软件包 sudo rpm -e package_name2. yum - 高级包管理(RHEL/CentOS/openEuler)# 安装软件 sudo yum install nginx # 更新所有软件 sudo yum update # 搜索软件包 yum search python3 # 查看软件信息 yum info docker # 删除软件 sudo yum remove httpd # 清理缓存 sudo yum clean all3. apt-get - Debian/Ubuntu 包管理# 更新软件列表 sudo apt-get update # 安装软件 sudo apt-get install nginx # 升级所有软件 sudo apt-get upgrade # 删除软件(保留配置) sudo apt-get remove package # 完全删除(含配置) sudo apt-get purge package # 自动清理 sudo apt-get autoremove压缩与解压4. tar - 打包归档工具# 创建压缩包(gzip) tar -czvf archive.tar.gz /path/to/dir # 解压(gzip) tar -xzvf archive.tar.gz # 创建压缩包(bzip2) tar -cjvf archive.tar.bz2 /path/to/dir # 查看压缩包内容 tar -tf archive.tar.gz # 解压到指定目录 tar -xzvf archive.tar.gz -C /target/dir5. gzip / bzip2 - 文件压缩# gzip 压缩 gzip file.txt # 生成 file.txt.gz # gzip 解压 gzip -d file.txt.gz # bzip2 压缩 bzip2 file.log # 生成 file.log.bz2 # bzip2 解压 bzip2 -d file.log.bz26. zip / unzip - ZIP 压缩格式# 创建 ZIP 压缩包 zip -r archive.zip /path/to/dir # 解压 ZIP 文件 unzip archive.zip # 解压到指定目录 unzip archive.zip -d /target/dir # 加密压缩 zip -e secure.zip sensitive.doc网络传输7. wget - 命令行下载工具# 下载文件 wget https://example.com/file.iso # 断点续传 wget -c https://example.com/large.file # 限速下载(100KB/s) wget --limit-rate=100k https://example.com/bigfile # 镜像整个网站 wget -mk https://example.com/ # 后台下载 wget -b https://example.com/large.iso8. curl - 多功能传输工具# 下载文件 curl -O https://example.com/file.txt # 发送 POST 请求 curl -X POST -d 'param1=value' https://api.example.com # 设置请求头 curl -H "Content-Type: application/json" https://api.example.com # 使用代理 curl -x http://proxy:8080 https://example.com # 测试网站响应时间 curl -s -o /dev/null -w "%{time_total}\n" https://google.com9. rz/sz - Zmodem 文件传输(需安装 lrzsz)# 发送文件到本地(终端) sz filename # 从终端接收文件 rz # 弹出文件选择对话框10. jar - Java 归档管理# 创建 JAR 包 jar cvf app.jar *.class # 查看 JAR 内容 jar tf app.jar # 解压 JAR 包 jar xvf app.jar # 运行可执行 JAR java -jar app.jar服务管理11. service - SysV 服务管理(旧系统)# 启动服务 sudo service nginx start # 停止服务 sudo service nginx stop # 重启服务 sudo service nginx restart # 查看状态 sudo service nginx status12. systemctl - systemd 服务管理# 启动服务 sudo systemctl start nginx # 设置开机启动 sudo systemctl enable nginx # 查看服务状态 systemctl status nginx # 重启服务 sudo systemctl restart nginx # 查看所有服务 systemctl list-unit-files --type=service13. chkconfig - 服务启动管理(SysV)# 查看服务状态 chkconfig --list # 设置开机启动 sudo chkconfig httpd on # 禁用开机启动 sudo chkconfig nginx off编译安装14. make - 源代码构建工具# 配置编译选项 ./configure --prefix=/usr/local # 编译源代码 make # 安装软件 sudo make install # 清理构建文件 make clean # 卸载软件 sudo make uninstall15. cmake - 跨平台构建工具# 创建构建目录 mkdir build && cd build # 生成 Makefile cmake .. # 编译安装 make && sudo make install # 指定构建选项 cmake -DCMAKE_INSTALL_PREFIX=/opt/app ..实用技巧与场景软件源管理# 添加 EPEL 源(CentOS) sudo yum install epel-release # 添加 PPA 源(Ubuntu) sudo add-apt-repository ppa:ondrej/php sudo apt-get update下载安装示例# 下载并安装二进制包 wget https://example.com/app.tar.gz tar -xzvf app.tar.gz cd app ./configure make sudo make install服务管理场景# 查看服务日志 sudo journalctl -u nginx -f # 修改服务配置 sudo systemctl edit nginx.service # 重载服务配置 sudo systemctl daemon-reload编译优化# 多核编译加速 make -j$(nproc) # 最小化安装 ./configure --prefix=/usr --disable-static命令对比表命令类别主要功能典型使用场景rpm包管理管理 RPM 格式软件包CentOS/RedHat 系统安装yum包管理自动解决依赖关系批量安装/更新软件apt-get包管理Debian 系软件管理Ubuntu/Debian 系统维护tar压缩归档打包/解压目录备份/迁移数据wget网络传输命令行下载文件自动化脚本下载资源curl网络传输数据传输/API 调用测试 RESTful 接口systemctl服务管理管理系统服务服务启停/自启动配置make编译安装构建源代码从源码安装软件jarJava 管理创建/管理 Java 归档文件Java 应用打包部署最佳实践指南包管理原则:# 定期更新系统 sudo yum update # RHEL系 sudo apt-get upgrade # Debian系 # 清理无用包 sudo yum autoremove # RHEL系 sudo apt autoremove # Debian系编译安装规范:# 使用标准安装路径 ./configure --prefix=/usr/local # 分离构建目录 mkdir build && cd build cmake ..服务管理安全:# 限制服务权限 sudo systemctl edit nginx添加:[Service] User=nginx Group=nginx网络传输安全:# 验证下载文件完整性 wget https://example.com/file.iso wget https://example.com/file.iso.sha256 sha256sum -c file.iso.sha256提示:使用 man 命令名(如 man tar)查看完整手册。对于生产环境,建议使用配置管理工具(Ansible/SaltStack)批量管理软件资源。掌握这些命令是 Linux 系统管理员的核心技能,建议在测试环境中充分练习后再应用于生产环境。
2025年10月19日
2 阅读
0 评论
0 点赞
2025-10-19
Linux 基础命令之文件管理命令全解析
Linux 文件管理命令全解析下面详细解析 Linux 系统中核心文件管理命令,包含使用场景、常用选项和实用示例:文件创建与删除1. touch - 创建空文件/更新时间戳# 创建单个文件 touch file.txt # 创建多个文件 touch file1.txt file2.txt file3.txt # 更新时间戳为当前时间 touch -a file.txt # 仅更新访问时间 touch -m file.txt # 仅更新修改时间 # 设置特定时间戳 touch -t 202308011200 file.txt # 格式: [[CC]YY]MMDDhhmm[.ss]2. mkdir - 创建目录# 创建单层目录 mkdir documents # 创建多层目录 mkdir -p project/src/main/java # 设置目录权限(rwxr-x---) mkdir -m 750 private_dir3. rm - 删除文件/目录# 删除文件 rm file.txt # 强制删除不提示 rm -f log.txt # 递归删除目录 rm -r project/ # 交互式删除(确认每个文件) rm -i *.tmp # 删除空目录 rmdir empty_dir文本编辑器4. vi/vim - 文本编辑器# 基本操作 vi file.txt # 常用模式: i # 进入插入模式 Esc # 返回命令模式 :wq # 保存并退出 :q! # 强制退出不保存 # 实用命令: dd # 删除当前行 yy # 复制当前行 p # 粘贴 /word # 搜索单词 :%s/old/new/g # 全局替换5. nano - 简单文本编辑器(新手友好)nano file.txt # 底部快捷键提示:^O保存,^X退出文件查看6. cat - 连接并显示文件# 查看文件内容 cat config.conf # 显示行号 cat -n server.log # 合并多个文件 cat part1.txt part2.txt > full.txt # 显示非打印字符 cat -v binary.dat7. head - 显示文件开头# 默认显示前10行 head access.log # 显示前5行 head -n 5 /etc/passwd # 显示前1KB内容 head -c 1024 data.bin8. tail - 显示文件结尾# 默认显示后10行 tail error.log # 显示后20行 tail -n 20 /var/log/syslog # 实时监控日志更新 tail -f /var/log/nginx/access.log9. less / more - 分页查看文件# 分页查看(支持回退) less large_file.log # 基本操作: 空格 # 下一页 b # 上一页 /word # 搜索 q # 退出 # 简单分页(不支持回退) more /var/log/dmesg搜索与处理10. find - 文件搜索# 按名称搜索 find /home -name "*.jpg" # 按类型搜索 find /var -type f -name "*.log" # f=文件, d=目录 # 按大小搜索 find / -size +100M # 大于100MB find . -size -10k # 小于10KB # 按时间搜索 find /etc -mtime -7 # 7天内修改 # 执行操作 find ~/Downloads -name "*.tmp" -delete11. grep - 文本搜索# 基本搜索 grep "error" /var/log/syslog # 递归搜索目录 grep -r "TODO" src/ # 忽略大小写 grep -i "warning" log.txt # 显示匹配行号 grep -n "pattern" file.txt # 反向匹配(不包含) grep -v "debug" output.log12. sed - 流编辑器# 替换文本 sed 's/old/new/g' file.txt # 删除空行 sed '/^$/d' input.txt # 直接修改文件 sed -i 's/127.0.0.1/localhost/g' config.conf # 打印特定行 sed -n '10,20p' longfile.log13. awk - 文本处理语言# 打印第一列 awk '{print $1}' access.log # 条件过滤 awk '$3 > 500 {print $1, $2}' data.csv # 使用分隔符 awk -F: '{print $1, $6}' /etc/passwd # 用户和家目录 # 计算总和 awk '{sum+=$3} END {print sum}' sales.dat文件操作14. echo - 显示文本/创建文件# 输出文本 echo "Hello World" # 创建文件内容 echo "127.0.0.1 localhost" > /etc/hosts # 追加内容 echo "192.168.1.100 server" >> /etc/hosts # 显示变量 echo $PATH15. ln - 创建链接# 创建硬链接 ln original.txt hardlink.txt # 创建软链接(符号链接) ln -s /var/www/html webroot # 查看链接指向 ls -l webroot # 显示 -> /var/www/html16. stat - 显示文件详细信息# 显示文件元数据 stat document.pdf # 输出: # File: document.pdf # Size: 102400 Blocks: 200 IO Block: 4096 regular file # Access: (0644/-rw-r--r--) Uid: ( 1000/ john) Gid: ( 1000/ john) # Access: 2023-08-01 09:30:00.000000000 +0800 # Modify: 2023-07-25 14:20:15.000000000 +0800 # Change: 2023-07-25 14:20:15.000000000 +080017. file - 确定文件类型# 检测文件类型 file unknown.dat # 输出: # unknown.dat: JPEG image data, EXIF standard # 检查多个文件 file *.log # 检测压缩文件 file archive.zip # output: Zip archive data高级技巧命令组合示例# 查找并处理文件 find . -name "*.java" -exec grep -l "interface" {} \; | xargs sed -i 's/interface/@Interface/' # 日志分析 tail -f /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr # 批量重命名 find . -name "*.jpeg" -exec bash -c 'mv "$0" "${0%.jpeg}.jpg"' {} \;文件管理最佳实践备份重要文件:cp important.conf{,.bak} # 创建important.conf.bak使用安全删除:shred -zuv secret.txt # 覆盖后删除文件权限管理:chmod 600 private.key # 仅所有者可读写文件系统检测:df -h # 查看磁盘使用 du -sh * # 查看目录大小命令速查表命令主要功能常用选项touch创建文件/更新时间戳-a, -m, -tmkdir创建目录-p(递归创建)rm删除文件-r(递归), -f(强制)vi/vim文本编辑 cat显示文件内容-n(行号)head显示文件头部-n(行数)tail显示文件尾部-f(实时跟踪)find文件搜索-name, -type, -execgrep文本搜索-i, -r, -vsed流编辑器-i(原地编辑)awk文本处理语言-F(分隔符)ln创建链接-s(符号链接)stat显示文件元数据 file检测文件类型 提示:使用 man 命令名(如 man grep)查看完整手册。熟练掌握这些命令是 Linux 系统管理的基础,建议在安全环境中多加练习。
2025年10月19日
3 阅读
0 评论
0 点赞
2025-10-19
Linux 基础命令之用户权限管理命令全解析
## Linux 用户权限管理命令全解析以下是 Linux 系统中用户权限相关的核心命令详解,包含使用场景、常用选项和实际示例:用户管理命令1. useradd - 创建新用户# 基本用法 sudo useradd [选项] 用户名 # 常用选项 -m # 创建用户主目录(/home/username) -s # 指定默认shell(如 /bin/bash) -g # 指定主用户组 -G # 指定附加用户组 -d # 指定主目录路径 -e # 设置账户过期日期(YYYY-MM-DD) # 创建带主目录的用户并指定shell sudo useradd -m -s /bin/bash john # 创建用户并加入附加组 sudo useradd -m -G developers,sysadmin alice2. userdel - 删除用户# 基本用法 sudo userdel [选项] 用户名 # 常用选项 -r # 同时删除用户主目录和邮件 # 删除用户但保留主目录 sudo userdel john # 完全删除用户及其文件 sudo userdel -r alice3. usermod - 修改用户属性# 基本用法 sudo usermod [选项] 用户名 # 常用选项 -aG # 添加附加用户组(-a 表示追加) -g # 修改主用户组 -s # 修改默认shell -L # 锁定账户 -U # 解锁账户 # 将用户加入sudo组 sudo usermod -aG sudo john # 修改用户主组 sudo usermod -g developers alice # 锁定用户账户 sudo usermod -L john用户组管理命令4. groupadd - 创建新用户组# 创建基本用户组 sudo groupadd developers # 创建系统用户组(GID<1000) sudo groupadd -r sysadmin5. groupmod - 修改用户组属性# 修改组名 sudo groupmod -n devs developers # 修改组ID sudo groupmod -g 2001 devs6. groupdel - 删除用户组# 删除空用户组 sudo groupdel devs # 强制删除非空用户组(需先清空组成员) sudo groupdel -f sysadmin文件权限命令7. chmod - 修改文件权限# 符号模式 chmod [ugoa][+-=][rwx] 文件 # 数字模式 chmod XYZ 文件 # 常用选项 -R # 递归修改 # 设置文件所有者为读写,其他用户只读 chmod u=rw,go=r file.txt # 递归设置目录权限(rwxr-xr-x) chmod -R 755 /project/ # 添加执行权限 chmod +x script.sh8. chown - 修改文件所有者# 基本用法 chown [用户][:组] 文件 # 修改文件所有者 sudo chown john report.txt # 同时修改所有者和组 sudo chown john:developers project/ # 递归修改目录所有者 sudo chown -R alice:developers /webapp/9. chgrp - 修改文件所属组# 修改文件所属组 sudo chgrp developers config.ini # 递归修改目录所属组 sudo chgrp -R sysadmin /logs/权限控制命令10. umask - 设置默认权限掩码# 查看当前umask umask # 输出 0022 # 设置新umask(文件默认权限:666-022=644) umask 0022 # 永久设置(添加到 ~/.bashrc 或 /etc/profile) echo "umask 0027" >> ~/.bashrc11. chattr - 修改文件扩展属性# 基本用法 sudo chattr [+-=][属性] 文件 # 常用属性 +i # 不可修改(免疫删除/重命名) +a # 只能追加内容(日志文件) +A # 不更新访问时间 +c # 透明压缩(某些文件系统) # 设置文件不可修改 sudo chattr +i /etc/passwd # 设置日志文件只能追加 sudo chattr +a /var/log/syslog12. lsattr - 查看文件扩展属性# 查看文件属性 lsattr /etc/passwd # 递归查看目录属性 lsattr -R /etc/ssh/用户信息命令13. id - 显示用户身份信息# 显示当前用户信息 id # 显示指定用户信息 id john # 输出格式: # uid=1001(john) gid=1001(john) groups=1001(john),27(sudo)14. who - 显示已登录用户# 基本用法 who # 显示详细信息 who -Hu # 输出示例: # NAME LINE TIME IDLE PID COMMENT # john tty1 2023-08-01 09:30 . 123415. whoami - 显示当前用户名# 简单显示当前用户 whoami # 输出:john16. last - 显示用户登录历史# 显示所有登录记录 last # 显示指定用户登录记录 last john # 显示重启记录 last reboot权限切换命令17. su - 切换用户身份# 切换到其他用户 su - john # "-" 表示加载目标用户环境 # 切换后返回原用户 exit18. sudo - 以超级用户权限执行命令# 执行单条命令 sudo apt update # 以其他用户身份执行 sudo -u john whoami # 编辑sudoers文件 sudo visudo19. w - 显示登录用户及其活动# 显示所有登录用户的活动 w # 精简输出 w -h # 输出示例: # 09:30:00 up 10 days, 1 user, load average: 0.00, 0.01, 0.05 # USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT # john tty1 :0 09:15 5.00s 0.10s 0.00s w高级权限命令20. chpasswd - 批量修改密码# 从标准输入修改密码 echo "john:newpassword" | sudo chpasswd # 从文件批量修改 sudo chpasswd < users.txt # users.txt 格式: # username1:password1 # username2:password221. chroot - 切换根目录环境# 创建受限环境 sudo mkdir /jail sudo chroot /jail /bin/bash # 用于系统恢复 sudo chroot /mnt/sysroot /bin/bash权限管理最佳实践最小权限原则:# 使用sudo代替直接root登录 sudo systemctl restart nginx # 限制sudo权限 # /etc/sudoers 配置: john ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/apt update安全审计:# 检查空密码账户 sudo awk -F: '($2 == "") {print $1}' /etc/shadow # 检查sudo权限用户 sudo grep -Po '^sudo:\K.*$' /etc/group密码策略:# 修改密码策略 sudo nano /etc/login.defsPASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_WARN_AGE 14文件权限检查:# 查找全局可写文件 sudo find / -xdev -type f -perm -0002 -ls # 查找SUID文件 sudo find / -xdev -type f -perm -4000 -ls命令对比表命令功能描述常用场景useradd创建新用户系统初始化添加用户usermod修改用户属性将用户加入特权组chmod修改文件权限设置脚本可执行权限chown修改文件所有者项目目录所有权转移sudo以特权身份执行命令系统管理操作chattr设置文件特殊属性保护关键配置文件chroot创建受限环境系统恢复/安全沙箱umask设置默认权限掩码控制新建文件默认权限提示:所有特权命令(如 useradd、chown 等)通常需要 root 权限执行,使用 sudo 前缀或切换到 root 账户。生产环境中建议通过配置管理工具(如 Ansible)批量管理用户权限。
2025年10月19日
4 阅读
0 评论
0 点赞
2025-10-19
Linux 系统目录功能完整解析
Linux 系统目录功能完整解析Linux 系统采用树状目录结构,遵循 文件系统层次结构标准(FHS)。以下是主要目录及其功能的详细解析:核心系统目录目录路径功能说明关键内容示例根目录/整个文件系统的起点所有其他目录的父目录/bin 基础系统命令(所有用户可用)ls, cp, bash, cat/sbin 系统管理命令(通常需要 root 权限)fdisk, ifconfig, reboot, iptables/lib 系统核心库文件(32位系统)*.so 共享库文件/lib64 64位系统核心库文件64位共享库文件/boot 系统启动文件vmlinuz(内核), initramfs, GRUB 配置文件/dev 设备文件sda(磁盘), tty(终端), null, random/etc 系统配置文件passwd, hosts, fstab, 网络配置/proc 内核与进程信息(虚拟文件系统)/proc/cpuinfo, /proc/meminfo/sys 内核设备信息(虚拟文件系统)硬件设备树,驱动信息/run 运行时数据(系统启动后生成)PID 文件,锁文件,设备锁定/tmp 临时文件(所有用户可写,重启后清除)临时下载,缓存文件用户空间目录目录功能说明关键内容示例/home用户主目录(每个用户独立子目录)~/.bashrc, ~/Documents, ~/Downloads/rootroot 用户主目录(普通用户无权限访问)系统管理员专用配置文件/usr用户程序与数据(Unix System Resources)应用程序,库文件,文档/var可变数据文件(日志、缓存等经常变化的文件)日志文件,邮件队列,数据库文件/usr 子目录详解目录功能说明/usr/bin用户安装的命令行程序(非核心)/usr/sbin用户安装的系统管理命令/usr/lib应用程序的库文件/usr/includeC/C++ 头文件/usr/share架构无关的共享数据(文档、图标、字体等)/usr/local本地安装软件(系统升级不影响此目录)/usr/src内核源代码(通常为空,开发者使用)📌 最佳实践:用户编译安装的软件应放在 /usr/local 下,避免与系统包管理器冲突/var 子目录详解目录功能说明/var/log系统日志文件/var/cache应用程序缓存数据/var/lib程序状态信息(数据库、包管理元数据等)/var/mail用户邮箱文件/var/spool任务队列(打印任务、cron 任务等)/var/tmp重启后保留的临时文件(比 /tmp 生命周期长)特殊目录目录功能说明/mnt临时挂载点(手动挂载文件系统)/media可移动设备挂载点(自动挂载 U 盘、光盘等)/srv服务数据(网站、FTP 等服务的文件)/opt可选应用程序(大型商业软件安装位置)/lost+found文件恢复(fsck 修复后的文件碎片)目录结构示意图/ ├── bin -> usr/bin # 基础命令 ├── boot # 启动文件 ├── dev # 设备文件 ├── etc # 配置文件 ├── home # 用户目录 │ ├── user1 │ └── user2 ├── lib -> usr/lib # 库文件 ├── mnt # 临时挂载 ├── opt # 可选软件 ├── proc # 进程信息 ├── root # root主目录 ├── run # 运行时数据 ├── sbin -> usr/sbin # 系统命令 ├── srv # 服务数据 ├── sys # 系统设备 ├── tmp # 临时文件 ├── usr # 用户程序 │ ├── bin │ ├── lib │ ├── local │ └── share └── var # 可变数据 ├── log ├── cache └── lib关键配置文件位置用户相关:/etc/passwd - 用户账户信息/etc/shadow - 加密密码存储/etc/group - 用户组信息/etc/sudoers - sudo 权限配置网络配置:/etc/hosts - 本地域名解析/etc/resolv.conf - DNS 服务器配置/etc/sysconfig/network-scripts/ - 网络接口配置(RHEL系)/etc/netplan/ - 网络配置(Ubuntu)系统服务:/etc/systemd/system/ - 系统服务配置文件/etc/init.d/ - SysV init 脚本(旧系统)文件系统:/etc/fstab - 文件系统挂载表/etc/mtab - 当前挂载的文件系统目录操作最佳实践权限管理:# 查看目录权限 ls -ld /path/to/directory # 修改目录所有者 sudo chown user:group /path # 修改目录权限 sudo chmod 755 /path # rwxr-xr-x磁盘空间分析:# 查看磁盘使用情况 df -h # 分析目录大小 du -sh /var/log/* # 查找大文件 find / -type f -size +100M 2>/dev/null日志文件管理:# 查看系统日志 journalctl -xe # 查看特定服务日志 sudo tail -f /var/log/nginx/error.log # 日志轮转配置 /etc/logrotate.conf常见问题解决问题1:磁盘空间不足检查大文件:sudo du -h / | sort -h | tail -n 20清理日志:sudo journalctl --vacuum-size=200M # 保留200MB日志清理包缓存:sudo apt clean # Debian/Ubuntu sudo dnf clean all # RHEL/CentOS问题2:文件系统损坏# 检查文件系统 sudo fsck /dev/sda1 # 修复只读文件系统 mount -o remount,rw /问题3:关键目录误删恢复使用 testdisk 扫描分区使用 extundelete 恢复 ext4 文件从备份恢复(强调定期备份的重要性)各发行版差异目录/功能Debian/UbuntuRHEL/CentOSopenEuler网络配置/etc/netplan/*.yaml/etc/sysconfig/network-scripts//etc/sysconfig/network-scripts/包管理/var/lib/apt//var/lib/dnf//var/lib/dnf/服务管理systemctlsystemctlsystemd内核位置/boot/vmlinuz-*/boot/vmlinuz-*/boot/vmlinuz-*默认Shell/bin/bash/bin/bash/bin/bash掌握 Linux 目录结构是系统管理的基石。建议定期备份关键目录(如 /etc, /home, /var),并使用版本控制管理配置文件(如 Git)。
2025年10月19日
3 阅读
0 评论
0 点赞
2025-10-19
Linux 网络配置、DNS设置及密码重置完整教程
常见 Linux 系统及 openEuler 网络配置、DNS设置与密码重置完整教程一、网络配置与 DNS 设置(各系统对比)系统配置文件位置工具推荐DNS 持久化方法Ubuntu/etc/netplan/*.yamlnetplan在 netplan 配置中直接设置Debian/etc/network/interfacesifupdown在 interfaces 文件中设置CentOS/etc/sysconfig/network-scripts/ifcfg-*nmcli/nmtui在 ifcfg 文件中设置 DNS 参数openEuler/etc/sysconfig/network-scripts/ifcfg-*nmcli/nmtui使用 nmcli 或编辑 ifcfg 文件Arch/etc/netctl/ 或 /etc/systemd/network/netctl在配置文件中直接设置通用配置方法:# 查看网络接口 ip addr # 测试网络连通性 ping -c 4 8.8.8.8 # 检查 DNS 解析 nslookup google.com各系统详细配置:1. Ubuntu/Debian (Netplan)sudo nano /etc/netplan/01-netcfg.yamlnetwork: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]sudo netplan apply2. CentOS/openEuler (nmcli)sudo nmcli con mod "System eth0" \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "8.8.8.8,8.8.4.4" \ ipv4.method manual sudo nmcli con down "System eth0" && sudo nmcli con up "System eth0"3. 传统配置 (Debian/CentOS/openEuler)sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=8.8.4.4sudo systemctl restart NetworkManager # 或 sudo systemctl restart network二、密码重置教程(通用方法)物理机/本地虚拟机重置:重启系统,在 GRUB 菜单按 e 进入编辑模式修改启动参数:Ubuntu/Debian: 在 linux 行末尾添加 init=/bin/bashCentOS/openEuler: 在 linux16 行末尾添加 rd.break按 Ctrl+X 启动挂载文件系统可写:mount -o remount,rw /重置密码:passwd username # 替换为实际用户名SELinux 处理(RHEL/CentOS/openEuler):touch /.autorelabel重启系统:exec /sbin/init # 或 reboot -f云服务器重置:通过云控制台进入恢复模式挂载系统分区:mount /dev/sda1 /mnt # 分区可能不同重置密码:chroot /mnt passwd username卸载并重启:umount /mnt reboot三、系统特定密码重置方法1. Ubuntu/Debian# 在 GRUB 编辑界面添加: init=/bin/bash # 启动后执行: mount -o remount,rw / passwd username exec /sbin/init2. CentOS/openEuler# 在 GRUB 编辑界面添加: rd.break # 启动后执行: mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel exit reboot3. 单用户模式(通用)# 在 GRUB 编辑界面添加: single # 启动后直接使用 passwd 命令 passwd username四、网络问题排查与验证网络诊断命令:# 查看IP配置 ip addr show # 检查路由表 ip route show # 测试网关连通性 ping -c 4 192.168.1.1 # 测试DNS解析 dig google.com @8.8.8.8 # 查看DNS配置 cat /etc/resolv.conf # 检查网络服务状态 systemctl status NetworkManager常见问题解决:DNS 不生效:# 检查是否被覆盖 ls -l /etc/resolv.conf # 禁用 NetworkManager 修改 echo -e "[main]\ndns=none" | sudo tee /etc/NetworkManager/conf.d/90-dns-none.conf sudo systemctl restart NetworkManager网络服务启动失败:# 查看日志 journalctl -xe -u NetworkManager # 检查配置文件语法 sudo nmcli con reload网卡未激活:sudo nmcli con up eth0 sudo dhclient eth0 # 如果使用DHCP五、安全增强建议密码策略:sudo nano /etc/login.defsPASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_WARN_AGE 14SSH 加固:sudo nano /etc/ssh/sshd_configPermitRootLogin no PasswordAuthentication no AllowUsers your_username防火墙配置:# firewalld (CentOS/openEuler) sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload # ufw (Ubuntu/Debian) sudo ufw allow ssh sudo ufw enable六、操作注意事项重要操作前备份:# 网络配置备份 sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak # 密码文件备份 sudo cp /etc/shadow /etc/shadow.bak生产环境建议:使用 SSH 密钥认证代替密码通过配置管理工具(Ansible/Puppet)管理网络定期进行密码轮换灾难恢复:准备系统恢复镜像定期测试备份恢复流程记录关键系统配置信息所有操作建议在维护窗口进行,并确保有系统快照或备份。对于云环境,优先使用云平台提供的密码重置和网络配置功能。
2025年10月19日
3 阅读
0 评论
0 点赞