您的位置:首页 > 运维架构 > Linux

Linux进程管理

2017-09-10 20:37 113 查看
什么是进程?
在Linux 系统中,触发任何一个事件,系统都将会将它定义为一个进程,并且给予这个进程一个编号ID,称为PID,同时根据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。
进程与程序:
程序(program):通常为二进制程序放置在存储媒介中,以物理文件的形式存在。
进程(process):程序在被触发后,执行者的权限与属性、程序的程序代码与所需数据都会被加载到内存中,操作系统并给及这个内存内的单元一个标示符(PID)。总的来说,进程就是运行中的程序的一个副本,是被载入内存的一个指令集合。
进程ID (Process ID,PID)用来标记每一个进程
UID、GID、SELinux 语境决定对文件系统的存取和访问权限
通常从执行进程的用户来继承
存在生命周期
子进程与父进程:
子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程;父进程终止子进程自然终止。
子进程与父进程之间的关系最大的复杂点在于进程相互之间的调用,在linux中的过程调用中通常称为fork-and-exec的流程,进程都会通过父进程以复制的方式产生一个一模一样的子进程,然后被复制出来的子进程再以exec的方式来执行实际要进行的进程,最终就成为一个子进程的存在。
进程的创建:
第一个进程(父子关系):init (centos6)
systemd (centos7 ) 进程:都是由父进程创建 方法fork(),clone()
进程的优先级:
系统优先级:数字越小,优先级越高
0-139(CentOS4,5):各有140个运行队列和过期队列
0-98,99(CenOS6)
实时优先级:99-0:值最大优先级最高
Nice值:-20,19对应系统优先级100-139或99





进程状态:
运行态:running
就绪态:ready
睡眠态:可中断:interruptable
不可中断:uninterruptable
停止态:stopped,暂停于内存中,但不会被调度,除非手动启动
僵死态:zombie,结束进程,父进程结束前,子进程不关闭
进程管理工具:
ps命令:ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的
命令语法:ps [OPTION] ….
支持三种风格的选项:
UNIX 风格:ps -ef
BSD风格:ps axo
GNU风格:ps --help
默认显示当前终端中的进程
a选项包括所有终端中的进程 x选项包括不链接终端的进程 u选项显示进程所有者的信息 f选项显示进程的父进程 o属性选项显示定制的信息pid(进程id)、comm(进程命令)、%cpu、%mem(内存)、state(状态)、tty(终端)、euser(有效用户)、ruser(发起命令的用户)



STAT:进程状态
R:running

S: interruptable sleeping

D: uninterruptable sleeping

T: stopped

Z: zombie

+: 前台进程

l: 多线程进程

N:低优先级进程

<: 高优先级进程

s: session leader,会话(子进程)发起者

命令常用组合:
-ef
-e: 显示所有进程
-f: 显示完整格式程序信息 -eFH
-F: 显示更完整格式的进程信息 -H: 以进程层级格式显示进程相关信息
ni: nice值
pri: priority,优先级
psr: processor, CPU编号 (使用的是哪颗cpu)
rtprio: 实时优先级


ps –C processname :单独显示某个进程,可以使用-o 扩展参数选项



pstree命令:显示进程树,以树状图的方式展现进程之间的派生关系,显示效果比较直观。
pstree –p :在进程树状图中显示进程ID。



nice/renice命令:调整优先级。静态优先级:100-139,进程默认启动时的nice值为0,优先级为120,只有跟用户才能降低nice值(提高优先性)。
nice –n xx Command:以指定的优先级运行某个命令,xx的范围是-20~19。



renice –n xx COMMAND : 在运行中的进程,修改优先级



pgrep命令:搜索进程
-u uid:effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示父进程为此处指定的进程的进程列表
pgrep [options] pattern 支持正则表达式


pidof命令:按确切的程序名查看pid
命令绝对路径:/sbin/pidof
用法:pidof COMMAND
将来可以用来脚本中监控一个重要的服务是否开启



uptime:显示启动状态,显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)。(没有明确的单位。)



系统平均负载:指在特定时间间隔内运行队列中的平均进程数。 通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题。
如果linux主机是1个双核CPU,当Load Average 为6的时候说明机器已经被充分使用。top命令:显示进程使用系统资源情况



第一行:相当于uptime命令
第二行:进程信息
第三行:CPU使用情况
第四行:内存使用情况
第五行:交换分区swap使用情况
cpu那行:
us:user, 用户空间占用
sy:system, 内核空间占用
ni:调整nice时间
id:idle,空闲
wa:wait, 等待IO时间
hi:hard interupt, 硬中断
si:soft interupt, 软中断(模式切换)
st:stole, 虚拟机偷走的时间
排序:
在打开top后,可以按快捷键进行自定义排序:
P:以占据的CPU百分比,%CPUM:占据内存百分比,%MEMT:累积占据CPU时长,TIME+首部信息是否显示
uptime信息:l(字母l)
tasks及cpu信息:t
cpu分别显示:1(数字1)
memory信息:m
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
保存文件:W
也可以使用命令行的方式对top显示的信息进行管理
选项:
d #: 指定刷新时间间隔,默认为3秒-b: 全部显示所有进程-n #: 刷新多少次后退出htop命令:是一个Linux下交互式的进程浏览器,可以用来代替top命令。默认没有安装,需要从EPEL源安装。

子命令:
s: 跟踪选定进程的系统调用

l: 显示选定进程打开的文件列表

a:将选定的进程绑定至某指定CPU核心

t: 显示进程树

使用命令直接对显示信息进行操作:
选项:
-d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程
-s COLUME: 以指定字段进行排序
vmstat 命令:含义是显示虚拟内存状态,但是它还可以报告关于进程、内存、I/0等系统整体运行状态。



命令默认显示一次就退出。可以设置间隔几秒刷新一次,也可以定义刷新次数



显示中的各项含义:
procs:r:可运行(正运行或等待运行)进程的个数,和核心数有关b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)memory:swpd: 交换内存的使用总量free:空闲物理内存总量buffer:用于buffer的内存总量cache:用于cache的内存总量swap:si:从磁盘交换进内存的数据速率(kb/s)增加si:dd if=/dev/zero of=/dev/null so:从内存交换至磁盘的数据速率(kb/s)增加so:dd if=/dev/zero of=/dev/null bs=3Gcount=1io:bi:从块设备读入数据到系统的速率(kb/s)增加bi:dd if=/dev/sda of=/dev/nullbo: 保存数据至块设备的速率增加bo:dd if=/dev/zero of= /app/f1 system:in: interrupts 中断速率,包括时钟cs: context switch 进程切换速率 cpu
us:Time spent running non-kernel codesy: Time spent running kernel codeid: Time spent idle. Linux 2.5.41前,包括IO-wait time.wa: Time spent waiting for IO.2.5.41前,包括in idle.st: Time stolen from a virtualmachine.2.6.11前, unknown.iostat命令:统计CPU和设备IO信息
pmap命令:显示进程和内存间的映射关系
pmap –x PID显示详细格式的信息



glances命令:系统监控工具,通过glances工具我们可以监视CPU、平均负载、内存、网络流量、磁盘I/O,其他处理器和文件系统空间的利用情况。
C/S模式下运行glances命令
服务模式:
glances-s -B IPADDR
IPADDR: 指明监听的本机哪个地址
客户端模式:
glances-c IPADDR
IPADDR:要连入的服务器端地址示例:

dstat命令:dstat命令是一个全能系统信息统计工具。拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat支持即时刷新,如输入dstat 3即每三秒收集一次,但最新的数据都会每秒刷新显示。dstat也可以收集指定的性能资源,如dstat -c即显示CPU的使用情况。
dstat[-afv] [options..] [delay [count]]
-c: 显示cpu相关信息-C #,#,...,total-d: 显示disk相关信息-D total,sda,sdb,...-g:显示page相关统计数据-m: 显示memory相关统计数据-n: 显示network相关统计数据-p: 显示process相关统计数据-r: 显示io请求相关的统计数据-s: 显示swapped相关的统计数据默认采用-cdngy参数

进程管理工具:
Kill 命令:向进程发送控制信号,以实现对进程的管理,每一个信号对应一个数字。
Kill –l :显示当前系统可用信号


常用信号:man 7 signal1) SIGHUP: 无须关闭进程而让其重读配置文件2) SIGINT: 中止正在运行的进程;相当于Ctrl+c3) SIGQUIT:相当于ctrl+\9) SIGKILL: 强制杀死正在运行的进程15) SIGTERM:终止正在运行的进程18) SIGCONT:继续运行19) SIGSTOP:后台休眠注:(1)不是所有的进程都可以使用发信号9 的方式结束的,对于终端进程就会失效。

(2)Kill -0 pid选项检查某个进程是否正常工作,(以后可以用来检查摸个服务是否正常工作)killall命令:根据进程名管理进程(有时候一个服务开启的进程太多,根据进程号一个一个删除太麻烦。)


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  进程 管理