进程管理:
process instance

Memory ,
  32bit 4G, 线性内存
PID  进程号
PPID 父进程
 进程之间是相互独立的!
 每一个进程都需要一个进程的结构体struct!

 init,1,fork

数据结构:
 struct
 
进程状态:
 running运行
 ready就绪
 sleep
     interrupable 可中断的睡眠
  uniterruptable 不可中断的睡眠
 stop:阻塞
 zombie:僵死
 
pstree


ps:
  BSD
  Sysv
 
  a跟终端相关的进程
  u显示详细信息
  x跟终端无关的进程
  aux可以组合起来用!
  j显示进程父子关系
 
STAT:进程状态

 
R 运行态
S 可中断的睡眠态 
D 不可中断的睡眠态
T 停止态
Z 僵死态

 

< 高优先级的进程
N 低优先级的进程
s 会话进程的发起者
l 多线程的进程
+ 前台进程
 
ps参数:
-e 选择所有进程
-f 显示详细信息
 -ef 组合起来使用 显示所有进程详细信息

两个组合
ps axjf
ps -ejH

-o format 用户自定义显示风格
例子:
ps aox pid,ppid
 
watch 命令周期显示刷新的结果
watch [-dhvt] [-n <seconds>]  [--differences[=cumula-
       tive]]  [--help]  [--interval=<seconds>] [--no-title]
       [--version] <command>
 eg:
 watch -n 1 'ps aox pid' 一秒钟刷新显示命令结果
 
 
 pgrep PATTERN
 
 NAME
       pgrep,  pkill  - look up or signal processes based on
       name and other attributes

SYNOPSIS
       pgrep [-flvx] [-d delimiter]  [-n|-o]  [-P  ppid,...]
       [-g pgrp,...]
            [-s  sid,...]  [-u  euid,...]  [-U  uid,...] [-G
       gid,...]
            [-t term,...] [pattern]

       pkill [-signal]  [-fvx]  [-n|-o]  [-P  ppid,...]  [-g
       pgrp,...]
            [-s  sid,...]  [-u  euid,...]  [-U  uid,...] [-G
       gid,...]
            [-t term,...] [pattern]
 
 
 
 
 pidof PATTERN
 
 NAME
       pidof -- find the process ID of a running program.

SYNOPSIS
       pidof  [-s]  [-c]  [-x]  [-o  omitpid] [-o omitpid..]
       program [program..]
 
 
 kill -l 查看信号
 man 7 signl 查看信号
 
signal
1)SIGHUP 让进程或服务重读其配置文件却不用重启
2)SIGINT ctrl + c
9) SIGKILL 强制杀死进程
15)SIGTERM  终止进程
18) SIGCONT  继续进程
19) SIGSTOP  停止进程

使用方法:
kill -SIGTERM/-15 PID
例子:
kill -SIGTERM/-15 3133

killall -9 command (-9=SIGKILL)
即:killall -SIGKILL command 强制杀死进程

pkill -SIGNAL [options] PATTERN

 

process ,优先级

优先级决定了进程获得的时间片长短!

静态优先级,手动调整的
动态优先级,系统内核计算得来的

cpu密集型进程,优先级较I/O稍低,但是它获取的时间片较长
I/O密集型进程,优先级稍高,但是的获取的时间片较短

静态优先级的调整是通过nice值来调整的;
nice值:-20 -- 19 :共40个值
优先级:139 --100 :共40个值
nice数值越大优先级越低!
默认值的nice为0 对应的优先级值为120!

普通用户只能将自己的nice值调高,即降低自己的优先级!

nice -n # command  指定一个将要启动的nice值
( #为某数值 )
renice # PID 调整一个已经起来的nice值

ps -eo comm ,nice ,pid
查看命令的nice 值和PID

eg:
[root@localhost wangzhen]# ps -eo pid,nice,command
  PID  NI COMMAND
    1   0 init [5]        
    2   - [migration/0]
    3  19 [ksoftirqd/0]
    4   - [watchdog/0]
    5   - [migration/1]
    6  19 [ksoftirqd/1]
    7   - [watchdog/1]
    8  -5 [events/0]
    9  -5 [events/1]

 
renice 5 2232
重新指定一个已经起来的进程的nice值


nice -n -5 ftp 172.16.0.1
手动指定一个新的ftp进程的nice 值为-5

作业和进程

job
前台作业:执行开始后结束之前始终占据了命令提示符的进程
后天作业:当进程开始后会立即释放命令提示符,无论此进程是否结束

前台-->后台:ctrl + Z
后台-->前台:fg

jobs 可显示后台中挂起的作业
[2]  vim sh.txt
fg %2 调出2号特定作业(%可省略)

bg #(#为jobs中的后台作业号),可以将此项作业调用至后台中运行;
kill %# 这里的%不可省略,用来删除此项后台作业进程!


nohup command &    进程跟终端无关,启动后直接送到后台运行;


进程查看命令:
top
top -d 10 延迟10秒钟刷新显示进程


eg:

[root@localhost ~]# top -d 10
top - 01:20:35 up 20:29,  2 users,  load average: 0.03, 0.01, 0.00
Tasks: 122 total,   1 running, 121 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.5%sy,  0.0%ni, 97.3%id,  0.2%wa,  0.0%hi,  1.7%si,  0.0%st
Mem:    255368k total,   239800k used,    15568k free,     6432k buffers
Swap:   522104k total,      132k used,   521972k free,    93036k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
 3585 dbus      18   0 13124 1200  864 S  1.9  0.5   0:06.69 dbus-daemon  


数字1键  可以显示cpu个数;

m键 按照内存的使用排序

P键  按照cpu占据的百分比 排序

-b -n 3
-b 表示在批处理模式下,-n 3表示在批处理模式下刷新采样113次