Linux基础知识笔记
Linux基础知识笔记
- 命令行基础操作
1.1 快捷键
快捷键 功能
Ctrl + R 搜索命令历史
Ctrl + L 清屏并将光标移到顶部
Ctrl + C 终止当前命令
Ctrl + U 从光标剪切到行首
Ctrl + K 从光标剪切到行尾
Ctrl + W 剪切光标左侧的单词
Ctrl + Y 粘贴剪切的内容
Ctrl + A 光标跳到行首
Ctrl + E 光标跳到行尾
Ctrl + D 退出Shell会话
1.2 文件查看命令
查看文件内容
head filename # 从上往下查看前10行
head -n 20 filename # 查看前20行
tail filename # 从下往上查看后10行
tail -n 20 filename # 查看后20行
tail -f filename # 实时监控文件变化
cat filename # 查看全文
less filename # 分页查看(空格翻页,q退出)
more filename # 分页查看(较简单版本)
1.3 重定向操作
输出重定向
command > file # 标准输出重定向(覆盖)
command >> file # 标准输出重定向(追加)
command 2> file # 错误输出重定向(覆盖)
command 2>> file # 错误输出重定向(追加)
command &> file # 混合输出重定向
command > file1 2> file2 # 分别重定向
输入重定向
cat > file << EOF
内容1
内容2
EOF
丢弃输出
command > /dev/null 2>&1 # 丢弃所有输出
2. 文件系统与目录管理
2.1 目录结构
/ # 根目录
├── bin # 基本命令
├── boot # 启动文件
├── dev # 设备文件
├── etc # 配置文件
├── home # 用户家目录
├── lib # 系统库文件
├── media # 可移动媒体挂载点
├── mnt # 临时挂载点
├── opt # 可选应用程序
├── proc # 进程信息
├── root # root用户家目录
├── run # 运行时数据
├── sbin # 系统命令
├── srv # 服务数据
├── sys # 系统文件
├── tmp # 临时文件
├── usr # 用户程序
└── var # 变量数据
2.2 文件属性与权限
inode索引节点
ls -i filename # 查看文件inode
df -i # 查看系统inode使用情况
权限管理
权限表示:rwx rwx rwx (用户 组 其他)
数字表示:4(读) + 2(写) + 1(执行)
chmod u+x file # 用户添加执行权限
chmod g-w file # 组删除写权限
chmod o=r file # 其他用户只读权限
chmod 755 file # 数字方式设置权限
chmod -R 755 directory # 递归设置目录权限
特殊权限
chmod +t directory # 设置sticky位
chmod u+s file # 设置SUID
chmod g+s file # 设置SGID
文件属性
chattr +a file # 只能追加,不能修改
chattr +i file # 不能修改(锁定文件)
chattr -i file # 取消锁定
lsattr file # 查看文件属性
属主属组
chown user file # 更改文件所有者
chown user:group file # 更改所有者和组
chgrp group file # 更改文件所属组
chown -R user:group dir # 递归更改目录权限
2.3 文件搜索
find命令详解
find /path -name "filename" # 按名称查找
find /path -iname "filename" # 忽略大小写
find /path -name "*.txt" # 通配符查找
find /path -size +5M # 查找大于5M的文件
find /path -size -1M # 查找小于1M的文件
find /path -mtime +7 # 7天前修改的文件
find /path -mtime -1 # 1天内修改的文件
find /path -type f # 查找普通文件
find /path -type d # 查找目录
find /path -perm 755 # 按权限查找
find /path -empty # 查找空文件
find /path -user username # 按用户查找
执行操作
find /path -name ".txt" -exec rm {} ; # 删除找到的文件
find /path -name ".txt" | xargs rm # 使用xargs删除
find /path -name "*.txt" | xargs tar czf backup.tar.gz # 压缩找到的文件
2.4 文件链接
硬链接
ln source_file hard_link # 创建硬链接
特点:共享inode,源文件删除后仍可用,不能跨文件系统
软链接(符号链接)
ln -s source_file soft_link # 创建软链接
特点:有独立inode,源文件删除后不可用,可跨文件系统
2.5 文件压缩与解压
tar命令
tar -czf archive.tar.gz files # 创建gzip压缩包
tar -cjf archive.tar.bz2 files # 创建bzip2压缩包
tar -tf archive.tar.gz # 查看压缩包内容
tar -xf archive.tar.gz # 解压到当前目录
tar -xf archive.tar.gz -C /path # 解压到指定目录
带时间戳的备份
tar -czf backup-$(date +%Y%m%d).tar.gz /var/log
其他压缩工具
zip -r archive.zip directory # 创建zip压缩包
unzip archive.zip # 解压zip文件
gzip file # gzip压缩
gunzip file.gz # gzip解压
3. 用户与权限管理
3.1 用户相关文件
/etc/passwd # 用户账户信息
/etc/shadow # 密码信息
/etc/group # 组信息
/home/ # 用户家目录
/var/spool/mail # 邮箱目录
3.2 用户管理
添加用户
useradd username # 基础添加用户
useradd -d /custom/home username # 指定家目录
useradd -g groupname username # 指定主组
useradd -s /bin/bash username # 指定shell
adduser username # 交互式添加用户
删除用户
userdel username # 删除用户(保留家目录)
userdel -r username # 删除用户和家目录
修改用户
usermod -d /new/home username # 修改家目录
usermod -s /bin/zsh username # 修改shell
usermod -aG sudo username # 添加到sudo组
usermod -l newname oldname # 修改用户名
密码管理
passwd username # 交互式修改密码
echo "username:password" | chpasswd # 非交互式修改密码
passwd -l username # 锁定用户
passwd -u username # 解锁用户
切换用户
su username # 切换用户
su - username # 切换用户并切换环境
sudo su - # 切换到root
sudo -i # 切换到root交互式shell
3.3 组管理
创建组
groupadd groupname
groupadd -g 1001 groupname # 指定GID
删除组
groupdel groupname
查看用户组
groups username # 查看用户所属组
id username # 查看用户ID和组ID
cat /etc/group # 查看所有组
4. 进程与端口管理
4.1 进程管理
查看进程
ps aux # 查看所有进程
ps -ef # 详细进程信息
ps aux --sort=-%cpu # 按CPU使用率排序
ps aux --sort=-%mem # 按内存使用率排序
ps -p PID # 查看特定进程
ps -u username # 查看用户进程
pstree # 进程树显示
pgrep process_name # 根据名称查找进程PID
终止进程
kill PID # 发送TERM信号
kill -9 PID # 强制杀死进程
kill -1 PID # 重新加载进程配置
kill -15 PID # 正常终止
kill -18 PID # 继续进程
kill -19 PID # 暂停进程
pkill process_name # 按名称杀死进程
killall process_name # 杀死所有同名进程
查看所有信号
kill -l
进程优先级
nice -n 10 command # 以指定优先级运行命令
renice -20 -p PID # 修改正在运行的进程优先级
nice值范围:-20到19,值越小优先级越高
4.2 系统监控
top命令详解
top # 实时显示系统状态
交互命令:
1 - 显示所有CPU核心
M - 按内存使用率排序
P - 按CPU使用率排序
k - 杀死进程
q - 退出
top输出解释:
load average: 1分钟,5分钟,15分钟平均负载
Tasks: total总任务数, running运行中, sleeping休眠, stopped停止, zombie僵尸
%Cpu(s):
us - 用户空间CPU使用率
sy - 内核空间CPU使用率
ni - nice值调整的进程CPU使用率
id - CPU空闲率
wa - 等待I/O的CPU使用率
hi - 硬中断CPU使用率
si - 软中断CPU使用率
st - 虚拟化环境中被偷取的时间
其他监控工具
htop # 更友好的top
iotop # I/O监控
nethogs # 网络监控
vmstat 1 5 # 系统统计信息
iostat 1 5 # I/O统计
free -h # 内存使用情况
uptime # 系统运行时间和负载
4.3 端口管理
查看端口(推荐ss,速度更快)
ss -tunlp # 查看所有端口
ss -tunlp | grep :80 # 查看特定端口
netstat -tunlp # 传统方式查看端口
netstat -tunlp | grep :80 # 查看特定端口
lsof - 查看打开的文件和端口
lsof # 显示所有打开的文件
lsof -p PID # 显示进程打开的文件
lsof -u username # 显示用户打开的文件
lsof -i :port # 显示端口使用情况
lsof -a +L1 # 显示已删除但仍被占用的文件
4.4 进程状态说明
R - Running (运行中)
S - Sleeping (可中断睡眠)
D - Uninterruptible sleep (不可中断睡眠)
T - Stopped (停止)
Z - Zombie (僵尸进程)
< - 高优先级进程
N - 低优先级进程
s - 会话领导者
-
- 前台进程组
l - 多线程进程
4.5 僵尸进程和孤儿进程
僵尸进程:子进程结束但父进程未回收其资源,占用进程号
- 前台进程组
孤儿进程:父进程结束但子进程仍在运行,被init进程收养
- 软件包管理
5.1 YUM包管理器(CentOS/RHEL)
基本操作
yum update # 更新系统
yum install package # 安装软件包
yum remove package # 卸载软件包
yum reinstall package # 重新安装
yum search keyword # 搜索软件包
yum list installed # 列出已安装包
yum list available # 列出可用包
yum info package # 查看包信息
yum provides command # 查找提供命令的包
清理缓存
yum clean all # 清除所有缓存
yum makecache # 重建缓存
扩展源
yum install -y epel-release # 安装EPEL源
5.2 APT包管理器(Ubuntu/Debian)
基本操作
apt update # 更新包列表
apt upgrade # 升级已安装的包
apt install package # 安装软件包
apt remove package # 卸载软件包
apt purge package # 完全卸载包及配置
apt search keyword # 搜索软件包
apt show package # 查看包信息
apt list --installed # 列出已安装包
清理
apt autoremove # 删除不需要的包
apt autoclean # 清理下载的包文件
5.3 RPM包管理
RPM包命名规范
httpd-2.4.6-97.el7.x86_64.rpm
包名-版本号-发布号.系统版本.架构.rpm
rpm -ivh package.rpm # 安装RPM包
rpm -Uvh package.rpm # 升级RPM包
rpm -e package # 卸载RPM包
rpm -qa # 列出所有已安装包
rpm -qi package # 查看包信息
rpm -ql package # 查看包文件列表
rpm -qf /path/to/file # 查看文件属于哪个包
6. 文本编辑器
6.1 VIM编辑器
模式切换
Normal Mode (命令模式) → Insert Mode: i, I, a, A, o, O
Insert Mode → Normal Mode: Esc
Normal Mode → Command Mode: :
命令模式操作
移动
h,j,k,l # 左下上右
w # 下一个单词开头
b # 上一个单词开头
0 # 行首
$ # 行尾
gg # 文件开头
G # 文件结尾
:n # 跳到第n行
编辑
i # 光标前插入
a # 光标后插入
o # 下一行插入
O # 上一行插入
dd # 删除当前行
yy # 复制当前行
p # 粘贴
x # 删除字符
u # 撤销
Ctrl+r # 重做
查找替换
/pattern # 向前搜索
?pattern # 向后搜索
n # 下一个匹配
N # 上一个匹配
:%s/old/new/g # 全局替换
😒/old/new/g # 当前行替换
:2,10s/old/new/g # 指定行范围替换
末行模式操作
:w # 保存
:q # 退出
:wq # 保存并退出
:q! # 强制退出不保存
:e filename # 打开文件
:set nu # 显示行号
:set nonu # 隐藏行号
:help # 帮助
7. 系统监控与日志
7.1 系统日志
主要日志文件
/var/log/messages # 系统主日志
/var/log/secure # 认证安全日志
/var/log/cron # 计划任务日志
/var/log/boot.log # 启动日志
/var/log/dmesg # 内核日志
/var/log/yum.log # YUM安装日志
/var/log/maillog # 邮件日志
查看日志
tail -f /var/log/messages # 实时监控系统日志
tail -n 100 /var/log/secure # 查看安全日志后100行
grep "Failed" /var/log/secure # 过滤登录失败
grep "Accepted" /var/log/secure # 过滤登录成功
journalctl # systemd日志
journalctl -f # 实时查看systemd日志
journalctl -u service_name # 查看特定服务日志
7.2 系统信息
系统信息
uname -a # 系统信息
cat /etc/os-release # 系统版本
cat /proc/cpuinfo # CPU信息
cat /proc/meminfo # 内存信息
lscpu # CPU详细信息
lsblk # 块设备信息
lsusb # USB设备
lspci # PCI设备
df -h # 磁盘使用情况
du -sh /path # 目录大小
free -h # 内存使用情况
8. 网络配置与管理
8.1 网络信息查看
ip addr show # 查看IP地址
ip route show # 查看路由表
ip link show # 查看网络接口
ethtool ens33 # 查看网卡详细信息
ping -c 4 google.com # 测试网络连通性
traceroute google.com # 路由跟踪
nslookup domain.com # DNS查询
dig domain.com # DNS查询(详细)
8.2 网络配置
临时配置
ip addr add 192.168.1.100/24 dev ens33 # 添加IP
ip addr del 192.168.1.100/24 dev ens33 # 删除IP
ip route add default via 192.168.1.1 # 添加默认路由
ip route del default via 192.168.1.1 # 删除默认路由
ip link set ens33 up # 启用网卡
ip link set ens33 down # 禁用网卡
永久配置(CentOS/RHEL)
编辑网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
配置示例
TYPE=Ethernet
BOOTPROTO=static
DEVICE=ens33
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.4
重启网络服务
systemctl restart network
8.3 防火墙管理
firewalld
systemctl status firewalld # 查看防火墙状态
firewall-cmd --state # 查看防火墙状态
firewall-cmd --list-all # 查看所有规则
firewall-cmd --add-port=80/tcp --permanent # 永久开放端口
firewall-cmd --remove-port=80/tcp --permanent # 永久关闭端口
firewall-cmd --reload # 重载配置
iptables
iptables -L # 查看规则
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许80端口
iptables -D INPUT -p tcp --dport 80 -j ACCEPT # 删除规则
service iptables save # 保存规则
8.4 网络服务
SSH配置
vi /etc/ssh/sshd_config
systemctl restart sshd
网络诊断
ss -tunlp # 查看端口监听
netstat -rn # 查看路由表
arp -a # 查看ARP表
9. 磁盘与存储管理
9.1 磁盘信息
lsblk # 查看块设备
fdisk -l # 查看磁盘分区
df -h # 查看磁盘使用情况
du -sh /path # 查看目录大小
mount # 查看挂载点
9.2 磁盘分区
小于2TB磁盘使用fdisk
fdisk /dev/sdb
交互式命令:
n - 新建分区
d - 删除分区
p - 显示分区
w - 保存并退出
q - 不保存退出
大于等于2TB磁盘使用gdisk
gdisk /dev/sdb
9.3 文件系统
格式化
mkfs.ext4 /dev/sdb1 # 格式化为ext4
mkfs.xfs /dev/sdb1 # 格式化为xfs
mkfs.vfat /dev/sdb1 # 格式化为fat32
挂载
mkdir /mnt/disk # 创建挂载点
mount /dev/sdb1 /mnt/disk # 临时挂载
umount /mnt/disk # 卸载
永久挂载
vi /etc/fstab
格式:设备 挂载点 文件系统 选项 备份 检查
/dev/sdb1 /mnt/disk ext4 defaults 0 2
mount -a # 挂载所有fstab中的文件系统
9.4 LVM逻辑卷管理
LVM概念
PV (Physical Volume): 物理卷,实际的磁盘分区
VG (Volume Group): 卷组,由一个或多个PV组成
LV (Logical Volume): 逻辑卷,从VG中分配的存储空间
LVM操作
创建PV
pvcreate /dev/sdb /dev/sdc # 创建物理卷
pvdisplay # 显示PV信息
pvscan # 扫描PV
创建VG
vgcreate datavg /dev/sdb /dev/sdc # 创建卷组
vgdisplay # 显示VG信息
vgs # 简化显示VG
扩展VG
vgextend datavg /dev/sdd # 向卷组添加PV
创建LV
lvcreate -L 10G -n lv1 datavg # 创建10G逻辑卷
lvcreate -l 100%FREE -n lv2 datavg # 使用所有剩余空间
扩展LV
lvextend -L +5G /dev/datavg/lv1 # 增加5G
lvextend -L 15G /dev/datavg/lv1 # 扩展到15G
扩展文件系统
resize2fs /dev/datavg/lv1 # ext4文件系统
xfs_growfs /dev/datavg/lv1 # xfs文件系统
删除LVM
umount /mnt/lv1 # 先卸载
lvremove /dev/datavg/lv1 # 删除LV
vgremove datavg # 删除VG
pvremove /dev/sdb # 删除PV
10. 定时任务
10.1 crontab基础
crontab -l # 查看当前用户定时任务
crontab -e # 编辑当前用户定时任务
crontab -r # 删除当前用户所有定时任务
crontab -u username -e # 编辑指定用户定时任务
10.2 定时规则格式
格式:分 时 日 月 周 命令
┌────────── 分钟 (0-59)
│ ┌──────── 小时 (0-23)
│ │ ┌────── 日期 (1-31)
│ │ │ ┌──── 月份 (1-12)
│ │ │ │ ┌── 星期 (0-6, 0=周日)
│ │ │ │ │
* * * * * command
特殊字符:
* 表示任意值
, 表示多个值
- 表示范围
/ 表示间隔
10.3 常用定时任务示例
每分钟执行
-
-
-
-
- /path/to/script.sh
-
-
-
每天凌晨3点
0 3 * * * /path/to/backup.sh
每周一下午2点30分
30 14 * * 1 /path/to/weekly.sh
每月第一天凌晨4点
0 4 1 * * /path/to/monthly.sh
每隔2小时
0 */2 * * * /path/to/hourly.sh
工作日每小时
0 * * * 1-5 /path/to/workday.sh
每年1月1日凌晨
0 0 1 1 * /path/to/yearly.sh
10.4 定时任务管理
systemctl status crond # 查看cron服务状态
systemctl start crond # 启动cron服务
systemctl restart crond # 重启cron服务
systemctl enable crond # 开机自启动
日志查看
tail -f /var/log/cron # 查看定时任务执行日志
11. 常见问题与故障排除
11.1 单用户模式
适用场景:
根目录被误操作导致只读
root密码忘记
计划任务导致系统异常
开机自启动程序导致问题
进入单用户模式
重启系统,在GRUB菜单按e
找到UTF-8后添加init=/bin/bash
按Ctrl+X启动
执行修复操作:
mount -o remount,rw / # 重新挂载根目录为读写
如果SELinux导致问题
touch /.autorelabel
修复问题(如修改密码、编辑配置等)
passwd root # 修改root密码
vi /etc/fstab # 修复fstab错误
重启系统
exec /sbin/init
11.2 常见系统问题
网卡配置问题
网卡名称乱序解决
1. 查看MAC地址
ip link show
2. 在网卡配置文件中添加MAC地址绑定
vi /etc/sysconfig/network-scripts/ifcfg-ens33
添加:HWADDR=00:0c:29:8e:a5:d3
磁盘空间问题
查找大文件
find / -size +100M -type f 2>/dev/null
du -h --max-depth=1 / | sort -hr
清理日志
/var/log/messages # 清空日志文件
logrotate -f /etc/logrotate.conf # 强制日志轮转
清理临时文件
rm -rf /tmp/*
rm -rf /var/tmp/*
进程问题
查找僵尸进程
ps aux | grep -w Z
查找占用CPU/内存高的进程
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10
批量杀死进程
pkill -f "process_name"
killall process_name
11.3 性能优化
系统调优
查看系统负载
uptime
w
top
htop
内存优化
echo 3 > /proc/sys/vm/drop_caches # 清理缓存
查看系统瓶颈
iostat -x 1 # I/O统计
vmstat 1 # 虚拟内存统计
sar -u 1 10 # CPU使用统计
12. 高级网络配置
12.1 网络聚合(Bond)
Bond模式说明:
mode=0 (balance-rr): 轮询模式,提供负载均衡和容错
mode=1 (active-backup): 主备模式,提供容错
mode=2 (balance-xor): XOR哈希负载均衡
mode=3 (broadcast): 广播模式
mode=4 (802.3ad): 动态链路聚合
mode=5 (balance-tlb): 传输负载均衡
mode=6 (balance-alb): 自适应负载均衡
Bond配置示例
1. 创建bond配置
cat > /etc/sysconfig/network-scripts/ifcfg-bond0 << EOF
DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
EOF
2. 配置物理网卡
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 << EOF
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-ens34 << EOF
DEVICE=ens34
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
EOF
3. 创建bond模块配置
cat > /etc/modprobe.d/bond0.conf << EOF
alias bond0 bonding
options bonding mode=0 miimon=100
EOF
4. 重启网络
systemctl restart network
5. 验证bond状态
cat /proc/net/bonding/bond0
12.2 子接口配置
主接口配置
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 << EOF
TYPE=Ethernet
BOOTPROTO=static
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
EOF
子接口配置
cat > /etc/sysconfig/network-scripts/ifcfg-ens33:0 << EOF
TYPE=Ethernet
BOOTPROTO=static
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.1.101
NETMASK=255.255.255.0
EOF
重启网络
systemctl restart network
13. 服务管理
13.1 systemd服务管理
基本操作
systemctl start service_name # 启动服务
systemctl stop service_name # 停止服务
systemctl restart service_name # 重启服务
systemctl reload service_name # 重新加载配置
systemctl status service_name # 查看服务状态
systemctl enable service_name # 开机自启
systemctl disable service_name # 禁用开机自启
systemctl is-enabled service_name # 查看是否开机自启
systemctl list-units --type=service # 列出所有服务
systemctl list-unit-files --type=service # 列出服务文件
查看服务日志
journalctl -u service_name # 查看服务日志
journalctl -u service_name -f # 实时查看服务日志
journalctl -u service_name --since today # 查看今天的日志
13.2 创建自定义服务
创建服务文件
cat > /etc/systemd/system/myapp.service << EOF
[Unit]
Description=My Application
After=network.target
[Service]
Type=simple
User=myuser
ExecStart=/path/to/myapp
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
重新加载systemd配置
systemctl daemon-reload
启动并启用服务
systemctl enable myapp.service
systemctl start myapp.service
14. 备份与恢复
14.1 文件备份
tar备份
tar -czf backup-$(date +%Y%m%d).tar.gz /important/data
rsync同步备份
rsync -av --delete /source/ /backup/
rsync -av user@remote:/source/ /local/backup/
增量备份脚本示例
!/bin/bash
BACKUP_DIR="/backup"
SOURCE="/important/data"
DATE=$(date +%Y%m%d_%H%M%S)
完整备份
if [ ! -d "$BACKUP_DIR/full" ]; then
mkdir -p "$BACKUP_DIR/full"
tar -czf "$BACKUP_DIR/full/backup_$DATE.tar.gz" "$SOURCE"
else
# 增量备份
mkdir -p "$BACKUP_DIR/incremental"
tar -czf "$BACKUP_DIR/incremental/inc_$DATE.tar.gz"
--newer-mtime="$(stat -c %Y $BACKUP_DIR/full/*.tar.gz | head -1)"
"$SOURCE"
fi
14.2 系统备份
完整系统备份(排除不必要目录)
tar --exclude=/proc --exclude=/tmp --exclude=/mnt
--exclude=/dev --exclude=/sys --exclude=/run
--exclude=/media --exclude=/lost+found
-czf system_backup.tar.gz /
使用dd进行磁盘克隆
dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync
15. 安全管理
15.1 用户安全
密码策略
vi /etc/login.defs
PASS_MAX_DAYS 90 # 密码最大有效期
PASS_MIN_DAYS 1 # 密码最小更改间隔
PASS_MIN_LEN 8 # 密码最小长度
账户锁定
passwd -l username # 锁定用户
passwd -u username # 解锁用户
usermod -L username # 锁定用户(另一种方式)
usermod -U username # 解锁用户
查看登录信息
last # 查看用户登录历史
lastlog # 查看所有用户最后登录时间
w # 查看当前登录用户
who # 查看当前登录用户(简化)
15.2 SSH安全
SSH配置优化
vi /etc/ssh/sshd_config
推荐设置:
Port 2222 # 修改默认端口
PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 禁用密码登录(使用密钥)
MaxAuthTries 3 # 最大认证尝试次数
ClientAliveInterval 300 # 客户端存活检测间隔
ClientAliveCountMax 2 # 最大客户端存活计数
重启SSH服务
systemctl restart sshd
SSH密钥认证
ssh-keygen -t rsa -b 4096 # 生成密钥对
ssh-copy-id user@remote_host # 复制公钥到远程主机
15.3 文件系统安全
查找SUID/SGID文件
find / -perm -4000 -type f 2>/dev/null # 查找SUID文件
find / -perm -2000 -type f 2>/dev/null # 查找SGID文件
文件完整性检查
rpm -Va # 验证所有已安装的RPM包
rpm -V package_name # 验证特定包
文件权限检查
find / -type f -perm -002 2>/dev/null # 查找全局可写文件
find /home -type f -perm -o+w 2>/dev/null # 查找用户目录中其他用户可写文件
16. 故障排除指南
16.1 启动问题
GRUB修复
1. 使用救援模式启动
2. 重新安装GRUB
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
文件系统检查
fsck /dev/sda1 # 检查文件系统
fsck -y /dev/sda1 # 自动修复
16.2 网络问题
网络诊断步骤
ping 127.0.0.1 # 测试本地回环
ping gateway_ip # 测试网关连通性
ping 8.8.8.8 # 测试外网连通性
nslookup google.com # 测试DNS解析
网络配置检查
ip addr show # 检查IP配置
ip route show # 检查路由
cat /etc/resolv.conf # 检查DNS配置
16.3 性能问题
CPU问题排查
top # 查看CPU使用率
ps aux --sort=-%cpu | head -10 # 找出CPU占用最高的进程
内存问题排查
free -h # 查看内存使用
ps aux --sort=-%mem | head -10 # 找出内存占用最高的进程
磁盘问题排查
df -h # 查看磁盘空间
iotop # 查看磁盘I/O
lsof +D /path # 查看目录下打开的文件
17. 常用脚本示例
17.1 系统监控脚本
!/bin/bash
系统监控脚本
echo "=== 系统监控报告 $(date) ==="
echo
echo "CPU使用率:"
top -bn1 | grep "Cpu(s)" | awk '{print $2}' | sed 's/%us,//'
echo
echo "内存使用情况:"
free -h
echo
echo "磁盘使用情况:"
df -h
echo
echo "系统负载:"
uptime
echo
echo "网络连接统计:"
ss -s
17.2 日志清理脚本
!/bin/bash
日志清理脚本
LOG_DIR="/var/log"
DAYS=30
echo "清理 $DAYS 天前的日志文件..."
清理系统日志
find $LOG_DIR -name ".log" -mtime +$DAYS -delete
find $LOG_DIR -name ".log.*" -mtime +$DAYS -delete
清理压缩日志
find $LOG_DIR -name "*.gz" -mtime +$DAYS -delete
清理临时文件
find /tmp -mtime +7 -delete 2>/dev/null
echo "日志清理完成"
17.3 自动备份脚本
!/bin/bash
自动备份脚本
SOURCE_DIR="/important/data"
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="backup_$DATE.tar.gz"
创建备份目录
mkdir -p $BACKUP_DIR
执行备份
echo "开始备份 $SOURCE_DIR..."
tar -czf $BACKUP_DIR/$BACKUP_FILE $SOURCE_DIR
if [ $? -eq 0 ]; then
echo "备份成功:$BACKUP_DIR/$BACKUP_FILE"
# 删除7天前的备份
find $BACKUP_DIR -name "backup_*.tar.gz" -mtime +7 -delete
echo "清理旧备份完成"
else
echo "备份失败!"
exit 1
fi
18. 学习建议与最佳实践
18.1 学习路径
基础命令掌握:熟练使用文件操作、文本处理、系统信息查看命令
权限管理:理解Linux权限模型,掌握用户和组管理
进程管理:学会查看、管理和监控系统进程
网络配置:掌握基本网络配置和故障排除
服务管理:学习systemd服务管理
脚本编程:掌握基础shell脚本编程
系统优化:学习系统性能监控和优化
18.2 最佳实践
1. 总是做备份
cp important_file{,.backup}
2. 使用绝对路径
/usr/bin/python3 script.py
3. 检查命令执行结果
if [ $? -eq 0 ]; then
echo "命令执行成功"
else
echo "命令执行失败"
fi
4. 使用适当的权限
chmod 755 executable_file
chmod 644 config_file
5. 定期更新系统
yum update -y # CentOS
apt update && apt upgrade -y # Ubuntu
18.3 安全注意事项
定期更新系统和软件包
使用强密码和密钥认证
限制root用户直接登录
定期检查系统日志
备份重要数据
使用防火墙保护系统
定期审计用户权限
- 参考资源
19.1 重要配置文件
/etc/passwd # 用户账户信息
/etc/shadow # 用户密码信息
/etc/group # 组信息
/etc/fstab # 文件系统挂载表
/etc/hosts # 主机名解析
/etc/resolv.conf # DNS配置
/etc/ssh/sshd_config # SSH服务配置
/etc/crontab # 系统级定时任务
/var/log/messages # 系统日志
/var/log/secure # 安全日志
19.2 常用目录
/bin # 基本命令
/sbin # 系统命令
/usr/bin # 用户命令
/usr/sbin # 用户系统命令
/etc # 配置文件
/var/log # 日志文件
/tmp # 临时文件
/home # 用户家目录
/root # root用户家目录

浙公网安备 33010602011771号