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 1000【pid1000】
#-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运行结果: