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

深入Linux基础:文件系统与进程管理详解

在Linux运维领域,文件系统和进程管理是两个至关重要的基础知识。理解它们的原理和实际操作,不仅有助于我们更高效地管理服务器,还能快速定位问题、优化性能。本文将带你全面了解这两大模块,并配以示例代码进行讲解,帮助你夯实基础。

一、Linux文件系统详解

1. 文件系统的基本概念

文件系统是操作系统中用于组织和存储数据的一套机制。在Linux中,所有资源(包括硬件设备)都以文件的形式存在,根目录/是整个文件系统的起点。Linux支持多种文件系统类型,如:

  • ext4:Linux默认文件系统,稳定且支持大文件。
  • XFS:高性能文件系统,适合大规模数据存储。
  • Btrfs:支持快照和数据压缩的现代文件系统。

2. 文件系统结构

Linux文件系统是一个树状结构,常见目录用途如下:

目录	说明
/home	用户的个人目录
/etc	系统配置文件目录
/var	可变数据目录(如日志)
/dev	设备文件目录
/tmp	临时文件存放地

3. 挂载与分区管理

Linux的文件系统需要通过挂载点与实际设备关联。可以通过以下步骤挂载设备:

# 1. 查看当前分区情况
sudo fdisk -l  # 2. 格式化分区为ext4
sudo mkfs.ext4 /dev/sdb1  # 3. 创建挂载目录
sudo mkdir /mnt/mydisk  # 4. 挂载设备
sudo mount /dev/sdb1 /mnt/mydisk  # 5. 查看挂载情况
df -h  

4. 常见文件操作命令

  • 创建文件/目录:
touch myfile.txt       # 创建文件  
mkdir mydir            # 创建目录  
  • 查看文件内容:
cat myfile.txt         # 显示整个文件内容  
less myfile.txt        # 分页查看  
  • 文件权限操作:
chmod 755 myfile.txt   # 修改权限为755  
chown user:group myfile.txt  # 更改所有者  

二、Linux进程管理

1. 什么是进程?

进程是程序运行的实例,是资源分配和调度的基本单位。在Linux中,每个进程都分配一个唯一的PID(进程ID)。

2. 常用进程管理命令

  • 查看运行中的进程:
ps aux                  # 显示当前所有进程  
top                     # 动态查看进程资源使用情况  
  • 杀死进程:
kill -9 <PID>           # 强制终止指定PID的进程  
pkill process_name      # 按名称终止进程  
  • 启动进程到后台:
nohup command &         # 后台运行命令并忽略挂起  
jobs                    # 查看后台运行的任务  

3. 进程优先级调度

进程的优先级由nice值控制,范围为-20(最高优先级)到19(最低优先级)。

# 设置进程的优先级为-10
nice -n -10 command  # 动态调整运行中进程的优先级
renice -5 <PID>  

4. 父子进程与孤儿进程

  • 父子进程:一个进程可以创建多个子进程,子进程会继承父进程的环境变量和资源。
  • 孤儿进程:父进程终止后,其子进程会被init进程接管,避免资源泄露。
# 示例:使用Python创建父子进程
import osdef child_process():print(f"子进程 PID: {os.getpid()},父进程 PID: {os.getppid()}")if __name__ == "__main__":pid = os.fork()if pid == 0:child_process()else:print(f"父进程 PID: {os.getpid()},子进程 PID: {pid}")

三、案例:日志分析自动化

结合文件系统和进程管理,我们可以实现一个简单的日志自动分析脚本:

需求:

定时扫描/var/log/目录,提取包含“error”的日志并保存到独立文件中。


#!/bin/bashLOG_DIR="/var/log"
OUTPUT_FILE="/home/user/error_logs.txt"# 查找包含"error"的日志
grep -i "error" $LOG_DIR/* > $OUTPUT_FILE# 压缩日志文件以节省空间
gzip -f $OUTPUT_FILE# 将任务加入crontab实现自动化
# 每天凌晨执行:0 0 * * * /path/to/script.sh

结语

掌握Linux文件系统和进程管理是成为优秀运维工程师的基础。文件系统让我们高效组织和管理数据,而进程管理则帮助我们优化系统性能和资源分配。在实践中,这些知识往往是故障排查和系统优化的核心。希望本文能为你的学习提供实用指导!

相关文章:

深入Linux基础:文件系统与进程管理详解

在Linux运维领域&#xff0c;文件系统和进程管理是两个至关重要的基础知识。理解它们的原理和实际操作&#xff0c;不仅有助于我们更高效地管理服务器&#xff0c;还能快速定位问题、优化性能。本文将带你全面了解这两大模块&#xff0c;并配以示例代码进行讲解&#xff0c;帮助…...

缓存及其不一致

在实际开发过程中&#xff0c;一般都会遇到缓存&#xff0c;像本地缓存&#xff08;直接在程序里搞个map也可以&#xff0c;但是可能会随着数据的增长出现OOM&#xff0c;建议使用正经的本地缓存框架&#xff0c;因为自己实现淘汰策略啥的挺费劲的&#xff09;、分布式缓存&…...

Leetcode 有效的数独

这段代码解决的是 验证一个数独是否有效 的问题&#xff0c;其算法思想是基于 规则校验和状态记录。具体思想如下&#xff1a; 算法思想 核心目标&#xff1a; 检查每个数字在 同一行、同一列 和 同一个 3x3 子格 中是否重复。 状态记录&#xff1a; 使用 3 个布尔二维数组分别…...

《Java核心技术 卷I》用户界面中首选项API

首选项API 在桌面程序中&#xff0c;通常都会存储用户首选项&#xff0c;如用户最后处理的文件、窗口的最后位置等。 利用Properties类可以很容易的加载和保存程序的配置信息&#xff0c;但有以下缺点&#xff1a; 有些操作系统没有主目录概念&#xff0c;很难为匹配文件找到…...

Android 中的 Zygote 和 Copy-on-Write 机制详解

在 Android 系统中&#xff0c;Zygote 是一个关键的进程&#xff0c;几乎所有的应用进程都是通过它 fork&#xff08;派生&#xff09;出来的。通过 Zygote 启动新进程的方式带来了显著的性能优势&#xff0c;这得益于 fork 操作和 Linux 中的 Copy-on-Write&#xff08;COW&am…...

【人工智能】从零开始用Python实现逻辑回归模型:深入理解逻辑回归的原理与应用

解锁Python编程的无限可能&#xff1a;《奇妙的Python》带你漫游代码世界 《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门&#xff01; 逻辑回归是一种经典的统计学习方法&#xff0c;用于分类问题尤其是二分类问题。它通过学习数据的特征和目标标签之间的…...

推荐一款功能强大的光学识别OCR软件:Readiris Dyslexic

Readiris Dyslexic是一款功能强大的光学识别OCR软件&#xff0c;可以扫描任何纸质文档并将其转换为完全可编辑的数字文件(Word&#xff0c;Excel&#xff0c;PDF)&#xff0c;然后用你喜欢的编辑器进行编辑。该软件提供了一种轻松创建&#xff0c;修改和签名PDF的完整解决方法&…...

Python爬虫----python爬虫基础

一、python爬虫基础-爬虫简介 1、现实生活中实际爬虫有哪些&#xff1f; 2、什么是网络爬虫&#xff1f; 3、什么是通用爬虫和聚焦爬虫&#xff1f; 4、为什么要用python写爬虫程序 5、环境和工具 二、python爬虫基础-http协议和chrome抓包工具 1、什么是http和https协议…...

css-50 Projects in 50 Days(3)

html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>旋转页面</title><link rel"sty…...

另外一种缓冲式图片组件的用法

文章目录 1. 概念介绍2. 使用方法2.1 基本用法2.2 缓冲原理3. 示例代码4. 内容总结我们在上一章回中介绍了"FadeInImage组件"相关的内容,本章回中将介绍CachedNetworkImage组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的CachedNetwo…...

字节青训-小C的外卖超时判断、小C的排列询问

目录 一、小C的外卖超时判断 问题描述 测试样例 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; 二、小C的排列询问 问题描述 测试样例 最终代码&#xff1a; 运行结果&#xff1a; ​编辑 一、小C的外卖超时判断…...

PHP 伪静态详解及实现方法

概述 在现代 Web 开发中&#xff0c;URL 的设计对用户体验和搜索引擎优化&#xff08;SEO&#xff09;至关重要。动态 URL 虽然功能强大&#xff0c;但往往显得冗长且不友好。伪静态&#xff08;URL 重写&#xff09;技术通过将动态 URL 转换为静态样式&#xff0c;不仅提高了…...

Spring Boot 简单预览PDF例子

目录 前言 一、引入依赖 二、使用步骤 1.创建 Controller 处理 PDF 生成和预览 2.创建预览页面 总结 前言 使用 Spring Boot 创建一个生成 PDF 并进行预览的项目&#xff0c;你可以按以下步骤进行。我们将使用 Spring Boot、Thymeleaf、iText 等技术来完成这个任务。 一、引入…...

【魔珐有言-注册/登录安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被机器执行自动化程序攻击&#xff0c;存在如下风险&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露&#xff0c;不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 &#xff0c;造成用户无法登陆、注册&#xff0c;大量收到垃圾短信的…...

LabVIEW 使用 Snippet

在 LabVIEW 中&#xff0c;Snippet&#xff08;代码片段&#xff09; 是一个非常有用的功能&#xff0c;它允许你将 一小段可重用的代码 保存为一个 图形化的代码片段&#xff0c;并能够在不同的 VI 中通过拖放来使用。 什么是 Snippet&#xff1f; Snippet 就是 LabVIEW 中的…...

单片机_day3_GPIO

目录 1. 灯如何才能亮 1.1原理图 1.2 二极管 1.3 换了一个灯和原理图 ​编辑 1.4 三极管 1.4.1 NPN型三极管 1.4.2 PNP型三极管 2. 基本概念 3. 输入 3.1 浮空输入 3.2 上拉输入 3.3 下拉输入 3.4 模拟输入 4. 输出 4.1 推挽输出 4.2 开漏输出 如何让开漏输出…...

Python小游戏24——小恐龙躲避游戏

首先&#xff0c;你需要安装Pygame库。如果你还没有安装&#xff0c;可以通过以下命令安装&#xff1a; 【bash】 pip install pygame 【python】代码 import pygame import random # 初始化Pygame pygame.init() # 设置屏幕尺寸 screen_width 800 screen_height 600 screen …...

Python 的多态笔记

Python的多态实际是通过instance 实现的 class Person:def __init__(self, name,age):self.name nameself.age agedef feed_pet(self,pet):#isinastance(obj,类)-->判断obj,是不是这个类的对象&#xff0c;或者判断obj是不是该类的子类的对象if isinstance(pet, Pet):sel…...

go module使用

go module介绍 go module是go官⽅⾃带的go依赖管理库,在1.13版本正式推荐使⽤ go module可以将某个项⽬(⽂件夹)下的所有依赖整理成⼀个 go.mod ⽂件,⾥⾯写⼊了依赖的版本等 使⽤ go module之后我们可不⽤将代码放置在src下了 使⽤ go module 管理依赖后会在项⽬根⽬录下⽣成…...

c ++零基础可视化——数组

c 零基础可视化 数组 一些知识&#xff1a; 关于给数组赋值&#xff0c;一个函数为memset&#xff0c;其在cplusplus.com中的描述如下&#xff1a; void * memset ( void * ptr, int value, size_t num );Sets the first num bytes of the block of memory pointed by ptr to…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

​​企业大模型服务合规指南:深度解析备案与登记制度​​

伴随AI技术的爆炸式发展&#xff0c;尤其是大模型&#xff08;LLM&#xff09;在各行各业的深度应用和整合&#xff0c;企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者&#xff0c;还是积极拥抱AI转型的传统企业&#xff0c;在面向公众…...