首页 > 代码库 > 系统进程管理

系统进程管理

process和program 进程与程序

程序:通常为二进制程序仿制在存储媒介中,以物理文件的形式存在。

进程:程序被触发后,执行者的权限与属性、程序的程序代码和所需数据等会被加载到内存中,操作系统并给予这个内存内的单元一个标识符PID,也就是说,进程就是一个正在运行的程序。

job control 工作管理

前台foreground fg

后台 bg

暂停 ctrl+z

直接将命令丢到后台执行的 &

比如解压一个相当大的压缩包:

tar -zpcvf /tmp/etc.tar.gz /etc &

tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &

查看后台工作状态 jobs

调用的时候:fg jobnumber

kill 杀死进程

-9 强制杀掉进程

-15 默认正常杀掉


进程的查看 ps top

ps是静态查看进程 top是动态查看

ps

-A 所有进程都显示出来 和-e一样

-a 不与terminal有关的所有进程

-u 有效的用户

x 通常与a一起使用 列出较完整的信息

l 较长 详细的将该PID信息列出

j 工作格式

-f 完整的输出


查看自己的bash相关进程 ps -l

F 代表这个进程的标志权限

一般4 代表root权限 如果是1 表示次子进程仅仅可以复制fork而无法实际执行

S 代表进程的状态

R running  该进程正在运行

S sleep 该进程正在休眠 可以被唤醒

D 不可被唤醒的睡眠状态  可能正在等待IO

T 停止状态 可能是工作控制或者除错状态

Z zombie 僵尸进程 进程已经终止 却无法被删除内存外

UID/PID/PPID 此进程被该uid所拥有 进程号PID 以及父进程PPID

C 代表cpu使用率 单位百分比

PRI/NI 此进程被cpu处理的优先级 越小 越快被执行

ADDR/SZ/WCHAN ADDR该进程在内存的哪个部分 如果是running一般就是-  SZ代表此进程用掉多少内存  WCHAN表示该进程是否在运行中 

TTY 登录者的终端机位置 若为远程登录则使用动态终端借口 pts/n

TIME 使用掉的cpu时间 注意 是此进程实际花费cpu运行的时间

CMD 此程序触发的命令


查看所有的进程 ps aux

USER 该进程属于那个用户帐号

PID 该进程的进程标识符

%CPU 该进程使用掉的cpu资源百分比

%MEM 该进程所占用的物理内存百分比

VSZ 该进程用掉的虚拟内存KB

RSS 该进程用掉的固定内存KB

TTY 登录者的终端机位置 若为远程登录则使用动态终端借口 pts/n

STAT 该进程目前的状态 一般为R/S/T/Z

TIME 该进程实际使用CPU运行的时间

COMMAND  该进程的实际命令


top 动态查看进程变化

top -d +数字

-d 后边加秒数 进程界面更新的秒数 默认是5秒

-b 以批次的方式执行top 通常会搭配数据流重定向来将批处理的结果输出文件

-n  与-b搭配 需要进行几次的top输出结果

-p 指定某个PID 来进行查看

在top执行的过程中 可以使用按键命令:

?:显示在top中可以输入的按键命令

P:以cpu的使用率来排序显示

M:以内存的使用资源来显示

N: 以PID来排序

T: 以cpu时间累计排序 time+

k: 给予某个pid一个信号

r: 给予某个pid 重新制定一个nice值

q: 离开top


pstree

-A 各进程树之间的连接以ASCII字符

-U 各进程树之间的连接以utf-8字符

-p 同时列出每个进程的pid

-u 同时列出每个进程的所属帐号名称


进程管理kill 和 killall

kill -signal pid

killall -signal 命令名称

-i 若需要删除时会出现提示符给用户

-e exact 表示后边接的command name 要一直

-I 忽略大小写

例子:

killall -l syslogd

killall -9 httpd 终止httpd

killall -i -9 bash

kill bash ? (y/n) 用户可以选择


priority和nice

pri值越低代表越有限 但是pri值是由内核动态调整 用户无法直接调整

pri(new)=pri(old) +nice

nice -n 数字 command

nice -n -5 vi &

用户给一个nice值为-5用于执行vi 并查看该进程


系统资源的查看

free 查看内存使用情况

free -b/-k/-m /-g /-t

bkmg 输入时显示的单位

-t 在输出最终结果显示物理内存和swap的总量


uname [-asrmpi]

-a 所有系统相关的信息 包括下边的所有数据

-s 系统内核名称

-r 系统内核版本

-m 本系统的硬件名称

-p cpu的类型 与-m 类似 只是显示cpu的类型

-i 硬件的平台


netstat 跟踪网络 [-tunlpa]

-a 将目前系统的所有连接 监听socket列出

-t 列出tcp的网络数据包

-u 列出udp网络数据包数据

-n 不列出进程服务名称 以端口号来显示

-l 列出目前正在网络监听的服务

-p 列出该网络服务的进程pid


proto 网络的数据包协议 主要分为tcp和udp

recv-Q 非由用户进程连接到此socket的复制总字节数

send-Q 非由远程主机传送过来的acknowledged总字节数

localaddress 本地ip端口情况

state 连接状态 主要有建立establised和监听listen


proto 一般就是unix

refcnt 连接到此socket的进程数量

flags 连接的标识

type socket 访问类型 主要有确认连接的stream与不需要确认的dgram

state 若为connected 表示多个进程之间已经建立连接

path 连接到此的socket相关程序的路径


分析内核产生的信息 dmesg

dmesg more

dmesg | grep -i hd


检测系统支援变化 vmstat

vmstat -a cpu 内存等信息

-fs 内存相关

-S 显示单位

-d 与磁盘有关

-p 分区 与磁盘有关

参数:

-a 使用inactive/active 替代buffer/cache 的内存输出信息

-f 开机到目前位置系统复制的进程数 fork

-s 将一些时间导致内存变化的情况列出说明

-S 后边接单位 如K/M

-d 列出磁盘的读写总量统计表

-p 列出分区 可显示该分区的读写总量

例如:统计目前主机cpu状态 每秒1次 共3次

vmstat 1 3


 







本文出自 “岁月丶倾城” 博客,请务必保留此出处http://alca0126.blog.51cto.com/7826974/1435273