linux学习(十)鸟叔第十六章:进程管理和SELinux初探

文章介绍了Linux系统中进程的基本概念,包括前台与后台任务的管理,如使用amp、ctrl+z、jobs、fg和bg命令。还讨论了kill信号、nohup以及nice和renice对进程优先级的调整。此外,文章提到了进程查看工具如ps、top和pstree,以及killall命令。最后,文章简述了SELinux的强制访问控制和安全上下文概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        首先确定几个概念:程序通常是放置在存储媒介中,以物理文件形式存在;进程可以说是正在进行的程序。每个进程都有个独一无二的由UID/GID衍生出来的PID作为进程的标志。常驻的进程会被叫做服务(daemon)。

        父子进程的调用流程是fork and exec,先复制一个和父进程一模一样的子进程(PID不同)然后再由exec方式加载执行。

1 任务管理 

        前台:可以出现提示字符让人操作的环境

        后台:自动执行的任务,无法通过ctrl+c来终止,后台执行的任务不能等待终端和shell输入

1.1 &:将命令丢到后台执行

        只要在命令最后加上&,就会把该命令丢到后台执行,执行完后会输出结果。例如【cat ~/.bashrc &】就会在后台执行,然后第一行会输出“[1] 8166”第一个是代表该任务的序号是1,第二个代表该进程的PID。

1.2 ctrl+z:将任务丢到后台暂停

        按下ctrl+z,目前正在进行的任务就会在后台暂停,这时候会出现“[1]+ stopped”的字样,+表示最近被丢入的任务,-代表最近第二个被丢入的任务。用此方法可以打断目前的任务去做别的任务,等做完之后在回来接着做任务。

1.3 jobs:查看后台任务状态

jobs []
-l:列出job number 与 PID
-r:列出run的任务
-s:列出stop的任务

 1.4 fg:将后台任务拿到前台处理

        【fg %number】就可以将任务序号是number的任务拿到前台,而且%可有可无,但是最最好有,防止和后面所介绍的东西搞混。并且还可以用【fg +】【fg -】拿出最近一个和最近第二个。

1.5 bg:将后台的任务变成运行中

        【bg %number】类似fg。

1.5 kill:杀死后台任务 

kill -signal %jobnumber
kill -signal PID
kill -l

-l:列出能够使用的信号

  这里的信号见下图,

其中最重要的是:1:启动 ;9:强制中断;15:以正常的方式结束。

需要注意:如果有%则代表后面是jobnumber,如果没有则代表PID。

1.6 nohup:脱机后还能继续执行任务

        【nohup [ ]】【nohup [ ] &】可以分别将任务放在前台或者后台,在注销后也能继续工作。但是它不支持bash内部的指令,只能是一个外部指令(脚本)。

2 进程

        说到进程就要提执行顺序,进程的执行顺序是由优先级PRI决定的,越低越优先,但是呢这个PRI是由内核来决定的用户无法修改,但是用户可以通过修改nice(NI)值,来影响PRI。当nice(范围-20~19)为负的时候就会降低PRI的值,让进程被优先处理。但是,只有root可以随意调整自己或者他人的进程,一般用户只能往高里调自己的进程。而且子进程会继承父进程的nice。

2.1 查看进程

2.1.1 ps:将某一点的进程运行情况打印出来

        ps可以记两个命令,一个是【ps -l】查看自己的进程;一个是【ps aux】查看所有的运行系统的进程。

  • F:进程标识,4是权限为root;1代表子进程只fork还没有exec。
  • S:进程状态,R:运行、S:睡眠、D:不可唤醒的睡眠、T:停止、Z:僵尸状态,已终止但不能被删除,如果出现最好做溯源将其改善。
  • PPID:父进程的PID
  • ADDR/SZ/WCHAN:与内存有关,正在run的会显示-

2.1.2 top:动态查看进程的变化 

        top的功能非常多,可以用来持续的检测程序运行的状态。

top [-d 数字] 
每多少秒更新一次
top []
-b: 以批量的形式执行,会结束top 一般用于数据流重定向
-n: 与b搭配,执行几次输出结果
-p: 检测某个PID

         在top执行过程中也有很多的按键命令,P:以CPU排序、M:以内存使用排列、r:修改nice值。

 2.1.3 pstree:进程树

        所有程序都是依附在systemd下,所以其PID是1。加上参数-p显示PID,-u显示账号属性,-A用ASCII字符链接,-U用unicode字符链接。出现乱码可以在A和U中选一个。

2.1.4 killall:删除服务

        【killall [ ] [命令名称]】可以删除命令名称所启动的所有进程,加上-i可以在删除前询问。所有killall用来删除一个服务很简单。

2.2 调整执行顺序

2.2.1 nice:行执行的命令给予新的nice

       【nice [-n 数字]  命令 】

2.2.2 renice:调整已存在的命令的nice

        【renice [number] PID】

2.3 查看系统资源

        一般来说系统会尽可能压榨物理内存,使其效率提高,但是swap使用率不应该超过20%。

2.3.1 free:查看内存使用情况

2.3.2 uname:查看系统与内核相关信息

2.3.3 uptime:查看系统启动时间与任务负载

2.3.4 netstat:追踪网络和socket文件

2.3.5 dmesg:分析内核产生信息

2.3.6 vmstat:检测系统资源变化

3 SElinux

        SElinux和仅仅用rwx这种权限来限制【用户】访问的自主访问控制(DAC)是不同的,selinux是直接管理【进程】能否访问某些文件的强制访问控制(MAC)。一个是管理用户能否访问,一个是管理进程能否访问,是很不同的。

三个主要的安全策略,每个策略会有很多规则:

  • targeted:针对网络服务较多,是默认策略
  • minimum:由target自定义而来,仅针对选择的进程来保护
  • mls:完整的SELinux限制,较为严格

三种模式

  • enforcing:强制模式,会正确限制域和类型(见下面)的关系。
  • permissive:宽容模式,会警告单不会实际限制
  • disabled:关闭

★3.1 安全上下文

        ★安全上下文: 是selinux非常重要的一部分。这个是放置在文件inode内的,有点像DAC的rwx,只有通过安全比对才可以进行访问,而且就算通过了检测 ,还需要最后参考rwx的权限设置。安全上下文就是相当于一个在rwx之前的安全检测。会检测进程和目标资源的安全上下文是否一样,一样才能通过。

         有三个字段:

  • 身份识别:unconfined_u不受限的用户;system_u系统用户。
  • 角色:object_r目录或者文件;system_r进程
  • ★SElinux类型:在文件资源上的叫类型(type),在进程上的叫域(domain)。只有域和类型匹配了才可以通过安全上下文检查。

3.2 一些常用命令汇总

         这部分命令过于繁多和零碎就将其汇总。

类型命令模板参数
模式查看getenforce
策略查看sestatus sestatus [-vb]-b:以bool列出策略有没有启动
切换模式setenforce setenforce[0|1]0:强制转成宽容 1:反之不能由关闭转换,且转换完需要重新启动
规则查看getseboolgetsebool [ ] [ 规则名称]-a:全部规则列出
SElinux类型查看seinfo、sesearch
修改规则布尔值setseboolsetsebool [-P] [规则名称] [0|1] -P:直接写到配置文件里,未来会生效
手动修改SELinux类型chcon

chcon [-R] [-T 类型] [-u 身份识别] [-r 角色] 文件

chcon [-R] --reference=范例文件 文件

按照范例文件来修改文件的类型

 -R:连同子目录一起修改

让文件恢复正确的类型restoreconrestorecon [-RV] 文件或者目录

-R:连同子目录

-v:显示到屏幕

这个会根据设置的默认类型来自动进行更改,还可以直接改一个目录里所有文件,很方便
修改和查询默认类型semanage

semanage fcontext -l

显示所有默认类型

semanage fcontext -{a|b|c] [-frst] file_spec

这个命令的参数非常多,这里只写了一部分

 3.3 网络服务案例

        这里只是按照鸟叔的思路复现了文中的代码,但是并没有很深刻的体会,在学完服务器后会回来完善。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值