当前位置: 首页 > news >正文

Linux 学习的六个过程

Linux 上手难,学习曲线陡峭,所以它的学习过程更像一个爬坡模式。这些坡看起来都很陡,但是一旦爬上一阶,就会一马平川。

1、抛弃旧的思维习惯,熟练使用 Linux 命令行

在 Linux 中,无论我们做什么事情,都会有相应的命令工具。虽然这些命令一般会在 bin 或者 sbin 目录下面,但是这些命令的数量太多了。如果你事先不知道该用哪个命令,很难通过枚举的方式找到。因此,在这样没有统一入口的情况下,就需要你对最基本的命令有所掌握。

一旦找到某个命令行工具,替代输入框的是各种各样的启动参数。这些参数怎么填,一般可以通过 -h 查看 help,挨个儿看过去,就能找到相应的配置项;还可以通过 man 命令,查看文档。

2、通过系统调用或者 glibc,学会自己进行程序设计

用代码操作 Linux,可以直接使用 Linux 系统调用,也可以使用 glibc 的库。

Linux 的系统调用非常多,而且每个函数都非常复杂,传入的参数、返回值、调用的方式等等都有很多讲究。这里面需要掌握很多 Linux 操作系统的原理,否则你会无法理解为什么应该这样调用。

你会发现,你平时用的一个简单的命令行,却需要 N 个系统调用组合才能完成。其中每个系统调用都要进行深入地学习、读文档、做实验。

3、了解 Linux 内核机制,反复研习重点突破

进一步了解内核的原理,有助于你更好地使用命令行和进行程序设计,能让你的运维和开发水平上升一个层次,但是不建议你直接看代码,因为 Linux 代码量太大,很容易迷失,找不到头绪。最好的办法是,先了解一下 Linux 内核机制,知道基本的原理和流程就可以了。

一旦学起来的时候,你会发现,Linux 内核机制也非常复杂,而且其中相互关联。比如说,进程运行要分配内存,内存映射涉及文件的关联,文件的读写需要经过块设备,从文件中加载代码才能运行起来进程。这些知识点要反复对照,才能理清。

4、阅读 Linux 内核代码,聚焦核心逻辑和场景

开源软件代码纷繁复杂,一开始看肯定晕,找不着北。这里有一个诀窍,就是一开始阅读代码不要纠结一城一池的得失,不要每一行都一定要搞清楚它是干嘛的,而要聚焦于核心逻辑和使用场景。

5、实验定制化 Linux 组件,已经没人能阻挡你成为内核开发工程师了

因为 Linux 有源代码,很多地方可以参考现有的实现,定制化自己的模块。例如,你可以自己实现一个设备驱动程序,实现一个自己的系统调用,或者实现一个自己的文件系统等等。

6、面向真实场景的开发,实践没有终点

如果你是运维,仅仅熟悉上面基本的操作是不够的,生产环境会有大量的不可控因素,尤其是集群规模大的更是如此,大量的运维经验是实战来的,不能光靠读书。如果你是开发,对内核进行少量修改容易,但是一旦面临真实的场景,需要考虑各种因素,并发与并行,锁与保护,扩展性和兼容性,都需要真实项目才能练出来。

此文章为10月Day15学习笔记,内容来源于极客时间《趣谈Linux操作系统》,推荐该课程。

相关文章:

Linux 学习的六个过程

Linux 上手难,学习曲线陡峭,所以它的学习过程更像一个爬坡模式。这些坡看起来都很陡,但是一旦爬上一阶,就会一马平川。 1、抛弃旧的思维习惯,熟练使用 Linux 命令行 在 Linux 中,无论我们做什么事情&…...

『heqingchun-ubuntu系统下安装nvidia显卡驱动3种方法』

ubuntu系统下安装nvidia显卡驱动3种方法 一、安装依赖 1.更新 sudo apt updatesudo apt upgrade -y2.基础工具 sudo apt install -y build-essential python图形界面相关 sudo apt install -y lightdm注:在弹出对话框选择"lightdm" 二、第一种:使用…...

[paddle]paddleseg中eiseg加载模型参数的模型下载地址

图片标注 以下内容为2D图片标注模型下载及EISeg2D图片标注流程,具体如下: 模型准备 在使用EISeg前,请先下载模型参数。EISeg开放了在COCOLVIS、大规模人像数据、mapping_challenge,Chest X-Ray,MRSpineSeg&#xff…...

标定板生成网址,可以直接打印,matlab标定工具箱

Camera Calibration Pattern Generator – calib.io matlab 打开标定的成像 cameraCalibrator 点击完成之后 命令行中输入 cameraParams.IntrinsicMatrix...

React高级特性之受控和非受控组件

一、受控组件 受控组件:input框自己的状态被React组件状态控制 // 类组件引入React import React from reactclass InputComponent extends React.Component{state {message: zm66666}changeHandler (e) > {this.setState({message: e.target.value})}render…...

Android 14 正式发布,已经在 AOSP 中上线

本心、输入输出、结果 文章目录 Android 14 正式发布,已经在 AOSP 中上线前言总结主要更新内容机型支持优化性能的数据体现字体放大、多媒体支持加强Android 14 增加了对 10 位高动态范围 (HDR) 图像的支持提供了新的图形和尺寸管理用户体验 与隐私安全弘扬爱国精神Android 14…...

软件开发介绍

一、软件开发整体介绍 作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程,以及软件开发过程中涉及到的岗位角色,角色的分工、职责,并了解软件开发中涉及到的三种软件环境。 1.1 软件开发流程 第一阶段&#xff1a…...

Go 匿名函数与闭包

Go 匿名函数与闭包 匿名函数和闭包是一些编程语言中的重要概念,它们在Go语言中也有重要的应用。让我们来详细介绍这两个概念,并提供示例代码来帮助理解。 文章目录 Go 匿名函数与闭包一、匿名函数(Anonymous Function)二、闭包函…...

html关闭空标签

常见的空标签有以下几种示例&#xff1a; <br>&#xff1a;表示换行&#xff0c;没有闭合标签。<hr>&#xff1a;表示水平线&#xff0c;没有闭合标签。<img>&#xff1a;表示图片&#xff0c;没有闭合标签。<input>&#xff1a;表示输入框&#xff0…...

Java实现B树

1.介绍 B树是一种自平衡的搜索树数据结构&#xff0c;常用于数据库和文件系统中的索引结构。它具有以下好处和功能&#xff1a; 高效的查找操作&#xff1a;B树的特点是每个节点可以存储多个关键字&#xff0c;并且保持有序。通过在节点上进行二分查找&#xff0c;可以快速定位…...

crontab报错/var/spool/cron : Permission denied和 -bash: chattr: command not found

crontab报错/var/spool/cron : Permission denied和 -bash: chattr: command not found 1、第一种情况2、第二种情况3、第三种情况 1、第一种情况 centos7下修改定时任务crontab -e的时候&#xff0c;控制台输出“crontab: installing new crontab”&#xff0c;表示任务添加成…...

06在IDEA中创建Java和Web工程,了解不同工程下的类路径,在IDEA中执行Maven命令

创建Java/Web模块 类路径的概述 IDEA中普通java项目中类路径的开始就是以src目录开始的路径,编译后的字节码文件和配置文件最终都会放在out目录下 Maven生成的目录结构中src/main目录下的java和resources目录都可以看作类路径的开始,编译后的字节码文件或资源文件会放在targ…...

自定义redission装配和集成分布式开源限流业务组件ratelimiter-spring-boot-starter的正确姿势

自定义redission装配和集成分布式开源限流业务组件ratelimiter-spring-boot-starter的正确姿势 文章目录 1.说明1.1 pom依赖1.2 引入redisson不引入redisson-spring-boot-starter依赖1.3 引入redisson-spring-boot-starter不引入redisson,启动类排除redisson-spring-boot-start…...

Ceph分布式存储的简单介绍与Ceph集群的部署搭建

文章目录 1. 存储的概述1.1 单机存储设备1.1.1 DAS&#xff08;直接附加存储&#xff09;1.1.2 NAS&#xff08;网络附加存储&#xff09;1.1.3 SAN&#xff08;存储区域网络&#xff09; 1.2 单机存储的缺陷1.3 分布式存储&#xff08;软件定义的存储 SDS&#xff09;1.4 分布…...

【环境搭建】linux docker安装nexus3

1、shell输入 docker run -dti \--nethost \--namenexus3 \--privilegedtrue \--restartalways \--ulimit nofile655350 \--ulimit memlock-1 \--memory1G \--memory-swap-1 \-e INSTALL4J_ADD_VM_PARAMS"-Xms512m -Xmx512m -XX:MaxDirectMemorySize1g" \-v /etc/lo…...

Java多线程下载文件

JVM是支持多线程程序的&#xff0c;当程序需要同时执行两个或多个任务&#xff0c;实现一些需要等待的任务时&#xff0c;如用户输入、文件读写、网络操作、搜索等多线程程序比单线程程序更具优势&#xff0c;可充分利用CPU资源&#xff0c;完成时间更短&#xff0c;提高应用程…...

oracle 同一张表同时insert多条数据 mysql 同一张表同时insert多条数据

oracle 同一张表同时insert多条数据 在Oracle数据库中&#xff0c;你可以使用INSERT ALL语句同时向同一张表插入多条数据。INSERT ALL语句允许你一次执行多个插入操作&#xff0c;可以提高插入的效率和速度。 以下是使用INSERT ALL语句插入多条数据的示例&#xff1a; INSERT…...

ROS键盘遥控机器人,通过参数服务器指定速度

1、引言 在上节的驱动机器人&#xff0c;我们知道是cmd_vel话题发布一串Twist类型消息来控制&#xff0c;我们可以输入如下命令查看这个Twist的详细信息&#xff1a;rosmsg show geometry_msgs/Twist geometry_msgs/Vector3 linear float64 x float64 y float64 z geome…...

具有快表的地址变换机构

1.快表&#xff08;TLB&#xff09; 快表&#xff0c;又称联想寄存器(TLB&#xff0c;translation lookaside buffer)&#xff0c; 是一种访问速度比内存快很多的高速缓存(TLB不是内存! )&#xff0c; 用来存放最近访问的页表项的副本&#xff0c;可以加速地址变换的速度。 与…...

【使用python和flask建个人博客】修复侧边栏最新文章、最多阅读等链接不能打开的问题

自从上次因版本兼容问题修改过部分代码之后,好长时间没光顾woniunote这个个人博客模块了,最近发文章的时候发现侧边栏的文章打不开,定位了bug,并进行了修复。 <div class="col-12 side"><div class="tip" align...

【零基础部署】Ubuntu 安装 Docker 保姆级教程

Docker 是当今最流行的容器化平台之一&#xff0c;它能让你把应用及其依赖打包到一个轻量级的容器中运行。无论你是想搭建开发环境、部署服务&#xff0c;还是学习云原生技术&#xff0c;Docker 都是必备技能。本文将手把手带你从零开始&#xff0c;在 Ubuntu 系统上完成 Docke…...

ProxyClaw住宅代理实战:破解反爬虫,赋能AI智能体与数据工程

1. 项目概述&#xff1a;ProxyClaw&#xff0c;一个为AI与数据工程而生的住宅代理网络 如果你正在构建一个需要从互联网上大规模、稳定抓取数据的AI智能体、自动化机器人或者数据管道&#xff0c;那么“被目标网站封禁”这件事&#xff0c;大概率是你最头疼的日常。无论是电商平…...

告别盲调!用STM32CubeMonitor实时可视化你的MCU变量(附Windows/Mac安装包)

告别盲调&#xff01;用STM32CubeMonitor实时可视化你的MCU变量&#xff08;附Windows/Mac安装包&#xff09; 调试嵌入式系统时&#xff0c;最令人抓狂的莫过于反复修改代码、下载、断点查看变量——这种"盲人摸象"式的开发方式&#xff0c;在调试动态系统&#xff…...

SKILLS All-in-one:开源AI Agent技能库,标准化Prompt与工具函数,提升开发效率

1. 项目定位与核心价值如果你和我一样&#xff0c;在过去一年里深度使用过 Claude Code、ChatGPT 或者尝试搭建自己的 AI Agent 工作流&#xff0c;那你一定遇到过这个痛点&#xff1a;每次想给 AI 装个新“技能”&#xff0c;都得自己从头写 Prompt、设计工具调用逻辑、处理错…...

EdgeDB终极性能优化指南:5个关键磁盘IO配置大幅提升数据读写速度 [特殊字符]

EdgeDB终极性能优化指南&#xff1a;5个关键磁盘IO配置大幅提升数据读写速度 &#x1f680; 【免费下载链接】edgedb Gel supercharges Postgres with a modern data model, graph queries, Auth & AI solutions, and much more. 项目地址: https://gitcode.com/gh_mirro…...

分形超材料实现电磁波绕障传输:原理、实验与射频应用

1. 项目概述&#xff1a;让信号“穿墙”的隐身斗篷如果你看过《星际迷航》&#xff0c;肯定对克林贡人或罗慕伦人的隐形装置印象深刻&#xff0c;它能让整艘飞船从雷达上消失。虽然我们还没法让宏观物体真正“隐形”&#xff0c;但在电磁波的世界里&#xff0c;让信号“无视”一…...

人工智能的“意识”争论:它真的能理解吗,还是只是在模仿?—— 一个软件测试从业者的专业解构

2026年的今天&#xff0c;当你在测试环境中输入一条模糊的需求描述&#xff0c;大模型瞬间生成了逻辑严密、边界清晰的测试用例时&#xff0c;你是否曾在某一瞬间恍惚&#xff1a;它真的“懂”我在测什么吗&#xff1f;还是仅仅在进行一场华丽的概率模仿&#xff1f;关于人工智…...

从零构建本地AI应用:基于DeepSeek-R1的RAG与智能体实战指南

1. 项目概述&#xff1a;一个本地化AI应用的全栈学习与实践仓库最近在折腾本地大语言模型&#xff0c;特别是DeepSeek-R1&#xff0c;发现网上资料虽然多&#xff0c;但要么太零散&#xff0c;要么就是纯理论&#xff0c;真正能让你从零开始、一步步把模型跑起来&#xff0c;再…...

结构函数:电子封装热分析的关键技术解析

1. 结构函数&#xff1a;热分析领域的核心桥梁在电子封装设计与散热方案开发中&#xff0c;热特性分析一直是个令人头疼的问题。想象一下&#xff0c;你手里拿着一块正在发烫的芯片&#xff0c;却无法直接"看到"热量是如何在内部传递的——这就像医生无法用X光检查病…...

从面试旅行到EDA设计:工程思维如何应对混乱与不确定性

1. 一次糟糕的面试旅行&#xff1a;从混乱到反思的工程思维那天早上醒来&#xff0c;看到闹钟指针的那一刻&#xff0c;我就知道一切都乱套了。作为一名在谢菲尔德攻读控制工程学士学位的学生&#xff0c;我本该精神抖擞地前往伦敦郊区参加人生中第一次工业实习面试。然而&…...