1. Linux操作系统概述Linux是一种开源的类Unix操作系统内核由林纳斯·托瓦兹在1991年首次发布。作为自由和开放源代码软件的最著名代表Linux内核被广泛应用于服务器、超级计算机、移动设备和嵌入式系统等领域。提示Linux严格来说指的是内核而我们常说的Linux系统通常是包含内核和各种GNU工具的整体发行版。Linux系统的核心优势在于其开源特性、稳定性和安全性。与商业操作系统不同Linux允许用户自由查看、修改和分发源代码这为系统定制和问题排查提供了极大便利。在企业级应用中Linux服务器因其出色的稳定性和安全性而备受青睐据统计全球超过90%的云基础设施和75%的网页服务器都运行在Linux系统上。2. Linux基础环境搭建2.1 选择适合的Linux发行版对于初学者来说选择合适的Linux发行版至关重要。主流发行版可分为以下几类新手友好型Ubuntu拥有庞大的社区支持和丰富的软件库Linux Mint基于Ubuntu界面更接近Windowselementary OS以美观著称适合从macOS转来的用户服务器专用型CentOS已转向CentOS StreamDebianUbuntu Server高级用户型Arch LinuxGentooSlackware注意对于完全的新手建议从Ubuntu或Linux Mint开始它们的硬件兼容性好安装过程简单且有大量中文文档支持。2.2 安装Linux系统Linux系统的安装主要有以下几种方式物理机直接安装制作启动U盘推荐使用Rufus或BalenaEtcher工具调整BIOS/UEFI设置按照图形化向导完成安装虚拟机安装使用VirtualBox或VMware Workstation分配适当的资源至少2GB内存20GB存储空间启用虚拟化技术支持Windows子系统(WSL)适用于Windows 10/11用户通过Microsoft Store安装适合开发环境但不适合学习完整Linux系统安装过程中的关键注意事项确保网络连接稳定对于双系统安装注意分区操作避免误删原有系统记录安装过程中设置的用户名和密码建议选择英文环境安装避免后续开发中出现编码问题3. Linux基础命令与文件系统3.1 Linux文件系统结构Linux采用单一的树状文件系统结构所有设备、分区和网络资源都挂载在这个结构下。主要目录及其用途如下目录用途/根目录所有目录的起点/bin基本命令二进制文件/etc系统配置文件/home用户主目录/var可变数据日志、邮件等/usr用户程序和数据/tmp临时文件/dev设备文件/proc进程和内核信息3.2 基础命令操作掌握以下基础命令是使用Linux的第一步文件操作ls -lha # 详细列出目录内容 cp -r dir1 dir2 # 递归复制目录 mv file1 file2 # 移动或重命名文件 rm -i file # 交互式删除文件目录操作pwd # 显示当前工作目录 mkdir -p dir1/dir2 # 创建多级目录 cd ~ # 返回用户主目录文件查看cat file # 显示文件内容 less file # 分页查看文件 head -n 5 file # 显示文件前5行 tail -f logfile # 实时查看日志文件权限管理chmod 755 script.sh # 设置文件权限 chown user:group file # 更改文件所有者实操技巧使用man 命令名可以查看任何命令的详细手册例如man ls会显示ls命令的所有选项和用法。4. Linux系统管理基础4.1 用户和组管理Linux是多用户系统良好的用户管理习惯至关重要用户管理命令sudo adduser newuser # 添加新用户 sudo passwd username # 修改用户密码 sudo usermod -aG groupname username # 将用户添加到附加组 sudo userdel -r username # 删除用户及其主目录权限管理理解rwx权限读、写、执行掌握数字表示法755rwxr-xr-x特殊权限SUID、SGID、Sticky bitsudo配置通过/etc/sudoers文件配置使用visudo命令安全编辑示例username ALL(ALL:ALL) ALL4.2 进程管理Linux提供了强大的进程管理工具基本命令ps aux # 查看所有运行中的进程 top # 动态查看系统进程 htop # 增强版的top需安装 kill -9 PID # 强制终止进程服务管理systemd系统systemctl start service # 启动服务 systemctl stop service # 停止服务 systemctl enable service # 设置开机启动 systemctl status service # 查看服务状态后台任务command # 在后台运行命令 jobs # 查看后台任务 fg %1 # 将任务1调回前台4.3 软件包管理不同发行版使用不同的包管理系统Debian/Ubuntu系APTsudo apt update # 更新软件包列表 sudo apt upgrade # 升级所有已安装软件包 sudo apt install package # 安装软件包 sudo apt remove package # 移除软件包RHEL/CentOS系YUM/DNFsudo yum update # 更新系统 sudo yum install package # 安装软件包 sudo yum remove package # 移除软件包Arch Linux系Pacmansudo pacman -Syu # 同步并更新系统 sudo pacman -S package # 安装软件包 sudo pacman -R package # 移除软件包常见问题如果遇到依赖问题可以尝试sudo apt --fix-broken installAPT或sudo yum autoremoveYUM来解决。5. Linux网络配置与远程连接5.1 基础网络配置查看网络信息ip addr show # 查看IP地址 ip route # 查看路由表 ping example.com # 测试网络连通性网络配置工具nmtui文本界面网络配置工具nmcli命令行网络管理工具直接编辑/etc/network/interfacesDebian系DNS配置修改/etc/resolv.conf注意可能被覆盖永久配置在/etc/systemd/resolved.conf或网络管理工具中5.2 SSH远程连接SSH是管理Linux服务器的标准协议基本用法ssh usernamehostname # 连接远程主机 ssh -p 2222 userhost # 指定非标准端口密钥认证更安全的方式ssh-keygen -t rsa -b 4096 # 生成密钥对 ssh-copy-id userhost # 将公钥复制到远程主机SSH配置优化修改/etc/ssh/sshd_config提高安全性禁用root登录使用密钥认证替代密码更改默认端口5.3 防火墙管理Linux系统通常使用iptables或firewalld作为防火墙iptables基础sudo iptables -L # 列出当前规则 sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSHfirewalld更易用sudo firewall-cmd --permanent --add-servicehttp # 永久允许HTTP sudo firewall-cmd --reload # 重载配置UFWUbuntu简单防火墙sudo ufw allow 22/tcp # 允许SSH sudo ufw enable # 启用防火墙6. Linux日常使用技巧6.1 提高效率的技巧Shell快捷键CtrlC终止当前命令CtrlZ暂停当前命令可用fg恢复CtrlD结束输入或退出会话CtrlR反向搜索命令历史命令组合command1 command2 # command1成功才执行command2 command1 || command2 # command1失败才执行command2 command1 | command2 # 管道将command1输出作为command2输入实用小工具tree以树状图列出目录ncdu交互式磁盘使用分析器tmux或screen终端复用器6.2 常见问题排查磁盘空间不足df -h # 查看磁盘使用情况 du -sh * # 查看当前目录各文件/目录大小 journalctl --vacuum-size200M # 清理journal日志系统性能分析free -h # 查看内存使用 vmstat 1 # 查看系统整体状态 iostat -x 1 # 查看磁盘I/O服务启动失败sudo systemctl status service # 查看服务状态 journalctl -u service -n 50 # 查看服务日志6.3 学习资源推荐在线文档Linux man pagesman commandTLDPThe Linux Documentation ProjectArch Wiki适用于所有发行版的高质量文档书籍推荐《鸟哥的Linux私房菜》《Linux命令行与shell脚本编程大全》《UNIX环境高级编程》练习平台OverTheWire Bandit命令行游戏Linux Journey交互式学习网站自己搭建虚拟机实验环境个人经验学习Linux最好的方法就是实际使用它。可以尝试将日常使用的电脑换成Linux系统或者在虚拟机中搭建一个完整的LAMP开发环境。遇到问题时学会阅读错误信息和查阅文档比记住所有命令更重要。