Linux文件特殊权限管理及进程和线程

acl 权限优先级

拥有者 > 特殊指定用户 > 权限多的组 >权限少的组 > 其他

mask阈值

mask是能够赋予指定用户权限的最大阀值

当设定完毕文件的acl列表之后用chmod缩小了文件拥有组的权力 mask会发生变化

恢复:  setfacl -m m: 权限 :rwx    文件/mnt/timinglee

acl 列表的默认权限   

【指定用户对特殊文件有特殊权限,设置后新创建的对象将继承该目录的默认 ACL 规则】

ls -l timinglee/

setfacl -m u:admint:rwx /mnt/timinglee  ##只对于/mnt/westosdir目录本身生效

但是timinglee目录里面的内容还没有开权限

setfacl -Rm u:admint:rwx /mnt/timinglee  ##对于目录和目录中已经存在的内容生效

#以上的命令之针对与存在的文件生效,新建文件是不会被设定的

setfacl -m d:u:admint:rwx /mnt/timinglee/   ##针对与/mnt/westosdir目录中新建文件生效

d表示/mnt/timinglee目录中新建目录会自动复制default权限到文件或目录的acl列表中】

attr权限

attr 权限,即文件属性权限,是 Linux 系统中一种对文件或目录赋予额外属性的机制。它能进一步增强对文件访问和操作的控制,提供了比传统 r(读)、w(写)、x(执行)权限更细致的管控维度。这些属性可以限制文件的某些操作,如防止文件被删除、修改,或者使其只能追加写入等。

#attr权限限制所有用户

i   #不能作任何的更改

a   #能添加不能删除

lsattr dir   //   file     ##查看dir的attr权限

chattr +i|+a|-i|-a dir  //  file   ##设定attr权限

chattr +a timinglee/     root超级用户在timinglee也只能touch添加文件,不能删除文件

chattr -a timinglee/     关闭attr权限

进程和线程

进程:

进程是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。它包含了程序执行所需的各种资源,如内存空间、文件描述符等。

每个进程都有自己独立的内存空间和系统资源,不同进程之间相互隔离 。

进程是静态的代码文件 。   进程是指程序运行时的形态

进程是程序的一个副本 。   进程是有生命周期的(准备期,运行期,终止期)

线程:

线程是进程中的一个执行单元,是 CPU 调度和分派的基本单位。

一个进程可以包含多个线程,这些线程共享进程的内存空间和系统资源

每个线程有自己独立的栈空间和程序计数器、

线程之间可以并发执行,提高程序的执行效率

当进程是多任务,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程

进程与线程区别:

进程是资源调度以及分配的基本单位。
线程是cpu 调度的基本单位。

线程井发性较高。进程井发性较低

一个进程可以拥有多个线程
一个线程属于一个进程

每个进程有独立的虚拟地址空间。线程没有独立地址空间

一个线程発常,可能导致整个进程崩溃
一个进程前溃,不会影响其他进程

进程状态

进程查看【应用程序的系统监视器】

gnome-system-monitor     #打开图形中的进程管理工具

常用进程查看命令的使用

ps   #进程查看

ps 命令的三种执行风格 unix bsd GNU

unix风格:

ps a   与终端相关的进程(当用户登陆系统后产生的进程都是带终端的,当前运行的)

ps x   与终端无关相关的进程       ps ax查看相关和不相关的

ps u   用户信息归类的查看方式       aux

ps f   进程层级关系

ps o   显示指定参数

ps  选择显示分类 pid查看ID  comm命令名称  nice值  pri优先级  pcpu父级进程cpu  ppid父级进程ID  stat user用户  group组 

bsd风格:

ps -e 显示所有进程

ps -f 显示信息的完整格式

ps -H 显示进程的层级结构

ps -o 显示指定参数

ps --sort=

ps ax显示信息:

#PID 进程id  #TTY 进程用到的终端  #STAT 进程状态  #TIME 进程占用cpu时长

#COMMAND 进程名称

ps aux显示信息:

# USER 进程所有人 # PID 进程id  #%CPU 进程使用cpu的用量  # %MEM 用到内存量

# VSZ 使用的虚拟内存大小   # RSS 进程常驻内存中的数据大小 # TTY 用到的终端

# STAT 进程状态   #START 进程运行时长   #TIME 进程占用cpu时长

#COMMAND 进程名称

ps ax - -sort=%cpu   #用cpu对进程排序

ps ax -o %cpu,%mem,comm - -sort=-%cpu   #进行倒序排序【查看cpu,内存,名称

pgrep #进程过滤

#-u uid    显示指定id用户进程【查看的是PID的】

#-U timinglee   显示指定timinglee用户进程

#-t timinglee   显示指定终端进程

#-l     显示进程名称    -lU timinglee显示更详细的,或-lau 1000pid1000

#-a 显示进程的完整名称      #-P 1000 输入pid查看进程的子进程pid

pidof 进程名称   ##pidof vim ——查看vim的pid

# kill -9 35636     可以强制结束进程

top查看动态进程

top   ##动态进程查看

#top命令的参数             【查看的是外部命令】

#-d 指定刷新频率            top -d 1    每1秒刷新一次

#-b 以批次方式显示          top -d 1 -b 只显示进程信息【可查看所有进程信息】

#-n 指定显示的批次数量      top -d 1 -n 2     刷新两次结束

top中的内容显示信息 

top什么时候开的   up运行  11:23运行多少时间   2 users 系统中有两个用户被使用

load average系统负载【分别是1min 5min 15min平均排队时长】   

Tasks进程数 【running 正在运行,sleeping 休眠数,stopped 被暂停数,zombie 僵死数】

%Cpu(s)  us 用户空间  sy 内核空间  ni nice值调整时间  id 空闲时间  wa 等待io时间

hi 处理硬件中断时间  si 处理软件中断时间  st 被偷走的时间(vm使用时间)

MiB Mem   total, 总量   free 空闲   used 占用   buff/cache 缓存

MiB Swap: 交换分区用量

top内部快捷键指令

P    cpu排序

M    内存排序

T    累计占用cpu时间排序

l 关闭/开启uptime信息     【top一行会不显示】

t 关闭/开启cpu&task

s 指定刷新频率

k 操作进程      【默认是占用量最大的进程】

u 查看指定用户进程

#PID 进程id   #USER 进程所有者的用户名   #PR 优先级   #NI nice值。负值是高优先级,正值表示低优先级   #VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

#RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

#SHR 共享内存大小,单位kb    #S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)     #%CPU 上次更新到现在的CPU时间占用百分比

#%MEM 进程使用的物理内存百分比

#TIME+ 进程使用的CPU时间总计,单位1/100秒   #COMMAND 命令名/命令行

进程的前后台调用

# gedit

此时终端被占用

ctrl+z   ##把占用shell的进程打入后台挂起【此时进程无法使用】

# bg    ##把后台挂起的进程运行起来

# fg    ##把后台进程调回前台【需要使用进程时调回】

# gedit &   ##运行进程在后台

# jobs   ##查看当前shell中在后台的所有工作【需要ctrl+z将进程挂起

进程的优先级

1. 进程优先级(Process Priority)是 Linux 内核用于决定 CPU 资源分配的关键指标

2. 优先级越高的进程越有可能被 CPU 优先调度执行

优先级种类 【静态和动态加在一起才叫优先级】

1. 静态优先级:由用户或管理员在进程启动时或运行中手动设置,范围 -20(最高优先级)到 19(最低优先级),数值越小优先级越高。

2. 动态优先级:由内核根据进程的运行状态(如 CPU 使用时间、睡眠时长等)自动调整,以平衡系统资源分配。

静态优先级的调整方法

watch -n 1 "ps ax -o pid,comm,nice,pri | grep gedit"

优先级范围值: 0--139 ,  内核自控优先级范围:0-99 ,  用户可控优先级:100-139

查看进程pid和优先级

# ps ax -o pid,comm,nice,pri | grep gedit 

nice -n -5 cat    ##指定优先级打开进程

renice -n -5 62185  ##更改优先级

再次查看结果:

进程信号的使用

用户可控进程信号

编号0表示看一下进程存不存在

信号特点

可捕获、阻塞和忽略:像 SIGHUP 、 SIGINT 、 SIGTERM 这类信号,进程可以编写相应的信号处理函数来捕获它们,也可以选择阻塞(暂时不处理)或者忽略这些信号。

不可捕获、阻塞和忽略: SIGKILL 和 SIGSTOP 信号比较特殊,进程无法对其进行捕获、阻塞或忽略操作,这保证了在必要时可以强制终止或暂停进程。

# ps  可查看进程ID

# kill -19 74594     【74594终端进程暂停了,无法输入以及删除】

# kill -20 74594     【74594终端进程没有暂停,但是vim的进程会被暂停

#进程信号控制工具

kill 进程信号 pid     #处理精确指定的进程

killall 进程信号 进程名字   #按照进程名称批量处理进程

pkill 进程信号 进程条件   #按照条件处理进程

# kill -9 62185         处理62185进程

# killall -9 vim         处理vim所有进程

# pkill -u timinglee -9   处理timinglee用户进程【在另一个终端运行

运行结果:[timingleeaTiminglee ~ ] $ killed

systemd守护进程

守护进程是什么

1. 守护进程(Daemon)是一种在后台持续运行的特殊进程,它不与终端直接交互,通常在系统启动时自动启动,并在系统关闭时才停止。

2. 守护进程的设计目的是为系统提供各种服务,例如网络服务(如 HTTP 服务器、FTP 服务器)、日志服务、定时任务服务等。它们默默地在后台运行,为其他进程和用户提供支持,确保系统的正常运行。

守护进程的特点

在后台运行:守护进程不会占用终端,不会受到用户登录或注销影响,持续在后台执行任务。

生命周期长:一般从系统启动开始运行,直到系统关闭才停止,为系统提供长期稳定的服务。

无控制终端:守护进程没控制终端,不会接收来自终端的输入,也不会将输出显示在终端上。

自成进程组和会话:守护进程通常会创建自己的进程组和会话,以确保独立于控制终端和其他进程。

Systemd 守护进程

1. Systemd 是 Linux 系统中新一代的初始化系统(init system),它旨在替代传统的 SysVinit 和Upstart 等初始化系统 。

2. Systemd 提供了一套强大的工具和机制,用于管理系统的启动、服务的管理、资源的分配等。它的设计目标是提高系统的启动速度、简化服务管理、增强系统的可靠性和可维护性。

守护进程管理命令systemctl

示例:

systemctl status firewalld  ——查看防火墙状态

关闭状态

开启状态

systemctl disable firewalld    ——设定防火墙开启不启动【- -now 并当前开启服务】

systemctl enable firewalld   ——设定服务开机启用

systemctl list-units    ——查看系统所有服务当前状态

systemctl list-unit-files    ——查看服务开机状态

enable表示挂载点启用,disabled表示禁用,static表示静态,transient表示临时的,generated是自动生成的】

systemctl list-dependencies firewalld  ——列出服务依赖性

systemctl mask firewalld   ——冻结服务

systemctl set-default multi-user.target   ——设定系统运行无图形网络模式

systemctl get-default    ——查看系统运行模式

init 3运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NVIDIA AgentIQ 详细介绍

NVIDIA AgentIQ 详细介绍 1. 引言 NVIDIA AgentIQ 是一个灵活的库,旨在将企业代理(无论使用何种框架)与各种数据源和工具无缝集成。通过将代理、工具和代理工作流视为简单的函数调用,AgentIQ 实现了真正的可组合性:一…

算法设计与分析5(动态规划)

动态规划的基本思想 将一个问题划分为多个不独立的子问题,这些子问题在求解过程中可能会有些数据进行了重复计算。我们可以把计算过的数据保存起来,当下次遇到同样的数据计算时,就可以查表直接得到答案,而不是再次计算 动态规划…

怎么理解量子比特模型,迁移到量子计算机开始编程

怎么理解量子比特模型,迁移到量子计算机开始编程 视频链接: 好的现在是2025年的3月最后一天,3月31号,今天我们讨论的话题是量子编程,也就是在量子计算机上,使用特定的语言进行软件开发。当然我们要讨论的,不是,量子编程的某一门语言的技术细节,而是考虑…

使用Expo框架开发APP——详细教程

在移动应用开发日益普及的今天,跨平台开发工具越来越受到开发者青睐。Expo 是基于 React Native 的一整套工具和服务,它能够大幅降低原生开发的门槛,让开发者只需关注业务逻辑和界面实现,而不用纠结于复杂的原生配置。本文将从零开…

windows技术基础知识

NT架构 NT 就是new techonology 的英文单词缩写,是微软1993年推出操作系统的重大升级,如内存管理,安全机制,多任务,多线程支持。在此之前操作系统都是基于MS-DOS上面的图形化界面,只有有限的内存管理和多任…

迪杰斯特拉+二分+优先队列+拓扑+堆优化(奶牛航线Cowroute、架设电话线dd、路障Roadblocks、奶牛交通Traffic)

原文地址 https://fmcraft.top/index.php/Programming/2025040402.html 主要算法 迪杰斯特拉Dijkstra 题目列表 P1:奶牛航线Cowroute 题目描述 题目描述 Bessie已经厌倦了农场冬天的寒冷气候,她决定坐飞机去更温暖的地方去度假。不幸的是&#xf…

#Liunx内存管理# 在32bit Linux内核中,用户空间和内核空间的比例通常是3:1,可以修改成2:2吗?

在32位Linux内核中,用户空间和内核空间的3:1默认比例可以修改为2:2,但需要权衡实际需求和潜在影响。以下是具体分析: 一、修改可行性 1.技术实现 通过内核启动参数调整虚拟地址空间划分,例如在GRUB配置中添加mem2G参数&#xff0c…

JAVA:使用 Curator 进行 ZooKeeper 操作的技术指南

1、简述 Apache Curator 是一个基于 ZooKeeper 的 Java 客户端库,它极大地简化了使用 ZooKeeper 的开发工作。Curator 提供了高层次的 API,封装了很多复杂的 ZooKeeper 操作,例如连接管理、分布式锁、Leader 选举等。 在分布式系统中&#…

Julia语言的测试覆盖率

Julia语言的测试覆盖率探讨 引言 在现代软件开发中,测试是确保软件质量的重要环节。随着软件的复杂度不断增加,测试覆盖率作为衡量测试质量的一个重要指标,受到了越来越多开发者的关注。Julia语言作为一种高性能的动态编程语言,…

【万字总结】前端全方位性能优化指南(八)——Webpack 6调优、模块联邦升级、Tree Shaking突破

构建工具深度优化——从机械配置到智能工程革命 当Webpack配置项突破2000行、Node进程内存耗尽告警时,传统构建优化已触及工具链的物理极限:Babel转译耗时占比超60%、跨项目模块复用催生冗余构建、Tree Shaking误删关键代码引发线上事故……构建流程正从「工程问题」演变为「…

使用MCP服务器实现AI任务完成通知:让Cursor更智能

0. 简介 在使用AI工具进行长时间任务时,常常需要等待结果。MCP(Model Context Protocol)服务器"mcp_server_notify"提供了一个优雅的解决方案,让AI在完成任务后通过系统通知提醒你。本文将介绍如何在Cursor中配置和使用…

Java面试黄金宝典33

1. 什么是存取控制、 触发器、 存储过程 、 游标 存取控制 定义:存取控制是数据库管理系统(DBMS)为保障数据安全性与完整性,对不同用户访问数据库对象(如表、视图等)的权限加以管理的机制。它借助定义用户…

DataX实战教程

需求: 用datax同步mysql: 192.168.236.134中test1库的user表到192.168.236.136中test1库的user表 步骤: 下载安装包 https://github.com/alibaba/DataX/blob/master/userGuid.md 进入引导页 https://github.com/alibaba/DataX/blob/ma…

C#/.NET/.NET Core技术前沿周刊 | 第 32 期(2025年3.24-3.31)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿、推荐…

c++基础-----c++ 成员变量初始化顺序

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 描述 在C中,类的成员变量初始化的顺序是由它们在类中声明的顺序决定的,而不是由它们在构造函数初始化列表中的顺序决定的。这意味着无论你在构造函数初始化列表中如何…

Pascal语言的贪心算法

贪心算法与Pascal语言 引言 在算法设计与分析中,贪心算法是一类重要的算法策略。它以一种直接而高效的方式解决问题,尤其适合那些可以通过局部最优解推导出全局最优解的问题。在本文中,我们将探讨贪心算法的基本概念、工作原理及其在Pascal…

Sensodrive力控关节模组SensoJoint:TÜV安全认证助力机器人开发

在机器人技术领域,安全性和开发效率是行业关注的重点。SensoDrive的SensoJoint 机器人力控关节模组,凭借其可靠的安全性能和高效的开发优势,正在为机器人开发提供有力支持。 2025年3月31日,SensoDrive的 SensoJoint 力控关节模组获…

自动驾驶04:点云预处理03

点云组帧 感知算法人员在完成点云的运动畸变补偿后,会发现一个问题:激光雷达发送的点云数据包中的点云数量其实非常少,完全无法用来进行后续感知和定位层面的处理工作。 此时,感知算法人员就需要对这些数据包进行点云组帧的处理…

栈回溯和离线断点

栈回溯和离线断点 栈回溯(Stack Backtrace) 栈回溯是一种重建函数调用链的技术,对于分析栈溢出的根本原因非常有价值。 实现方式 // 简单的栈回溯实现示例(ARM Cortex-M架构) void stack_backtrace(void) {uint32_…

Vue3学习二

认识组件的嵌套 还可以将Main中内容再划分 scoped防止组件与组件之间的样式相互污染 组件的通信 父子组件之间通信的方式 父组件传递给子组件 给传过来的内容做限制 type为传的内容的属性类型,required为true表示该内容是必须传的,default为&#xff0c…