Linux源码剖析
文章平均质量分 90
白话机器学习
10年IT从业经验,人工智能高级算法工程师、CSDN博客专家、阿里云专家、《2023博客之星马龄赛道11-15年》第一名、《2023博客之星,城市赛道》长春TOP1,CSDN付费资源项目实践专家
展开
-
Linux上使用Docker容器
Docker 容器镜像的独特之处就在于它的分层设计:在构建镜像时每层的更改会叠加在上一层上(这意味着,上一层的所有数据仍然会保留,即使在新的一层删除了);如果某一层已经存在,Docker 会直接使用这一层,节约构建的时间和占用的空间。Docker 默认从 Docker Hub 上拖取所需要的镜像。它可以快速配置不同的环境(比如说,通过 Docker,你可以在 Ubuntu 上使用 CentOS 的环境),部署应用。如果你看到了像上面这样的输出,说明你安装的 Docker 已经一切准备就绪,可以使用了。原创 2023-10-14 20:44:15 · 242 阅读 · 3 评论 -
Linux 上的编程
在 Linux 下,大多编程语言都会提供一套适合命令行的、简单便捷的工具链。善于运用这些工具,能够极大地提升你的开发效率,支持你完成自己的项目。外部包引用和依赖管理是程序开发中必不可少的部分。如果官方有成熟的方案,跟随他们是明智的选择。否则则需根据实际情况,按需选用。原创 2023-10-14 20:42:08 · 85 阅读 · 0 评论 -
Linux网络、文本处理工具与 Shell 脚本
Shell 是 Linux 的命令解释程序,是用户和内核之间的接口。除了作为命令解释程序外,Shell 同时还提供了一个可支持强大脚本语言的程序环境。name=串,其中两边不允许有空格。如果字串中含空格,就要用双引号括起。在引用时,使用$name或${name},后者花括号是为了帮助解释器识别变量边界。已定义的变量可以通过unset name来删除。!!!example “变量使用示例”变量定义:```shelldodone```输出:``````原创 2023-10-14 20:31:09 · 68 阅读 · 0 评论 -
Linux文件系统特殊权限位
你也可能在学习 Linux 的时候会好奇:为什么我按下 Ctrl + Alt + F[1-7] 的时候出现的 TTY 会问我要用户名和密码,但是在桌面环境中点「终端」,不需要再输入用户名和密码,就可以操作。前者对应的是「实际用户」(Real user),是实际运行(拥有)这个进程的用户,后者对应的是「有效用户」(Effective user),对应进程拥有的权限。的程序是非常危险的,因为稍不谨慎,它们的漏洞就会直接让普通的无权限用户获得。文件(文件名根据你使用的 Shell 的不同而有区别),且它的。原创 2023-10-14 20:25:34 · 73 阅读 · 0 评论 -
Linux用户与用户组、文件权限、文件系统层次结构
你可以查看文件,来得到系统中用户的配置信息。!!!example “示例”以下是一个例子:```(中间内容省略)```在此文件中,每一行都代表一个用户,每行中用户信息由冒号 `:` 隔开,存储着包括用户名、用户编号 (UID, User ID)、家目录位置等信息。更多介绍,可以通过 `man 5 passwd` 查阅。root,和一大堆你素未相识的名字。下面将会进行介绍。???作用的变化”在 Unix 最初的时候,`passwd` 文件存储了用户密码的哈希[^1]。原创 2023-10-14 20:23:47 · 90 阅读 · 0 评论 -
Linux下SysRq进行紧急系统维护、fork()详解、终端 (Terminal) 与控制台 (Console)
同时由 shell 进程创立的 forking 进程的进程组号 (PGRP) 为自己的 PID,剩余进程的 PGRP 则继承自最开始的 forking 进程,PGRP 可以通过系统调用修改为自身,从原进程组中独立出去另起门户。其实它在 Linux 上可以对内核进行一些操作,尤其是在紧急的情况下(例如,界面卡死),可以用来关闭进程、干净地(在不损坏文件系统的情况下)重启系统等操作。再后来,随着时代发展,终端需要出现在图形界面上了,然而承载图形界面的也是终端,所以终端里的终端就需要终端模拟器来实现了。原创 2023-10-13 14:40:04 · 176 阅读 · 0 评论 -
Linux进程组织结构、守护进程、进程查看原理
按 F2,随后可以自主选择进程的属性列在面板上,以 Parent PID 为例 (PPID),点击 colomns,点击 PPID,注意到下方提示按 F5 可以添加到左侧,再依照下方提示调整顺序。进程组的出现方便了系统信号管理,后面可以看到,发给一个进程组的信号将被所有属于该组的进程接收,意义就是停止整个任务整体。(background),本质上决定了是否需要与用户交互,对于单独的一个 shell,只能有一个前台进程(组),其余进程只能在后台默默运行,上述中若干进程组,正是前台进程组和后台进程组的概称。原创 2023-10-13 14:37:52 · 83 阅读 · 0 评论 -
Linux进程、前后台、服务与例行性任务管理
如果我想将一个基于 Web 的应用(如基于 Web 的 Python 交互应用)作为局域网内 Web 服务,以便于在其他设备上访问。那么如何将其注册为 systemd 服务呢?其实只需要编写一个简单的 .service 文件即可。!!!example “编写 .service 文件并运行(以 Jupyter Notebook 为例)”Jupyter Notebook 是基于浏览器的交互式编程平台,在数据科学领域非常常用。原创 2023-10-13 14:34:25 · 220 阅读 · 0 评论 -
Linux文件管理及相关操作
不像在 Windows 和 macOS 下有图形化界面,拖拽文件即可完成文件的移动,很容易管理文件与目录,Linux 的命令行操作虽然繁琐一些,但一旦上手,就可以通过命令与参数的组合完成通过图形化界面难以实现或者无法实现的功能。掌握通过一些手段了解一个新的命令的使用方法的技能在 Linux 学习中是极其重要的,Linux 的命令众多,并不会有很多的命令会有详细的说明。面对一个新的软件,比如上面提到的 tar 存档软件,除了使用搜索引擎在互联网上搜索使用方法外,还可以通过软件安装时自带的使用文档来学习。原创 2023-10-13 14:16:03 · 48 阅读 · 0 评论 -
Linux软件安装详解
命令时,会从这个列表中读取出想要安装的软件信息,包括下载地址、软件版本、依赖的包,同时 apt 会对依赖的包递归执行如上操作,直到不再有新的依赖包。如上得到的所有包,将会是在。通过 apt 安装的软件都来源于相对应的软件源,每个 Linux 发行版一般都带有官方的软件源,在官方的软件源中已经包含了丰富的软件,apt 的软件源列表在。在 apt 的配置中,有许多的软件源,每一个软件源都会提供一定数量的包列表。有时候,由于种种原因,官方软件源中并没有我们需要的软件,但是第三方软件提供商可以提供自己的软件源。原创 2023-10-13 14:13:43 · 146 阅读 · 0 评论 -
Linux桌面环境的安装
我们打开设置管理器中的「外观」首选项,把下载好的压缩包文件直接拖拽到样式列表中。如果你觉得商店中的主题不符合你的审美,你也可以自己制作一款独一无二的主题,或者直接修改现有的主题。如果你安装的系统没有预装桌面环境,或者你想要更换其他桌面环境,我们就需要自己安装桌面环境。例如:窗口样式,按钮样式,Dock 样式,指针样式等等。上面内容都是外观上的个性化,更多地,Linux 系统的可客制化还体现在一些配置文件上。然而这时的 zsh 仍然是黑底白字,要让它变好看,我们需要对 zsh 进行配置。我们拥有了图形界面。原创 2023-10-13 14:11:06 · 2062 阅读 · 0 评论 -
使用 VMWare Fusion 配置你的第一个 Ubuntu 虚拟机
用键盘对命令行界面进行操作,在配置用户名前的配置一般可以选择默认配置。本页面中你需要配置你的用户名,服务器名称和密码。安装完成之后会重启,之后你会进入命令行界面。这就是一个没有图形界面的虚拟机,你可以对它进行任何你想做的尝试了!导入完成之后使用默认配置即可,你也可以按照自己的需求对 configuration 进行对应的改动。如果你不需要远程连接你的虚拟机,你可以不安装。如果你需要带图形界面的虚拟机,只需要安装。值得注意的是,在选择软件源时,你应该使用。(当然,你可以在之后自行安装)。原创 2023-10-13 13:55:55 · 614 阅读 · 0 评论 -
适用于 Linux 的 Windows 子系统(Windows Subsystem for Linux,WSL)
如何将 Linux 下的软件与开发生态移植到 Windows 上?在 WSL 出现之前,开发者们进行了各种尝试。fork()当然,我们可以看到,没有一个稳定的方案可以不加修改地直接运行 Linux 程序,直到 WSL 出现。WSL 由微软开发,可以在 64 位的 Windows 10 和 Windows Server 2016 及以上的版本上运行原生(ELF 格式)的 Linux 程序(安装方法详见 WSL 的官方???原创 2023-10-13 13:53:19 · 437 阅读 · 0 评论 -
配置与使用 SSH 连接远程的 Linux 服务器
在实际操作时,一个非常常见的需求是连接到远程的服务器。Linux 提供了非常方便安全的 SSH 功能,可以让用户连接到远程的 Linux 服务器命令行执行操作。在这里,我们将简单介绍在服务器上配置 SSH,以及如何使用 SSH 连接到远程的服务器。命令直接连接到本地(localhost)的 SSH 服务器。符号前的是登录的用户名,后面的是服务器的域名或 IP 地址。tip “获取服务器的 IP 地址”软件包,它提供了 SSH 服务器的功能。也可以测试一下从其他机器连接到服务器。“安装前请务必修改弱密码”原创 2023-10-13 13:52:17 · 358 阅读 · 0 评论 -
Linux运维 之Systemd 应用
Systemd 就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套 完整的解决方案。根据 Linux 惯例,字母d是守护进程(daemon)的缩写。Systemd 这个名字的含义,就 是它要守护整个系统。使用了 Systemd,就不需要再用init了。Systemd 取代了initd,成为系统的第一个进 程(PID 等于 1),其他进程都是它的子进程。上面的命令查看 Systemd 的版本。Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。原创 2023-08-09 09:32:02 · 93 阅读 · 0 评论 -
Linux运维之 Samba 应用,实现Linux与Windows间文件共享
samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件。samba 提供了在不同计算机(即使操作系统不同)上共享服务的能力。原创 2023-08-09 09:27:13 · 313 阅读 · 0 评论 -
Linux运维之 时间服务器 - NTP
网络时间协议(英语:Network Time Protocol,缩写:NTP)是在数据网络潜伏时间可变的计算机系统之间通过分组交换进行时钟同步的一个网络协议,位于 OSI 模型的应用层。自 1985 年以来,NTP 是目前仍在使用的最古老的互联网协议之一。NTP 由特拉华大学的 David L. Mills(英语:David L. Mills)设计。。NTP 要点:地球共有 24 个时区,而以格林威治时间 (GMT) 为标准时间;中国本地时间为 GMT +8 小时;原创 2023-08-09 09:26:08 · 1294 阅读 · 0 评论 -
Linux 典型运维应用案例解析
💡 如果没有特殊说明,本文的案例都是针对 Centos 发行版本。原创 2023-08-09 09:25:35 · 440 阅读 · 0 评论 -
Linux学习之 Iptables 应用
iptables 可以检测、修改、转发、重定向和丢弃 IPv4 数据包。过滤 IPv4 数据包的代码已经内置于内核中,并且按照不同的目的被组织成表的集合。表由一组预先定义的链组成,链包含遍历顺序规则。每一条规则包含一个谓词的潜在匹配和相应的动作(称为目标),如果谓词为真,该动作会被执行。也就是说条件匹配。原创 2023-08-09 09:24:48 · 119 阅读 · 0 评论 -
Linux学习之 定时任务 - crontab
环境:CentOS通过crontab命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script 脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。原创 2023-08-09 09:23:53 · 59 阅读 · 0 评论 -
Linux学习之命令行的使用详解
涵盖范围:这篇文章不仅能帮助刚接触命令行的新手,而且对具有经验的人也大有裨益。本文致力于做到覆盖面广(涉及所有重要的内容),具体(给出具体的最常用的例子),以及简洁(避免冗余的内容,或是可以在其他地方轻松查到的细枝末节)。在特定应用场景下,本文的内容属于基本功或者能帮助您节约大量的时间。本文主要为 Linux 所写,但在仅限 OS X 系统章节和仅限 Windows 系统章节中也包含有对应操作系统的内容。原创 2023-08-09 08:59:30 · 504 阅读 · 0 评论 -
Linux 用户管理
创建用户组 - 使用 groupadd删除用户组 - 使用 groupdel修改用户组信息 - 使用 groupmod创建用户 - 使用 useradd删除用户 - 使用 userdel修改用户信息 - 使用 usermod设置用户认证信息 - 使用 passwd切换用户 - 使用 su当前用户想执行没有权限执行的命令时,使用其他用户身份去执行 - 使用 sudo示例:# 建立一个新组,并设置组 ID 加入系统$ groupadd -g 344 jsdigname2.2. groupdel示原创 2023-08-08 22:30:52 · 31 阅读 · 0 评论 -
Linux 系统管理
查看 Linux 系统发行版本使用 lsb_release(此命令适用于所有的 Linux 发行版本)使用 (此方法只适合 Redhat 系的 Linux)查看 CPU 信息 - 使用 重新启动 Linux 操作系统 - 使用 reboot退出 shell,并返回给定值 - 使用 exit关闭系统 - 使用 shutdown查看或设置系统时间与日期 - 使用 date挂载文件系统 - 使用 mount取消挂载文件系统 - 使用 umount查看系统当前进程状态 - 使用 ps删除当前正在运行的进程 - 使用原创 2023-08-08 22:30:17 · 59 阅读 · 0 评论 -
Linux 软件管理
示例:(1)安装 rpm 包rpm -ivh xxx.rpm(2)安装.src.rpm 软件包这类软件包是包含了源代码的 rpm 包,在安装时需要进行编译rpm -i xxx.src.rpmcd /usr/src/redhat/SPECSrpmbuild -bp xxx.specs #一个和你的软件包同名的specs文件cd /usr/src/redhat/BUILD/xxx/ &n原创 2023-08-08 22:29:44 · 32 阅读 · 0 评论 -
Linux 网络管理
下载文件 - 使用 curl、wgettelnet 方式登录远程主机,对远程主机进行管理 - 使用 telnet查看或操纵 Linux 主机的路由、网络设备、策略路由和隧道 - 使用 ip查看和设置系统的主机名 - 使用 hostname查看和配置 Linux 内核中网络接口的网络参数 - 使用 ifconfig查看和设置 Linux 内核中的网络路由表 - 使用 routessh 方式连接远程主机 - 使用 ssh为 ssh 生成、管理和转换认证密钥 - 使用 ssh-keygen查看、设置防火墙(Cen原创 2023-08-08 22:28:44 · 99 阅读 · 0 评论 -
查看 Linux 命令帮助信息
Linux 中有非常多的命令,想全部背下来是很困难的事。所以,我认为学习 Linux 的第一步,就是了解如何快速检索命令说明。原创 2023-08-08 22:28:11 · 376 阅读 · 0 评论 -
Linux 硬件管理
查看磁盘空间 - 使用 df查看文件或目录的磁盘空间 - 使用 du实时查看系统整体运行状态(如:CPU、内存) - 使用 top查看已使用和未使用的内存 - 使用 free查看磁盘 I/O 使用状况 - 使用 iotop示例:# 查看系统磁盘设备,默认是 KB 为单位[root@LinServ-1 ~]# df文件系统 1K-块 已用  原创 2023-08-08 22:27:37 · 70 阅读 · 0 评论 -
Linux 文件压缩和解压
压缩和解压 tar 文件 - 使用 tar压缩和解压 gz 文件 - 使用 gzip压缩和解压 zip 文件 - 分别使用 zip、unzip示例:tar -cvf log.tar log2012.log # 仅打包,不压缩tar -zcvf log.tar.gz log2012.log # 打包后,以 gzip 压缩tar -jcvf log.tar.bz2 log原创 2023-08-08 22:27:05 · 31 阅读 · 0 评论 -
Linux 文件内容查看编辑
连接文件并打印到标准输出设备 - 使用 cat显示指定文件的开头若干行 - 使用 head显示指定文件的末尾若干行,常用于实时打印日志文件内容 - 使用 tail显示文件内容,每次显示一屏 - 使用 more显示文件内容,每次显示一屏 - 使用 less自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等 - 使用 sed文本编辑器 - 使用 vi使用正则表达式搜索文本,并把匹配的行打印出来 - 使用 grep示例:cat m1原创 2023-08-08 22:26:22 · 281 阅读 · 0 评论 -
Linux 文件目录管理
linux 目录结构是树形结构,其根目录是 。一张思维导图说明各个目录的作用:Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。 在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:$ ls -ltotal 64dr-xr-xr-x 2 root root 4096 Dec 14 2012 bindr-xr-xr原创 2023-08-08 22:25:47 · 163 阅读 · 0 评论 -
Linux运维之常用命令解析:iotop
用来监视磁盘 I/O 使用状况的工具。原创 2023-08-08 22:25:00 · 339 阅读 · 0 评论 -
Linux运维之常用命令解析:iostat
监视系统输入输出设备和 CPU 的使用情况。原创 2023-08-08 22:24:25 · 58 阅读 · 0 评论 -
linux运维之常用命令解析:grep
grep强大的文本搜索工具补充说明grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。原创 2023-08-08 22:23:43 · 49 阅读 · 0 评论 -
Linux常用命令解析:free
显示内存的使用情况。原创 2023-08-08 22:22:35 · 151 阅读 · 0 评论 -
Linux源码剖析——等待队列原理与实现
当进程要获取某些资源(例如从网卡读取数据)的时候,但资源并没有准备好(例如网卡还没接收到数据),这时候内核必须切换到其他进程运行,直到资源准备好再唤醒进程。就是内核用于管理等待资源的进程,当某个进程获取的资源没有准备好的时候,可以通过调用函数把进程添加到waitqueue中,然后切换到其他进程继续执行。当资源准备好,由资源提供方通过调用wake_up()函数来唤醒等待的进程。原创 2023-07-27 09:24:23 · 117 阅读 · 0 评论 -
Linux源码剖析——vmalloc原理与实现
在 Linux 系统中的每个进程都有独立 4GB 内存空间,而 Linux 把这 4GB 内存空间划分为用户内存空间(0 ~ 3GB)和内核内存空间(3GB ~ 4GB),而内核内存空间由划分为直接内存映射区和动态内存映射区(vmalloc区)。直接内存映射区从3GB开始到3GB+896MB。而动态内存映射区不能通过这种简单的关系关联,而是需要访问动态内存映射区时,由内核动态申请物理内存并且映射到动态内存映射区中。原创 2023-07-27 09:23:35 · 122 阅读 · 0 评论 -
Linux源码剖析——X86 CPU分段机制
从本意来看,分段是一个不错的内存管理方案。有了分页机制后,分段机制本应可以去掉的,但是 Intel 公司为了兼容旧版的CPU,保留了分段机制,所以新版的CPU也一直保留着分段机制。分段的本意是按不同的功能来把内存划分成不同的段进行管理,例如:一个进程按不同的功能,可以划分为数据段、代码段和堆栈段等等。说实话,有了分页机制后,分段机制就变成了鸡肋了(保留只是为了兼容罢了,而且Linux也只是应付式的使用)。的分段和分页机制(比较枯燥的知识点),因为Linux虚拟内存管理是建立在分段和分页机制的基础上的。原创 2023-07-27 09:22:39 · 119 阅读 · 0 评论 -
Linux源码剖析——虚拟内存管理
Linux的内存管理分为虚拟内存管理和物理内存管理,本文主要介绍虚拟内存管理的原理和实现。在介绍虚拟内存管理前,首先介绍一下x86 CPU内存寻址的具体过程。原创 2023-07-27 09:21:24 · 133 阅读 · 0 评论 -
Linux源码剖析——虚拟文件系统
通常我们使用的磁盘和光盘都属于块设备,也就是说它们都是按照数据块来进行读写的,可以把磁盘和光盘想象成一个由数据块组成的巨大数组。但这样的读写方式对于人类来说不太友好,所以一般要在磁盘或者光盘上面挂载文件系统才能使用。那么什么是文件系统呢?文件系统是一种存储和组织数据的方法,它使得对其访问和查找变得容易。通过挂载文件系统后,我们可以使用如的方式来访问磁盘中的数据,而不用使用数据块编号来进行访问。在Linux系统中,可以使用多种文件系统来挂载不同的设备,如 ext2、ext3、nfs等等。原创 2023-07-27 09:20:27 · 232 阅读 · 0 评论 -
Linux源码剖析——Unix Domain Sockets使用
本篇将会介绍用于进程间通信的的实现。要使用需要在创建socket时为family参数传入AF_UNIX,如下代码:这样就可以创建一个类型为的socket描述符,如果我们编写的是服务端程序,那就需要在调用bind()函数时为其指定一个唯一的文件路径,客户端就可以通过这个文件路径来连接服务端程序。唯一路径是通过结构体来设置的,如下代码:服务端:...int fd;...客户端:...int fd;...原创 2023-07-26 09:14:13 · 224 阅读 · 0 评论