在openEuler系统中,网络连接问题是最常见的故障之一。当在虚拟机环境中遇到网络不可用的情况时,可以按照以下步骤进行排查和修复:
bash复制# 检查网络接口状态
nmcli dev status
# 重新连接网络接口(假设网卡为ens33)
nmcli dev con ens33
nmcli con up ens33
# 重启网络管理服务
systemctl restart NetworkManager
注意事项:
常见问题排查:
openEuler默认不包含图形界面,需要手动安装UKUI桌面环境:
bash复制# 安装UKUI桌面环境
yum install ukui -y
# 设置系统启动时进入图形界面
systemctl set-default graphical.target
桌面环境选择:
openEuler支持多种桌面环境:
图形界面登录问题解决:
安装UKUI后,可能会遇到root用户无法图形登录的情况,解决方法:
bash复制vim /etc/lightdm/lightdm.conf
# 取消以下参数的注释:
greeter-show-manual-login=true
allow-user-switching=true
allow-guest=true
# 重启lightdm服务
systemctl restart lightdm
实操心得:
首次配置openEuler系统时,建议安装以下基础工具:
bash复制# 安装bash自动补全
yum install bash-completion
# 查询命令所属软件包
yum provides date
# 安装NTFS文件系统支持
yum install ntfs-3g
# 安装文件传输工具
dnf install lrzsz
文件传输技巧:
修改GRUB引导配置的流程:
bash复制vim /etc/default/grub
# 修改配置后执行:
grub2-mkconfig -o /boot/grub2/grub.cfg
重要提示:
openEuler安装时可能禁用root用户,解锁方法:
bash复制sudo passwd root
用户权限体系:
安全建议:
临时设置中文环境:
bash复制LANG=zh_CN.UTF-8
永久设置中文环境:
bash复制vim /etc/locale.conf
# 添加或修改:
LANG="zh_CN.UTF-8"
注意事项:
手动设置系统时间:
bash复制date -s "2024-10-10 10:10:10"
格式化输出时间:
bash复制date "+%Y-%m-%d %H:%M:%S"
时间同步建议:
openEuler提供6个虚拟控制台:
切换快捷键:Ctrl+Alt+F1~F6
远程登录服务器:
从Windows系统使用ssh登录:
cmd复制ssh admin@192.168.168.130
终端使用建议:
用户分类:
用户管理命令:
bash复制# 创建用户
useradd -g primary_group -G supplementary_groups -d home_dir -s shell username
# 删除用户
userdel -r username # -r同时删除家目录
# 修改用户属性
usermod -aG group username # 添加附加组
密码策略:
权限基础:
特殊权限:
SUID(Set User ID)
SGID(Set Group ID)
Sticky Bit
权限修改建议:
重置流程:
bash复制mount -o remount,rw /sysroot
bash复制chroot /sysroot
bash复制passwd
bash复制touch /.autorelabel
注意事项:
关键日志文件:
日志分析工具:
bash复制# 查看最新错误
tail -f /var/log/messages | grep -i error
# 统计ssh登录失败
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c
# 查看系统启动时间
journalctl --list-boots
日志管理建议:
常用快捷键:
历史命令管理:
bash复制# 查看完整历史
history
# 清除当前会话历史
history -c
# 永久保存历史
history -w
效率技巧:
帮助命令层次:
man手册章节:
帮助文档安装:
bash复制# 安装核心工具帮助
yum install coreutils-help
# 查找命令文档
whatis command
man -k keyword
文档阅读技巧:
核心目录功能:
特殊目录说明:
目录使用建议:
文件查看:
bash复制cat -A file # 显示所有字符(包括特殊字符)
less file # 分页查看(支持搜索)
head/tail # 查看文件开头/结尾
文件查找:
bash复制find / -name "*.conf" -type f # 按名称查找
find / -size +10M # 按大小查找
find / -mtime -7 # 按修改时间查找
文件比较:
bash复制diff file1 file2 # 文本差异
vimdiff file1 file2 # 可视化比较
md5sum file1 file2 # 校验文件一致性
文件处理:
bash复制# 文本处理三剑客
grep pattern file # 文本搜索
sed 's/old/new/g' file # 流编辑器
awk '{print $1}' file # 文本分析
# 排序与统计
sort file | uniq -c # 排序并统计
wc -l file # 行数统计
常用命令:
bash复制rpm -ivh package.rpm # 安装
rpm -evh package # 卸载
rpm -qa # 查询所有已安装包
rpm -ql package # 查询文件安装位置
rpm -qf /path/to/file # 查询文件所属包
RPM验证:
bash复制rpm -V package # 验证包文件完整性
rpm --checksig package.rpm # 验证签名
注意事项:
仓库配置:
bash复制# 查看仓库列表
dnf repolist
# 添加EPEL仓库
dnf install epel-release
常用操作:
bash复制dnf install package # 安装
dnf remove package # 卸载
dnf update # 更新所有包
dnf search keyword # 搜索包
dnf history # 查看操作历史
本地仓库创建:
bash复制# 下载软件包而不安装
dnf install --downloadonly --downloaddir ./pkgs/ httpd
# 创建仓库元数据
createrepo /opt/pkgs/
# 配置本地repo文件
vim /etc/yum.repos.d/local.repo
systemctl命令:
bash复制systemctl start service # 启动
systemctl stop service # 停止
systemctl restart service # 重启
systemctl reload service # 重载配置
systemctl enable service # 设置开机启动
systemctl status service # 查看状态
服务日志查看:
bash复制journalctl -u service # 服务专属日志
journalctl -f # 跟踪日志
journalctl --since "1 hour ago" # 时间范围查询
服务管理建议:
分区工具使用:
bash复制fdisk /dev/sdb # MBR分区
gdisk /dev/sdb # GPT分区
partprobe # 刷新分区表
文件系统创建:
bash复制mkfs.xfs /dev/sdb1 # XFS文件系统
mkfs.ext4 /dev/sdb2 # ext4文件系统
mkswap /dev/sdb3 # swap分区
挂载管理:
bash复制mount /dev/sdb1 /mnt/data # 临时挂载
umount /mnt/data # 卸载
# 开机自动挂载
vim /etc/fstab
/dev/sdb1 /mnt/data xfs defaults 0 0
注意事项:
LVM基本概念:
LVM创建流程:
bash复制# 创建物理卷
pvcreate /dev/sdb1 /dev/sdb2
# 创建卷组
vgcreate vg1 /dev/sdb1 /dev/sdb2
# 创建逻辑卷
lvcreate -n lv1 -L 10G vg1
# 创建文件系统
mkfs.xfs /dev/vg1/lv1
# 挂载使用
mount /dev/vg1/lv1 /mnt
LVM扩展:
bash复制# 扩展卷组
vgextend vg1 /dev/sdb3
# 扩展逻辑卷
lvextend -L +5G /dev/vg1/lv1
# 扩展文件系统
xfs_growfs /mnt # XFS
resize2fs /dev/vg1/lv1 # ext4
LVM优势:
at使用示例:
bash复制at 14:30
# 输入要执行的命令
Ctrl+D结束
at now + 1 hour
# 输入命令
Ctrl+D
at管理:
bash复制atq # 查看待执行任务
atrm 1 # 删除任务1
访问控制:
crontab格式:
code复制* * * * * command
| | | | |
| | | | +----- 星期 (0-6) (周日=0)
| | | +------- 月 (1-12)
| | +--------- 日 (1-31)
| +----------- 时 (0-23)
+------------- 分 (0-59)
cron管理:
bash复制crontab -e # 编辑当前用户任务
crontab -l # 列出任务
crontab -r # 删除所有任务
系统cron目录:
最佳实践:
nmcli基本操作:
bash复制nmcli con show # 查看连接
nmcli dev status # 查看设备状态
# 添加新连接
nmcli con add type ethernet ifname ens33 con-name ens33-static \
ipv4.method manual ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8
# 激活连接
nmcli con up ens33-static
IP地址修改:
bash复制# 添加辅助IP
nmcli con mod ens33 +ipv4.addresses 192.168.1.101/24
nmcli con up ens33
# 删除IP
nmcli con mod ens33 -ipv4.addresses 192.168.1.101/24
nmcli con up ens33
网络诊断工具:
bash复制ping google.com # 连通性测试
traceroute google.com # 路由追踪
mtr google.com # 综合诊断
nslookup google.com # DNS查询
ss -tulnp # 端口监听检查
firewalld基本操作:
bash复制systemctl start firewalld # 启动
firewall-cmd --state # 查看状态
# 开放端口
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
# 允许服务
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
区域管理:
bash复制firewall-cmd --get-default-zone # 查看默认区域
firewall-cmd --set-default-zone=dmz # 修改默认区域
firewall-cmd --zone=public --list-all # 查看区域配置
高级配置:
bash复制# 富规则(复杂规则)
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent
# 端口转发
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
安全建议:
进程查看命令:
bash复制ps aux # 查看所有进程
top # 动态查看
htop # 增强版top(需安装)
pgrep process_name # 查找进程ID
进程控制:
bash复制kill -9 PID # 强制终止进程
killall process_name # 终止同名所有进程
pkill -f pattern # 按模式终止进程
进程优先级:
bash复制nice -n 10 command # 启动时设置优先级
renice -n 12 -p PID # 修改运行中进程优先级
前后台管理:
bash复制command & # 后台运行
jobs # 查看后台任务
fg %1 # 切换到前台
Ctrl+Z # 暂停并放入后台
bg %1 # 后台继续运行
常用监控命令:
bash复制free -h # 内存使用
df -h # 磁盘空间
iostat 1 # IO统计
vmstat 1 # 系统状态
sar -u 1 3 # CPU使用率采样
性能分析工具:
bash复制perf top # 性能分析
strace -p PID # 系统调用跟踪
lsof -i :80 # 查看端口占用
dmesg | grep error # 内核日志检查
监控建议:
变量类型:
bash复制local_var="value" # 局部变量
export GLOBAL_VAR="value" # 环境变量
变量操作:
bash复制${var:-default} # 使用默认值
${var#pattern} # 从开头删除匹配
${var%pattern} # 从结尾删除匹配
${var/old/new} # 字符串替换
条件判断:
bash复制# 数值比较
if [ $a -eq $b ]; then
echo "equal"
fi
# 字符串比较
if [ "$str1" = "$str2" ]; then
echo "same"
fi
# 文件测试
if [ -f "/path/file" ]; then
echo "file exists"
fi
for循环:
bash复制for i in {1..10}; do
echo $i
done
for file in *.txt; do
echo "Processing $file"
done
while循环:
bash复制while true; do
curl -I example.com >> log.txt
sleep 5
done
函数定义:
bash复制function log_message {
echo "[$(date)] $1" >> /var/log/myscript.log
}
log_message "Script started"
脚本调试:
bash复制bash -x script.sh # 显示执行过程
set -x # 在脚本中开启调试
set +x # 关闭调试
最佳实践:
安全措施:
bash复制# 检查空密码账户
awk -F: '($2 == "") {print $1}' /etc/shadow
# 锁定账户
passwd -l username
# 设置密码过期
chage -M 90 username
sudo安全配置:
bash复制# 限制sudo命令
visudo
username ALL=(ALL) /usr/bin/systemctl restart httpd, /usr/bin/vi /etc/httpd/conf/httpd.conf
# 日志记录sudo操作
Defaults logfile="/var/log/sudo.log"
SSH安全:
bash复制# 禁用root登录
vim /etc/ssh/sshd_config
PermitRootLogin no
# 使用密钥认证
ssh-keygen -t rsa
ssh-copy-id user@host
# 限制IP访问
AllowUsers user@192.168.1.*
常用安全参数:
bash复制# 禁止ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
# 开启SYN Cookie防护
net.ipv4.tcp_syncookies = 1
# 禁止IP转发
net.ipv4.ip_forward = 0
配置方法:
bash复制# 临时设置
sysctl -w net.ipv4.conf.all.accept_redirects=0
# 永久生效
vim /etc/sysctl.conf
sysctl -p
安全审计:
bash复制# 安装auditd
yum install audit
# 监控文件访问
auditctl -w /etc/passwd -p wa -k passwd_changes
# 查看日志
ausearch -k passwd_changes
全面安全建议:
安装与启动:
bash复制yum install httpd
systemctl start httpd
systemctl enable httpd
虚拟主机配置:
bash复制vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
ServerName site1.example.com
DocumentRoot /var/www/site1
ErrorLog /var/log/httpd/site1_error.log
CustomLog /var/log/httpd/site1_access.log combined
</VirtualHost>
性能调优:
bash复制# 修改工作模式
vim /etc/httpd/conf.modules.d/00-mpm.conf
# 调整参数
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
安装与启动:
bash复制yum install nginx
systemctl start nginx
systemctl enable nginx
基本配置:
bash复制vim /etc/nginx/nginx.conf
worker_processes auto;
worker_connections 1024;
keepalive_timeout 65;
gzip on;
负载均衡配置:
bash复制upstream backend {
server 192.168.1.101:80;
server 192.168.1.102:80;
}
server {
location / {
proxy_pass http://backend;
}
}
HTTPS配置:
bash复制server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
# 其他配置...
}
性能优化建议:
安装与初始化:
bash复制yum install mariadb-server
systemctl start mariadb
mysql_secure_installation
基础操作:
bash复制# 创建数据库
CREATE DATABASE webapp;
# 创建用户并授权
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON webapp.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
备份与恢复:
bash复制# 备份
mysqldump -u root -p webapp > webapp_backup.sql
# 恢复
mysql -u root -p webapp < webapp_backup.sql
配置调整:
bash复制vim /etc/my.cnf.d/server.cnf
[mysqld]
innodb_buffer_pool_size = 1G # 内存的50-70%
innodb_log_file_size = 256M
max_connections = 200
监控工具:
bash复制# 查看状态
SHOW STATUS LIKE 'Qcache%';
# 查看进程
SHOW PROCESSLIST;
# 慢查询日志
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
安全建议:
常见故障:
救援模式:
诊断流程:
常见瓶颈:
通用排查步骤:
网络服务排查:
网络相关:
bash复制# 增加TCP连接数
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 8192
# TIME_WAIT优化
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
内存管理:
bash复制# 减少交换倾向
vm.swappiness = 10
# 文件描述符
fs.file-max = 65535
存储性能:
bash复制# IO调度器(SSD使用none)
echo deadline > /sys/block/sda/queue/scheduler
# 预读值调整
blockdev --setra 256 /dev/sda
journald配置:
bash复制vim /etc/systemd/journald.conf
SystemMaxUse=1G
MaxRetentionSec=1month
定时任务优化:
日志管理:
bash复制# logrotate配置示例
/var/log/nginx/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
安装与配置:
bash复制yum install docker
systemctl start docker
docker run hello-world
常用命令:
bash复制docker ps # 查看容器
docker images # 查看镜像
docker exec -it container bash # 进入容器
docker logs container # 查看日志
Dockerfile示例:
dockerfile复制FROM openEuler
RUN yum install -y nginx
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
与Docker的区别:
基本使用:
bash复制podman pull openEuler
podman run -d --name web -p 8080:80 nginx
podman ps
rootless容器:
bash复制# 普通用户运行
podman run -d --name myapp -p 8080:80 myimage
全盘备份:
bash复制# 使用dd(需停机)
dd if=/dev/sda of=/backup/sda.img bs=4M
# 使用tar
tar -cvpzf /backup/full-backup.tar.gz --exclude=/backup --exclude=/proc --exclude=/sys /
增量备份:
bash复制# 基于rsync
rsync -a --delete --link-dest=/backup/last_full / /backup/new_full
文件级恢复:
bash复制# 从tar备份恢复
tar -xvpzf /backup/full-backup.tar