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