【编程向导】Linux-快速入门之基础解析

这篇具有很好参考价值的文章主要介绍了【编程向导】Linux-快速入门之基础解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.基本概要

import React from 'react';
import img from '../../assets/linux/linux-perf-tools-full.png';
export default () => <img alt="Linux Performance Tools" src={img} width="900" />;

1.1抽象级别和层次

最底层是硬件系统,包括内存和中央处理器(用于计算和从内存中读写数据),此外硬盘和网络接口也是硬件系统的一部分。

硬件系统之上是 内核,它是操作系统的核心。内核是运行在内存中的软件,它向中央处理器发送指令。内核管理硬件系统,是硬件系统和应用程序之间进行通信的接口。

进程 是指计算机中运行的所有程序,由内核统一管理,它们组成了最顶层,称为 用户空间

import React from 'react';
import img from '../../assets/linux/linux-level.png';

export default () => <img alt="Linux Level" src={img} width="640" />;

内核和用户进程之间最主要的区别是:内核在 内核模式(kernel mode)中运行,而用户进程则在 用户模式(user mode)中运行。在内核模式中运行的代码可以不受限地访问中央处理器和内存,这种模式功能强大,但也非常危险,因为内核进程可以轻而易举地使整个系统崩溃。那些只有内核可以访问的空间我们称为 内核空间(kernel space)。

1.2硬件系统

主内存(main memory)或许是所有硬件系统中最为重要的部分。基本上来讲,主内存存储 01 这样的数据。我们将每个 01 称为一个比特(或位,bit)。内核和进程就在主内存中运行,它们就是一系列比特的大合集。所有外围设备的数据输入和输出都通过主内存完成,同样是以一系列 01 的形式。中央处理器像一个操作员一样处理内存中的数据,它从内存读取指令和数据,然后将运算结果写回内存。

1.3内核

Linux 系统的核心是 内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。

内核主要负责管理以下四种功能:

  • 进程管理:内核决定哪个进程可以使用 CPU
  • 内存管理:内核管理所有的内存,为进程分配内存,管理进程间的共享内存以及空闲内存
  • 设备驱动程序和设备管理:作为硬件系统(如磁盘)和进程之间的接口,内核负责操控硬件设备
  • 系统调用和系统支持:进程通常使用系统调用和内核进行通信

系统调用和系统支持

内核还对用户进程提供其他功能。例如,系统调用(system call 或 syscall)为进程执行一些它们不擅长或无法完成的工作。打开、读取和写文件这些操作都涉及系统调用。

  • fork
  • exec

系统内存管理

操作系统内核的主要功能之一就是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即实际并不存在的内存)。

内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为 交换空间(swap space)。内核不断在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。

软件程序管理

Linux 操作系统将运行中的程序称为进程。

内核创建了第一个进程(称为 init 进程)来启动系统上所有其他进程。当内核启动时,它会将 init 进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。

硬件设备管理

任何 Linux 系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交换数据。在 Linux 内核中有两种方法用于插入设备驱动代码:

  • 编译进内核的设备驱动代码
  • 可插入内核的设备驱动模块

Linux 系统将硬件设备当成特殊的文件,称为设备文件。设备文件有三种分类:

  • 字符型设备文件:指处理数据时每次只能处理一个字符的设备(大多数类型的调制解调器和终端都是作为字符型设备文件创建);
  • 块设备文件:指处理数据时每次能处理大块数据的设备,比如硬盘;
  • 网络设备文件:指采用数据包发送和接收数据的设备,包括各种网卡和一个特殊的回环设备。这个回环设备允许 Linux 系统使用常见的网络编程协议同自身通信。

Linux 为系统上的每个设备都创建一种称为 节点 的特殊文件。与设备的所有通信都通过设备节点完成。每个节点都有唯一的数值对供 Linux 内核标识它。数值对包括一个主设备号和一个次设备号。类似的设备被划分到同样的主设备号下。次设备号用于标识主设备组下的某个特定设备。

文件系统管理

Linux 内核支持通过不同类型的文件系统从硬盘中读写数据。
Linux 内核采用虚拟文件系统(Virtual File System,VFS)作为和每个文件系统交互的接口。这为 Linux 内核同任何类型文件系统通信提供了一个标准接口。当每个文件系统都被挂载和使用时,VFS 将信息都缓存在内存中。

二.常见目录

Linux 将整个文件系统看作一棵树,这棵树的树根叫做根文件系统,用 / 表示。

常用的系统文件目录

目录 语义 描述
/root Root Directories 系统管理员的主目录
/home/username Home Directories 普通用户的主目录
/bin User Binaries 供所有用户使用的完成 基本维护任务的命令
/sbin System Binaries 存放系统管理员使用的 管理程序命令
/lib System Libraries 系统最基本的 共享链接库和内核模块
/etc Configuration Files 系统和应用软件的 配置文件
/tmp Temporary Files 临时文件的存放目录
/proc Process Information 虚拟文件系统
/var Variable Files 存放在系统 运行时可能会更改的数据
/usr Unix Software Resource Unix 操作系统软件资源所放置的目录,而非用户的数据

/usr 不是 user 的缩写,其实 usr 是 Unix Software Resource,也就是 Unix 操作系统软件资源所放置的目录,而非用户的数据;所有系统默认的软件都会放置到 /usr,系统安装完时,这个目录会占用最多的硬盘容量。

目录 语义 描述
/usr/bin 用户需要执行的命令,例如压缩、文件查找、客户端等程序
/usr/sbin 系统运行不必须的命令,例如服务端程序、用户管理等程序
/usr/include C / C++ 头文件
/usr/lib 普通用户使用的库文件
/usr/local 个人安装的软件,通常需要手动指定;与 /usr 目录的目录结构相似
/usr/libexec
/usr/share
/usr/standalone

其他文件目录

目录 语义 描述
/boot Boot Loader Files 启动 Linux 时的核心文件
/dev Device Files 所有 Linux 的外围设备
/lost+found 无家可归文件的避难所
/mnt Mount Directory 空目录,用于提供给用户临时挂接别的文件系统
/opt Optional add-on Apps 第三方工具使用的安装目录
/srv Service Data
/media Removable Devices

虚拟文件系统

/proc 目录挂载了一个虚拟文件系统,以虚拟文件的形式映射系统与进程在内存中的运行时信息。

系统信息

/proc 下的直接子目录通常存储系统信息。

目录 描述 举例
/proc/cpuinfo 处理器的相关信息 physical id、cpu cores、siblings、processor
/proc/version 系统的内核版本号 Linux version 3.10.

进程信息

重点是 /proc/ 目录映射的进程信息。以

目录 描述
/proc/<pid>/cmdline 启动当前进程的完整命令
/proc/<pid>/cwd 当前进程工作目录的软链
/proc/<pid>/environ 当前进程的环境变量列表
/proc/<pid>/exe 启动当前进程的可执行文件的软链
/proc/<pid>/fd 目录,保持当前进程持有的文件描述符(以软链形式存在,指向实际文件)
/proc/<pid>/limits 当前进程使用资源的软限制、硬限制(和单位)
/proc/<pid>task 目录,保存当前进程所运行的每一个线程的相关信息;
<tid> 作为各线程的目录名,目录结构与 /proc/<pid> 相似

数据文件系统

/var 目录存放数据文件,如程序数据、日志等;但线上通常只将日志放在 /var 目录。

通过 rsyslog 记录系统级日志,配置文件为 /etc/rsyslog.conf。重点看 /var/log/messages 的配置:

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

*.info表示所有服务大于等于 info 优先级的信息都会记录到 /var/log/messages 中; mail.none 表示不记录任何 mail 的信息到 /var/log/messages 中。

以上配置表示:除安全认证、邮件、定时任务外,输出到 stdout、stderr 的 info 及更高级别的日志记录在 /var/log/messages


三.进程

  • 进程的概念与进程查看
  • 进程的控制命令
  • 进程的通信方式
  • 守护进程和系统日志
  • 服务管理工具
  • SELinux 简介

进程的概念

进程——运行中的程序,从程序开始运行到终止的整个生命周期是可管理的

C 程序的启动是从 main 函数开始的

int main(int agrc, char * argv[])

终止的方式并不唯一,分为正常终止和异常终止:

  • 正常终止也分为从 main 返回、调用 exit 等方式
  • 异常终止分为调用 about、接收信号等

进程的创建需要继承父进程,Linux 中的第一个进程由系统创建,pid 为 1,主要用作引导用户空间服务。

程序有时候需要处理并发的任务,他可能启动一个进程,把一个进程里面分成不同的线程处理。当计算机资源不充足的时候,可以查看是否进程或线程过多导致的问题发生。

进程通信

进程的通信方式——信号,信号是进程间通信方式之一,典型用法是:终端用户输入终端命令,通过信号机制停止一个程序的运行。

守护进程

使用 nohup 与 & 富豪配合运行一个命令

nohup 命令使进程忽略 hangup(挂起)信号

守护进程(daemon)和一般进程有什么差别呢?

使用 screen 命令

孤儿进程,孤儿进程必须被 1 号进程收留。

四.文件权限

查看文件权限的方法

# 在某个有文件存在的目录下输入以下命令
ll

drwxr-xr-x 7 root root 4096 May  7 00:50 app
-rw------- 1 root root 1679 Jun 24 22:57 github
-rw-r--r-- 1 root root 1376 Jul 20  2019 index.html

类型 权限     所属用户和组                 文件名

文件类型

类型第一个字符表示文件的类型,常用的有 - 普通文件,d 目录文件

  • -:普通文件
  • d:目录文件
  • b:块特殊文件
  • c:字符特殊文件
  • l:富豪链接
  • f:命名管道
  • s:套接字文件

不同的文件类型,文件权限对应不同的功能。

文件权限的表示方法

  • 字符权限表示方法
    • r
    • w
    • x 执行
  • 数字权限的表示方法(二进制)
    • r = 4
    • w = 2
    • x = 1
-rw-r-xr-- 1 username groupname mtime filename
  • rw-:文件属主的权限
  • r-x:文件属组的权限
  • r--:其他用户的权限

创建新文件有默认权限,根据 umask 值计算,属主和属组根据当前进程的用户来设定。

目录权限的表示方法

  • x:进入目录
  • rw:显示目录内的文件名
  • wx:修改目录内的文件名

特殊权限

  • SUID:用于二进制可执行文件,执行命令时取得文件属主权限,如 /usr/bin/passwd
  • SGID:用于目录,在该目录下创建新的文件和目录,权限自动更改为该目录的属组
  • SBIT:用于目录,该目录下新建的文件和目录,仅 root 和自己可以删除,如 /tmp

五.防火墙

添加端口到防火墙

firewall-cmd --zone=public --add-port=你的端口/tcp permanet
systemctl restart firewalld.service

基本操作

3.配置 firewalld-cmd

  • 查看版本: firewall-cmd --version
  • 查看帮助: firewall-cmd --help
  • 显示状态: firewall-cmd --state
  • 查看所有打开的端口: firewall-cmd --zone=public --list-ports
  • 更新防火墙规则: firewall-cmd --reload
  • 查看区域信息: firewall-cmd --get-active-zones
  • 查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
  • 拒绝所有包:firewall-cmd --panic-on
  • 取消拒绝状态: firewall-cmd --panic-off
  • 查看是否拒绝: firewall-cmd --query-panic

开启端口

# 添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent 永久生效,没有此参数重启后失效)

# 重新载入
firewall-cmd --reload

# 查看
firewall-cmd --zone= public --query-port=80/tcp

# 删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

设置端口

Ali 阿里云有防火墙

开放新端口文章来源地址https://www.toymoban.com/news/detail-839590.html

  1. 实例安全组添加端口
  2. 服务器添加新端口到防火墙配置中
# 对外开放端口
firewall-cmd --permanent --add-port=8080-8085/tcp

# 重载端口
firewall-cmd --reload

# 删除端口
firewall-cmd --permanent --remove-port=8080-8085/tcp

# 查看防火墙开放端口
firewall-cmd --permanent --list-ports

# 查看使用互联网的服务
firewall-cmd --permanent --list-services

到了这里,关于【编程向导】Linux-快速入门之基础解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux系统基础快速入门详解】生产环境磁盘分区多种方案

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)   在Linux生产环境中,有多种磁盘分区方案可供选择。以下是一些常见的方案及其原理的详细解释: 单一分区方案: 原理:将整个磁盘

    2024年02月07日
    浏览(58)
  • 【Linux系统基础快速入门详解】SSH远程连接必备网络基础知识详解

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) SSH(Secure Shell)是一种网络协议,用于通过加密的方式在不安全的网络上安全地进行远程连接和数据传输。下面是对SSH远程连接的必备

    2024年02月07日
    浏览(68)
  • 【Linux系统基础快速入门详解】Linux核心find命令原理详解和每个命令使用场景以及实例

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) find 命令是在 Linux 操作系统中用于搜索文件和目录的命令行工具。它可以根据不同的条件来搜索特定的文件和目录,这些条件可以是文

    2024年02月07日
    浏览(68)
  • 【Linux】shell编程基础(超详细,入门看这一篇就够了)

    🥇🥇【Liunx学习记录篇】🥇🥇 篇一:【Linux】VMware安装unbuntu18.04虚拟机-超详细步骤(附镜像文件) 篇二:【Linux】ubuntu18.04系统基础配置及操作 篇三:【Linux】用户与组的操作详细介绍 篇四:【Linux】管理Linux文件权限属性介绍 篇五:【Linux】使用数字表示法和文件表示法修

    2024年02月04日
    浏览(48)
  • 【Linux系统基础快速入门详解】根据计算机硬件特性优化企业网站集群性能方案

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 优化企业网站集群性能是一个复杂的任务,不仅涉及硬件特性的优化,还需要考虑网络架构、负载均衡、缓存策略等多个方面。下面是

    2024年02月07日
    浏览(102)
  • 【Linux系统基础快速入门详解】find与指纹多角度分析与解决网站页面恶意修改

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 原理详细解释: 指纹分析:指纹分析是一种通过对网站页面进行多角度的特征提取、比对和分析,以识别和解决网站页面恶意修改的方

    2024年02月07日
    浏览(48)
  • 【编程向导】JavaScript-基础语法-语句和声明二期讲解

    switch 语句允许一个程序求一个表达式的值并且尝试去匹配表达式的值到一个 case 标签。如果匹配成功,这个程序执行相关的语句。 工作原理:首先设置表达式 expression (通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联

    2024年03月24日
    浏览(47)
  • 【Python入门】Python搭建编程环境-安装Python3解释器(内含Windows版本、MacOS版本、Linux版本)

    前言 📕作者简介: 热爱跑步的恒川 ,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函数、函数进阶、数据容器、文件操作、异常模块与包、数据可视化等,

    2024年02月03日
    浏览(68)
  • 快速入门java网络编程基础------Nio

    哔哩哔哩黑马程序员 netty实战视频 NIO(New I/O)是Java中提供的一种基于通道和缓冲区的I/O(Input/Output)模型。它是相对于传统的IO(InputStream和OutputStream)模型而言的新型I/O模型。NIO的主要特点包括: 1.通道与缓冲区: 2.NIO引入了通道(Channel)和缓冲区(Buffer)的概念。通道

    2024年01月20日
    浏览(55)
  • Shell 编程快速入门 之 数学计算和函数基础

    整数之和 shell程序的数字类型只有整数类型一种,并不支持浮点数。如: 浮点数之和  在shell编程中,浮点数只能被用作字符串来操作,脚本语法本身不提供浮点数的操作方法,但可以调用bc, awk等外部命令来计算并返回结果。如: 两个或多个数的运算只有列出算式计算就行

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包