您的位置:首页 > 编程语言 > C#

C#学习笔记--1

2011-08-30 22:17 246 查看
内核最强大功能之一就是进程管理,对于system administrator来说,这部分熟练度对于系统调优起着决定性作用。现在我们一起来了解一下linux的进程管理工具吧,在介绍工具之前,有些基本概念要澄清:
寄存器保存了当前在cpu上运行的进程的数据信息

task struct:Linux内核存储进程信息的固定格式,内核追踪每一个进程的属性状态
task list:多个任务的的task struct组件的链表
MMU:Memory Management Unit 实现线性地址和物理地址的映射转换(根据task structure)

缺页异常:请求数据时,数据不在内存空间(可能被换出到swap了)

虚拟内存集:可以被换出到swap的地址空间
写时复制:子进程不需要写数据时,与父进程共用内存空间,当需要写数据时,需要写时复制,使用自己的内存空间,不再与父进程共用内存
(1)进程优先级:0-139

1-99:实时优先级;数字越大优先级越高
100-139:静态优先级;数字越小优先级越高,这些优先级可以通过修改nice值调整
Nice值:-20,19对应静态优先级的100-139

(2)进程类型:
守护进程: 在系统引导过程中启动的进程,跟终端无关的进程;
前台进程:跟终端相关,通过终端启动的进程
注意:也可把在前台启动的进程送往后台,以守护模式运行;
(3)进程状态:
运行态:running
就绪态:ready
睡眠态:
可中断睡眠状态:interruptable----一般是本轮进程使用内核时间到期时发生
不可中断睡眠状态:uninterruptable----当发生缺页异常时,会产生不可中断睡眠
停止态:暂停于内存中,但不会被调度,除非手动启动之;stopped
僵死态:zombie:子进程已经终止,父进程在清理子进程尸体之前

进程间通信的几种机制:
IPC: Inter Process Communication
同一主机上:
signal 发送信号
shm: shared memory共享内存
semerphor 旗标
不同主机上:
rpc: remote procecure call远程过程调用
socket: 套接字----通过读写socket文件

了解完基本概念,我们来介绍进程管理工具
1.ps命令:对当前系统进程状态做一个快照静态输出到显示器上
常用组合:aux
u: 以用户为中心组织进程状态信息显示
a: 与终端相关的进程;
x: 与终端无关的进程;
~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND



还可以根据关键字抓取




VSZ: Virtual memory SiZe,虚拟内存集
RSS: ReSident Size, 常驻内存集
STAT:进程状态:
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zombie

+: 前台进程
l: 多线程进程
N:低优先级进程
<: 高优先级进程
s: session leader---由它衍生出很多其他进程

常用组合:-ef,l
-e: 显示所有进程,相当于ax一块使用
-f: 显示完整格式程序信息




常用组合:-eFH
-F: 显示完整格式的进程信息
-H: 以进程层级格式显示进程相关信息
(下面第二行以后都缩进了,说明都是第一行的子进程,这就是H的作用)



C表示在那颗CPU上运行
STIME表示在CPU上运行的时长


常用组合:-eo, axo
-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
指定(自定义)显示哪些字段:



ni: nice值
pri: priority,优先级
psr: processor, CPU
rtprio: 实时优先级

2.pgrep, pkill:寻找,杀死进程
pgrep [options] pattern
pkill [options] pattern
-u uid: effective user
-U uid: real user
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示其父进程为此处指定的进程的进程列表

3.pidof:
根据进程名获取其PID;

4. top:动态查看当前系统进程状态,有许多内置命令:





信息说明:
第一行:当前时间,上次启动到此刻时长,当前登录的用户,平均负载(等待运行的任务队列长度,刚刚过去的平均1分钟,5分钟,15分钟的队列长度),不想显示敲l 这里额信息是调用uptime命令输出的

第二行Task任务数量以及任务状态,cpu负载长度
第三行进程占据CPU相关信息,敲1 可以显示多个cpu核心状态,敲t可以变换格式
us用户空间程序占据的百分比,sy内核空间占据的百分比,更改nice值占据的半分比,id空闲的,wa等待io完成所占据的时间,hi表示硬件中断占据的时间,si软中断(模式切换),st被虚拟化技术偷走的时间,

第四行和第五行显示内存相关信息:这里内存,交换空间,buffer和cache都显示的是物理内存的
排序指令:
P:以占据的CPU百分比;
M:占据内存百分比;
T:累积占据CPU时长;
首部信息显示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1 (数字)。可以列出多颗CPU
memory信息:m命令

退出命令:q
修改刷新时间间隔:s
终止指定进程:k
选项:
-d #: 指定刷新时间间隔,默认为3秒;
-b: 以批次方式;
-n #: 显示多少批次;

5.htop:top的加强版,功能很强大
选项:
-d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程;
-s COLOMN: 以指定字段进行排序;
命令:
s: 跟踪选定进程的系统调用;
l: 显示选定进程打开的文件列表;
a:将选定的进程绑定至某指定CPU核心;
t: 显示进程树



F1键可以显示帮助:



F2键可以调整显示设置:



F3键可以搜索,F4键可以过滤



F5键可以以进程树格式显示
F7和F8调整nice值
F9杀死进程

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




本文出自 “明天过后” 博客,请务必保留此出处http://leeyan.blog.51cto.com/8379003/1694051
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: