Linux快速入门 (5 分钟)
Linux 快速入门
Linux 是一个开源的类 Unix 操作系统内核,由 Linus Torvalds 于 1991 年首次发布。它广泛应用于服务器、嵌入式系统、超级计算机和个人计算机。本指南将带您深入了解 Linux 的核心概念和实用操作技能。
为什么学习 Linux?
- 开源免费:完全开放源代码,无需许可费用
- 稳定可靠:运行稳定,很少崩溃或需要重启
- 安全性高:权限管理严格,病毒和恶意软件较少
- 高度可定制:可以根据需要自由修改和定制
- 性能优异:资源占用少,运行效率高
- 广泛应用:从智能手机到超级计算机都在使用
1. 基本概念详解
终端和Shell深入理解
终端 (Terminal)
终端是用户与系统交互的文本界面,也称为命令行界面(CLI)。现代Linux系统中常见的终端程序包括:
- GNOME Terminal (Ubuntu默认)
- Konsole (KDE桌面环境)
- xterm (轻量级终端)
- Terminator (支持分屏)
Shell详解
Shell是命令解释器,负责解释用户输入的命令并执行。常见的Shell类型:
Bash (Bourne Again Shell)
# 查看当前使用的Shell
echo $SHELL
# 输出: /bin/bash
# 查看系统可用的Shell
cat /etc/shells
其他常用Shell:
- Zsh: 功能更强大,支持更好的自动补全
- Fish: 用户友好,语法高亮
- Dash: 轻量级,启动速度快
提示符详解
提示符显示重要的系统信息:
username@hostname:~/Documents$
# username: 当前用户名
# hostname: 主机名
# ~/Documents: 当前路径 (~代表家目录)
# $: 普通用户提示符 (#表示root用户)
自定义提示符:
# 在 ~/.bashrc 中添加
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Linux文件系统结构详解
Linux采用层次化的目录结构,所有文件和目录都从根目录(/)开始:
/ # 根目录 - 所有文件系统的起点
├── /bin # 基本用户命令(如 ls, cp, mv)
├── /sbin # 系统管理命令(如 fdisk, fsck)
├── /boot # 启动文件(内核、引导加载器)
├── /dev # 设备文件(硬盘、USB等)
│ ├── sda1 # 第一块硬盘第一分区
│ ├── tty1 # 第一个终端
│ └── null # 空设备文件
├── /etc # 系统配置文件
│ ├── passwd # 用户账户信息
│ ├── group # 用户组信息
│ ├── fstab # 文件系统挂载表
│ └── hosts # 主机名解析
├── /home # 用户主目录
│ ├── alice/ # 用户alice的家目录
│ └── bob/ # 用户bob的家目录
├── /lib # 系统库文件
├── /media # 可移动媒体挂载点(USB、光盘)
├── /mnt # 临时挂载点
├── /opt # 可选应用程序
├── /proc # 进程和系统信息(虚拟文件系统)
│ ├── cpuinfo # CPU信息
│ ├── meminfo # 内存信息
│ └── [PID]/ # 各进程信息目录
├── /root # root用户主目录
├── /run # 运行时数据
├── /srv # 服务数据
├── /sys # 系统硬件信息(虚拟文件系统)
├── /tmp # 临时文件(重启后清除)
├── /usr # 用户程序和数据
│ ├── bin/ # 用户命令
│ ├── lib/ # 程序库
│ ├── local/ # 本地安装的软件
│ └── share/ # 共享数据
└── /var # 可变数据文件
├── log/ # 系统日志
├── mail/ # 邮件
├── spool/ # 队列文件
└── www/ # Web服务器文件
路径概念
- 绝对路径: 从根目录开始,如
/home/user/document.txt
- 相对路径: 相对于当前目录,如
./document.txt
或../parent-dir/file.txt
- 特殊路径符号:
~
: 用户家目录.
: 当前目录..
: 父目录-
: 上一次访问的目录
2. 核心命令详解
文件和目录操作详解
导航命令
# pwd - 显示当前工作目录(Print Working Directory)
pwd
# 输出示例: /home/username/Documents
# ls - 列出目录内容(List)
ls # 基本列表
ls -l # 长格式显示(详细信息)
ls -la # 包括隐藏文件(以.开头的文件)
ls -lh # 人类可读的文件大小
ls -lt # 按修改时间排序
ls -lS # 按文件大小排序
ls -R # 递归显示子目录
ls *.txt # 显示所有.txt文件
ls [abc]* # 显示以a、b或c开头的文件
# 详细解读ls -l输出
# -rw-r--r-- 1 user group 1024 Mar 15 10:30 file.txt
# │││││││││ │ │ │ │ │ │
# │││││││││ │ │ │ │ │ └─ 文件名
# │││││││││ │ │ │ │ └─ 修改时间
# │││││││││ │ │ │ └─ 文件大小(字节)
# │││││││││ │ │ └─ 所属组
# │││││││││ │ └─ 所有者
# │││││││││ └─ 硬链接数
# │││││││││
# ││││││││└─ 其他人权限 (r--)
# │││││└└└─ 组权限 (r--)
# ││└└└─ 所有者权限 (rw-)
# └─ 文件类型 (- 普通文件, d 目录, l 链接)
目录切换
cd /path/to/directory # 切换到指定目录
cd # 回到家目录(等同于 cd ~)
cd ~ # 回到家目录
cd .. # 返回上一级目录
cd ../.. # 返回上两级目录
cd - # 返回上次访问的目录
cd ./subdirectory # 进入当前目录下的子目录
# 实用技巧
pushd /path # 保存当前目录并切换到新目录
popd # 返回到pushd保存的目录
dirs # 显示目录栈
创建和删除操作
# mkdir - 创建目录
mkdir new_directory # 创建单个目录
mkdir dir1 dir2 dir3 # 创建多个目录
mkdir -p parent/child/grandchild # 递归创建目录结构
mkdir -m 755 secure_dir # 创建时指定权限
# touch - 创建空文件或更新时间戳
touch newfile.txt # 创建空文件
touch file1.txt file2.txt # 创建多个文件
touch -t 202401011200 old.txt # 设置特定时间戳
# rmdir - 删除空目录
rmdir empty_directory # 删除空目录
rmdir -p parent/empty/child # 递归删除空目录
# rm - 删除文件和目录
rm file.txt # 删除文件
rm -i file.txt # 交互式删除(需要确认)
rm -f file.txt # 强制删除(不询问)
rm -r directory # 递归删除目录
rm -rf directory # 强制递归删除
rm *.tmp # 删除所有.tmp文件
rm -v file.txt # 详细模式(显示删除过程)
# 安全删除技巧
alias rm='rm -i' # 设置别名,默认交互模式
复制和移动操作
# cp - 复制文件和目录
cp source.txt dest.txt # 复制文件
cp source.txt /path/to/dest/ # 复制到指定目录
cp -r source_dir dest_dir # 递归复制目录
cp -p file.txt backup.txt # 保持原文件属性
cp -u newer.txt older.txt # 只在源文件较新时复制
cp -v file.txt copy.txt # 详细模式
cp -i file.txt existing.txt # 交互模式(覆盖前询问)
cp *.txt backup/ # 复制所有.txt文件
# mv - 移动/重命名
mv old_name.txt new_name.txt # 重命名文件
mv file.txt /new/location/ # 移动文件
mv -i file.txt dest.txt # 交互模式
mv -u source.txt dest.txt # 只在源文件较新时移动
mv *.log logs/ # 移动所有.log文件到logs目录
文件查看和编辑详解
文件内容查看
# cat - 显示文件内容(Concatenate)
cat file.txt # 显示整个文件
cat -n file.txt # 显示行号
cat -b file.txt # 只为非空行显示行号
cat -s file.txt # 压缩连续空行
cat file1.txt file2.txt # 连接显示多个文件
cat > new_file.txt # 创建新文件(Ctrl+D结束)
# less - 分页查看(推荐)
less file.txt # 分页查看
# 在less中的操作:
# Space/f: 下一页 b: 上一页
# j/↓: 下一行 k/↑: 上一行
# g: 文件开头 G: 文件结尾
# /pattern: 搜索 n: 下一个匹配
# q: 退出
more file.txt # 另一个分页查看工具
# head - 查看文件开头
head file.txt # 默认显示前10行
head -n 20 file.txt # 显示前20行
head -c 100 file.txt # 显示前100个字符
# tail - 查看文件结尾
tail file.txt # 默认显示后10行
tail -n 20 file.txt # 显示后20行
tail -f /var/log/syslog # 实时跟踪文件变化(非常有用)
tail -F file.txt # 跟踪文件,即使文件被重命名或删除
文件搜索和过滤
# grep - 强大的文本搜索工具
grep "pattern" file.txt # 基本搜索
grep -i "pattern" file.txt # 忽略大小写
grep -r "pattern" directory # 递归搜索目录
grep -n "pattern" file.txt # 显示行号
grep -v "pattern" file.txt # 反向匹配(显示不包含pattern的行)
grep -c "pattern" file.txt # 统计匹配行数
grep -l "pattern" *.txt # 只显示包含pattern的文件名
grep -w "word" file.txt # 匹配完整单词
grep -A 3 -B 3 "pattern" file.txt # 显示匹配行前后3行
grep -E "pattern1|pattern2" file.txt # 扩展正则表达式
# 正则表达式示例
grep "^Error" log.txt # 匹配以Error开头的行
grep "Error$" log.txt # 匹配以Error结尾的行
grep "[0-9]+" file.txt # 匹配数字
grep "20[2-3][0-9]" file.txt # 匹配2020-2039年份
# find - 查找文件和目录
find /path -name "filename" # 按名称查找
find /path -name "*.txt" # 按扩展名查找
find /path -type f # 只查找文件
find /path -type d # 只查找目录
find /path -size +1M # 查找大于1MB的文件
find /path -size -1k # 查找小于1KB的文件
find /path -mtime -7 # 查找7天内修改的文件
find /path -mtime +30 # 查找30天前修改的文件
find /path -perm 755 # 按权限查找
find /path -user username # 按用户查找
find /path -empty # 查找空文件或空目录
# 高级find用法
find /path -name "*.log" -exec rm {} \; # 查找并删除
find /path -name "*.txt" -exec grep "error" {} + # 在找到的文件中搜索
find /path -type f -name "*.tmp" -delete # 查找并删除
# locate - 快速文件定位(需要updatedb数据库)
locate filename # 快速查找文件
sudo updatedb # 更新locate数据库
locate -i filename # 忽略大小写查找
文本编辑器详解
Nano编辑器(新手友好)
nano filename # 打开或创建文件
# 常用快捷键:
# Ctrl+O: 保存 Ctrl+X: 退出
# Ctrl+K: 剪切行 Ctrl+U: 粘贴
# Ctrl+W: 搜索 Ctrl+\: 替换
# Ctrl+G: 帮助
Vim编辑器(强大但需学习)
vim filename # 打开文件
# Vim有三种模式:
# 1. 普通模式(默认)- 浏览和删除
# 2. 插入模式 - 编辑文本
# 3. 命令模式 - 执行命令
# 基本操作:
# i: 进入插入模式 Esc: 返回普通模式
# :w: 保存 :q: 退出
# :wq: 保存并退出 :q!: 强制退出不保存
# dd: 删除整行 yy: 复制整行
# p: 粘贴 u: 撤销
# /pattern: 搜索 n: 下一个匹配
权限管理详解
Linux权限系统是系统安全的基础,理解权限管理非常重要。
权限基础概念
# 权限类型
# r (read) - 读权限 - 数值4
# w (write) - 写权限 - 数值2
# x (execute) - 执行权限 - 数值1
# 权限对象
# u (user) - 文件所有者
# g (group) - 文件所属组
# o (others) - 其他用户
# a (all) - 所有用户
# 查看详细权限
ls -l filename
# 输出解读:
# -rwxr-xr-- 1 user group 1024 Mar 15 file.txt
# |||||||
# ||||||└── 其他用户权限 (r--)
# |||||└─── 组权限 (r-x)
# ||||└──── 所有者权限 (rwx)
# |||└───── 特殊权限位
# ||└────── 文件类型位
# |└─────── 目录标志
# └──────── 文件类型 (- 普通文件, d 目录, l 链接)
修改权限
# chmod - 修改权限(数字方式)
chmod 755 filename # rwxr-xr-x (常用于可执行文件)
chmod 644 filename # rw-r--r-- (常用于普通文件)
chmod 600 filename # rw------- (私有文件)
chmod 777 filename # rwxrwxrwx (所有人可读写执行)
# chmod - 修改权限(符号方式)
chmod u+x filename # 给所有者添加执行权限
chmod g-w filename # 移除组的写权限
chmod o+r filename # 给其他用户添加读权限
chmod a+r filename # 给所有人添加读权限
chmod u+x,g-w filename # 组合操作
chmod =rx filename # 设置为只读和执行
# 递归修改权限
chmod -R 755 directory # 递归修改目录权限
所有权管理
# chown - 修改文件所有者
chown user filename # 改变所有者
chown user:group filename # 同时改变所有者和组
chown :group filename # 只改变组
chown -R user:group directory # 递归修改目录
# chgrp - 只修改组
chgrp group filename # 改变文件组
chgrp -R group directory # 递归修改目录组
# 查看用户和组信息
id # 显示当前用户信息
id username # 显示指定用户信息
groups # 显示当前用户所属组
groups username # 显示用户所属组
特殊权限
# SUID (Set User ID) - 4000
# 文件执行时以所有者身份运行
chmod u+s filename
chmod 4755 filename
# SGID (Set Group ID) - 2000
# 文件执行时以组身份运行,目录中新文件继承组
chmod g+s filename
chmod 2755 filename
# Sticky Bit - 1000
# 目录中文件只能被所有者删除(如/tmp)
chmod +t directory
chmod 1755 directory
# 查看特殊权限
ls -l filename
# 输出中的s或t表示特殊权限
进程管理详解
进程是Linux系统中运行的程序实例。理解进程管理对于系统维护和故障排除至关重要。
查看进程
# ps - 显示当前进程状态
ps # 显示当前终端的进程
ps aux # 显示所有进程详细信息
ps -ef # 显示所有进程(树形结构)
ps -u username # 显示特定用户的进程
ps -C processname # 显示特定程序的进程
# ps输出详解 (ps aux)
# USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
# │ │ │ │ │ │ │ │ │ │ │
# │ │ │ │ │ │ │ │ │ │ └─ 命令
# │ │ │ │ │ │ │ │ │ └─ CPU时间
# │ │ │ │ │ │ │ │ └─ 启动时间
# │ │ │ │ │ │ │ └─ 进程状态
# │ │ │ │ │ │ └─ 终端
# │ │ │ │ │ └─ 实际内存使用(KB)
# │ │ │ │ └─ 虚拟内存大小(KB)
# │ │ │ └─ 内存使用百分比
# │ │ └─ CPU使用百分比
# │ └─ 进程ID
# └─ 用户名
# 进程状态说明:
# R: Running - 正在运行
# S: Sleeping - 可中断睡眠
# D: Disk sleep - 不可中断睡眠
# T: Stopped - 已停止
# Z: Zombie - 僵尸进程
# top - 实时进程监控
top # 实时显示进程
# top中的快捷键:
# q: 退出 h: 帮助
# k: 杀死进程 r: 调整优先级
# M: 按内存排序 P: 按CPU排序
# 1: 显示所有CPU核心
# htop - 增强版top(需安装)
htop # 更友好的界面
# F1-F10: 功能键操作
# Space: 标记进程
# F9: 杀死进程
# pgrep - 通过名称查找进程ID
pgrep processname # 查找进程PID
pgrep -u username # 查找用户的进程
pgrep -f keyword # 按完整命令行搜索
# pidof - 查找程序的PID
pidof program_name # 查找程序PID
进程控制
# 启动进程
./program # 前台运行
./program & # 后台运行
nohup ./program & # 后台运行,忽略挂断信号
nohup ./program > output.log 2>&1 & # 后台运行并重定向输出
# jobs - 显示当前终端的作业
jobs # 显示所有作业
jobs -l # 显示详细信息
jobs -r # 只显示运行中的作业
jobs -s # 只显示停止的作业
# 作业控制
fg %1 # 将作业1调到前台
bg %1 # 将作业1放到后台继续运行
kill %1 # 杀死作业1
# 终止进程
kill PID # 发送TERM信号(温和终止)
kill -9 PID # 发送KILL信号(强制终止)
kill -15 PID # 发送TERM信号(等同于kill PID)
kill -STOP PID # 停止进程
kill -CONT PID # 继续进程
# killall - 按名称杀死进程
killall processname # 杀死所有同名进程
killall -9 processname # 强制杀死
killall -u username # 杀死用户的所有进程
# pkill - 高级进程杀死
pkill processname # 按名称杀死
pkill -u username # 杀死用户进程
pkill -f keyword # 按命令行关键字杀死
进程优先级
# nice - 设置进程优先级(启动时)
nice -n 10 ./program # 以优先级10运行程序
# 优先级范围:-20(最高)到 19(最低)
# renice - 调整运行中进程的优先级
renice 10 PID # 调整进程优先级为10
renice 10 -u username # 调整用户所有进程优先级
# 查看进程优先级
ps -eo pid,ppid,ni,comm # 显示PID、父PID、优先级、命令
系统信息详解
系统基本信息
# 系统信息
uname -a # 完整系统信息
uname -r # 内核版本
uname -m # 硬件架构
uname -o # 操作系统
# 发行版信息
lsb_release -a # 详细发行版信息
cat /etc/os-release # 系统版本信息
cat /proc/version # 内核版本详情
# 主机信息
hostname # 主机名
hostname -I # 所有IP地址
hostname -f # 完整域名
# 用户信息
whoami # 当前用户
who # 已登录用户
w # 详细用户信息(包含活动)
last # 登录历史
id # 用户ID和组ID
finger username # 用户详细信息(需安装finger)
硬件信息
# CPU信息
cat /proc/cpuinfo # 详细CPU信息
lscpu # CPU架构信息
nproc # CPU核心数量
# 内存信息
free -h # 内存使用情况(人类可读)
free -m # 内存使用情况(MB)
cat /proc/meminfo # 详细内存信息
vmstat # 虚拟内存统计
vmstat 2 5 # 每2秒显示一次,共5次
# 磁盘信息
df -h # 磁盘使用情况
df -T # 显示文件系统类型
du -h /path # 目录大小
du -sh /path # 目录总大小
du -h --max-depth=1 /path # 子目录大小
lsblk # 块设备树形结构
fdisk -l # 磁盘分区信息(需要root权限)
# 硬件列表
lshw # 硬件信息(需安装)
lshw -short # 简短硬件信息
lspci # PCI设备
lsusb # USB设备
lsmod # 已加载的内核模块
系统运行状态
# 系统运行时间和负载
uptime # 运行时间、用户数、平均负载
# 输出解读:
# 14:30:25 up 7 days, 3:42, 2 users, load average: 0.15, 0.20, 0.18
# │ │ │ │ │
# │ │ │ │ └─ 1,5,15分钟平均负载
# │ │ │ └─ 当前用户数
# │ │ └─ 运行时间
# │ └─ 系统启动时间
# └─ 当前时间
# 系统负载详解
# 负载值含义:
# 0.00 = 系统空闲
# 1.00 = 系统满负荷(单核)
# 高于CPU核心数 = 系统过载
# 实时系统监控
iostat # I/O统计
iostat 2 # 每2秒更新
sar # 系统活动报告
sar -u 2 5 # CPU使用率,每2秒显示,共5次
sar -r 2 5 # 内存使用率
# 进程树
pstree # 进程树
pstree -p # 显示PID
pstree username # 特定用户的进程树
3. 管道和重定向详解
管道和重定向是Linux的强大功能,允许命令之间传递数据和控制输出。
重定向详解
标准输入输出流
Linux中每个进程都有三个标准流:
- 标准输入 (stdin) - 文件描述符 0
- 标准输出 (stdout) - 文件描述符 1
- 标准错误 (stderr) - 文件描述符 2
输出重定向
# 基本重定向
command > file # 重定向stdout到文件(覆盖)
command >> file # 重定向stdout到文件(追加)
command 2> file # 重定向stderr到文件
command 2>> file # 重定向stderr到文件(追加)
command &> file # 重定向所有输出到文件
command &>> file # 重定向所有输出到文件(追加)
# 高级重定向
command > file 2>&1 # 先重定向stdout,再将stderr重定向到stdout
command 2>&1 > file # 先重定向stderr到stdout,再重定向stdout到file
command 1>&2 # 将stdout重定向到stderr
# 丢弃输出
command > /dev/null # 丢弃stdout
command 2> /dev/null # 丢弃stderr
command &> /dev/null # 丢弃所有输出
# 同时重定向到文件和屏幕
command | tee file # 输出到屏幕并保存到文件
command | tee -a file # 输出到屏幕并追加到文件
command 2>&1 | tee file # 包含错误输出
输入重定向
# 基本输入重定向
command < file # 从文件读取输入
command << EOF # Here Document(直到EOF结束)
line 1
line 2
EOF
command <<< "string" # Here String(直接输入字符串)
# 实例
# 发送邮件
mail user@example.com << EOF
Subject: Test Mail
This is a test message.
EOF
# 创建多行文件
cat > config.txt << EOF
server=localhost
port=8080
timeout=30
EOF
管道详解
管道(|)将一个命令的输出作为另一个命令的输入。
基本管道操作
# 基本管道
command1 | command2 # command1的输出作为command2的输入
command1 | command2 | command3 # 多级管道
# 常用管道组合
ls -la | grep "txt" # 列出所有.txt文件
ps aux | grep nginx # 查找nginx进程
cat file.txt | sort # 排序文件内容
cat file.txt | sort | uniq # 排序并去重
history | grep "git" # 查找包含git的历史命令
# 文件处理管道
cat access.log | grep "ERROR" | wc -l # 统计错误行数
cat file.txt | sort | uniq -c | sort -nr # 统计重复行并按频率排序
ls -la | awk '{print $5, $9}' | sort -n # 显示文件大小和名称并排序
高级管道技巧
# xargs - 将输入转换为命令参数
find /path -name "*.txt" | xargs rm # 删除所有.txt文件
echo "file1 file2 file3" | xargs touch # 创建多个文件
ps aux | grep java | awk '{print $2}' | xargs kill # 杀死所有java进程
# xargs高级用法
find /path -name "*.log" | xargs -I {} cp {} backup/ # 复制所有log文件
echo "1 2 3 4 5 6" | xargs -n 2 # 每次处理2个参数
find /path -name "*.txt" | xargs -P 4 grep "pattern" # 并行执行4个grep
# 命名管道 (FIFO)
mkfifo mypipe # 创建命名管道
echo "hello" > mypipe & # 写入管道(后台)
cat < mypipe # 读取管道
文本处理工具详解
sort - 排序工具
sort file.txt # 按字典序排序
sort -n file.txt # 按数值排序
sort -r file.txt # 逆序排序
sort -k2 file.txt # 按第2列排序
sort -t':' -k3 /etc/passwd # 按:分割,第3列排序
sort -u file.txt # 排序并去重
sort -f file.txt # 忽略大小写排序
uniq - 去重工具
uniq file.txt # 去除相邻重复行
uniq -c file.txt # 统计重复次数
uniq -d file.txt # 只显示重复行
uniq -u file.txt # 只显示不重复行
sort file.txt | uniq # 先排序再去重
cut - 列提取工具
cut -d':' -f1 /etc/passwd # 提取第1列(以:分割)
cut -d':' -f1,3 /etc/passwd # 提取第1和第3列
cut -c1-10 file.txt # 提取每行前10个字符
cut -c5- file.txt # 从第5个字符开始到行尾
awk - 强大的文本处理工具
awk '{print $1}' file.txt # 打印第1列
awk -F':' '{print $1}' /etc/passwd # 指定分隔符
awk '{print NF}' file.txt # 打印每行字段数
awk '{print NR, $0}' file.txt # 打印行号和内容
awk '{sum+=$1} END {print sum}' file.txt # 计算第1列总和
# AWK高级用法
awk '$3 > 1000 {print $1, $3}' file.txt # 条件过滤
awk 'BEGIN {print "Start"} {print} END {print "End"}' file.txt
awk '{count[$1]++} END {for(i in count) print i, count[i]}' # 统计词频
sed - 流编辑器
sed 's/old/new/' file.txt # 替换每行第一个匹配
sed 's/old/new/g' file.txt # 全局替换
sed '2d' file.txt # 删除第2行
sed '1,3d' file.txt # 删除1-3行
sed -n '2,4p' file.txt # 只显示2-4行
sed '/pattern/d' file.txt # 删除包含pattern的行
sed -i 's/old/new/g' file.txt # 直接修改文件
4. 环境变量详解
环境变量是操作系统用来存储配置信息的键值对。
查看和设置环境变量
# 查看所有环境变量
env # 显示所有环境变量
printenv # 等同于env
set # 显示所有变量(包括局部变量)
# 查看特定变量
echo $PATH # 显示PATH变量
echo $HOME # 显示家目录
echo $USER # 显示用户名
echo $PWD # 显示当前目录
echo $SHELL # 显示当前Shell
# 设置环境变量
export VAR_NAME=value # 临时设置(当前会话)
VAR_NAME=value # 设置局部变量
unset VAR_NAME # 删除变量
# 永久设置环境变量
echo 'export PATH=$PATH:/new/path' >> ~/.bashrc # 用户级别
echo 'export VAR=value' >> ~/.profile # 登录时加载
sudo echo 'export VAR=value' >> /etc/environment # 系统级别
# 重新加载配置
source ~/.bashrc # 重新加载bashrc
. ~/.bashrc # 等同于source
重要的系统环境变量
$PATH # 可执行文件搜索路径
$HOME # 用户家目录
$USER / $USERNAME # 当前用户名
$PWD # 当前工作目录
$OLDPWD # 上一个工作目录
$SHELL # 当前Shell路径
$PS1 # 主提示符
$PS2 # 次提示符
$IFS # 字段分隔符
$TERM # 终端类型
$LANG / $LC_ALL # 语言和地区设置
# PATH变量操作
echo $PATH # 查看PATH
export PATH=$PATH:/new/path # 添加新路径到PATH末尾
export PATH=/new/path:$PATH # 添加新路径到PATH开头
Shell配置文件详解
# Bash配置文件加载顺序(登录Shell)
/etc/profile # 系统级配置
~/.bash_profile # 用户级配置(优先级高)
~/.bash_login # 如果上面不存在
~/.profile # 如果上面都不存在
# 非登录Shell配置文件
~/.bashrc # 每次启动bash时加载
# 其他重要配置文件
~/.bash_history # 命令历史
~/.bash_logout # 退出时执行
/etc/bashrc # 系统级bashrc
# 配置文件实例
# 在~/.bashrc中添加:
alias ll='ls -la'
alias grep='grep --color=auto'
export EDITOR=vim
export HISTSIZE=10000
5. 包管理详解
包管理器是Linux发行版管理软件安装、更新和删除的核心工具。
Ubuntu/Debian系统 (APT)
# 基本包管理命令
sudo apt update # 更新包索引(必须先执行)
sudo apt upgrade # 升级所有已安装的包
sudo apt full-upgrade # 完整升级(处理依赖关系变化)
sudo apt dist-upgrade # 发行版升级
# 安装和卸载软件
sudo apt install package_name # 安装软件包
sudo apt install -y package_name # 自动确认安装
sudo apt install ./package.deb # 安装本地deb包
sudo apt remove package_name # 卸载软件包(保留配置文件)
sudo apt purge package_name # 完全删除软件包和配置文件
sudo apt autoremove # 清理不需要的依赖包
# 搜索和查询
apt search keyword # 搜索软件包
apt show package_name # 显示包的详细信息
apt list # 列出所有可用包
apt list --installed # 列出已安装的包
apt list --upgradable # 列出可升级的包
# 高级APT命令
sudo apt-mark hold package_name # 锁定包版本(防止升级)
sudo apt-mark unhold package_name # 解除锁定
apt-cache depends package_name # 显示包依赖
apt-cache rdepends package_name # 显示反向依赖
apt-cache policy package_name # 显示包的安装策略
# APT配置和故障排除
sudo apt clean # 清理下载的包缓存
sudo apt autoclean # 清理旧版本的包缓存
sudo dpkg --configure -a # 修复损坏的包配置
sudo apt --fix-broken install # 修复依赖关系
CentOS/RHEL/Fedora系统
YUM (CentOS 7及以下)
# 基本包管理
sudo yum update # 更新所有包
sudo yum upgrade # 升级所有包(清理旧版本)
sudo yum check-update # 检查可用更新
# 安装和卸载
sudo yum install package_name # 安装软件包
sudo yum install -y package_name # 自动确认安装
sudo yum localinstall package.rpm # 安装本地rpm包
sudo yum remove package_name # 卸载软件包
sudo yum autoremove # 删除不需要的依赖
# 搜索和查询
yum search keyword # 搜索软件包
yum info package_name # 显示包信息
yum list # 列出所有包
yum list installed # 列出已安装的包
yum list available # 列出可安装的包
# 组管理
yum grouplist # 列出软件包组
sudo yum groupinstall "Group Name" # 安装软件包组
sudo yum groupremove "Group Name" # 删除软件包组
# 仓库管理
yum repolist # 列出启用的仓库
sudo yum-config-manager --add-repo URL # 添加仓库
sudo yum clean all # 清理缓存
DNF (CentOS 8+/Fedora)
# DNF是YUM的现代替代品,命令类似
sudo dnf update # 更新包
sudo dnf upgrade # 升级包
sudo dnf install package_name # 安装包
sudo dnf remove package_name # 删除包
sudo dnf search keyword # 搜索包
sudo dnf info package_name # 包信息
sudo dnf history # 查看操作历史
sudo dnf history undo last # 撤销上次操作
其他Linux发行版包管理器
Arch Linux (Pacman)
sudo pacman -Syu # 同步并更新系统
sudo pacman -S package_name # 安装包
sudo pacman -R package_name # 删除包
sudo pacman -Rs package_name # 删除包及其依赖
sudo pacman -Ss keyword # 搜索包
sudo pacman -Qi package_name # 查询已安装包信息
sudo pacman -Sc # 清理包缓存
SUSE (Zypper)
sudo zypper refresh # 刷新仓库
sudo zypper update # 更新包
sudo zypper install package_name # 安装包
sudo zypper remove package_name # 删除包
zypper search keyword # 搜索包
zypper info package_name # 包信息
通用包管理技巧
# 使用Snap包管理(跨发行版)
sudo snap install package_name # 安装snap包
sudo snap remove package_name # 删除snap包
snap list # 列出已安装的snap包
snap find keyword # 搜索snap包
# 使用Flatpak(跨发行版)
flatpak install package_name # 安装flatpak应用
flatpak uninstall package_name # 删除应用
flatpak list # 列出已安装应用
flatpak search keyword # 搜索应用
# AppImage(便携式应用)
chmod +x application.AppImage # 给AppImage执行权限
./application.AppImage # 运行AppImage应用
6. 服务管理详解 (Systemd)
Systemd是现代Linux发行版的系统和服务管理器。
服务控制
# 基本服务操作
sudo systemctl start service_name # 启动服务
sudo systemctl stop service_name # 停止服务
sudo systemctl restart service_name # 重启服务
sudo systemctl reload service_name # 重新加载配置(不重启)
sudo systemctl status service_name # 查看服务状态
# 服务自启动管理
sudo systemctl enable service_name # 设置开机自启动
sudo systemctl disable service_name # 禁用开机自启动
sudo systemctl is-enabled service_name # 检查是否自启动
sudo systemctl mask service_name # 屏蔽服务(无法启动)
sudo systemctl unmask service_name # 取消屏蔽
# 查看服务信息
systemctl list-units # 列出所有活动单元
systemctl list-units --type=service # 只列出服务
systemctl list-units --state=failed # 列出失败的服务
systemctl list-unit-files # 列出所有单元文件
systemctl show service_name # 显示服务详细信息
# 系统状态
systemctl status # 系统整体状态
systemctl list-dependencies service_name # 显示服务依赖关系
systemctl get-default # 显示默认运行级别
sudo systemctl set-default multi-user.target # 设置默认运行级别
日志管理 (Journald)
# 查看系统日志
journalctl # 查看所有日志
journalctl -f # 实时跟踪日志
journalctl -u service_name # 查看特定服务日志
journalctl -u service_name -f # 实时跟踪服务日志
# 时间过滤
journalctl --since "2024-01-01" # 从指定日期开始
journalctl --since "1 hour ago" # 从一小时前开始
journalctl --since today # 今天的日志
journalctl --until "2024-01-31" # 到指定日期为止
# 优先级过滤
journalctl -p err # 只显示错误及以上级别
journalctl -p warning # 显示警告及以上级别
# 优先级:emerg(0), alert(1), crit(2), err(3), warning(4), notice(5), info(6), debug(7)
# 其他有用选项
journalctl -n 50 # 显示最近50行
journalctl --disk-usage # 显示日志占用空间
sudo journalctl --vacuum-time=7d # 清理7天前的日志
sudo journalctl --vacuum-size=100M # 保持日志总大小在100MB以内
定时任务 (Timer)
# 查看定时任务
systemctl list-timers # 列出所有定时器
systemctl status timer_name # 查看定时器状态
# 常见的系统定时器
systemctl list-timers --all # 包括非活动定时器
自定义服务
# 创建服务文件
sudo nano /etc/systemd/system/myapp.service
# 服务文件示例:
[Unit]
Description=My Application
After=network.target
[Service]
Type=simple
User=username
WorkingDirectory=/path/to/app
ExecStart=/path/to/app/start.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启用并启动新服务
sudo systemctl enable myapp.service
sudo systemctl start myapp.service
7. 网络管理详解
Linux网络管理包括网络配置、连接测试、防火墙等重要功能。
网络信息查看
# 网络接口信息
ip addr show # 显示所有网络接口(现代命令)
ifconfig # 传统命令(需安装net-tools)
ip link show # 显示网络接口状态
# 路由信息
ip route show # 显示路由表
route -n # 传统路由显示
ip route get 8.8.8.8 # 查看到特定IP的路由
# 网络连接状态
ss -tuln # 显示所有TCP/UDP连接(现代命令)
netstat -tuln # 传统网络连接显示
ss -p # 显示进程信息
lsof -i :80 # 查看端口80的使用情况
# DNS信息
nslookup google.com # DNS查询
dig google.com # 详细DNS查询
cat /etc/resolv.conf # 查看DNS配置
网络测试工具
# 连接测试
ping -c 4 google.com # ping测试(发送4个包)
ping6 -c 4 google.com # IPv6 ping测试
traceroute google.com # 路由跟踪
tracepath google.com # 路径MTU发现
# 端口测试
telnet host port # 测试TCP端口连通性
nc -zv host port # netcat端口扫描
nc -zv host 1-1000 # 扫描端口范围
# 网络性能测试
wget -O /dev/null http://example.com/largefile # 下载速度测试
curl -o /dev/null -s -w "%{time_total}\n" http://example.com # 响应时间测试
iperf3 -c server_ip # 网络带宽测试(需要服务器配合)
防火墙管理
UFW (Ubuntu Uncomplicated Firewall)
# UFW基本操作
sudo ufw status # 查看防火墙状态
sudo ufw enable # 启用防火墙
sudo ufw disable # 禁用防火墙
sudo ufw reset # 重置所有规则
# 基本规则
sudo ufw allow 22 # 允许SSH端口
sudo ufw allow ssh # 允许SSH服务
sudo ufw allow 80/tcp # 允许HTTP(TCP)
sudo ufw allow from 192.168.1.0/24 # 允许特定网段
sudo ufw deny 23 # 拒绝telnet端口
# 高级规则
sudo ufw allow from 192.168.1.100 to any port 22 # 特定IP访问SSH
sudo ufw limit ssh # 限制SSH连接频率(防暴力破解)
sudo ufw delete allow 80 # 删除规则
sudo ufw --dry-run enable # 预览规则效果
iptables (传统防火墙)
# 查看规则
sudo iptables -L # 列出所有规则
sudo iptables -L -n # 显示数字地址
sudo iptables -L -v # 详细信息
# 基本规则操作
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许HTTP
sudo iptables -A INPUT -j DROP # 默认拒绝
# 保存和恢复规则
sudo iptables-save > /etc/iptables/rules.v4 # 保存规则
sudo iptables-restore < /etc/iptables/rules.v4 # 恢复规则
网络配置
网络接口配置
# 临时配置(重启后失效)
sudo ip addr add 192.168.1.100/24 dev eth0 # 添加IP地址
sudo ip link set eth0 up # 启用接口
sudo ip link set eth0 down # 禁用接口
sudo ip route add default via 192.168.1.1 # 添加默认网关
# 永久配置(Ubuntu 18.04+使用Netplan)
sudo nano /etc/netplan/01-network-manager-all.yaml
# 内容示例:
network:
version: 2
ethernets:
eth0:
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 apply # 应用配置
8. 快捷键和高级技巧详解
终端快捷键大全
# 光标移动
Ctrl + A # 光标移到行首
Ctrl + E # 光标移到行尾
Ctrl + F / → # 光标向右移动一个字符
Ctrl + B / ← # 光标向左移动一个字符
Alt + F # 光标向右移动一个单词
Alt + B # 光标向左移动一个单词
# 文本编辑
Ctrl + U # 删除光标前的所有字符
Ctrl + K # 删除光标后的所有字符
Ctrl + W # 删除光标前的一个单词
Alt + D # 删除光标后的一个单词
Ctrl + Y # 粘贴刚删除的内容
Ctrl + T # 交换光标前两个字符
# 历史命令
Ctrl + R # 反向搜索历史命令(非常有用!)
Ctrl + S # 正向搜索历史命令
Ctrl + P / ↑ # 上一条命令
Ctrl + N / ↓ # 下一条命令
!! # 重复上一条命令
!n # 执行第n条历史命令
!string # 执行最近以string开头的命令
^old^new # 替换上一条命令中的old为new
# 进程控制
Ctrl + C # 中断当前进程(SIGINT)
Ctrl + Z # 暂停当前进程(SIGTSTP)
Ctrl + D # 发送EOF,通常用于退出
Ctrl + \ # 强制终止(SIGQUIT)
# 终端控制
Ctrl + L # 清屏(等同于clear命令)
Ctrl + S # 暂停终端输出
Ctrl + Q # 恢复终端输出
命令行高级技巧
# 大括号展开
echo {1..10} # 输出:1 2 3 4 5 6 7 8 9 10
echo {a..z} # 输出:a b c ... z
echo file{1,2,3}.txt # 输出:file1.txt file2.txt file3.txt
mkdir -p project/{src,test,docs} # 创建多个目录
# 命令替换
echo "Today is $(date)" # 现代语法
echo "Today is `date`" # 传统语法
files=$(ls *.txt) # 将命令输出赋值给变量
# 条件执行
command1 && command2 # command1成功后执行command2
command1 || command2 # command1失败后执行command2
command1; command2 # 依次执行两个命令
# 后台作业
command & # 后台执行命令
jobs # 查看后台作业
fg %1 # 将作业1调到前台
bg %1 # 将作业1放到后台继续
# 通配符和模式匹配
ls *.txt # 所有.txt文件
ls file?.txt # file后跟一个字符的.txt文件
ls file[0-9].txt # file后跟数字的.txt文件
ls file[!0-9].txt # file后不跟数字的.txt文件
实用别名设置
# 在~/.bashrc中添加常用别名
alias ll='ls -la' # 详细列表
alias la='ls -A' # 显示隐藏文件
alias l='ls -CF' # 分类显示
alias ..='cd ..' # 快速返回上级目录
alias ...='cd ../..' # 快速返回上两级目录
alias grep='grep --color=auto' # 彩色grep
alias fgrep='fgrep --color=auto' # 彩色fgrep
alias egrep='egrep --color=auto' # 彩色egrep
# 安全别名
alias rm='rm -i' # 删除前确认
alias cp='cp -i' # 复制前确认
alias mv='mv -i' # 移动前确认
# 系统信息别名
alias h='history' # 历史命令
alias j='jobs -l' # 作业列表
alias path='echo -e ${PATH//:/\\n}' # 分行显示PATH
alias now='date +"%T"' # 当前时间
alias nowtime=now # 时间别名
alias nowdate='date +"%d-%m-%Y"' # 当前日期
# 网络别名
alias ports='netstat -tulanp' # 显示所有端口
alias wget='wget -c' # 断点续传下载
函数定义
# 在~/.bashrc中定义函数
# 创建目录并进入
mkcd() {
mkdir -p "$1" && cd "$1"
}
# 提取各种格式的压缩文件
extract() {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar e $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted via extract()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
# 查找并杀死进程
killps() {
ps aux | grep $1 | grep -v grep | awk '{print $2}' | xargs kill -9
}
9. 安全和最佳实践详解
Linux系统安全是系统管理的重中之重,以下是重要的安全措施和最佳实践。
用户和权限管理
# 用户管理
sudo adduser username # 添加新用户(推荐)
sudo useradd -m -s /bin/bash username # 使用useradd添加用户
sudo usermod -aG sudo username # 将用户添加到sudo组
sudo usermod -aG group username # 将用户添加到特定组
sudo deluser username # 删除用户
sudo userdel -r username # 删除用户及其主目录
# 密码管理
sudo passwd username # 设置用户密码
sudo passwd -l username # 锁定用户账户
sudo passwd -u username # 解锁用户账户
sudo chage -l username # 查看密码策略
sudo chage -M 90 username # 设置密码90天过期
# 组管理
sudo groupadd groupname # 创建组
sudo groupdel groupname # 删除组
groups username # 查看用户所属组
sudo gpasswd -a username groupname # 将用户加入组
sudo gpasswd -d username groupname # 将用户从组中移除
SSH安全配置
# SSH服务配置文件
sudo nano /etc/ssh/sshd_config
# 重要安全设置:
Port 2222 # 更改默认端口
PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 禁用密码认证(使用密钥)
PubkeyAuthentication yes # 启用公钥认证
AllowUsers username # 只允许特定用户
MaxAuthTries 3 # 限制认证尝试次数
ClientAliveInterval 300 # 客户端活跃检查
ClientAliveCountMax 2 # 最大无响应次数
# 重启SSH服务
sudo systemctl restart ssh
# SSH密钥管理
ssh-keygen -t rsa -b 4096 # 生成RSA密钥对
ssh-keygen -t ed25519 # 生成ED25519密钥对(推荐)
ssh-copy-id user@server # 复制公钥到服务器
ssh-add ~/.ssh/private_key # 添加私钥到ssh-agent
防火墙和网络安全
# 基本防火墙规则
sudo ufw default deny incoming # 默认拒绝入站
sudo ufw default allow outgoing # 默认允许出站
sudo ufw allow ssh # 允许SSH
sudo ufw allow 80/tcp # 允许HTTP
sudo ufw allow 443/tcp # 允许HTTPS
sudo ufw enable # 启用防火墙
# 网络监控
sudo netstat -tuln # 检查开放端口
sudo ss -tuln # 现代版网络状态
lsof -i # 查看网络连接
sudo nmap localhost # 扫描本机端口(需安装nmap)
# 检查可疑连接
sudo netstat -an | grep ESTABLISHED # 查看已建立的连接
sudo lsof -i :22 # 查看SSH连接
文件系统安全
# 文件权限审计
find /home -type f -perm 777 # 查找权限过于开放的文件
find /etc -name "*.conf" -perm +o+w # 查找其他用户可写的配置文件
find / -type f -perm -4000 2>/dev/null # 查找SUID文件
# 安全删除
shred -vfz -n 3 sensitive_file # 安全删除敏感文件
wipe -rf sensitive_directory # 安全删除目录(需安装wipe)
# 文件完整性检查
md5sum file > file.md5 # 生成MD5校验和
md5sum -c file.md5 # 验证文件完整性
sha256sum file # SHA256校验和
系统更新和补丁管理
# 自动更新配置(Ubuntu)
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
# 手动更新
sudo apt update && sudo apt upgrade # 更新系统
sudo apt dist-upgrade # 发行版升级
sudo apt autoremove # 清理不需要的包
# 查看安全更新
apt list --upgradable | grep -i security
日志监控和审计
# 重要日志文件
tail -f /var/log/auth.log # 认证日志
tail -f /var/log/syslog # 系统日志
tail -f /var/log/kern.log # 内核日志
journalctl -f # Systemd日志
# 登录监控
last # 最近登录记录
lastb # 失败登录尝试(需root权限)
who # 当前登录用户
w # 用户活动详情
# 审计工具
sudo apt install auditd # 安装审计守护进程
sudo auditctl -l # 查看审计规则
10. 故障排查详解
系统故障排查是Linux管理员的核心技能,掌握系统化的排查方法很重要。
系统性能问题排查
# CPU使用情况
top # 实时进程监控
htop # 增强版top
sar -u 1 10 # CPU使用率采样
iostat -x 1 # I/O统计
vmstat 1 # 虚拟内存统计
# 内存问题
free -h # 内存使用情况
cat /proc/meminfo # 详细内存信息
ps aux --sort=-%mem | head # 按内存使用排序进程
pmap PID # 查看进程内存映射
# 磁盘问题
df -h # 磁盘空间使用
du -sh /* # 各目录大小
lsof +D /path # 查看目录下被打开的文件
fuser -v /path # 查看使用文件/目录的进程
# 网络问题
ping -c 4 google.com # 连接测试
traceroute google.com # 路由追踪
netstat -i # 网络接口统计
ss -tuln # 网络连接状态
服务故障排查
# 服务状态检查
systemctl status service_name # 查看服务状态
journalctl -u service_name -f # 实时查看服务日志
journalctl -u service_name --since "1 hour ago" # 查看近1小时日志
# 端口和进程排查
lsof -i :port # 查看端口使用情况
netstat -tulpn | grep :port # 查看端口监听
ps aux | grep process_name # 查找进程
pgrep -f process_pattern # 按模式查找进程
启动问题排查
# 系统启动日志
journalctl -b # 本次启动的日志
journalctl -b -1 # 上次启动的日志
dmesg # 内核启动信息
dmesg | grep -i error # 查找内核错误
# 服务启动问题
systemctl list-units --failed # 列出失败的服务
systemctl --failed # 简化版失败服务列表
systemd-analyze # 启动时间分析
systemd-analyze blame # 各服务启动耗时
文件系统问题
# 文件系统检查
df -h # 磁盘使用情况
mount | grep -v tmpfs # 查看挂载点
lsblk # 块设备信息
sudo fsck -f /dev/sdX # 文件系统检查(需卸载)
# 权限问题
ls -la file # 查看文件权限
namei -l /path/to/file # 查看路径权限链
getfacl file # 查看ACL权限(如果启用)
常见问题解决方案
# 磁盘空间不足
du -h / 2>/dev/null | grep -E '^[0-9.]+G' # 找大目录
find / -type f -size +100M 2>/dev/null # 找大文件
sudo apt clean # 清理包缓存
sudo journalctl --vacuum-time=7d # 清理旧日志
# 权限问题修复
sudo chown -R user:group /path # 修复所有权
sudo chmod -R 755 /path # 修复权限
sudo chmod +x script.sh # 添加执行权限
# 网络连接问题
sudo systemctl restart networking # 重启网络服务
sudo netplan apply # 应用网络配置(Ubuntu 18.04+)
sudo /etc/init.d/networking restart # 传统网络重启
# 服务修复
sudo systemctl daemon-reload # 重新加载systemd
sudo systemctl reset-failed service_name # 重置失败状态
sudo systemctl restart service_name # 重启服务
11. 高级主题简介
Shell脚本基础
#!/bin/bash
# 脚本示例
# 变量
name="Linux"
echo "Hello, $name!"
# 条件语句
if [ "$USER" = "root" ]; then
echo "Running as root"
else
echo "Running as regular user"
fi
# 循环
for file in *.txt; do
echo "Processing $file"
done
# 函数
backup_file() {
cp "$1" "$1.backup"
echo "Backed up $1"
}
backup_file "important.conf"
定时任务 (Cron)
# 编辑定时任务
crontab -e # 编辑用户crontab
sudo crontab -e # 编辑root crontab
crontab -l # 列出定时任务
# Crontab格式:分 时 日 月 周 命令
# 示例:
0 2 * * * /usr/bin/backup.sh # 每天2点执行备份
*/15 * * * * /usr/bin/check-system.sh # 每15分钟检查系统
0 0 1 * * /usr/bin/monthly-report.sh # 每月1号生成报告
压缩和归档
# tar归档
tar -czf archive.tar.gz /path/to/dir # 创建gzip压缩归档
tar -xzf archive.tar.gz # 解压gzip归档
tar -cjf archive.tar.bz2 /path/to/dir # 创建bzip2压缩归档
tar -tf archive.tar.gz # 查看归档内容
# zip压缩
zip -r archive.zip /path/to/dir # 创建zip归档
unzip archive.zip # 解压zip归档
unzip -l archive.zip # 查看zip内容
总结
通过本详细指南,您已经掌握了Linux系统的核心知识和操作技能:
掌握的核心技能
- 系统导航 - 熟练使用命令行界面和文件系统
- 文件操作 - 创建、删除、复制、搜索文件和目录
- 权限管理 - 理解和配置Linux权限系统
- 进程管理 - 监控和控制系统进程
- 系统信息 - 查看和监控系统状态
- 网络管理 - 配置网络和排查网络问题
- 包管理 - 安装和管理软件包
- 服务管理 - 控制系统服务和守护进程
- 安全实践 - 实施系统安全措施
- 故障排查 - 诊断和解决系统问题
继续学习的方向
- Shell脚本编程 - 自动化系统任务
- 系统管理进阶 - 用户管理、网络配置、性能调优
- 容器技术 - Docker、Kubernetes等
- 云计算平台 - AWS、Azure、Google Cloud
- 监控和日志 - ELK Stack、Prometheus等
- 配置管理 - Ansible、Puppet等
学习建议
- 实践为主 - 在实际环境中练习命令和操作
- 阅读文档 - 善用
man
命令和--help
选项 - 解决问题 - 通过排查实际问题来提升技能
- 关注安全 - 始终将安全放在首位
- 持续学习 - Linux生态系统在不断发展,保持学习热情
有用的资源
- 官方文档 - 各Linux发行版的官方文档
- 社区论坛 - Stack Overflow、Reddit等
- 在线教程 - Linux Academy、Coursera等
- 开源项目 - 参与开源项目来提升技能
记住:Linux的学习是一个持续的过程。从基础开始,通过不断实践和探索,您将逐步成为Linux专家。每一个命令的熟练掌握都会让您在系统管理和开发工作中更加得心应手!
最重要的建议:多动手实践,不怕犯错。Linux系统的最佳学习方式就是在安全的环境中大胆尝试各种命令和配置。