1. Linux系统概述
Linux作为一款开源操作系统内核,自1991年由Linus Torvalds发布以来,已经发展成为服务器、嵌入式设备和开发环境的主流选择。与Windows等商业系统不同,Linux采用GPL许可证,允许用户自由使用、修改和分发。其核心优势在于稳定性、安全性和高度可定制性——你可以像搭积木一样组合各种发行版(如Ubuntu、CentOS)和桌面环境(如GNOME、KDE),构建完全符合个人需求的工作环境。
我在运维岗位八年,见证了无数新手从"黑屏恐惧症"到熟练使用命令行的蜕变过程。记住:终端(Terminal)不是洪水猛兽,而是提升效率的利器。当图形界面卡死时,一个简单的kill命令就能解救系统;当需要批量处理文件时,管道符|的组合操作比鼠标点击快十倍。接下来我们就从最基础的"生存技能"开始,逐步掌握这个强大工具。
2. 终端操作基础
2.1 终端启动与用户切换
在Ubuntu等桌面发行版中,快捷键Ctrl+Alt+T能快速调出终端窗口。你会看到类似user@host:~$的提示符,其中~代表当前用户的家目录(通常是/home/username)。如果想临时获取管理员权限,使用sudo前缀执行命令(如sudo apt update),系统会要求输入当前用户密码。
重要提示:
sudo是双刃剑,错误使用可能损坏系统。建议日常操作使用普通账户,仅在必要时提权。
若需要完全切换到root用户,可执行su -命令(需提前设置root密码)。不过现代发行版通常禁用root直接登录,这是出于安全考虑的好习惯。观察提示符的变化:普通用户以$结尾,root用户以#结尾——这是防止误操作的最后防线。
2.2 命令结构解析
Linux命令通常遵循命令 [选项] [参数]的结构:
ls -l /home:ls是命令,-l是长格式显示选项,/home是查看的目录参数- 选项分为短格式(单字母,如
-a)和长格式(单词,如--all),多数命令支持--help查看用法
特殊符号含义:
./表示当前目录(如执行脚本./install.sh)../表示上级目录*是通配符(rm *.txt删除所有txt文件)>重定向输出(echo "hello" > file.txt)|管道符(ps aux | grep nginx)
3. 文件系统操作
3.1 目录导航与管理
pwd:打印当前工作目录(Print Working Directory)cd:切换目录(Change Directory)cd ~快速回家目录cd -返回上次所在目录cd ..进入上级目录
ls:列出目录内容(List)-a显示隐藏文件(以.开头)-l长格式显示权限、大小等信息-h人类可读的文件大小(如KB/MB)- 组合使用:
ls -lah ~
创建与删除:
mkdir project创建目录mkdir -p dir1/dir2递归创建多级目录rmdir empty_dir删除空目录rm -r dir递归删除非空目录(危险!)
3.2 文件操作技巧
查看文件:
cat file.txt:快速查看小文件less file.log:分页查看大文件(空格翻页,q退出)head -n 10 access.log:查看前10行tail -f error.log:实时追踪日志更新
文件管理:
cp file.txt backup/:复制文件mv old.txt new.txt:重命名或移动文件touch newfile:创建空文件或更新时间戳rm -i *.tmp:交互式删除(每次询问确认)
血泪教训:永远不要执行
rm -rf /!这是递归强制删除根目录的命令。建议在~/.bashrc添加alias rm='rm -i'设置默认交互模式。
4. 系统信息查询
4.1 硬件与资源监控
uname -a:查看内核版本和系统架构free -h:显示内存使用情况(-h自动换算单位)df -h:磁盘空间统计(重点关注/和/home)top:动态进程监控(按q退出,M按内存排序)- 更现代的替代品:
htop(需额外安装)
- 更现代的替代品:
4.2 进程管理命令
ps aux:查看所有运行中的进程- 配合
grep过滤:ps aux | grep nginx
- 配合
kill -9 1234:强制终止PID为1234的进程- 先尝试
kill 1234发送正常终止信号
- 先尝试
jobs:查看后台任务fg %1将编号1的任务调到前台Ctrl+Z暂停当前任务,bg将其放入后台
5. 网络相关指令
5.1 连接检测工具
ping google.com:测试网络连通性-c 4限制发送4个包后停止
traceroute example.com:追踪数据包路径curl -I https://example.com:获取HTTP头信息- 常用选项:
-v显示详细过程,-o保存到文件
- 常用选项:
5.2 网络配置查看
ifconfig或ip addr:查看IP地址(现代系统推荐ip命令)netstat -tulnp:查看监听中的端口与服务-tTCP端口,-uUDP端口,-l监听状态
ss -plnt:更快速的socket统计工具
6. 权限管理精要
6.1 权限解读与修改
使用ls -l看到的权限字符串如-rwxr-xr--:
- 第1位:
-普通文件,d目录,l链接 - 后9位分三组:所有者(u)/所属组(g)/其他人(o)的
r读w写x执行权限 - 数字表示法:
r=4,w=2,x=1(如chmod 755 file)
关键命令:
chmod u+x script.sh:给所有者添加执行权限chown user:group file:修改文件所有者和组sudo visudo:安全编辑sudoers文件
6.2 特殊权限说明
chmod +s file:设置SUID,执行时临时获取所有者权限chmod +t dir:设置粘滞位,仅允许所有者删除目录内文件umask 022:控制新建文件的默认权限(777-022=755)
7. 软件包管理实践
7.1 APT/DNF/YUM的使用
Debian/Ubuntu系(APT):
bash复制sudo apt update # 更新软件源列表
sudo apt install nginx # 安装软件
sudo apt remove --purge nginx # 完全删除(含配置)
sudo apt upgrade # 升级所有已安装包
RHEL/CentOS(YUM/DNF):
bash复制sudo yum install httpd # 传统YUM
sudo dnf install httpd # 新一代DNF
sudo yum groupinstall "Development Tools" # 安装软件组
7.2 源码编译安装
通用三部曲:
bash复制tar -xzf package.tar.gz # 解压
cd package
./configure --prefix=/opt # 检测环境并生成Makefile
make -j4 # 编译(4线程并行)
sudo make install # 安装到系统
编译问题排查:查看
config.log和make的错误输出,通常需要安装gcc、make和-devel开发包
8. Shell进阶技巧
8.1 环境变量管理
echo $PATH:查看环境变量export MY_VAR="value":临时设置变量- 永久生效:添加到
~/.bashrc(用户级)或/etc/environment(系统级) source ~/.bashrc:重新加载配置
8.2 实用快捷操作
Ctrl+R:反向搜索历史命令!!:重复上条命令(常用于sudo !!)!$:引用上条命令的最后一个参数alias ll='ls -lah':创建常用命令的别名history | grep apt:查找包含apt的历史命令
9. 文本处理三剑客
9.1 grep文本搜索
grep "error" /var/log/syslog:查找包含error的行-i忽略大小写,-v反向匹配,-n显示行号-r递归目录搜索:grep -r "TODO" ./src
9.2 sed流编辑器
sed 's/foo/bar/g' file.txt:替换所有foo为bar-i.bak原地编辑并备份原文件- 删除空行:
sed '/^$/d' input.txt
9.3 awk数据处理
awk '{print $1}' access.log:打印每行第一个字段- 统计IP访问次数:
bash复制awk '{ip[$1]++} END {for(i in ip) print i,ip[i]}' access.log | sort -nrk2
10. 系统服务管理
10.1 systemd基础命令
sudo systemctl start nginx:启动服务sudo systemctl enable nginx:设置开机自启journalctl -u nginx -f:查看服务日志(-f实时追踪)sudo systemctl reboot:重启系统(比shutdown -r now更现代)
10.2 定时任务配置
crontab -e:编辑当前用户的定时任务- 基本格式:
code复制* * * * * command
| | | | |
| | | | +----- 星期几 (0 - 6)
| | | +------- 月份 (1 - 12)
| | +--------- 日 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)
- 示例:每天3点备份数据库
0 3 * * * /home/user/backup.sh
11. 安全加固建议
11.1 SSH安全配置
编辑/etc/ssh/sshd_config:
ini复制Port 2222 # 修改默认端口
PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 强制使用密钥认证
AllowUsers yourname # 只允许特定用户
重启服务:sudo systemctl restart sshd
11.2 防火墙设置
UFW简易防火墙:
bash复制sudo ufw allow 2222/tcp # 放行SSH新端口
sudo ufw enable # 启用防火墙
sudo ufw status numbered # 查看规则
12. 故障排查思路
12.1 日志分析要点
关键日志文件位置:
/var/log/syslog:系统主日志(Debian系)/var/log/messages:通用系统日志(RHEL系)/var/log/nginx/error.log:服务特定日志
使用grep过滤关键信息:
bash复制grep -E "error|fail|critical" /var/log/syslog
12.2 性能瓶颈诊断
vmstat 1:查看CPU、内存、IO整体状态iostat -x 1:磁盘IO详细统计dmesg | grep oom:检查内存溢出记录strace -p 1234:追踪进程系统调用
13. 学习资源推荐
13.1 内置帮助系统
man ls:查看命令手册(按q退出)info coreutils:GNU项目更详细的文档whatis command:显示命令的简要说明command --help:大多数命令支持的快速帮助
13.2 在线资源
- Linux Documentation Project (tldp.org)
- Arch Wiki (wiki.archlinux.org):即使不用Arch也值得参考
- Stack Overflow:具体问题解决方案
- 各发行版官方文档(如Ubuntu、CentOS官网)
14. 个人经验分享
八年运维生涯让我总结出几条黄金法则:
- 任何破坏性操作前先备份:
cp file.txt{,.bak} - 复杂命令先
echo预览效果:echo rm *.log - 使用
tmux或screen保护远程会话,防止网络中断导致任务终止 - 脚本开头写
set -euxo pipefail,让错误无处遁形 - 定期清理
/tmp和/var/log,但别用rm -rf *
最后送给初学者的话:Linux就像乐器,初期练习可能枯燥,但当你流畅地用管道组合多个命令完成复杂任务时,那种效率提升的快感会让你爱上这个强大的工具。从今天开始,试着用终端完成所有文件操作吧!