程序在磁盘中,通过用户的执行触发。触发事件时,加载到内存,系统将它定义成进程,给予进程PID,根据触发的用户和属性,给予PID合适的权限。

PID和登陆者的UID/GID有关。父进程衍生出来的进程为子进程,子进程的PPID为父进程。

如使用ps -l查看进程信息。

crontab计划任务的父进程可能会再次生成强制结束的子进程。

Linux程序调用通常为fork-and-exec。以父进程复制产生一样的子进程,然后子进程以exec方式执行要执行的进程。该子临时进程加入PPID为父进程PID。

一些进程被触发后常驻内存,成为服务。

为了方便Linux判断进程是daemon类型的进程,一些进程的后面加d,如atd,crond等

Linux拥有多人多任务的环境,5个命令行界面,和1图形界面,通过alt+f1-f6切换。切换终端可以通过其他终端重启出错的终端。

任务放入后台执行:如:cp file1 file2 &。通过&符号实现。显示该bash的任务号码和该任务的PID。

/etc/security/limits.conf设置了用户可以同时登陆的连接数量。

后台任务ctrl+c不能终止,不能与用户交互。被触发的任务来自shell子进程。

将后台任务数据输出到文件上: tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &

目前的任务放到后台暂停:ctrl+z 如:vim下编辑后ctrl +z 等

jobs查看后台的任务状态,-l列出PID等:jobs -l

+代表最近被放到后台的任务,-代表最近第二个被放到后台的任务

后台任务拿到前台来处理fg。fg %n,n为任务号码

让任务在后台的状态下变为运行中bg %n,n为任务号码。后加入&表示后台任务。

管理后台中的任务:kill -l找出kill使用的信号有哪些。-1重新读取,-2取消,ctrl+c,-9强制删除-15正常终止。

如:kill -9 %3,结束三号任务。

任务尚未结束而脱机导致任务中断,使用at或nohup命令让任务放置到系统后台或注销后能继续执行。

nohup与终端无关,输出信息定向到~/nohup.out下。如执行:nohup ./sleep500.sh &。后台任务注销后能继续执行。

ps aux查看系统所有进程。ps -lA查看所有系统进程。-l查看自己的进程。

如:ps -l。如:ps aux。查找cron和rsyslog有关的服务号码:ps aux | egrep '(cron|rsyslog)'

F进程标识,4表示进程权限为root,表示只执行fork,而没有实际执行

S进程状态。R,running,S,sleep,D,不可被唤醒的睡眠状态,T,停止状态,Z僵尸状态。

UID、PID、PPID、C代表CPU的使用率,百分制。PRI/NI代表优先级,越小越优先。

ADDR、SZ、WCHAN都与内存有关。ADDR进程运行的位置,running一般为-,SZ使用掉的内存,WCHAN目前是否运行,-运行。

TTY、TIME进程实际花费CPU的时间。CMD造成此命令的触发命令。CMD后有<defunct>表示僵尸进程

僵尸进程结束需要reboot,重新启动systemd就是reboot。systemd为1号进程。

VSZ使用掉的虚拟内存量(KB),RSS该进程占用的固定内存量。STAT进程目前的状态。

top动态查看进程的变化。-d加秒数,-b批量的方式执行top,-n执行几次,与-b搭配。-p查看某进程的监测。

如每两秒更新一次top:top -d 2。

top显示了目前时间,使用时间,登录人数,平均负载。进程总量,进程状态。

CPU整体负载,wa表示IOwait,可导致系统变慢。按1可查看每个CPU的负载率

物理内存和虚拟内存的使用量,top输入命令显示的地方。

M以内存使用量排序,恢复排序P。退出q。

top信息执行两次然后输出:top -b -n 2 > /tmp/top.txt

监测固定PID:top -d 2 -p 12345.

在top中修改NI的值使用r,可是我没改成。

pstree进程树。-A以ASCII连接。-p列出每个进程PID。-u列出所属账号

如:pstree -A列出进程树相关性。pstree -Aup等。A用来解决连线乱码。

进程信号为1表示SIGHUP,

如重启rsyslogd:先通过grep找到pid,然后kill -1 pid ,然后通过tail /var/log/messages查看是否完成了重启(was HUPed)

根据执行命令的名称来给予信号:killall,如:killall -1 rsyslogd,killall -9(强制) httpd,killall -i -9 bash(-i询问)

PRI优先级,数字低优先级高,由系统控制,用户更改NI调整优先级。NI影响PRI。(NICE)

nice的值在-20到19的范围内,root可以修改自己或他人进程的nice。一般用户只能调整自己的nice值,范围为0-19,且只能调高。

执行新命令时给予特定的nice值:如启动vim放入后台给予nice为5 :nice -n 5 vim &

renice重新调整nice的值,如调整进程12345的nice值为-10:renice -10 12345。

nice的值具有继承的特点,在父进程和子进程之间传递。

free查看内存使用情况:如以m为单位进行显示:free -m。

uname输出系统的基本信息uname -a。

系统启动时间与任务负载:uptime,1分5分15分的平均任务负载

追踪网络或socket文件:netstat。如列出建立的网络和unix socket状态:netstat

分网路连接和unix进程之间的沟通。Proto网络封包协议,State连接状态等。RefCnt连接到此socket的进程数量。

netstat -tulnp,查找目前系统上已在监听的网络连接和PID号码

分析内核产生的信息:dmesg。如开机时对硬件资源的监测等。:dmesg | grep sda

vmstat系统监测资源变化。如统计CPU目前的状态,每秒一次一共三次:vmstat  1 3

procs:r :等待运行中的程序数量;b:不可被唤醒的程序数量。

memory:swpd:虚拟内存; free:未被使用; buff:缓冲内存; cache:高速缓存。

swap:si:程序取出的量; so:内存不足而将没用到的程序写入的 swap 的容量。

io:bi:读入的区块数量; bo:写入的区块数量。

system:in:每秒被中断的程序次数; cs:每秒钟进行的事件切换次数;

CPU:us:非核心层的 CPU 使用状态; sy:核心层所使用的 CPU 状态; id:闲置的状态; wa:等待 I/O 所耗费的 CPU 状态; st:被虚拟机器 (virtual machine) 所用的 CPU 使用状态 (2.6.11 以后才支持)。

系统上磁盘的读写状态:vmstat -d

设置了SUID之后,触发获得进程产生PID时,该PID产生通过SUID给予PID特殊权限,使执行者暂时获得文件拥有者的权限。

可以通过pstree -uA查看进程情况。

查询整个系统SUID/SGID文件:find / -perm /6000

进程存在于内存中,内存数据写入到/proc/*这个目录。

各个进程的PID以目录的形式存在于/proc中。详细/proc/1/下的内容列出如下:

http://cn.linux.vbird.org/linux_basic/0440processcontrol_4.php

cmdline启动了systemd进程。

文件找出正在使用该文件的进程:fuser

-u列出拥有者,-m文件提到文件系统顶部,-v列出进程命令的完整性,-k找出使用该文件目录的PID,并试图发信号-9(SIGKILL)-i询问,和-k配合。

找出目前所在目录使用的PID,账号,权限:fuser -uv .

ACCESS项目内容介绍如:

 c :此程序在当前的目录下(非次目录);
e :可被触发为运行状态;
f :是一个被开启的文件;
r :代表顶层目录 (root directory);
F :该文件被开启了,不过在等待回应中;
m :可能为分享的动态函式库;

找到所有使用到/proc文件系统的进程:fuser -muv /proc。

取消挂载时的先停止进程如取消挂载/home:fuser -mki /home

找到/run下的FIFO文件:find /run -type p;

 lsof:列出被进程使用的文件名

-a同时成立,-U仅列出UnixLike系统的socket文件类型,-u用户名+d目录。

如列出系统上已经被开启的文件与设备:lsof

列出root用户下进程使用的的socket文件:lsof -u root -a -U

列出系统被使用的外部设备:lsof +d /dev

列出root用户进程下bash开启的文件lsof -u root | grep bash

pidof找出某个正在执行进程的PID

列出systemd和rsyslogd两个程序的PID:pidof systemd rsyslogd

SELinux(安全强化的Linux),在进程、文件等详细配置权限时依据的一个内核模块。

传统文件的读写方式为自主访问控制DAC以身份为依据,SELinux引入强制访问控制MAC,控制的主体变为进程,针对进程和文件资源管理权限。

SELinux的主体为进程,目标为文件系统,策略为targeted(针对网络,默认),minimum(target自定义),mls(完整的SELinux限制)。

安全上下文为,放置在文件的inode中,进行权限rwx对比。ls -Z查看安全上下文信息。

安全上下文分身份识别,角色,类型等信息。

身份识别unconfined_u不受限制的用户(由不受限制的进程产生的文件)。system_u(系统产生的文件)

 角色:数据类型,属于进程,文件资源或代表用户。undefined_r代表的是文件或目录等资源。system_r代表进程(一般用户也会被指定此)。

类型domain在主体进程上称为域,type在文件资源上称为类型,

进程的SELinux相关信息查看:ps -eZ

使用targeted策略,系统账号进程常是身份system_u,角色system_r。

查看crond进程的安全上下文内容:找到进程类型的domain:ps -eZ | grep cron。(为crond_t)

查看执行文件、配置文件等的安全上下文内容:ll -Zd /usr/sbin/crond /etc/crontab /etc/cron.d

(crond_exec_t类型产生的进程域为crond_t,crond_t可以读取的文件类型设置为system_cron_spool_t目标文件)

触发可执行文件后,通过该文件的类型type产生进程,该进程因type和策略规则,设定进程域domain。

该域通过策略设置,可以该进程读取的文件类型type。最后检查DAC限制。

SELinux的三种模式

强制模式enforce:SELinux运行中,正确限制domain/type

宽容模式permissive:SELinux运行中,不限制,但有警告信息写入log

关闭模式disable:SELinux没有实际运行。

查看crond与bash的进程是否受限:ps -eZ | grep -E "cron|bash"

进程的domain字段为unconfined_t表示不受限。

查看目前的SELinux模式:getenforce

列出SELinux使用的策略,模式,是否启用信息:sestatus

SELinux的配置文件在/etc/selinux/config下。修改默认策略可通过该文件的修改,修改策略需要重新启动。

修改模式时,强制模式和宽容模式之间切换无需重启,其他需要重启。因SELinux整合在内核中。

宽容模式0和强制模式1之间的切换:setenforce:如:setenforce 0转换为宽容模式

Disable关闭模式切换成Enforcing强制模式可能有权限错误,通过restorecon -Rv / 还原SELinux的文件类型。

SELinux内各个规则的布尔值查询:getsebool -a列出所有。

列出SELinux在目前策略的统计状态:seinfo -u列出身份识别,-r列出角色,-t列出类型。

(需要安装,在package 下的setools-con...)

找出crond_t能够读取的SELinux类型:sesearch -A -s crond_t | grep spool

-A用于显示允许读取或者放行的信息。-s主体类型,-t目标类型,-b布尔值

找出domain类型为crond_t能否读取的文件类型admin_home_t:sesearch -A -s crond_t | grep admin_home_t

查找httpd_enable_homedirs的规则开关:semanage boolean -l | grep httpd_enable_homedirs

列出httpd_enable_homedirs规则当中,主体进程能够读取的文件类型:sesearch -A -b httpd_enable_homedirs

修改SELinux规则的bool值。查找:getsebool httpd_enable_homedirs。修改:setsebool -P httpd_enable_homedirs 1(-P写入配置文件)

chcon手动修改文件的SELinux类型。-t接安全上下文栏位,-v显示变动结果,--reference=范例文件。

如:chcon -v -t net_conf_t checktime#使checktime的类型变为net_conf_t

如:chcon -v --reference=/etc/shadow checktime#使类型和shadow 相同。

restorecon让文件恢复正确的SELinux -R连同子目录一起修改,-v过程显示到屏幕

如:将目录下的文件恢复默认SELinux类型:restorecon -Rv /etc/cron.d

semanage查询默认增加修改删除SELinux的类型。

fcontext 用于安全上下文方面的用途,-a增加,-m修改,-d删除,-l查询

查询/etc  /etc/cron.d的默认SELinux类型:semanage fcontext -l | grep -E "^/etc |^/etc/cron "

修改目录的默认SELinux类型:semanage fcontext -a -t public_content_t "/srv/samba(/.*)?"

CentOS7提供了一些服务记录SELinux产生的错误,

settroubleshoot将产生的错误信息写入/var/log/messages与/var/log/setroubleshoot/*中。

settroubleshootd是由auditd调用audispd,启动sedispatch程序通过将auditd信息转换成settroubleshootd的信息实现。

SELinux文件的问题,可以先通过setenforce 0,进入宽容模式,尝试访问,然后查看日志vim /var/log/message,找寻问题和解决方案。

通过sealert -l xxxxxxxx查看解决方案情况概率。,然后修改等操作。

别人的Linux私房菜(17)进程管理与SELinux初探的更多相关文章

  1. 别人的Linux私房菜(20)启动流程、模块管理与Loader

    系统启动时,首先加载BIOS,通过BOIS读取COMS的硬件信息,进行自我检测,取得第一个可启动的设备(多个根据设置有关). 读取并执行设备内的MBR启动引导程序,引导程序调用boot sector中 ...

  2. 别人的Linux私房菜(7)文件与目录管理

    - 代表上一个工作目录 ~username代表用户所在的家目录 cd切换目录  配合之上的参数 .   ..   /    ~    ~name     (change directory) pwd显 ...

  3. 别人的Linux私房菜(24-25)X Window设置介绍、Linux内核编译与管理

    X Window主要组件为:X Server .X Client . Window Manager . Display Manager. X Server管理硬件,X Client则为应用程序,将所需 ...

  4. 别人的Linux私房菜(18)认识系统服务(daemon)

    完成服务service的程序称为daemon.完成计划性的服务程序如crond是一个daemon. 早期的System V的init管理daemon操作中,系统内核首先调用init,然后init运行系 ...

  5. 别人的Linux私房菜(19)认识与分析日志文件

    日志文件通常只有root可以读取,解决系统和网络方面的问题. /var/log/boot.log本次开机系统检测和启动硬件,和内核支持的相关功能的信息记录. /var/log/cron计划任务有没有被 ...

  6. 别人的Linux私房菜(15)磁盘配额与高级文件系统管理

    磁盘配额在网站.邮件.文件等服务器常见,主要有针对用户.用户组.限制某一目录的的最大磁盘配额. ext文件系统进能针对整个文件系统配额,xfs可以针对目录配额.配额和文件系统有关. 内核必须支持磁盘配 ...

  7. 别人的Linux私房菜(14)Linux账号管理和ACL权限设置

    用户标识符UID.GID 用户的账号信息,主要是指UID对应.组和GID对应 检查系统中是否存在用户bin:id bin 登录shell验证账号密码的步骤:找到/etc/passwd核对是否存在账号, ...

  8. 别人的Linux私房菜(11)认识与学习BASH

    Linux下使用BASH   Bourne Again Shell        另外一种由用于Unix的伯克利大学的Bill Joy设计的C Shell 系统中合法的shell会写入到/etc/sh ...

  9. 别人的Linux私房菜(6)文件权限与目录配置

    账号与一般身份用户存放在/etc/passwd文件中 个人密码存放在/etc/shadow文件中 Linux所有组名存放在/etc/group中 ls -al查看所有信息并显示权限等 文件权限的10字 ...

随机推荐

  1. 如何自学Java开发

    对于这个话题,已经不止N次在线上或线下听到了.从这个话题被太多的人提问及回答,我们可以肯定地说,Java这个已经有近15年头的计算机编程语言是有着及其广阔的应用领域和独特而短期无法替代的优势.我们姑且 ...

  2. autolayout原理

    Autolayout Engine根据视图间的约束关系得到一个线性方程组,求这个线性方程组的解即得到每个视图的位置信息.(x,y,width,height) 参考: https://www.jians ...

  3. python之路:变量与变量基本操作(老王版)

    python开发之路:变量与变量基本操作 你是一个师范大学的优秀毕业生,现在在某某小学工作. 你想:判作业真的很累,隔壁老王现在天天玩<蓝月传奇>,银行里存满了钱.唉,每节课1个小时,每个 ...

  4. 2018.5.12 storm数据源kafka堆积

    问题现象: storm代码依赖4个源数据topic,2018.5.12上午8点左右开始收到告警短信,源头的4个topic数据严重堆积. 排查: 1.查看stormUI, storm拓扑结构如下: 看现 ...

  5. Object备忘录

    1.Object.assign(target,...source) 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 2.Object.create()方法创建一个新对 ...

  6. vue mock

    如果后端不肯来帮你 mock 数据的话,前端自己来 mock 也是很简单的.你可以使用mock server 或者使用 mockjs + rap 也是很方便的. 不久前出的 easy-mock也相当的 ...

  7. centos7 安装memcached

    (1)编译安装Memcached 1.51.1 安装依赖包libevent# yum -y install epel-release# yum -y install libevent libevent ...

  8. mybatis实现自定义typeHandler

    java8以前的日期处理有多恶心,相信不少人都深有体会.与mabatis集成查询数据库中的日期字段映射为java日期类型或者字符型的时候,会多出一个".0".当然可以自行处理.但是 ...

  9. linux应用之test命令详细解析

    test命令用法. 功能:检查文件和比较值 1)判断表达式 if test  (表达式为真) if test !表达式为假 test 表达式1 –a 表达式2                  两个表 ...

  10. [ArcGIS]ArcGIS Server环境搭建,发布服务,以及使用ArcGIS API for JavaScript

    环境搭建 安装Web服务器 IIS 控制面板-程序-程序和功能-启用或关闭Windows功能,勾选以下 安装VisualStudio,选择包括ASP.NET模块 安装ArcGIS服务器 ArcGIS ...