Linux运维老手也常踩的5个Unix环境搭建陷阱
|
环境变量配置看似简单,却常因路径拼接错误埋下隐患。老手容易在~/.bashrc中直接追加PATH="$PATH:/new/bin",却忽略原始PATH可能为空或含多余空格,导致命令无法解析。更隐蔽的是,若在/etc/profile中使用source ~/.bashrc,而后者又依赖未初始化的变量,将引发连锁失效——建议统一用export PATH="/usr/local/bin:/usr/bin:$PATH"显式声明,并用type -p确认生效路径。 权限模型被误读是高频陷阱。有人为图省事给整个/opt/app目录chmod -R 777,殊不知SUID/SGID位可能被意外继承,或日志目录失去写入隔离;另一些人则过度收紧,如将nginx配置文件设为600却忘记www-data用户无权读取,服务启动即失败。正确做法是遵循最小权限原则:二进制文件755、配置644、日志目录750且属组匹配服务运行用户,再用getfacl验证实际生效权限。 时区与时间同步常被当作“已配置”而忽略验证。系统虽安装ntpdate或chrony,但若防火墙阻断123端口、或NTP服务器域名解析失败,时间会悄然漂移。更棘手的是容器内应用读取的是宿主机时区,但/etc/localtime软链接若指向/usr/share/zoneinfo/Asia/Shanghai而非绝对路径,镜像迁移后链接断裂,Java应用就可能按UTC时间记录日志。务必执行timedatectl status并检查System clock synchronized字段为yes,同时用readlink -f /etc/localtime确认链接有效性。 DNS解析配置存在双重幻觉:既以为/etc/resolv.conf永久有效,又忽略systemd-resolved等中间层覆盖。当NetworkManager重启或cloud-init重写resolv.conf时,手动添加的nameserver可能被清空;而若启用systemd-resolved,实际解析走的是127.0.0.53:53,此时修改resolv.conf无效。应统一通过nmcli或systemd-resolve --set-dns指定上游,并用dig +short google.com @127.0.0.53验证真实解析链路。 Shell脚本兼容性陷阱藏在细节里。老手习惯用#!/bin/bash编写,却部署到Alpine等仅含dash的系统,导致[[ ]]语法报错;或在脚本中用$(date -d "last week"),而CentOS 6的date不支持-d参数。规避方法是明确shebang为#!/usr/bin/env bash(确保PATH中bash可用),日期操作改用$(date -v-7D)或计算时间戳,所有外部命令前加type -P校验是否存在。一次跨平台测试胜过十次经验直觉。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

浙公网安备 33038102330577号