ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Linux终端操作与系统管理完全指南

Linux终端操作与系统管理完全指南 1. Linux系统环境概述第一次接触Linux终端时那个闪烁的光标和漆黑的界面让我手足无措。但当我真正开始理解这个环境后才发现它远比图形界面强大得多。Linux系统环境主要由内核、shell和用户程序组成终端是我们与系统交互的主要入口。与Windows不同Linux的一切操作都可以通过命令完成这种设计理念让系统更加高效和灵活。在典型的Linux发行版中你会遇到几种不同的终端模拟器GNOME Terminal、Konsole、xterm等。它们本质上都是图形界面下的命令行窗口提供对shell的访问。我更喜欢使用支持多标签和分屏的Terminator它能极大提升工作效率。对于远程连接SSH是更专业的选择它让我们可以安全地操作远端的Linux服务器。提示新手常犯的错误是试图记忆所有命令。实际上掌握命令的使用逻辑比死记硬背更重要。Linux命令大多遵循命令 [选项] [参数]的基本结构理解这个模式后学习效率会大幅提升。2. 文件系统与目录操作2.1 Linux目录结构解析Linux的文件系统采用树形结构与Windows的盘符划分截然不同。最顶层的根目录(/)包含了一系列标准子目录每个都有特定用途/bin存放系统基本命令二进制文件/etc系统配置文件存放位置/home普通用户的主目录/var经常变化的文件如日志/usr用户程序和数据我刚开始使用时经常混淆/usr/bin和/bin的区别。实际上/bin包含系统启动和修复必需的命令而/usr/bin则是用户日常使用的应用程序。这种设计体现了Linux一切皆文件的哲学甚至连硬件设备也以文件形式存在于/dev目录下。2.2 核心目录操作命令掌握目录操作是Linux使用的基础。以下是几个最常用的命令及其实际应用场景pwdPrint Working Directory显示当前所在目录的完整路径。在复杂的目录结构中这个命令能帮你快速定位。$ pwd /home/username/projectscdChange Directory切换目录。支持绝对路径和相对路径还有一些特殊符号cd ~返回用户主目录cd ..返回上级目录cd -返回上一个工作目录lsList列出目录内容。最常用的选项组合是-lha-l长格式显示-h人类可读的文件大小-a显示隐藏文件以.开头的文件$ ls -lha /etc total 1.2M drwxr-xr-x 135 root root 12K Jun 15 09:23 . drwxr-xr-x 24 root root 4.0K Jun 10 14:18 .. -rw-r--r-- 1 root root 16K May 20 11:34 aliases -rw-r----- 1 root shadow 1.1K Jun 1 10:12 shadowmkdirMake Directory创建新目录。使用-p选项可以创建多级目录$ mkdir -p project/{src,doc,test}这个命令会创建一个project目录并在其中创建src、doc和test三个子目录。大括号扩展是bash的一个强大特性可以节省大量重复输入。3. 文件操作与管理3.1 基本文件操作命令文件是Linux系统中最重要的资源熟练操作文件是系统管理的基础。以下是几个核心命令cpCopy复制文件或目录。复制目录时需要加上-r选项递归复制$ cp file1.txt file2.txt # 复制文件 $ cp -r dir1 dir2 # 复制目录mvMove移动或重命名文件。Linux中没有专门的rename命令mv承担了这个功能$ mv oldname.txt newname.txt # 重命名 $ mv file.txt /tmp/ # 移动文件rmRemove删除文件。删除目录需要-r选项-f选项可以强制删除不提示$ rm file.txt # 删除文件 $ rm -rf directory/ # 强制递归删除目录警告rm -rf命令极其危险特别是以root用户执行时。我曾不小心在根目录下执行过这个命令差点酿成大祸。建议新手先使用-i选项交互模式练习。3.2 文件查看与编辑查看文件内容有多种方式根据需求选择合适的方法catConcatenate快速查看小文件内容$ cat /etc/hostsless分页查看大文件支持搜索和翻页。比more命令更强大$ less /var/log/sysloghead/tail查看文件开头或结尾部分。tail的-f选项特别有用可以实时查看日志文件变化$ tail -f /var/log/nginx/access.logvim强大的文本编辑器。学习曲线陡峭但值得投入时间掌握。基本操作i进入插入模式ESC返回命令模式:wq保存并退出:q!不保存强制退出4. 网络配置与系统信息4.1 网络配置命令ifconfig曾经是查看网络配置的标准命令但在现代Linux发行版中逐渐被ip命令取代$ ip addr show # 显示网络接口信息 $ ip route # 显示路由表不过很多系统仍然保留了ifconfig它更直观易用$ ifconfig eth0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500 inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::20c:29ff:fea4:8b1c prefixlen 64 scopeid 0x20link ether 00:0c:29:a4:8b:1c txqueuelen 1000 (Ethernet) RX packets 123456 bytes 123456789 (117.6 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 98765 bytes 9876543 (9.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ping命令用于测试网络连通性是排查网络问题的第一工具$ ping -c 4 google.com # 发送4个ping包4.2 系统信息查询了解系统状态是管理Linux的基础。以下命令能快速获取系统信息uname显示系统基本信息$ uname -a Linux myserver 5.4.0-77-generic #86-Ubuntu SMP Thu Jun 17 02:35:03 UTC 2021 x86_64 x86_64 x86_64 GNU/LinuxdfDisk Free查看磁盘空间使用情况。加上-h选项更易读$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 20G 15G 4.3G 78% / tmpfs 1.9G 0 1.9G 0% /dev/shmfree查看内存使用情况。同样建议使用-h选项$ free -h total used free shared buff/cache available Mem: 3.9G 1.2G 1.1G 123M 1.5G 2.3G Swap: 2.0G 512M 1.5Gtop/htop实时监控系统进程和资源使用情况。htop是top的增强版界面更友好$ htop5. 权限管理与用户操作5.1 文件权限详解Linux的权限系统是其安全模型的核心。每个文件都有三组权限所有者(owner)、所属组(group)和其他人(other)。权限分为读(r)、写(w)和执行(x)。使用ls -l可以看到详细的权限信息$ ls -l important.txt -rw-r--r-- 1 user group 1024 Jun 15 10:00 important.txt这个输出表示文件类型-表示普通文件所有者权限rw-可读可写组权限r--只读其他人权限r--只读链接数1所有者user所属组group文件大小1024字节最后修改时间5.2 修改权限与所有权chmod命令用于修改文件权限。有两种表示方法数字表示法更简洁r4, w2, x1例如chmod 755 file表示所有者7 (421) → rwx组5 (41) → r-x其他人5 → r-x$ chmod 755 script.sh符号表示法更直观uuser, ggroup, oothers, aall添加权限, -移除权限例如chmod ux file给所有者添加执行权限$ chmod ux,g-w,or file.txtchown命令用于修改文件所有者和所属组$ chown user:group file.txt经验分享修改权限时最容易犯的错误是过度放宽权限。我曾见过有人用chmod 777解决所有权限问题这是非常危险的做法。正确的做法是精确设置最小必要权限。6. 进程管理与系统监控6.1 进程基本操作Linux是多任务系统可以同时运行多个进程。以下是进程管理的基本命令psProcess Status查看当前进程。常用选项组合aux$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 169316 13056 ? Ss Jun10 0:15 /sbin/init user 1234 0.5 2.1 1023456 87654 pts/0 Sl 10:00 0:05 /usr/bin/python输出字段说明USER进程所有者PID进程ID%CPU/%MEMCPU和内存占用率VSZ/RSS虚拟/实际内存使用量TTY关联的终端STAT进程状态START/TIME启动时间和累计CPU时间COMMAND命令名称kill终止进程。先使用ps找到PID然后用kill发送信号$ kill -9 1234 # 强制终止PID为1234的进程常见信号1 (HUP)重新加载配置9 (KILL)强制终止15 (TERM)优雅终止默认6.2 系统监控工具除了前面提到的top/htop还有一些强大的监控工具vmstat查看系统整体性能指标$ vmstat 1 # 每秒刷新一次 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 123456 789012 3456789 0 0 12 34 567 890 10 5 85 0 0iostat监控磁盘I/O性能$ iostat -x 1 Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 5.12 3.45 256.00 172.50 0.12 0.34 2.34 9.01 1.23 2.34 0.12 50.00 50.00 0.98 0.84netstat/ss查看网络连接情况。ss是netstat的现代替代品$ ss -tulnp # 查看所有监听端口7. 实用技巧与高级命令7.1 命令行效率提升命令历史history查看命令历史!123执行历史记录中第123条命令CtrlR反向搜索历史命令命令别名在~/.bashrc中添加alias可以简化常用命令alias llls -alF alias grepgrep --colorauto重定向与管道输出重定向覆盖输出重定向追加|管道将一个命令的输出作为另一个命令的输入$ grep error /var/log/syslog errors.txt $ dmesg | less7.2 查找与文本处理find强大的文件查找工具$ find /home -name *.txt -mtime -7 # 查找/home下7天内修改过的txt文件grep文本搜索工具。常用选项-i忽略大小写-r递归搜索-v反向匹配-A3 -B2显示匹配行前后内容$ grep -ri connection refused /var/log/awk强大的文本处理工具。基本用法$ ps aux | awk {print $1, $4} | sort -k2 -nr | head # 显示内存占用最高的进程sed流编辑器适合批量替换文本$ sed -i s/old/new/g file.txt # 替换文件中所有old为new8. 常见问题排查8.1 磁盘空间问题当系统提示磁盘空间不足时可以按照以下步骤排查使用df确认哪个分区空间不足使用du找出大文件$ du -h --max-depth1 / | sort -h检查日志文件是否过大$ ls -lh /var/log/ $ journalctl --disk-usage清理旧的内核和缓存$ sudo apt autoremove # Debian/Ubuntu $ sudo yum autoremove # CentOS/RHEL $ sudo rm -rf /var/cache/apt/archives/*8.2 网络连接问题网络不通时的排查流程检查本地网络接口状态$ ip addr show $ ip route测试基本连通性$ ping 8.8.8.8 $ ping google.com检查DNS解析$ nslookup google.com $ dig google.com检查端口连通性$ telnet example.com 80 $ nc -zv example.com 443查看防火墙规则$ sudo iptables -L -n $ sudo ufw status # Ubuntu防火墙8.3 性能问题排查系统变慢时的诊断方法使用top/htop查看CPU和内存使用情况检查磁盘I/O$ iostat -x 1 $ iotop检查内存使用细节$ free -h $ cat /proc/meminfo检查网络流量$ iftop $ nethogs分析系统日志$ dmesg | tail $ journalctl -xe
返回列表