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運行結果: