进程管理
linux中,所有进程都是init进程的后代进程,init的进程号是1,也有进程号是0的进程 进程状态 running 运行 ready(runnable) 就绪 sleep interruptable 用户随时可以唤醒 可打断睡眠 uninterruptable 通常在等待I/O操作,非可打断睡眠 stop 停止 不能被调度(无外力的情况下) zombie 僵死 父进程处理后事 查看进程信息的命令 #pstree 查看进程树 #ps(process state) 快照当前与用户相关的前台进程的信息以显示 VSZ 虚拟内存集 RSS 物理内存空间 在TOP中此项是RES STAT S sleep 可中断睡眠 R Running 运行 D 不可中断的睡眠 T 停止态 Z 僵死态 < 高优先级的进程 s 发起会话的进程 N 低优先级的进程 l 多线程的进程 MultiThread + 前台进程 支持BSD的风格的命令(选项不带-) a 显示主要与终端相关的进程 x 显示主要与终端无关的进程 u 显示与用户相关的信息 以上三个选项配合起来使用 #ps aux 显示与用户相关的所有进程 -e =ax 显示所有进程信息 -f 显示进程详细信息 -ef 显示所有进程的详细信息 -j 以作业方式显示 -H 显示进程森林 -ejH 以作业方式显示详细信息和进程树 -aujf 显示进程树 -o 显示用户指定字段 #ps axo pid,tty,cmd 显示所有进程的进程号,终端,和进程名 #ps efo pid uid 显示所有进程的详细信息中进程号和用户ID Attention watch 周期性的显示命令执行情况 -n 指定周期,单位秒 -n 1 -n .5 0.5s watch -n .5 `命令` pgrep (process grep) -U 查找与某一用户相关的进程 -G 查找与某一组相关的进程 -t 查找终端进程 -P 查找父进程为PPID的进程 pgrep pattern 显示符合pattern的进程号 pidof 查找某一正在运行进程的pid 进程通信 1.共享内存空间 2.传递信号 signal 可相互传递 #kill -l 显示信号 #man 7 singal 显示信号 signal: 1)SIGHUP 通知某个进程重读配置文件 2)SIGINT 类似ctrl+c 使进程终止 9)SIGKILL 杀死某一进程,不计后果,其结果是其子进程很成为无处可去的进程 15)SIGTERM 杀死某一进程,但给予一定时间处理必要工作 18)SIGCONT 外力唤醒进程(Stop态的进程) 19)SIGSTOP 终止 Attention:序号不仅表示其索引顺序,也同样可以通过序号引用信号 #kill -SIGHUP PID 将信号SIGHUP发送给pid为PID的进程 same as #kill -1 PID #killall process_name 杀死所有process_name进程 #pkill -SIGNAL pattern 查找进程通过名字或者其他属性 进程优先级 动态优先级 静态优先级 进程信息中的nice值即表示优先级 -20到19对赢优先级的100到139 数值越大优先级越小 普通用户只能提高nice值也就是只能降低自己的优先级 进程创建时,nice被指定为0对应120 #nice 进程还未运行,设置初始nice值 #nice -n num 进程名 #renice 进程已启动 #renice num PID(数字) #ps -efo nice,comm|cmd,pid 打印所有进程的nice值,进程名和进程号 作业job 1.前台作业/进程 跟用户相关,执行开始之后,结束之前始终占据命令提示符的进程 2.后台做紧/进程 执行开始后,立即释放命令提示符,无论进程结束与否 前台-->后台,ctrl+z挂起不执行了 后台-->前台,fg 3.jobs 查看后台作业列表 #fg 不带任何参数 调回jobs列表中带+号的那个作业 #fg [%]jnum jnum是作业列表每行第一个显示的数字 希望进程送到后台继续执行 1.#bg [%]jum 2.kill %num 此处的%不能省略 因为kill num 表示杀死pid为num的进程 前台发起进程,前台终端退出,则进程终止 #nohup 进程名 使进程脱离跟终端的这种从属关系,即使终端关闭,也可工作 #command & 将command直接送入后台执行,最好非交互的命令 4.top same as windows下的任务管理器 每隔5秒刷新 "1" 展开|收起 各个cpu状况信息(最少有2个cpu才可以) k,kill某个进程 字段含义 load average num1 num2 num3 load average 平均负载,平均等待队列时间长度 num1 过去1分钟平均队列长度 num2 过去5分钟平均队列长度 num3 过去15分钟平均队列长度 #top -d(delay 延迟) num 单位秒 延迟多少秒刷新 #top -b -n 3 -b 工作在批处理模式下 -n 在批处理模式下,刷新几次结束命令 3 刷新3结束命令