好的,各位同学,欢迎来到《零基础Linux快速上手》第三章节!

在前两章中,我们已经掌握了Linux的基础操作和核心工具。现在,我们要向"系统管理员"的方向迈进。本章将学习如何安装和管理软件管理系统磁盘和存储理解用户和权限的深层原理,以及实现自动化任务

这些技能将让你从一个普通用户成长为能够真正"驾驭"系统的Linux使用者。


实验十:软件包管理——使用APT管理软件

实验目标: 掌握Ubuntu下最强大的软件管理工具APT,学会查找、安装、更新和卸载软件包。

场景: 你需要安装一个开发工具(如Python3)、一个系统监控工具,并保持系统更新。

关键命令:

  • sudo apt update:更新软件包列表(从服务器获取最新信息)

  • sudo apt upgrade:升级所有可升级的软件包

  • sudo apt install <package>:安装软件包

  • sudo apt remove <package>:卸载软件包(保留配置文件)

  • sudo apt purge <package>:完全卸载软件包(包括配置文件)

  • apt search <keyword>:搜索软件包

  • apt show <package>:显示软件包详细信息

  • sudo apt autoremove:自动删除不再需要的依赖包

实验步骤与答案:

  1. 更新软件源列表

    sudo apt update

    解析: 这不会更新任何软件,只是让系统知道现在有哪些软件的最新版本可用。

  2. 升级已安装的软件包

    sudo apt upgrade

    解析: 这会实际下载并安装所有可用的更新。系统会列出将要升级的软件包,输入 y 确认。

  3. 搜索软件包 搜索与Python3相关的软件包。

    apt search python3
  4. 安装Python3

    sudo apt install python3

    验证: 安装完成后,输入 python3 --version 查看版本信息。

  5. 安装一个图形化系统监控工具

    sudo apt install htop

    验证: 安装完成后,输入 htop 运行,你会看到一个比 top 更友好的系统监控界面。

  6. 查看软件包信息

    apt show htop
  7. 卸载软件包(保留配置)

    sudo apt remove htop
  8. 完全清除软件包

    sudo apt purge htop
  9. 清理系统

    sudo apt autoremove

    解析: 这会删除那些因为其他软件依赖而自动安装,但现在不再被任何软件需要的"孤儿"包。


实验十一:磁盘存储管理——查看和使用磁盘空间

实验目标: 学会查看磁盘使用情况、挂载外部存储设备,以及查找大文件。

场景: 系统提示磁盘空间不足,你需要找出是哪些文件占用了大量空间,并学会挂载U盘。

关键命令:

  • df -h:查看磁盘空间使用情况(人类可读格式)

  • du -sh <directory>:查看目录总大小

  • du -h --max-depth=1:查看当前目录下一级子目录的大小

  • find <path> -size +100M:查找大于100M的文件

  • mount / umount:挂载和卸载文件系统

  • lsblk:列出所有块设备(磁盘和分区)

实验步骤与答案:

  1. 查看磁盘整体使用情况

    df -h

    解析: 注意观察 / 根分区的使用率,这是系统最重要的分区。

  2. 找出家目录下哪个文件夹最大

    cd ~
    du -h --max-depth=1 | sort -hr

    解析:

    • du -h --max-depth=1 显示一级子目录的大小

    • sort -hr 按人类可读的数字逆序排序(最大的在最上面)

  3. 在整个系统中查找大文件(需要sudo权限)

    sudo find / -type f -size +100M 2>/dev/null

    解析:

    • / 表示从根目录开始搜索

    • -type f 只搜索文件

    • -size +100M 大小超过100MB

    • 2>/dev/null 将错误信息(如权限不足)重定向到空设备,使输出更清晰

  4. 挂载U盘或外部存储

    • 插入U盘

    • 查看设备标识:

      lsblk

      解析: 你会看到类似 sdb1 的设备,这就是你的U盘。

    • 创建挂载点:

      sudo mkdir /mnt/myusb
    • 挂载设备:

      sudo mount /dev/sdb1 /mnt/myusb
    • 查看U盘内容:

      ls /mnt/myusb
  5. 卸载U盘

    sudo umount /mnt/myusb

    重要: 在拔出U盘前必须卸载!


实验十二:用户、组和权限深度解析

实验目标: 深入理解用户、组和权限的关系,学会管理用户和组,并理解特殊权限。

场景: 你需要为新的团队成员创建账户,并设置适当的文件共享权限。

关键命令:

  • sudo adduser <username>:创建新用户

  • sudo deluser <username>:删除用户

  • sudo usermod -aG <group> <username>:将用户添加到组

  • groups <username>:查看用户所属的组

  • id <username>:显示用户ID和组信息

  • chown:改变文件所有者

  • chgrp:改变文件所属组

实验步骤与答案:

  1. 创建新用户

    sudo adduser alice

    解析: 按照提示设置密码和用户信息。

  2. 创建共享组

    sudo addgroup project_team
  3. 将用户添加到组

    sudo usermod -aG project_team alice

    解析: -aG 选项表示"追加到组",如果不加 -a 会覆盖用户原有的组设置。

  4. 验证用户组信息

    groups alice
    id alice
  5. 创建共享目录并设置权限

    sudo mkdir /shared
    sudo chown root:project_team /shared
    sudo chmod 2775 /shared

    解析:

    • chown root:project_team:所有者设为root,所属组设为project_team

    • chmod 2775

      • 2:设置setgid位,在此目录下创建的文件会自动继承目录的组

      • 7:所有者有rwx权限

      • 7:所属组有rwx权限

      • 5:其他用户有r-x权限

  6. 测试共享目录

    • 切换到alice用户:

      sudo su - alice
    • 在共享目录创建文件:

      touch /shared/test_from_alice.txt
    • 查看文件权限:

      ls -l /shared/test_from_alice.txt

      观察: 文件的所属组自动变成了 project_team,这就是setgid位的作用。

  7. 退出alice用户

    exit

实验十三:计划任务与系统服务——自动化管理

实验目标: 学会使用cron设置定时任务,并管理系统的后台服务。

场景: 你需要设置每天自动备份重要文件,并学会管理Web服务器等系统服务。

关键命令:

  • crontab -e:编辑当前用户的计划任务

  • crontab -l:列出当前用户的计划任务

  • systemctl status <service>:查看服务状态

  • systemctl start/stop/restart <service>:启动/停止/重启服务

  • systemctl enable/disable <service>:设置服务开机自启/禁用

实验步骤与答案:

  1. 编辑计划任务

    crontab -e

    解析: 首次使用会让你选择编辑器,推荐选择 nano(比较简单)。

  2. 添加一个简单的定时任务 在打开的文件末尾添加:

    # 每天凌晨2点清理临时文件
    0 2 * * * rm -rf /tmp/*

    # 每分钟向日志文件写入当前时间(用于测试)
    * * * * * echo "Cron is working at $(date)" >> ~/cron_test.log

    cron时间格式:

    * * * * * 要执行的命令
    │ │ │ │ │
    │ │ │ │ └── 星期几 (0 - 6) (0表示周日)
    │ │ │ └──── 月份 (1 - 12)
    │ │ └────── 日 (1 - 31)
    │ └──────── 小时 (0 - 23)
    └────────── 分钟 (0 - 59)
  3. 查看计划任务

    crontab -l
  4. 等待一分钟,验证测试任务

    tail -f ~/cron_test.log

    解析: 你应该会看到每分钟新增一行时间记录。按 Ctrl+C 退出跟踪。

  5. 管理系统服务 查看Apache Web服务器状态(如果未安装,可以先 sudo apt install apache2):

    systemctl status apache2
  6. 停止和启动服务

    sudo systemctl stop apache2
    sudo systemctl start apache2
    sudo systemctl restart apache2 # 重启服务
  7. 设置服务开机自启

    sudo systemctl enable apache2
    sudo systemctl disable apache2 # 禁用开机自启

实验十四:日志分析——读懂系统的故事

实验目标: 学会查看和分析系统日志,用于故障排查和安全审计。

场景: 系统出现异常,你需要查看相关日志来诊断问题。

关键命令:

  • journalctl:查看systemd日志

  • tail -f /var/log/syslog:实时跟踪系统日志

  • grep:在日志中搜索关键信息

  • less:分页查看日志文件

实验步骤与答案:

  1. 查看最近的系统日志

    journalctl -e

    解析: -e 选项直接跳转到日志末尾。

  2. 查看指定服务的日志

    journalctl -u apache2
  3. 实时监控系统日志

    sudo tail -f /var/log/syslog

    解析: 打开另一个终端执行一些操作(如插入U盘),观察日志的变化。

  4. 在系统日志中搜索SSH相关记录

    grep ssh /var/log/syslog | tail -20

    解析: 查看最近20条SSH相关的日志记录。

  5. 查看认证日志

    sudo tail -f /var/log/auth.log

    解析: 这个日志记录了所有用户认证(登录、sudo等)相关信息。


本章总结

在第三章节中,你已经掌握了Linux系统管理的核心技能:

  1. 软件包管理:使用APT生态系统安装、更新和管理软件。

  2. 磁盘存储管理:监控磁盘使用、查找大文件、挂载外部设备。

  3. 用户与权限管理:深入理解用户、组和权限模型,实现安全的文件共享。

  4. 自动化任务:使用cron设置计划任务,使用systemctl管理系统服务。

  5. 日志分析:查看和分析系统日志,用于故障诊断。

这些技能让你能够真正地"管理"一个Linux系统,而不仅仅是"使用"它。

作业:

  1. 安装并配置nginx Web服务器,设置其开机自启。

  2. 创建一个新用户bob,并为其设置一个每天凌晨3点执行的备份任务。

  3. 找出系统中占用空间最大的前10个文件,并分析是否可以安全删除。

  4. 创建一个共享目录,使得project_team组的所有成员都能在其中读写文件,但这些文件对其他用户不可见。

下一章我们将探索网络配置、防火墙和更高级的系统调试技巧。继续保持学习的热情!

零基础Linux快速上手03的更多相关文章

  1. 【零基础】快速入门爬虫框架HtmlUnit

    迅速的HtmlUnit htmlunit是一款开源的web页面分析工具,理论上来说htmlunit应用于网页的自动化测试,但是相对来说更多人使用它来进行小型爬虫的快速开发.使用htmlunit进行爬虫 ...

  2. “零基础”如何快速掌握web前端核心技术?

    前端开发要学的知识内容涉及的会很宽泛,虽然说主要是HTML.CSS和JavaScript这些基础知识点,今天想强调一下,学前端开发除了要学这些基础知识外,学员还要在这之上进行延伸和深入的去学,而且互联 ...

  3. Java秘诀!零基础怎样快速学习Java?

    对于零基础想学Java的朋友,其实一开始最应该做的就是定好学习目标和端正学习态度,切记不要三天打鱼两天晒网! 首先你是零基础,现在急需把Java学好,在保证学习质量的同时,用最短的时间学好Java应该 ...

  4. 零基础Linux入门学习方法--如何做好笔记及长效知识复习记忆

    “工欲善其事必先利其器”. 此次学习的0基础教材为刘遄(Liu Chuán)老师的<Linux就该这么学>.学习目的是通过RHCE认证.有关RHCE认证介绍会在认识Linux及红帽认证中记 ...

  5. Linux快速上手

    1.Linux系统架构 内核(kernel) 内存管理(mm) Linux内存特性无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Lin ...

  6. php编程零基础如何快速入门。门头沟编程

    昨天遇到一个人,说知道thinktphp,不过几年前的事了. 我先跟他讲了下,xyhcms后台功能,各个版块,以及数据库都介绍了一下. 跟他说了一个功能现场实现,说了实现方法. 然后上机操作,发现他表 ...

  7. 零基础Linux入门之《Linux就该这么学》

    本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...

  8. 零基础如何快速学习好Python网络爬虫?

    Python网络爬虫上手很快,能够尽早入门,可是想精通确实是需求些时间,需求达到爬虫工程师的级别更是需求煞费苦心了,接下来共享的学习道路是针对小白或许学习Python网络爬虫不久的同伴们. 学习网络爬 ...

  9. C#零基础小白快速入门

    前言 本文写给想学C#的朋友,目的是以尽快的速度入门 C#好学吗? 对于这个问题,我以前的回答是:好学!但仔细想想,不是这么回事,对于新手来说,C#没有那么好学. 反而学Java还要容易一些,学Jav ...

  10. 【Net跨平台第一步】逆天带你零基础Linux入门【更新完毕】

    部分讲义:(视频已删,后期以文档形式发布)

随机推荐

  1. flink 1.11.2 学习笔记(2)-Source/Transform/Sink

    一.flink处理的主要过程 从上一节wordcount的示例可以看到,flink的处理过程分为下面3个步骤: 1.1 .添加数据源addSource,这里的数据源可以是文件,网络数据流,MQ,Mys ...

  2. c#农历开源库

    https://6tail.cn/calendar/api.html 非常牛逼 Unity将当前时间转为天干地支 using System; using Lunar; using UnityEngin ...

  3. Atcoder Beginner Contest 271

    前言 一场掉分的 ABC /kk 在花了 \(10\) 分钟看完前 \(4\) 题后,选择了赛场上大部分人使用的:先开 D,再按顺序做 A.B.C.(打题的时候才发现应该先开 C 的 QwQ) 但却因 ...

  4. git-下载

    1.从https://gitforwindows.org/下载最新的或者这里https://git-scm.com/

  5. 洛谷 P6478 [NOI Online #2 提高组] 游戏 题解

    前言: 这道题涉及到了很多有意思的部分,所以我会较为详细的写一篇题解. 题意: 给定一棵点数为 \(n=2m\) 的有根树,每个点有 \(0,1\) 两种边权. 现在要依次为每一个权为 \(0\) 的 ...

  6. 最新版uni-app+vue3+uv-ui跨三端仿微信app聊天应用【h5+小程序+app端】

    最新研发Uniapp+Vue3+Pinia2+uvui实战跨端仿微信App界面聊天程序. uni-vue3-wechat:基于uniapp+vue3从0-1实战搭建仿微信app界面聊天模板.包含聊天. ...

  7. 伙伴匹配系统(移动端 H5 网站(APP 风格)基于Spring Boot 后端 + Vue3 - 03

    伙伴匹配系统(移动端 H5 网站(APP 风格)基于Spring Boot 后端 + Vue3 - 03 项目地址: Github:https://github.com/China-Rainbow-s ...

  8. RPC的三大问题:跨语言、跨平台通信的终极解决方案是如何炼成的?

    服务间通信的效率与可靠性是系统性能和稳定性的关键.远程过程调用(RPC)作为跨进程.跨机器交互的核心机制,其传输协议的设计至关重要.一个优秀的RPC传输协议需要应对三大挑战:1)跨语言.跨平台的数据表 ...

  9. Qt中创建控制台程序(cmd窗口)

    #include <QCoreApplication> #include <iostream> int main(int argc, char *argv[]) { QCore ...

  10. transformers库的使用【一】——pipeline的简单使用

    transformers库的使用使用pipeline API来快速使用一些预训练模型 使用预训练模型最简单的方法就是使用pipeline(),transformers提供了一些任务: 1.情感分析(S ...