在LINUX中,触发任意事件都会产生一个进程,系统会为该进程分配一个PID,并通过PID对其进行管理
子程序的产生过程:
1. 先copy一份当前进程(父程序)
2. 在拷贝的进程中将PID赋给PPID;再用新的PID替换PID
3. 将拷贝的进程作为新的进程(子程序),执行命令
LINUX的工作管理
1. 只能管理自己SHELL下的工作
2. 前台执行:当前可控的SHELL环境
3. 后台执行:不可控
但可以自动执行的环境,不能终止,也不能交互
将前台命令转为后台暂停的方法:Ctrl + z
将后台暂停的命令转为前台执行:fg;%N可以唤起指定的序号为N的后台进程
将后台暂停的命令转为后台执行:bg
在后台执行命令的方法:
1. command + &
2. 用Ctrl + z转为后台暂停,用bg转暂停为执行
查看所有在后台暂停或执行的命令:jobs;l选项可以显示PID;+表示使用fg默认唤起的进程
kill命令解析:kill
1. kill -l 显示kill可以使用的signal
2. kill -15 正常终止;kill -9 强制终止;kill -2 中断,相当于Ctrl + c
脱机工作:nohup
在后台执行的命令依赖于前台的环境,当关闭前台环境的时候,后台也同样会被关闭(产生远程管理问题)
将nohup作为命令(无论前台还是后台)前缀,可以让命令在脱机后继续执行
查看正在运行的程序:ps
1. 只查看自己SHELL相关的程序:ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 8220 8216 0 80 0 - 27118 wait pts/0 00:00:00 bash
F:权限,4表示root,0一般用户
S:状态,R - running,S - sleep,T - stop,Z - zombie(僵尸状态)
C:CPU使用率,单位为%
PRI:优先级,越小越优先
SZ:内存使用情况
TIME:实际使用CPU的时间
2. 查看系统所有程序:ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19356 1328 ? Ss Nov25 0:02 /sbin/init
VSZ:虚拟内存使用情况,单位KB
RSS:物理内存使用情况
STAT:状态信息
START:程序启动时间
查看正在运行的程序:top
top命令可以持续的检测整个系统的工作状态,默认每5秒刷新一次,可以使用-d选项指定刷新间隔(单位为秒)
top的显示分为两部分:上面是系统资源信息,下面是进程资源信息
系统资源解析:
top - 21:36:19 up 1 day, 1:30, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 93 total, 1 running, 90 sleeping, 2 stopped, 0 zombie
Cpu(s): 0.1%us, 0.4%sy, 0.0%ni, 99.2%id, 0.3%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 1012352k total, 947088k used, 65264k free, 76184k buffers
Swap: 2031608k total, 3272k used, 2028336k free, 159532k cached
1. top -... 当前时间;up... 开机到现在的时间;load average... CPU在1,5,15分钟的平均负载
2. task... 进程总数
3. CPU负载
4. 物理内存使用情况
5. SWAP使用情况
进程资源解析:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19356 1328 1104 S 0.0 0.1 0:02.83 init
NI:nice,与优先级有关,越小越优先
top可以修改进程的优先级
查看程序间的相关性:pstree;p选项,显示PID;u选项,显示所属账号
LINUX通过kill命令给指定程序传递信号(signal)
kill 后面接的的PID或工作ID
killall 后面接的是程序名称
程序优先级是由PRI和NI两个值的和所决定的,值越小越优先;PRI是系统分配的,不可调整;NI是用户可以自定义的,其范围是[-20,19]
调整将要启动程序的NICE值:nice
调整以启动程序的NICE值:renice 或top
查看系统资源的工具
1. free 观察内存使用情况
2. uname 查看系统与核心的相关信息
3. uptime 查看系统启动时间
4. netstat 查看网络信息:
t选项,显示tcp网络封包数据
u选项,显示udp网络封包数据
l选项,现在正在网络监听的服务
5. dmesg 显示核心产生的信息(如硬件检测信息)
6. vmstat 监视系统资源使用情况
7. fuser 找出正在使用该文件的程序
8. lsof 显示被程序所开启的文件
9. pidof 显示正在执行程序的PID
SUID的实现:二进制文件启动后,会根据SUID对其PID赋予特殊的权限设定
当前运行的PID会以目录的形式存在于/proc当中
SELinux:Security Enhanced Linux
SELinux是整合到核心的一个模块,其配置文件为/etc/selinux/config
SELinux在传统文件权限机制之上,增加一层SELinux权限验证机制,从一定意义上限制了root用户的无限权限
传统文件权限机制:DAC(Discretionary Access Control),自主式访问控制,验证程序的拥有者与文件的读写权限是否一致
SELinux权限机制:MAC(Mandatory Access Control),委任式访问控制,验证程序的domain与文件的type是否一致
SELinux的本质是限制程序对资源(文件)的使用,其运作依赖与SELinux的规则(rules)和安全环境(security context)
SELinux的工作模式:
1. enforcing,强制模式,会资源进行实际限制
2. permissive,宽容模式,只有警告信息,不会实际进行限制
3. disabled,关闭模式
SELinux的规则:
SELinux主要由两个规则:targeted - 默认设置,针对网络服务的限制;strict - 较为严格
SELinux的安全环境:identify:role:type
identify通常以_u结尾,主要分为三类:root,表示root用户;user_u,表示一般用户;system_u,表示系统用户
role通常以_r结尾,主要分两类:object_r,表示资源,system_r,表示程序
type通常以_t结尾,在程序上叫domain,在文件上叫type,当domain的定义里包含type时,权限验证通过
文件的安全环境信息可以使用ls -Z查看
管理SELinux:
1. 查看SELinux状态:sestatus,getenforce
2. 开启SELinux:在配置文件中将SELINUX设置为enforcing;确保/boot/grub/menu.lst中kerenl项不含有selinux=0(不加载SELinux)的配置,重启系统
3. 模式转换:setenforce ,0表示permissive模式,1表示enforcing模式
4. 查看与配置SELinux规则:setinfo,sesearch --> allow domain type(详细规则),getsebool (查看规则状态),setsebool (配置规则状态)
5. 查看与配置SELinux安全环境:semanage(查看默认SELinux权限),chcon(配置安全环境),restorecon(配置安全环境为默认权限)
SELinux的相关服务:
1. setroubleshoot,将错误信息写到/var/log/messages
2. auditd,将需哦无信息写到/var/log/audit/audit.log
注:若系统中没有seinfo等命令,安装setools即可
chkconfig:查看服务是否可以自动启动
阅读(805) | 评论(0) | 转发(0) |