1. Linux系统入门:从零开始的必备认知
第一次接触Linux系统时,我被那个漆黑的终端窗口吓到了——没有熟悉的开始菜单,没有可视化的操作界面,只有一行行闪烁的光标。但当我真正开始使用后才发现,这个看似复杂的系统其实比Windows更加高效和稳定。Linux作为服务器领域的绝对霸主,全球超过90%的超级计算机和75%的网页服务器都运行在Linux系统上。
对于初学者来说,理解Linux的这几个核心特点至关重要:
- 一切都是文件:硬件设备、系统配置、进程信息都以文件形式存在
- 权限系统严格:用户、组、其他三种角色搭配读写执行权限
- 包管理系统:通过命令行工具一键安装/卸载软件
- 多用户多任务:支持多个用户同时登录和操作
提示:新手常犯的错误是试图在Linux中寻找Windows的操作逻辑。建议把Linux当作全新的系统来学习,而不是Windows的替代品。
我建议初学者从Ubuntu或Linux Mint这类对新手友好的发行版开始。这些发行版提供了图形界面,可以平滑过渡到命令行操作。安装完成后,第一件事是打开终端(快捷键Ctrl+Alt+T),这个黑框框将成为你最强大的工具。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件系统操作:从生疏到熟练的必经之路
2.1 基础导航命令
在终端中,这几个命令使用频率最高:
bash复制pwd # 显示当前工作目录 (Print Working Directory)
ls # 列出目录内容 (List)
cd # 改变目录 (Change Directory)
ls命令有几个常用参数:
-l:以长格式显示,包含权限、所有者、大小等信息-a:显示所有文件(包括隐藏文件,Linux中.开头的文件是隐藏文件)-h:人类可读的文件大小(如1K、234M)
实际操作示例:
bash复制cd ~ # 切换到用户主目录
ls -lah # 以详细格式列出所有文件(包括隐藏文件)
cd /etc # 切换到系统配置目录
2.2 文件操作四件套
创建、复制、移动和删除是文件操作的基础:
bash复制touch filename # 创建空文件
mkdir dirname # 创建目录
cp source dest # 复制文件
mv source dest # 移动/重命名文件
rm filename # 删除文件
rm -r dirname # 递归删除目录
警告:
rm -rf /是极其危险的命令,会强制删除系统所有文件。永远不要在生产环境尝试!
我在实际工作中总结出一个好习惯:执行删除操作前先用ls确认目标文件,或者使用-i参数让系统提示确认:
bash复制rm -i important_file.txt
2.3 文件查看与搜索
当需要查看文件内容时:
bash复制cat filename # 显示整个文件内容
less filename # 分页查看(支持搜索,按q退出)
head -n 5 file # 显示前5行
tail -n 5 file # 显示最后5行
tail -f logfile # 实时追踪日志文件变化
文件搜索神器find的基本用法:
bash复制find /path -name "*.txt" # 按文件名查找
find ~ -size +10M # 查找大于10MB的文件
find / -type d -name "log" # 查找名为log的目录
3. 用户与权限管理:安全操作的基石
3.1 用户和组管理
Linux是多用户系统,用户和组管理至关重要:
bash复制sudo adduser newuser # 添加新用户
sudo passwd username # 修改用户密码
sudo usermod -aG groupname username # 将用户添加到组
groups # 查看当前用户所属组
经验:生产环境中,永远不要使用root用户直接操作。应该用普通用户登录,必要时通过sudo提权。
3.2 文件权限详解
使用ls -l看到的权限字符串如-rwxr-xr--,分解来看:
- 第1位:文件类型(-普通文件,d目录,l链接等)
- 2-4位:所有者权限(rwx)
- 5-7位:组权限(r-x)
- 8-10位:其他用户权限(r--)
修改权限的两种方式:
bash复制chmod u+x script.sh # 给所有者添加执行权限
chmod 755 file # 数字方式设置权限(r=4,w=2,x=1)
chown user:group file # 修改文件所有者和组
3.3 sudo机制解析
sudo不是简单的"管理员权限",而是一个精细的权限委托系统。其配置文件在/etc/sudoers,建议使用visudo命令编辑:
bash复制# 允许用户执行特定命令
username ALL=(ALL) /usr/bin/apt update
# 允许组无需密码执行命令
%groupname ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
4. 网络相关操作:服务器管理的核心技能
4.1 网络配置与诊断
基础网络命令:
bash复制ifconfig # 查看网络接口信息(旧版)
ip addr # 新版网络配置查看
ping example.com # 测试网络连通性
netstat -tulnp # 查看网络连接和监听端口
ss -tulnp # netstat的现代替代品
traceroute google.com # 追踪网络路径
设置静态IP(以Ubuntu为例):
- 编辑网络配置文件:
bash复制sudo nano /etc/netplan/01-netcfg.yaml
- 添加配置(根据实际网络调整):
yaml复制network:
version: 2
ethernets:
ens33:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
- 应用配置:
bash复制sudo netplan apply
4.2 SSH远程管理
SSH是Linux服务器管理的瑞士军刀:
bash复制ssh username@hostname # 基本连接
ssh -p 2222 user@host # 指定端口
ssh -i ~/.ssh/key.pem user@host # 使用密钥认证
scp file.txt user@host:/path # 安全复制文件
配置SSH密钥认证更安全:
- 本地生成密钥对:
bash复制ssh-keygen -t rsa -b 4096
- 将公钥上传到服务器:
bash复制ssh-copy-id user@hostname
- 禁用密码登录(提升安全性):
编辑/etc/ssh/sshd_config:
config复制PasswordAuthentication no
PubkeyAuthentication yes
然后重启SSH服务:
bash复制sudo systemctl restart sshd
5. 系统监控与进程管理
5.1 系统状态查看
这些命令帮助了解系统运行状态:
bash复制top # 动态查看系统进程(类似任务管理器)
htop # top的增强版(需安装)
df -h # 查看磁盘空间使用情况
free -h # 查看内存使用情况
uptime # 查看系统运行时间和负载
5.2 进程管理基础
进程控制命令:
bash复制ps aux # 查看所有运行中的进程
kill -9 PID # 强制终止进程
killall processname # 终止所有同名进程
nice -n 10 command # 以低优先级运行命令
renice 15 -p PID # 调整运行中进程的优先级
后台任务管理:
bash复制command & # 在后台运行命令
jobs # 查看后台任务
fg %1 # 将任务1调到前台
bg %2 # 继续在后台运行任务2
nohup command & # 退出终端后继续运行
5.3 系统服务管理
现代Linux发行版使用systemd管理服务:
bash复制sudo systemctl start servicename # 启动服务
sudo systemctl stop servicename # 停止服务
sudo systemctl restart servicename # 重启服务
sudo systemctl status servicename # 查看服务状态
sudo systemctl enable servicename # 设置开机启动
journalctl -u nginx -f # 查看服务日志
6. 软件包管理:各发行版的差异
6.1 Debian/Ubuntu系(apt)
bash复制sudo apt update # 更新软件包列表
sudo apt upgrade # 升级所有可升级软件包
sudo apt install package # 安装软件包
sudo apt remove package # 卸载软件包(保留配置)
sudo apt purge package # 完全卸载(包括配置)
apt search keyword # 搜索软件包
apt show package # 显示软件包详细信息
6.2 RHEL/CentOS系(yum/dnf)
bash复制sudo yum install package # 安装软件包
sudo yum remove package # 卸载软件包
yum search keyword # 搜索软件包
sudo dnf upgrade # 升级所有软件包(新版本)
6.3 源码编译安装
当软件包不在仓库中时:
bash复制tar -xzvf package.tar.gz # 解压源码包
cd package
./configure # 配置编译选项
make # 编译
sudo make install # 安装
经验:编译安装的软件通常位于/usr/local目录下。卸载时需要执行
make uninstall(如果开发者提供了该选项),或者手动删除相关文件。
7. Shell脚本入门:自动化你的工作
7.1 基础脚本结构
一个简单的shell脚本示例:
bash复制#!/bin/bash
# 这是注释 - 脚本描述
echo "当前用户:$(whoami)"
echo "系统负载:$(uptime)"
# 变量使用
name="Linux"
echo "欢迎学习${name}系统!"
# 条件判断
if [ -d "/tmp" ]; then
echo "/tmp目录存在"
else
echo "目录不存在"
fi
# 循环示例
for i in {1..5}; do
echo "计数: $i"
done
7.2 实用脚本示例
备份脚本示例:
bash复制#!/bin/bash
# 简单备份脚本
BACKUP_DIR="/backups"
SOURCE_DIR="$HOME/documents"
DATE=$(date +%Y%m%d)
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR"
if [ $? -eq 0 ]; then
echo "备份成功完成:backup_$DATE.tar.gz"
else
echo "备份失败!" >&2
exit 1
fi
7.3 脚本调试技巧
调试shell脚本的方法:
bash复制bash -x script.sh # 打印每条执行的命令
set -x # 在脚本中开启调试
set +x # 关闭调试
常见问题排查:
- 确保脚本有执行权限:
chmod +x script.sh - 检查行尾符(Windows换行符会导致问题):
dos2unix script.sh - 变量引用使用双引号防止空格问题:
"$variable"
8. 文本处理三剑客:grep、sed、awk
8.1 grep文本搜索
grep是强大的文本搜索工具:
bash复制grep "pattern" file # 基本搜索
grep -i "pattern" file # 忽略大小写
grep -r "pattern" /path # 递归搜索目录
grep -v "pattern" file # 反向匹配(不包含)
grep -E "regex" file # 使用扩展正则表达式
grep -A 3 -B 2 "pattern" file # 显示匹配行前后内容
8.2 sed流编辑器
sed用于文本替换和转换:
bash复制sed 's/old/new/' file # 替换第一个匹配
sed 's/old/new/g' file # 全局替换
sed '/pattern/d' file # 删除匹配行
sed -i.bak 's/old/new/g' file # 直接修改文件(保留备份)
sed -n '5,10p' file # 打印5-10行
8.3 awk数据处理
awk是强大的文本处理语言:
bash复制awk '{print $1}' file # 打印每行第一个字段
awk -F: '{print $1,$6}' /etc/passwd # 指定分隔符为冒号
awk '$3 > 100 {print $0}' file # 过滤第三列大于100的行
awk 'BEGIN {FS=":"; OFS="\t"} {print $1,$6}' /etc/passwd # 设置输入输出分隔符
awk '{sum+=$1} END {print sum}' file # 计算第一列总和
实际案例:分析Nginx访问日志
bash复制awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
这个管道命令组合可以统计访问量前10的IP地址。
9. 定时任务管理:自动化重复工作
9.1 cron系统
cron是Linux的定时任务服务:
bash复制crontab -e # 编辑当前用户的cron任务
crontab -l # 列出当前用户的cron任务
crontab -r # 删除所有cron任务
cron时间格式:
code复制* * * * * command
| | | | |
| | | | +----- 星期几 (0 - 6) (星期天=0)
| | | +------- 月份 (1 - 12)
| | +--------- 日 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)
示例任务:
bash复制0 3 * * * /path/to/backup.sh # 每天凌晨3点执行备份
*/10 * * * * /path/to/check.sh # 每10分钟执行一次检查
0 0 1 * * /path/to/monthly_report # 每月1日执行
9.2 systemd定时器
现代Linux发行版也可以用systemd定时器:
- 创建.service文件定义要执行的任务
- 创建.timer文件定义执行时间
示例:
systemd复制# /etc/systemd/system/backup.timer
[Unit]
Description=Daily backup
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
启用定时器:
bash复制sudo systemctl enable --now backup.timer
10. 磁盘管理与文件系统
10.1 磁盘空间管理
常用磁盘命令:
bash复制df -h # 查看已挂载文件系统空间使用
du -sh /path # 查看目录占用空间大小
lsblk # 查看块设备信息
fdisk -l # 查看磁盘分区表
查找大文件:
bash复制find / -type f -size +100M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
10.2 挂载与卸载
手动挂载文件系统:
bash复制sudo mount /dev/sdb1 /mnt/data # 基本挂载
sudo umount /mnt/data # 卸载
配置开机自动挂载:
编辑/etc/fstab文件,添加类似如下行:
bash复制/dev/sdb1 /mnt/data ext4 defaults 0 2
重要:修改fstab前务必测试mount命令是否有效,错误的fstab配置可能导致系统无法启动。
10.3 LVM逻辑卷管理
LVM提供了灵活的磁盘管理方式:
bash复制pvcreate /dev/sdb1 # 创建物理卷
vgcreate vg_data /dev/sdb1 # 创建卷组
lvcreate -L 100G -n lv_data vg_data # 创建逻辑卷
mkfs.ext4 /dev/vg_data/lv_data # 格式化
mount /dev/vg_data/lv_data /mnt/data # 挂载
扩展逻辑卷空间:
bash复制lvextend -L +50G /dev/vg_data/lv_data # 扩展逻辑卷
resize2fs /dev/vg_data/lv_data # 调整文件系统大小
11. 日志分析:系统运维的关键技能
11.1 系统日志位置
关键日志文件:
/var/log/syslog:通用系统日志(Debian系)/var/log/messages:通用系统日志(RHEL系)/var/log/auth.log:认证相关日志/var/log/kern.log:内核日志/var/log/dmesg:启动时内核消息
查看日志的现代方式:
bash复制journalctl # 查看所有系统日志
journalctl -u nginx --since "1 hour ago" # 查看特定服务的日志
journalctl -p err -b # 查看本次启动的错误日志
11.2 日志轮转配置
Linux使用logrotate管理日志轮转:
配置文件位于/etc/logrotate.conf和/etc/logrotate.d/
示例配置(在/etc/logrotate.d/nginx):
config复制/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/usr/lib/nginx/modules/ngx_http_log_module.so
endscript
}
手动执行日志轮转:
bash复制logrotate -f /etc/logrotate.d/nginx
12. 性能调优基础
12.1 系统监控工具
bash复制vmstat 1 # 查看系统整体状态(CPU、内存、IO)
iostat -xz 1 # 查看磁盘IO状态
mpstat -P ALL 1 # 查看每个CPU核心的使用率
sar -n DEV 1 # 查看网络流量
dstat # 综合监控工具
12.2 常见性能问题排查
CPU瓶颈:
bash复制top # 查看CPU使用率高的进程
pidstat -u 1 # 查看进程的CPU使用详情
perf top # 查看函数级CPU使用(需安装perf)
内存问题:
bash复制free -h # 查看内存使用情况
vmstat 1 # 查看swap使用情况
pmap -x PID # 查看进程的内存映射
IO瓶颈:
bash复制iotop # 查看磁盘IO高的进程
iostat -xz 1 # 查看磁盘IOPS和吞吐
13. 安全加固基础
13.1 基础安全措施
bash复制sudo apt install fail2ban # 安装防暴力破解工具
sudo ufw enable # 启用防火墙
sudo ufw allow ssh # 只允许SSH访问
sudo apt install unattended-upgrades # 自动安全更新
13.2 SSH安全加固
编辑/etc/ssh/sshd_config:
config复制Port 2222 # 修改默认端口
PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 禁用密码认证
AllowUsers yourusername # 只允许特定用户登录
MaxAuthTries 3 # 限制尝试次数
然后重启SSH服务:
bash复制sudo systemctl restart sshd
重要:修改SSH端口前,确保新端口不会被防火墙阻挡,并保持现有连接不中断。
14. 容器技术入门
14.1 Docker基础
安装Docker:
bash复制sudo apt install docker.io
sudo systemctl enable --now docker
基本操作:
bash复制docker run -it ubuntu bash # 运行Ubuntu容器
docker ps # 查看运行中的容器
docker images # 查看本地镜像
docker build -t myimage . # 构建镜像
docker exec -it container_id bash # 进入运行中的容器
14.2 Docker Compose
安装:
bash复制sudo apt install docker-compose
示例docker-compose.yml:
yaml复制version: '3'
services:
web:
image: nginx:alpine
ports:
- "80:80"
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
启动服务:
bash复制docker-compose up -d
15. 版本控制入门
15.1 Git基础
bash复制git init # 初始化仓库
git add . # 添加所有文件到暂存区
git commit -m "message" # 提交更改
git status # 查看状态
git log # 查看提交历史
15.2 分支管理
bash复制git branch new-feature # 创建新分支
git checkout new-feature # 切换到分支
git merge new-feature # 合并分支到当前分支
git branch -d new-feature # 删除分支
15.3 远程仓库
bash复制git remote add origin https://github.com/user/repo.git
git push -u origin main # 首次推送
git pull # 拉取远程更改
git clone https://github.com/user/repo.git # 克隆仓库
16. 实用技巧与资源推荐
16.1 终端生产力技巧
命令历史搜索:
bash复制Ctrl+R # 搜索历史命令
!! # 重复上一条命令
!$ # 上一条命令的最后一个参数
别名设置(添加到~/.bashrc):
bash复制alias ll='ls -alF'
alias grep='grep --color=auto'
alias update='sudo apt update && sudo apt upgrade'
16.2 学习资源推荐
-
在线教程:
- Linux命令行基础:https://linuxjourney.com/
- Bash脚本教程:https://ryanstutorials.net/bash-scripting-tutorial/
-
书籍:
- 《Linux命令行与shell脚本编程大全》
- 《鸟哥的Linux私房菜》
-
社区:
- Linux中国:https://linux.cn/
- Stack Overflow的Linux板块
16.3 常见问题速查
忘记sudo密码:
bash复制sudo passwd username
恢复误删文件:
bash复制# ext3/ext4文件系统可尝试:
sudo apt install extundelete
extundelete /dev/sda1 --restore-file /path/to/file
查看命令位置和版本:
bash复制which command
command --version
