Linux基础知识笔记

Linux基础知识笔记

  1. 命令行基础操作
    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进程收养

  1. 软件包管理
    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用户直接登录

定期检查系统日志

备份重要数据

使用防火墙保护系统

定期审计用户权限

  1. 参考资源
    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用户家目录

posted @ 2025-03-17 22:19  奶油小仙男  阅读(593)  评论(0)    收藏  举报