Linux学习日志_进程控制
-1acl访问控制列表
列表空了,功能可以用setfacl -m u:用户:rw .mnt.file
getfcal /mnt/file
+出现,表示权限列表未关闭
setfcal -b //mnt/file--->
setfacl -m u:student:rwx file 给file 增添一个student的user权限rwx
setfacl -x u:student 删除一个student
当出现+前面显示的不是普通权限
用getfacl查看普通权限
mask系统能够赋予最大的权限
umask系统预留权限
chmod更改系统能够赋予最大权限之后用setfacl -m修复
!当权限后有+时,不要用chmod更改权限
设置默认权限:getfacl -m d:u:student:rwx /pub/ 原始已经有的目录权限不会进行更改,只更改新创建的目录,默认权限对于目录本身不生效
###############进程管理###############
1.什么是程序,什么是进程?
程序(program):通常为二进制程序放置在存储媒介中,以实体文件(物理文件)的形式存在。
进程(process):一个程序加载到内存中运行,内存中的数据即为进程。程序触发后,执行者的权限与属性/程序的程序码与所需数据等都会被载入到内存中,操作系统给予这个内存的单元一个识别码(PID),进程是一个正在运行中的程序。
进程的状态:
R(Running):该程序正在运行中
S(Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(Signal)
D:不可唤醒的睡眠状态,通常进程可能在等待I/O
T:(Stop)停止状态,可能是在工作控制(背景暂停)或除错(Traced)状态
Z(Zombie):僵尸状态,程序已经终止但却无法被移植到内存外
进程分为后台运行的进程和shell当中运行的进程
2.进程的查看--静态的ps/ 动态的top/ 程序树pstree
PS --->
a ---> 关于当前环境的所有进程,不显示环境设置
x| -A--> 系统的所有进程
f ---> 显示进程从属关系
e ---> 显示进程调用环境工具的详细信息
l ---> 长列表显示进程的详细信息
u ---> 显示进程的用户信息
-a ---> 显示shell前台运行命令的进程,但不包含shell本身
eg:
ps aux ---> 查看系统所有进程的详细数据
ps -lA ---> 查看所有系统的数据的详细信息
ps ax -o %cpu,@men,pid --->分别显示进程中cpu,men,pid
Q:把CPU使用排名前五的进程PID抓取出来
watch -n 1 'ps ax -o pid --sort=<+|->%cpu | tail -n 5'
+ ---> 正序 - ---> 倒序
%cpu ---> cpu负载排序 %mem ---> 内存负载排序
3. top:动态查看进程的变化
--->相对于ps是选取一个时间点的进程状态,top则可以持续检测进程运行的状态。
[[email protected] ~]# top [-d 数字] | top [-dnp]
参数:
-d ---> 后面可以接秒数表示更新频率,默认为5s
-s ---> 修改进程刷新间隔时间
-b ---> 以批次的方式执行top
-n ---> 与 -b 搭配,表示需要进行几次top的输出结果
-p ---> 指定某个PID来进行查看检测而已
top用法与ps基本相同
-m ---> 根据内存占有率进行排序
-c ---> 根据CPU占有率进行排序
-u ---> 后面跟进程pid,和发起的信号(eg:9,15,20)用来给某个进程发起一信号
-q ---> 推出进程查看界面
-h ---> 显示top帮助
4. pstree
[[email protected]~]# pstree [-A|U] [-up]
参数:
-A ---> 各进程树之间的连接以ASCII字符来连接
-U ---> 各进程树之间的连接以UTF-8码的字符来连接
-P ---> 同时列出每个进程的PID
-u ---> 同时列出每个进程的所属用户名称(UID)
5. nice优先级设定
[[email protected]~]# renice -n -数字 comm 进程PID ---> 更改进程优先级,默认值为0
nice -n -5 ---> 系统以别的优先级开启
监控命令
stat 中 sl ---> l 表示该进程在内存中拥有锁定的空间
Ss ---> 第二个 s 表示该进程为顶级进程
S+ ---> +表示正在进行
R+ ---> 表示优先级高于S+
S<l ---> 表示优先级高
SNl ---> 表示优先级低
Sl ---> 表示优先级普通
6. 工作管理
概念:登陆bash,一边复制,一边查找,一边编译,一边进行vi程序编写,并且在同一个bash内实现的工作管理模式
[[email protected]~]# jobs [命令] ---> job在后台运行
ctrl + Z ---> 已经打开的进程打入后台,并且不运行
fg ---> 将后台的job调回前台
bg ---> 后台不运行的进程运行起来
jobs ---> 查看当前bash的job
jobs -l ---> 查看当前bash的job,并显示该job的状态和PID
jobs -r ---> 仅列出正在后台运行的工作(run)
jobs -s ---> 仅列出正在后台暂停的工作(stop)
进程信号
1 ---> 在程序不启动的情况下重新加载配置
2 ---> 清除指定程序在内存中的数据
3 ---> 强行结束某个进程,不会被阻塞
9 ---> 强行结束某个进程,不会被阻塞
15 ---> 正常关闭某个进程,可能会被阻塞
18 ---> 继续运行暂停的进程
19 ---> 暂停指定进程,不会被阻塞
20 ---> 暂停指定进程,会被阻塞
7. 信号
发起信号 kill -2 3158 ---> 释放内存,<=>crtl + c
取消鼠标图形 ctrl + / 或 kill -3
killall -9 vim 批量的对名称为vim的进行删除
pkill -9 -u student 结束条件
当用student打开进程时,在root用pkll -9 -u student杀死进程后,被杀死的进程为被阻塞,但由于非正常终端,出现错误,需要退出重新进入