进程
1.什么是进程
进程就是系统未完成并且正在进行的工作
进程状态
R(running):该进程正在运行
S(Sleep):该进程正在睡眠状态,但可以被唤醒
D:不可被唤醒状态,通常进程可能在等待I/O的情况
T(stop):停止状态可能是在工作控制或除错(traced)状态
Z(Zombie):僵尸状态,程序已经被终止但却无法被移除至内存外
2.查看进程
1)图形方式查看
gnome-system-monitor
2)进程查看命令
ps -A ##所有进程
-a ##当前环境下运行的进程,不包含环境信息
a ##在当前环境中运行的进程
-u ##进程的归属(用户)
x ##列出系统中含有字符设备的
f ##表示进程父子关系
e ##表示进程详细信息(系统资源的调用)
##ps常用组合
ps aux ##显示系统中所有进程并显示其用户
ps ef ##显示进程详细信息并显示进程父子关系
ps ax ##显示当前系统中所有进程
pstree ##显示当前系统的进程树
3.显示进程指定信息
ps -o xxx ##显示进程指定信息
comm ##进程名称
user ##进程所有人
group ##进程所有组
%cpu ##进程cpu使用率
%mem ##进程内存使用率
我们来查看一下当前环境中运行程序的以上信息
pid ##进程pid
nice ##进程优先级
进程排序##
ps ax --sort=
+%cpu 升序| -%cpu 降序
-%mem|-%mem
##stat中显示的信息##
S ##进程状态
L ##内存中有锁定空间
N ##优先级低
< ##优先级高
+ ##前台运行
s ##顶级进程
##进程优先级##
1.进程的优先级范围
-20~19
数字越小表示进程优先级越高
2.优先级查看
ps ax -o nice
3.指定某个优先级开启进程
nice -n 优先级数字 进程名称
举例
nice -n -5 vim & ##开启vim并且指定程序的优先级为-5
注意: 若vim后加&是将该进程打入后台否则会占用当前设备
4.改变进程优先级
renice -n 优先级数字 进程pid
4.环境中进程的前后台调用
comm & ##让命令直接在后台运行
jobs ##查看被打入环境后台的进程
ctrl+z ##把占用终端的进程打入后台
fg jobsnum ##把后台程序调回前台
bg jobsnum ##让后台暂停程序运行
5.进程信号
1.常用信号等级
等级 | 功能 |
---|---|
1 | 进程重新加载配置 |
2 | 删除进程在内存中的数据 |
3 | 删除进程在内存中的数据 |
9 | 强行结束单个进程(不会被阻塞) |
15 | 正常关闭进程(可能会被阻塞) |
18 | 正常关闭进程(可能会被阻塞) |
19 | 暂停某个进程 (不会被阻塞) |
20 | 把进程打入后台(可以被阻塞) |
现在对上述信号做一个简介
信号 | 简介 |
---|---|
SIGILL | 执行了非法指令通常是因为可执行文件本身出现错误或者试图执行数据段堆栈溢出时也有可能产生这个信号. |
SIGTRAP | 由断点指令或其它trap指令产生由debugger使用. |
SIGABRT | 程序自己发现错误并调用abort时产生. |
SIGIOT | 在PDP-11上由iot指令产生在其它机器上和SIGABRT一样. |
SIGBUS | 非法地址包括内存地址对齐(alignment)出错. eg: 访问一个四个字长的整数但其地址不是4的倍数. |
SIGFPE | 在发生致命的算术运算错误时发出. 不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误 |
SIGKILL | 用来立即结束程序的运行. 本信号不能被阻塞, 处理和忽略. |
SIGUSR1 | 留给用户使用 |
SIGSEGV | 试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据. |
SIGUSR2 | 留给用户使用 |
SIGPIPE | Broken pipe |
SIGALRM | 时钟定时信号, 计算的是实际的时间或时钟时间alarm函数使用该信号. |
SIGTERM | 程序结束(terminate)信号与SIGKILL不同的是该信号可以被阻塞和处理通常用来要求程序自己正常退出shell命令kill缺省产生这个信号. |
SIGCHLD | 子进程结束时, 父进程会收到这个信号. |
SIGCONT | 让一个停止(stopped)的进程继续执行. 本信号不能被阻塞. 可以用一个handler来让程序在由stopped状态变为继续执行时完成特定的工作例如, 重新显示提示符 |
SIGSTOP | 停止(stopped)进程的执行注意它和terminate以及interrupt的区别: 该进程还未结束, 只是暂停执行. 本信号不能被阻塞, 处理或忽略. |
SIGTSTP | 停止进程的运行但该信号可以被处理和忽略用户键入SUSP字符时 (通常是Ctrl-Z)发出这个信号 |
SIGTTIN | 当后台作业要从用户终端读数据时, 该作业中的所有进程会收到SIGTTIN信号缺省时这些进程会停止执行. |
SIGTTOU | 类似于SIGTTIN, 但在写终端(或修改终端模式)时收到. |
SIGURG | 有"紧急"数据或out-of-band数据到达socket时产生. |
SIGXCPU | 超过CPU时间资源限制这个限制可以由getrlimit/setrlimit来读取/改变 |
SIGXFSZ | 超过文件大小资源限制. |
SIGVTALRM | 虚拟时钟信号. 类似于SIGALRM, 但是计算的是该进程占用的CPU时间 |
SIGPROF | 类似于SIGALRM/SIGVTALRM但包括该进程用的CPU时间以及系统调用的时间. |
SIGWINCH | 窗口大小改变时发出. |
SIGIO | 文件描述符准备就绪, 可以开始进行输入/输出操作. |
SIGPWR | Power failure |
注意
有两个信号可以停止进程:SIGTERM和SIGKILL。
SIGTERM比较友好,进程能捕捉这个信号
根据您的需要来关闭程序。
在关闭程序之前您可以结束打开的记录文件和完成正在做的任务
在某些情况下,假如进程正在进行作业而且不能中断,那么进程可以忽略这个SIGTERM信号。
对于SIGKILL信号,进程是不能忽略的。
这是一个 “我不管您在做什么,立刻停止”的信号
假如您发送SIGKILL信号给进程,Linux就将进程停止在那里
执行方式
man 7 signal ##查看信号详细信息
kill -信号 进程pid
killall -信号 进程名字
pkill -u username -信号
比如用信号2删除shell在内存中数据
6.进程的动态监控
1.top
1 ##显示cpu每个核的负载
s ##调整刷新频率
c ##cpu负载排序
m ##内存使用量排序
h ##查看帮助
u ##查看指定用户进程
k ##对指定进程发起信号
q ##退出
7.控制服务
1.什么是服务
cs模型
c表示client
s表示server
vnc为例
c------>tigervnc viewer
s------>vncserver
定义:系统中运行的对于系统本身没有意义,但是对客户主机有重大意义的程序叫做服务性软件简称服务
2.用什么控制服务
系统初始化进程可以对服务进行相应控制
3.当前系统初始化进程是什么
systemd ##系统初始化进程
pstree ##显示系统中的进程树
4.进程控制命令
以sshd为例
ssh ----->sshd
client serve
systemctl ##服务控制命令
systemctl status sshd ##查看服务状态,inactive不可用
active可用
systemctl start sshd ##开启服务
systemctl stop sshd ##关闭服务
systemctl restart sshd ##重启服务
systemctl reload sshd ##重新加载服务配置
systemctl enable sshd ##设定服务开机启动
systemctl disable sshd ##设定服务开机不启动
systemctl list-units ##列出已经开启服务当前状态
systemctl list-unit-files ##列出所有服务开机启动的状态
static 固定的不可更改 mask冻结
systemctl list-dependencies ##列出服务倚赖
systemctl set-default multi-user.target ##设定系统启动级别为
多用户模式无图形
systemctl set-default graphical.target ##设定系统启动级别为
图形模式