进程管理 & SELinux

程序

在linux系统中,触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个ID,成为PID,同时依据启发这个程序的用户与相关属性,给予这个PID一组有效的全线设定。从此以后,这个PID能够在系统上面进行的动作,就与这个PID的权限相关。这个程序是指内存中的进程(process)。

不同的用户运行同一个程序( program),因为所在的组合权限不同啦,所以当系统生成一个PID在进程中时,同样会绑定该权限。 例如 运行 /bin/bash 如果是root用户,那么可能系统分配的PID号码是 1234, 绑定了root的权限, 如果是kevin运行,可能分配的PID号为 2234,绑定的是 kevin这个用户的权限 

PID        PPID

子程序 父程序

常驻在内存中的进程就是 服务( daemon )

在linux 执行一个指令时,系统会将相关权限,属性,程序代码与数据等均加载内容中,并给予了这个单元一个程序标识符 PID,最终该指令可以进行的任务则与这个PID的权限有关。

1. 工作管理 ( Job control )

注意, 这里的工作管理只是针对你这个终端(shell)而言的,换句话说,如果你退出了,那么在背景下的工作也就没有了。
工作管理: 是指在bash环境下, 类似windows一样, 可以多个任务同时进行, 比如一边搜索资料, 一边编译, 一边进行vi编辑. 但是我们无法由 tty1的环境去管理tty2的bash
  • 这些工作所触发的程序必须来自于你shell的子程序(只管理自己的bash )
  • 前景 : 你可以控制与下达指令的这个环境称为前景的工作 ( foreground )
  • 背景 : 可以自行运做的工作, 你无法使用 ctrl + c 终止他, 可使用 bg/fg 呼叫该工作
  • 背景中 执行 的程序不能等待 terminal / shell 的输入
如何实现 工作管理 
  • & , 指令后边直接加 & , 则此指令被放在背景执行. 此时, bash 会给予这个指令一个 job number , 和一个 PID , 当指令执行完成时, 系统会给予提示.
  • ctrl + z : 将目前内容暂停, 放到背景, 例如你在使用vi 编辑一个文档, 你想查看某个文件, 此时不需要关闭vi , 使用 ctrl + z 就可以将 vi 放到背景暂停, 注意此处是暂停而不是执行, 然后使用 fg 可以返回. ( fg / bg ).
  • jobs [ -lrs ] : 查看job情况, -l : 除了列出 job number 与指令串之外, 同时列出 PID 的号码 -r 仅列出正在背景run的工作, -s 仅列出正在背景当中暂停( stop ) 的工作. 显示内容 [1] + pid 号 stopped , 其中1是 job number, + 号为预设从背景到前景的工作,一般为 - 减号
  • fg %jobnumber : 将工作拿到前台. ( 此处的 % 可有可无 )
  • bg %jobnumber : 将工作放到背景.
  • kill : kill -l 显示目前可以使用的singal号码, kill -singal %jobnumber ( 其中的 singal 是指 kill 的类别 ) 常用single 1,9,15常用.(1代表重新读取,9代表立刻强制删除,15代表以正常的方式终止一项工作) kill -9 %1
  • 工作丢到背景中,并不是真正放到系统的背景去, 还是与终端机的bash有关,也就是说, 你把工作丢到背景, 而你的终端机此时吊线, 那么在“背景”下的工作也会停止,因为他运行的环境已经不存在了. at 是真正放到系统背景中的, 而与终端机无关. nohup : 这个指令是指你在脱机或者是注销系统后, 还要继续工作的 语法 : nohup 指令 [ & ] 例如 : nohup ./sleep500.sh & ( 自己编辑的 shell 脚本,如果不使用 & 表示在前景内执行 ) .

2. 进程管理

  • ps : 一个时间点查看进程命令 ps aux ( 观察所有进程 ) = ps -ef 也是观看所有进程的命令,  ps -lA ( 观察所有系统进程 ) ps axjf  = ps -ejH ( 连同部分程序树状态 ) 
    • -A 所有process全部显示 = ie 
    • -a 不与 terminal(终端机) 有关的所有 process
    • -u 有效使用者 ( effective user ) 相关的 process 
    • x 通常与 a 一起使用,列出完整信息
    • l 输出格式, 较长, 较详细的将该 PID 的信息列出 ( 其中 F 代表进程标志, 4表示root, 1表示子进程, S 代表进程状态 STAT, R代表运行, S代表sleep,D代表不可被唤醒的睡眠状态,例如打印机等等,T停止状态(stop), Z僵尸状态,程序已经终止但却无法被移除至内存外. 僵尸程序要追根
    • j 工作的格式
    • -f 做一个完整的输出
    • ps -l 尽观察自己的进程
    • ps aux 观察系统所有的程序数据
    • ps -lA 也是观察系统所有的程序数据
    • ps axjf 联通部分程序树状态
    • 比较常用的是 ps -l 查看自己的进程, ps aux 全部查看 , ps axjf 树状图
    • 个人觉得比较常用, ps -ef 查看所有进程, ps -l 查看自己进程, ps axjf 查看树状态
  • top : 可以持续侦测程序运作的状态 top [ -d 数字 ] | top [ -bnp ] -d 后接秒数(这个描述是指间隔) , -b 以批次的方式执行 top . -n 与-b搭配, 需要进行几次 top -p 指定pid , top 之后会进入"top"状态, 可以使用 M 进行内存使用率排序, 若要回复默认排序 P , q 离开 top 
  • pstree [-A|U] [-up]
  • -A  各个程序树之间的链接方式 ASC||
  • -U 各个程序树之间以万国码的字符来链接,在某些终端接口下可能有错误
  • -p 同时列出 PID
  • -u 同时列出所属账号
  • kill 中比较常用的single , 1 SIGHUP 类似重起 , 2 SIGINT 类似 ctrl + c , 9 SIGKILL 强制中断 , 15 SIGTERM 以正常方式结束 , 17 SIGSTOP 相当于 ctrl + z
  • kill 后接 % 符号与直接 接数字不同, %符号指工作号 , 数字指PID
  • killall [ -iIe ] [ command name ] killall -i -9 httpd , killall -i -9 bash ( killall 可以将相关的所有进程一次性全部删除 )
  • nice [ -n 数字] command 调整指令的优先级, 这并不是真正的调整, 而是虚拟的, 只能大概调整. ( renice 已存在程序的 nice 重新调整 ) , nice值可以影响 pri , pri就是执行的顺序的权限,值越小越好,nice值的范围是 -20 ~ 19 , root 可随意调整自己或他人的 nice值,当然范围也是在 -20 ~ 19 ,普通用户只能调整自己的nice值, 调整nice值有两种情况,1是运行时,直接指定nice值,nice [-n 数字] command , 另外一种就是已经存在了nice值,改变它, renice [number] PID , 这个number就是nice值
  • free 观察内存情况 free [ -b|-k|-m|-g][-t]
    • -b , -m , -k 分别以 bytes , m(mbytes) , k(kbytes)
    • -t 输出的最终结果, 显示物理内存与 swap的总量
  • uname 查阅系统与核心相关信息 uname [ -asrmpi ]
    • -a : 所有系统信息
    • -s : 系统核心名称
    • -r : 核心版本
    • -m : 系统硬件名称
    • -p : cpu的类型
    • -i 硬件平台
  • uptime : 观察系统启动时间与工作负荷
  • netstat : 追踪网络或插槽文件 - [atunlp] 可以用在网络监控方面
    • -a : 所有联机, 监听, socket数据都列出来
    • -t : 列出 tcp 网络封包数据
    • -u : 列出 udp网络封包数据
    • -n : port number 显示
    • -l : 列出目前正在网络监听( listen ) 的服务
    • -p : 列出该网络服务的程序PID
    • netstat -tlnp 比较常用
  • dmesg : 分析核心产生的讯息
  • vmstat : 侦察系统资源变化 cpu / 内存 / 磁盘输入输出状态 , 如果你想了解那个环节最有问题,可以使用这个命令来进行分析
    • -a 使用 inactive/active 取代 buffer/cache
    • -f 将开机到目前为止,系统复制的程序数 
    • -s 将开机到目前为止,导致内存变化的说明
    • -S 后面接单位数,例如 M
    • -d 列出磁盘的读写总量
    • -p 后面列出分割槽,可现实该分割槽读写总量统计表

3 特殊的档案与进程

  • /proc : 目前主机上面的各个程序的PID都是以目录的型态存在于 /proc 当中. ( 是在内存当中 )
  • fuser : 命令用来查看某个档案或者是文件夹由哪个用户在使用.   fuser -uv /u01 , fuser -uv /proc
    • -u : 除了程序的PID之外,列出该程序的拥有者
    • -m : 后面接的档名会主动的上提到该文件系统的最顶层
    • -v : 可以列出每个档案与程序还有指令的完整相关性
    • -k : 找出使用该档案/目录的PID,并试图以 SIGKILL 这个讯号给予该PID
    • -i : 必须与 -k 配合,在删除PID之前会先询问使用者意愿
    • 显示内容中的 ACCSS项目
      • C 在当前目录下
      • e 可被处罚执行状态
      • f 被开启的档案
      • r  代表顶层目录
      • F 该档案被开启了,不过在等待回应中
      • m 可能为分享的动态函式库
  • lsof : 列出被进程所开启的档案文件名 lsof -u root -a -U , lsof +d /dev
    • -a 多项数据需要 同时成立 才显示结果
    • -U 仅列出 unix like 系统的 socket 文件类型
    • -u 后面接 username, 列出该用户相关程序所开启的档案
    • +d 后面接目录,即找出某个目录底下已经被开启的档案
  • pidof : 找出某支正在执行的程序的PID       pidof [-sx] program_name      例如 pidof init syslogd
    • -s 仅列出一个PID而不列出所有的PID
    • -x 同时理出该 program name 可能的 PPID 那个程序的 PID

4 SELinux 进程,档案,网络等细部权限设定依据的一个核心模块

  • selinux : 提供了一些预设的政策, 并且在该政策内提供多个规则, 你可以选择是否启用该控制规则 ( selinux 主要是控制进程是否有权限访问目录)
  • 政策 :  targeted 针对网络服务限制较多, strict 完整的 SELinux 权限, 限制方面较为严格 . ( 建议使用 targeted 政策 )
  • 安全性文本 : 进程 -> SELinux( 确认政策) -> 安全性文本比较 -> 存取档案 , / 目录下输入 ls -Z 可以看到相关的安全性文本, 主要用冒号分为三个字段, Identify:role:type其中 :
    • identify : root , system_u 进程 , user_u 一般帐号身份
    • role : object_r 档案或目录资源, system_u 进程资源
    • type : 最重要,
  • selinux : 模式, 启动, 关闭 : selinux 分为3种模式 : enforcing 强制模式, permissive : 宽容模式( 仅有警告) , disabled : 关闭模式 , getenforce可以查看当前模式
  • sestatus [-vb] : 列出目前的 SELinux 使用哪个政策
  • vi /etc/selinux/config ( 配置SELinux档案 ) 启动, 关闭, 修改 等等都只要直接修改这个档案即可.

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值